RDS ProxyにDBユーザを追加してLambdaから接続する – 【MySQL】

RDS ProxyにDBユーザを追加してLambdaから接続する – 【MySQL】

VPC Lambda→RDS Proxy→RDS構築する際に、RDS構築時に作成したマスターユーザとは別にLambda用にDBユーザを追加してみます。

マスターユーザーは「admin」とします。

このユーザとは別に「lambda」ユーザを作成します。

DBユーザ作成

create userします。

create user lambda@'%' identified with mysql_native_password by '12345678';

ユーザ名を「lambda」、パスワードを「12345678」とします。

CRUD権限を付与します。

GRANT SELECT, INSERT, UPDATE, DELETE ON *.* TO 'lambda'@'%' WITH GRANT OPTION;

シークレットマネージャ作成

lambda用のシークレットマネージャを作成します。

シークレット名を「for-lambda」にして作成します。

ユーザ名を「lambda」、パスワードを「12345678」とします。※DBユーザと同じ情報にします

RDS Proxy設定変更

RDS Proxyを選択して「アクション」-「変更」します。

「Secrets Managerのシークレット」で「for-lambda」を追加します。

「プロキシを変更」します。

RDS ProxyのIAMロール修正

RDS ProxyにアタッチしているIAMのリソースを修正します。

ResourceにシークレットマネージャのARNを追加します。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "GetSecretValue",
      "Action": [
        "secretsmanager:GetSecretValue"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:secretsmanager:ap-northeast-1:123456789012:secret:rds-db-credentials/db-W3DHYZZIU3NQQ6487MTIVEWWC4/admin/xxxxxx",
        "arn:aws:secretsmanager:ap-northeast-1:123456789012:secret:for-lambda-xxxxxx" // ★追加
      ]
    },
...

Lambda(node.js v18)

$ npm init -y
$ npm i --save promise-mysql
$ touch index.mjs

index.mjs

import * as mysql from 'promise-mysql'

export async function handler(event, context) {
  let conn = undefined
  try {
    conn = await mysql.createConnection({
        host : '<プロキシエンドポイント>', 
        user : 'lambda',
        password : '12345678',
        database : 'mysql',
        port: '3306'
    }).catch(e=>{
        console.log(e)
    })
    const result = await conn.query('select * from mysql.user', []);
    console.log(result)
    // 処理

    await conn.commit()
  } catch(error) {
    await conn.rollback()
  } finally {
    await conn.end()
  }
}

EC2踏み台サーバから接続

EC2踏み台サーバから接続します。

$ sudo apt install mysql-client
$ mysql -u lambda -h RDSProxyのエンドポイント -p
Enter password: ★12345678と入力
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| innodb             |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+

コメント

株式会社CONFRAGE ITソリューション事業部をもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む

タイトルとURLをコピーしました