LoginSignup
0
0

More than 1 year has passed since last update.

AWS App Runnerの環境変数にSSM Parameter Storeを指定する

Posted at

背景

アップデートで、AWS App Runnerデプロイ時にAWS Secrets ManagerとSSM Pramaeter Storeの値を環境変数として取得することができるようになりました。

SSM パラメータから値を取得するケースは結構ありそうなので試してみます。

前提

コンテナは作成、ECRにPush済みです。
環境変数$TEST_PARAMの値を画面に出力するコンテナを作成しました。
環境変数が設定されていない状態だとなにも出力されません。
スクリーンショット 2023-01-25 160247.png

パラメータの作成

ssm パラメータの作成を行います。
name:test-param,value:test-valueとして作成しました。

$ aws ssm put-parameter \
    --name "test-param" \
    --type "String" \
    --value "test-value" 

インスタンスロールの作成

App RunnerがSSM Parameter Storeにアクセスするためにインスタンスロールを作成し、ssmへのアクセス権限を付与します。
IAMのコンソールから以下の設定でロールを作成します。

信頼されたエンティティ

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "tasks.apprunner.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

RoleにアタッチするPolicy

{
  "Statement": [
    {
      "Action": [
        "ssm:GetParameters"
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:ssm:<region>:<aws_account_id>:parameter/<parameter_name>"
      ]
    }
  ],
  "Version": "2012-10-17"
}

Serviceの作成

App Runnerのサービスを作成します。
環境変数欄で環境変数を設定します。
name:TEST_PARAM
valule:arn:aws:ssm:<region>:<aws_account_id>:parameter/<parameter_name>

スクリーンショット 2023-01-26 115244.png

インスタンスロールには先ほど作成したRoleを選択します。

image.png

確認

デプロイ後、デフォルトドメインにアクセスすると、パラメータ値が取得されて表示されることを確認できました。
image.png

終わりに

ssm パラメータからパラメータ値を取得し、App Runnerの環境変数に配置するところまでを確認しました。
実際に試してみて。一度取得したパラメータ値から更新する場合はタスクを再デプロイしてパラメータ値を再取得する必要がありそうな点が気になりました。
余談ですがCopilotのmanifestでも試してみたのですが、うまくできなかったのでCopilotにはまだ未対応なのかもしれません。Copiloetで取得する場合はSecrets機能を使うのがベタかなと思います。

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