LambdaからSystems Managerのパラメータストアの値を取得する(node.js v18) – AWS SDK for JavaScript v3
パラメータストアにテキストを保存し、Lambdaから取得します。
暗号化できるため、パスワード、データベース文字列、Amazon Machine Image (AMI) ID、ライセンスコードなどのデータをパラメータ値として保存することに適しているようです。
パラメータストアを作成
パラメータストアを作成します。パラメータ名を「test」とします。
Lambda(node.js v18)
Lambda(node.js v18)からパラメータストアの値を取得します。
IAMロールには「AmazonSSMReadOnlyAccess」をアタッチしておきます。
import { SSMClient, GetParameterCommand } from '@aws-sdk/client-ssm' export const handler = async(event) => { const client = new SSMClient({ region: 'ap-northeast-1' }) const params = { Name: 'test', // パラメータ名を指定する WithDecryption: false } const command = new GetParameterCommand(params) const store = await client.send(command) console.log(store.Parameter.Value) // hoge const response = { statusCode: 200, body: JSON.stringify('Hello from Lambda!'), }; return response; };
WithDecryptionで、パラメータの値が暗号化されていた場合に復号するかどうかを指定します。trueだと復号、falseだと復号しません。
「文字列」の場合は無視されます。
階層構造のパラメータストアを作成
階層構造のパラメータを作成します。
パラメータ | 値 |
---|---|
/rds/user | takahashi |
/rds/pass | 12345678 |
Lambda(node.js v18)
Lambda(node.js v18)から階層構造のパラメータストアの値を取得します。
GetParametersByPathCommandを使用します。
IAMロールには「AmazonSSMReadOnlyAccess」をアタッチしておきます。
import { SSMClient, GetParametersByPathCommand } from '@aws-sdk/client-ssm' export const handler = async(event) => { const client = new SSMClient({ region: 'ap-northeast-1' }) const params = { Path: "/rds", Recursive: true, } const command = new GetParametersByPathCommand(params) const store = await client.send(command) for(const val of store.Parameters) { console.log(val.Name + ',' + val.Value) } const response = { statusCode: 200, body: JSON.stringify('Hello from Lambda!'), }; return response; };
2回ループされて以下のように出力されます。
/rds/pass,12345678 /rds/user,root
参考サイト
AWS SDK for JavaScript v3
API Reference
AWS SDK for JavaScript v3
API Reference

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