AWS

Systems Manager パラメータストアの値を Lambda から取得する

NEW 2026年8月19日

目次Category


はじめに

今回は以下のAWSサービスを組み合わせて
パラメータストアに文字列を保存し、Lambda から取得する
環境を構築します

サービス役割
Systems Manager(パラメータストア)文字列の保存・取得
Lambdaパラメータを読み出すコードの実行
IAMLambda が SSM を読む権限
前提条件
  • 操作・確認は AWS コンソール(Web) で進めます
  • Python 3.14 + boto3(Lambda 標準のPythonライブラリ)を使用します
  • VPC 設定は不要です(Lambda をVPC外に置くため不要)

今回構築する全体像

flow.txt
Phase 1  パラメータストアに文字列を 1 件作成
↓
Phase 2  Lambda 作成 → IAM 権限付与 → get_parameter テスト

アーキテクチャ図

構築手順

Step1 パラメータストアで値を保存する

Systems Manager パラメータストアに、演習用の文字列を作成します

① パラメータストアを開く

AWS コンソールからパラメータストアの画面を開きます

設定手順
  1. AWS コンソール → Systems Manager を開きます
  2. 左メニュー → アプリケーション管理パラメータストア を選択します
  3. パラメータの作成 をクリックします

パラメータストア一覧画面

② String パラメータを作成する

以下の内容で String パラメータを作成します

設定内容
項目
名前/ojt/{your-name}/sample-message
説明OJT 演習用サンプルメッセージ
ティアStandard(無料)
タイプ文字列(String)
データ型text
Hello from Parameter Store!(任意の文字列で OK)

パラメータ作成画面 1
パラメータ作成画面 2

ポイント
  • 名前を / で始まる階層形式(例: /ojt/tanaka/db-host)にすると、確認・管理しやすくなります

③ 作成結果を確認する

パラメータが正しく作成されたことを確認します

確認手順
  1. パラメータ一覧で /ojt/{your-name}/sample-message を選択
  2. 名前をクリックし、 タブで入力した文字列が表示されることを確認します

作成結果の確認

Step2 Lambda から値を取得する

VPC 外の Lambda を作成し、Step1 で保存した値が取得できるかを確認します

① Lambda 関数を作成する

AWS コンソールから Lambda 関数を新規作成

設定内容
項目
関数名ojt-lambda-ssm-{your-name}-01
ランタイムPython 3.14

Lambda 関数の作成

② IAM ロールに SSM 読み取り権限を付与する

Lambda の実行ロールに、パラメータストアを読み取る権限を付与します

設定手順
  1. Lambda → 設定アクセス権限 → 実行ロール名をクリック
  2. 許可を追加ポリシーをアタッチ をクリック
  3. AmazonSSMReadOnlyAccess を検索してアタッチします(演習用)

IAM ロール選択
許可を追加
ポリシー選択
IAM ポリシーアタッチ完了

ポイント
  • 本番では ssm:GetParameter のみに絞ったカスタムポリシーを推奨します

③ 環境変数を設定する

Lambda内のパラメータ名をハードコードせず、環境変数で管理します

設定内容
キー
PARAM_NAME

パラメータストアで作った名前

(例 : /ojt/miyamoto/sample-message)

設定手順
  1. Lambda → 設定環境変数編集 をクリックします
  2. 上記のキーと値を追加します
  3. 保存 をクリックします

環境変数画面
環境変数追加

④ テストコードを貼り付ける

Lambda 関数に、パラメータストアから値を取得する Python コードを設定します

設定手順
  1. Lambda → コード タブを開きます
  2. lambda_function.py の内容を以下に置き換えます
  3. Deploy をクリックします

lambda_function.py
import json
        import os
        
        import boto3
        
        
        def lambda_handler(event, context):
            param_name = os.environ.get("PARAM_NAME", "/ojt/{your-name}/sample-message")
        
            client = boto3.client("ssm")
        
            try:
                response = client.get_parameter(
                    Name=param_name,
                    WithDecryption=True,
                )
                value = response["Parameter"]["Value"]
                param_type = response["Parameter"]["Type"]
        
                return {
                    "statusCode": 200,
                    "body": json.dumps(
                        {
                            "ok": True,
                            "message": "パラメータストアから取得できました",
                            "param_name": param_name,
                            "type": param_type,
                            "value": value,
                        },
                        ensure_ascii=False,
                    ),
                }
            except Exception as e:
                return {
                    "statusCode": 500,
                    "body": json.dumps(
                        {"ok": False, "error": str(e)},
                        ensure_ascii=False,
                    ),
                }

コードのデプロイ

⑤ テスト実行する

Lambda コンソールからテストイベントを実行し、パラメータが取得できることを確認します

設定手順
  1. Lambda → テスト タブ → 新しいイベント をクリックします
  2. イベント名: ssm-test、JSON: {} を設定します
  3. テスト をクリックします

テストイベント保存

成功例

このような記述がでれば成功です

テスト実行結果

まとめ

今回の構築では、

  • パラメータストア に文字列を保存し
  • Lambda から get_parameter() で取得し
  • IAM で必要最小限の読み取り権限を付与する

という一連の流れを実践しました

片付け(任意)

演習が終わったら、不要なリソースを削除します

  1. Lambdaojt-lambda-ssm-{your-name}-01削除
  2. Systems Managerパラメータストア/ojt/{your-name}/sample-message削除

この記事を書いた人

宮本歩

ayumu_miyamoto

26卒 宮本です
趣味でCloudflareを触っています