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(ES20xx),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^







コメント