LoginSignup
0
0

More than 3 years have passed since last update.

【AWS】ECSで使用するECRのURLをマルチステージ対応にする

Posted at

ECRのImage URLにアカウントIDを直接ハードコーディングしてしまうと
本番環境とステージング環境でアカウントIDが別れている場合などにdocker-compose.ymlが共通にできません。
この問題を環境変数で解決します。

docker-composeファイル

docker-compose.yml
image: ${AWS_ACCOUNT_ID}.dkr.ecr.ap-northeast-1.amazonaws.com/xxx:latest

アカウントIDを環境変数から参照するようにします。

参考URL
Compose における環境変数 | Docker Documentation
https://matsuand.github.io/docs.docker.jp.onthefly/compose/environment-variables/

シェル上からの実行

プロファイル、アカウントID指定版(面倒)

AWS_PROFILE=xxx AWS_ACCOUNT_ID=xxx ecs-cli compose up --create-log-groups --cluster-config xxx

プロファイル名以外にアカウントIDも指定が必要になるため書き換えミスが発生しそうです。

プロファイルのみ版(簡単)

AWS_PROFILE=xxx AWS_ACCOUNT_ID=`aws sts get-caller-identity | jq -r .Account` ecs-cli compose up --create-log-groups --cluster-config xxx

プロファイル名をもとにアカウントIDを補完するようにしました。
一時環境変数としてAWS_PROFILE, AWS_ACCOUNT_IDを渡す時にAWS_ACCOUNT_IDの評価時にAWS_PROFILEを参照しているところがミソです。

標準でアカウントID解決するやりかたあるのではと探したんですが見つけらなかったのでシェル芸に逃げました。

参考URL
【小ネタ】AWS CLIでAWS Account IDが取れるようになりました! | Developers.IO
https://dev.classmethod.jp/articles/get-aws-account-id-with-get-caller-identity/
jq コマンドを使う日常のご紹介 - Qiita
https://qiita.com/takeshinoda@github/items/2dec7a72930ec1f658af

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