LoginSignup
8
1

More than 1 year has passed since last update.

AWS LambdaでSystem Manegerのパラメータから情報を取得したい(Node.js 18)

Posted at

はじめに

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を記述しないと出力に失敗するため注意しましょう。

参考記事

async/await 入門(JavaScript)

終わりに

これでSSMのパラメータストアの値を自由自在に使うことができます。最高ですね。
セキュリティのためにも秘密情報などはできるだけLambda上に直接記述することは避け、SSMパラメータを使っていきましょう。

8
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
1