AmplifyでデプロイしたECSのコンテナで環境変数を使用する

  • 2021.02.16
  • AWS
AmplifyでデプロイしたECSのコンテナで環境変数を使用する

amplifyでECSをデプロイする機能がリリースされたので使ってみました。

https://aws.amazon.com/jp/about-aws/whats-new/2020/12/amplify-cli-enables-serverless-container-deployments-using-aws-fargate/

この記事の通り進めていくと、ネットワークの設定など行うことなく、簡単にFargate上でアプリケーションを動かすことができました。

その上で、DBの接続情報などの環境変数を扱うにはどうすれば良いのか調べてみたところ、以下の公式のドキュメントにもあるように、docker-composeを使用した方がsecretsなども扱えて良さそうでした。

https://docs.amplify.aws/cli/usage/containers#supported-configurations

ドキュメントにしたがって、以下のように記載しました。

version: "3.8"
services:
  backend:
    build:
      context: backend
    environment:
      - DATABASE_NAME=mydb
secrets:
  DB_PASSWORD:
    file: ../secrets/.secret-pass

結果、environmentに設定したDATABASE_NAMEはアプリケーションから環境変数として取得できましたが、secretsで設定したDB_PASSWORDは取得できませんでした、、

結構ハマりましたが、社内の他のメンバに試行錯誤いただいて判明したのは、amplifyのドキュメントに必要な記載が不足していたようです。正しくは以下のように記載する必要があります。

version: "3.8"
services:
  backend:
    build:
      context: backend
    environment:
      - DATABASE_NAME=mydb
    secrets: # これが必要だった
      - DB_PASSWORD:
secrets:
  DB_PASSWORD:
    file: ../secrets/.secret-pass