LambdaからSystems Managerのパラメータストアの値を取得する(node.js v18) – AWS SDK for JavaScript v3

LambdaからSystems Managerのパラメータストアの値を取得する(node.js v18) – AWS SDK for JavaScript v3

パラメータストアにテキストを保存し、Lambdaから取得します。

暗号化できるため、パスワード、データベース文字列、Amazon Machine Image (AMI) ID、ライセンスコードなどのデータをパラメータ値として保存することに適しているようです。

パラメータストアを作成

パラメータストアを作成します。パラメータ名を「test」とします。

LambdaからSystems Managerのパラメータストアの値を取得する(node.js v18) – AWS SDK for JavaScript v3

LambdaからSystems Managerのパラメータストアの値を取得する(node.js v18) – AWS SDK for JavaScript v3

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だと復号しません。

「文字列」の場合は無視されます。

階層構造のパラメータストアを作成

階層構造のパラメータを作成します。

LambdaからSystems Managerのパラメータストアの値を取得する(node.js v18) – AWS SDK for JavaScript v3

パラメータ
/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

参考サイト

GetParameterCommand | @aws-sdk/client-ssm
Documentation for @aws-sdk/client-ssm
GetParametersByPathCommand | @aws-sdk/client-ssm
Documentation for @aws-sdk/client-ssm

コメント

タイトルとURLをコピーしました