VPC LambdaからRDS(PostgreSQL)にアクセスする方法

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からRDS(PostgreSQL)にアクセスする方法

VPC LambdaからVPCエンドポイント経由でSecrets Managerにアクセスする方法」参照

RDSのセキュリティグループ

RDSのセキュリティグループのインバウンドにルールを追加します。

ポート5432、ソースがVPC Lambdaのセキュリティグループを設定して追加します。

VPC LambdaからRDS(PostgreSQL)にアクセスする方法

VPC Lambdaのセキュリティグループ

インバウンドは未設定です。

VPC LambdaからRDS(PostgreSQL)にアクセスする方法

アウトバウンドは解放しています。

VPC LambdaからRDS(PostgreSQL)にアクセスする方法

IAMロール

ここでは以下3つをアタッチしています。

VPC LambdaからRDS(PostgreSQL)にアクセスする方法

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テーブルとレコードがインサートされていることが確認できました。

VPC LambdaからRDS(PostgreSQL)にアクセスする方法

参考サイト

Welcome – node-postgres
node-postgres is a collection of node.js modules for interfacing with your PostgreSQL database.

コメント

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

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

続きを読む

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