VPC LambdaからNAT Gateway経由でSecrets Managerにアクセスする方法
VPCエンドポイント経由でSecrets Managerへのアクセスは「VPC LambdaからVPCエンドポイント経由でSecrets Managerにアクセスする方法」を参照ください。
シークレット作成
ここでは適当なシークレットを作成します。
| シークレットキー | シークレットの値 |
|---|---|
| user | admin |
| password | 12345678 |
NATゲートウェイ作成
プライベートサブネット上にVPCLambdaを配置します。
NATゲートウェイは同一VPCのパブリックサブネット上に作成します。
ルートテーブルのルール追加
プライベートサブネットに関連付けたルートテーブルのルールを追加します。
| 宛先 | ターゲット |
|---|---|
| 0.0.0.0/0 | NATゲートウェイID |
これでVPCエンドポイントを作成せずにVPCLambdaからシークレットマネージャへ接続することが可能です。
VPC Lambda→NATゲートウェイ→IGW→シークレットマネージャ
プロジェクト作成
プロジェクト作成します。
npm init -y npm i @aws-sdk/client-secrets-manager touch index.js
package.json編集
{
"name": "vpclambda-secretsmanager-v3",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"type": "module", // ★この1行追加
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@aws-sdk/client-secrets-manager": "^3.181.0""
}
}
Lambda(node.js v16)
ソースは以下の通りです。
import { SecretsManager } from '@aws-sdk/client-secrets-manager'
const client = new SecretsManager({
region: 'ap-northeast-1'
});
const params = {
SecretId:'secret-test'
};
const data = await client.getSecretValue(params) // top level await
console.log(data.SecretString)
export async function handler() {
const response = {
statusCode: 200,
body: data.SecretString
}
return response
};
参考サイト

VPC の Lambda 関数へのインターネットアクセスを許可する
Amazon Virtual Private Cloud (Amazon VPC) に接続されている AWS Lambda 関数へのインターネットアクセスを許可したいと考えています。

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






コメント