LoginSignup
1
1

More than 3 years have passed since last update.

AWS Systems Manager パラメータストアから秘密情報を取得してLambdaで使用する方法

Posted at

この記事からわかること

パラメータストアに保存されている秘密情報をLambdaから取得して使用する方法がわかります。

手順

手順の概要は以下の通りです。

  • パラメータストアに秘密情報を追加
  • Lambdaにパラメータストアのアクセス権限を付与
  • Lambdaにパラメータストアを扱う関数を追加

以降ではそれぞれの手順について記載します。

パラメータストアに秘密情報を追加

パラメータストアにパラメータ「/sushi/like/rds」を追加します。
種類は「SecureString」を選択
※DBの接続情報を想定

/sushi/like/rds
{
    "HOST": "host_sushi",
    "DBNAME": "dbname_sushi",
    "USER": "user_sushi",
    "PASSWORD": "password_sushi"
}

Lambdaにパラメータストアのアクセス権限を付与

上記で作成したパラメータの値を取得するためのIAMポリシー「get_rds_param」を作成します
下の例では扱うことができるパラメータを「/sushi/like/rds」のみに制限しています。
作成したポリシーをLambdaのIAMロールに付与してあげます。

get_rds_param
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:GetParameter*"
            ],
            "Resource": "arn:aws:ssm:ap-northeast-1:123456789012:parameter/sushi/like/rds"
        }
    ]
}

Lambdaにパラメータストアを扱う関数を追加

Lambdaに関数get_parametersを追加します。
変数PARAM_PATHに使用したいパラメータ名を記載してください。

lambda_function.py
import json
import boto3

# SSM region
REGION = 'ap-northeast-1'
PARAM_PATH = '/sushi/like/rds'

def lambda_handler(event, context):

    param_dict = get_parameters(PARAM_PATH)
    print(param_dict)


# パラメータストアからパラメータを取得する関数
def get_parameters(param_path):
    ssm = boto3.client('ssm', region_name=REGION)
    response = ssm.get_parameters(
        Names=[
            param_path,
        ],
        WithDecryption=True # SecureStringを復号する場合はTrue
    )
    return json.loads(response['Parameters'][0]['Value'])

手順は以上です

Lambda実行結果

パラメータが取得できていることが確認されました。

image.png

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