1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWS Lambda Node18.xでSystem Manager(Paramter Store)にアクセスする方法

Last updated at Posted at 2023-01-09

はじめに

AWS Lambda, Node.js(18.x), System Manager(Paramter Store)で簡単なサーバーレスバックエンドを構築した時、Node.js 16.x以前とParamter Storeにアクセスする記述が変わったので変更点をまとめます。


対象となる読者

  • AWS Lambda初心者の方
  • AWS System Manager初心者の方

Lambda実行環境

  • Node.js 18.x

ポリシーの作成とLambda関数の実装

AWS LambdaのデフォルトではParamter Storeにアクセスする権限がありません。そのためParamter Storeにアクセスするにはポリシーを設定し、そのポリシーを対象のLambda関数にアタッチ(権限付与)する必要があります。以下はParameter Storeにアクセスするポリシーのサンプルです。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "ssm:GetParameters"
            ],
            "Resource": "*"
        }
    ]
}

AWS SDK for JavaScript v3ではv2と比べて少し記述方法が変更されています。v3ではパッケージ分割されたためSDKのサイズを小さくして使用することが可能となりました。

// import the Lambda client constructor in v2 of the SDK
const Lambda = require("aws-sdk/clients/lambda");

// import the Lambda client constructor in v3 SDK
const { Lambda } = require("@aws-sdk/client-lambda");

System Manager(SSM)で設定したParameter StoreにアクセスするLambda関数の参考例

ssm.js
// CommonJS require syntax
const { SSMClient, GetParametersCommand } = require("@aws-sdk/client-ssm"); 
const ssmClient = new SSMClient({ region: "ap-southeast-1" }); //対象のregion指定
const input = { Names: ['paramter1', 'paramter2'], WithDecryption: true };
const command = new GetParametersCommand(input);
const init_promise = ssmClient.send(command);

exports.handler = async () => {
    const data = await init_promise; // await inside handler
    
    let paramter1 = '';
    let paramter2 = '';
    let ssm = {};
    
    for (const i of data.Parameters) {
        if (i.Name === '取得したいParameter') {
            paramter1 = i.Value;
            ssm['paramter1'] = paramter1
        }
        if (i.Name === '取得したいParameter') {
            paramter2 = i.Value;
            ssm['paramter2'] = paramter2
        }
    }
    
    return ssm;
};
index.js
const ssmFunc = require('./ssm.js');

// ssmの処理

※複数のParameterを取得したいため、GetParametersCommandとしましたが、取得するParameterが1つであればGetParameterで良いです。


参考文献

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?