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 | +--------------------+
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント