VPC LambdaからRDS(PostgreSQL)にアクセスする方法
| 項目 | バージョン |
|---|---|
| node.js | v16.14.0 |
| pg | 8.7.3 |
| @aws-sdk/client-secrets-manager | 3.105.0 |
VPC Lambdaからプライベートサブネットに配置したRDS(PostgreSQL)にアクセスする方法です。
secret-testというシークレットにRDSの情報が格納されているとします。
「VPC LambdaからVPCエンドポイント経由でSecrets Managerにアクセスする方法」参照
RDSのセキュリティグループ
RDSのセキュリティグループのインバウンドにルールを追加します。
ポート5432、ソースがVPC Lambdaのセキュリティグループを設定して追加します。
VPC Lambdaのセキュリティグループ
インバウンドは未設定です。
アウトバウンドは解放しています。
IAMロール
ここでは以下3つをアタッチしています。
Lambda(node.js v16)
依存モジュールはインストール済みとします。
import { SecretsManager } from '@aws-sdk/client-secrets-manager'
import pg from 'pg'
const client = new SecretsManager({
reegion: 'ap-northeast-1'
});
const params = {
SecretId:'secret-test' // 設定済みと仮定
}
const config = {
host: JSON.parse(data.SecretString).host,
user: JSON.parse(data.SecretString).username,
password: JSON.parse(data.SecretString).password,
database: JSON.parse(data.SecretString).dbname,
port: JSON.parse(data.SecretString).port,
ssl: true
}
const query = `
DROP TABLE IF EXISTS employee;
CREATE TABLE employee (id serial PRIMARY KEY, name VARCHAR(50), age INTEGER);
INSERT INTO employee (name, age) VALUES ('takahashi', 20);
INSERT INTO employee (name, age) VALUES ('ogawa', 59);
`;
export async function handler() {
const pgClients = new pg.Client(config)
await pgClients.connect()
await pgClients.query(query)
const response = {
statusCode: 200,
body: data.SecretString
}
return response
};
マネジメントコンソールから「Test」を押して実行します。
employeeテーブルとレコードがインサートされていることが確認できました。
参考サイト
Welcome – node-postgres
node-postgres is a collection of node.js modules for interfacing with your PostgreSQL database.

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








コメント