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