はじめに
AWS Lambda(Node.js 18)で、System Manegerのパラメータストアのデータを取得しようとして苦戦したので備忘録として残しておきます。
以下System ManegerはSSMと表記します。
実装方法
結論です。以下のようなコードを書くことで実装できます。
import { SSMClient, GetParameterCommand } from "@aws-sdk/client-ssm";
export const handler = async (event) => {
const ssmClient = new SSMClient({ region: 'ap-northeast-1' });
const command = new GetParameterCommand({
Name: '/test/hoge',
WithDecryption: true,
});
const parameterStore = await ssmClient.send(command);
console.log(parameterStore.Parameter.Value);
};
簡単に解説していきます。
import { SSMClient, GetParameterCommand } from "@aws-sdk/client-ssm";
Node.js 16以前ではconst AWS = require("aws-sdk");
のように記述していましたが、18以降ではimportで書きましょう。
const ssmClient = new SSMClient({ region: 'ap-northeast-1' });
ap-northeast-1のSSMパラメータストアに埋まっている場合上記のような引数の指定が必要です。
const command = new GetParameterCommand({
Name: '/test/hoge',
WithDecryption: true,
});
Name
でSSMパラメータストアの名前を指定できます。この場合、/test/hoge
という名前で埋まっているSSMパラメータストアのデータを取得します。
WithDecryption
で暗号化されたデータを複合するかを指定できます。true
の場合複合します。
const parameterStore = await ssmClient.send(command);
console.log(parameterStore.Parameter.Value);
上記の記述でSSMパラメータストアのデータを出力できます。await
を記述しないと出力に失敗するため注意しましょう。
参考記事
終わりに
これでSSMのパラメータストアの値を自由自在に使うことができます。最高ですね。
セキュリティのためにも秘密情報などはできるだけLambda上に直接記述することは避け、SSMパラメータを使っていきましょう。