AWS AppRunnerのapprunner.yamlにSSM Parameter Storeの値を設定する

2023/04/03に公開

AWS AppRunnerとは

  • AWS App Runnerはフルマネージド型のコンテナアプリケーションサービスでECRまたはGitHubのソースコードから簡単にデプロイ、実行できるサービスです
  • 近年アップデートが進み、VPC内のリソースにもアクセスできるようになったりとより実用性が高まっています
    • 以前はVPC内のリソースにはアクセスできなかったのでRDSをPublicに配置しなければならなかったりとセキュリティ的に運用するのは難しかったのです。。。

本題

  • 今回の記事では、構築設定にapprunner.yamlを利用する場合に環境変数にSSM Parameter Storeの値を設定する方法を記載します
    • AWSマネージメントコンソールから行う場合はポチポチでいけます
      構築設定
  • AppRunnerにSSM ParameterStoreへのアクセス許可用ロールを付与している前提です

arn形式で指定する場合

  • arn形式でも設定できますが、ソースにAWSアカウントを含めることになるので基本的には後述のパラメーター名で指定するやり方を使うことが多いかと思います
version: 1.0
runtime: nodejs16
build:
  commands:
    build:
      - npm install
run:
  runtime-version: 16.19.0
  command: npm start
  network:
    port: 3000
  secrets:
    # envではなくsecretsにて設定する
    - name: my-parameter
      value-from: "arn:aws:ssm:{ap-northeast-1}:{aws-account-id}:parameter/{parameter-name}"

パラメーター名で指定する場合

version: 1.0
runtime: nodejs16
build:
  commands:
    build:
      - npm install
run:
  runtime-version: 16.19.0
  command: npm start
  network:
    port: 3000
  secrets:
    # envではなくsecretsにて設定する
    - name: my-parameter-only-name
      value-from: "parameter-name"

まとめ

  • 個人的にはapprunner.yamlで管理するのがいいのかなと思います、環境変数を追加する際やruntime等をいじるときに各AWS環境でポチポチするのもツライので
  • 今回紹介した内容ですが2023年4月時点では日本語版AppRunnerの開発者ガイドには記載されていないです
    • 英語版だと書いてあります
    • AppRunnerに限らずですが、AWSのドキュメントは英語版を正としてマルチランゲージにて公開されていて、ローカライズのため更新時刻に差異が発生することがあるので気をつけましょう!

Discussion