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