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




コメント