🍧
Amplifyで作ったECSのContainerからSecrets Managerを参照する
2020/12にAmplify CLIでFargateを利用したcontainerのデプロイが可能になりました。
こちらの記事を見ながら試してみました。
この記事のとおりに進めることで、containerが無事に動いてバックエンドのAPIを作ることができました。
そうなってくると、次はDBアクセスをしたくなり、DB接続情報をSecrets Managerで管理したいと思いました。
調べてみた
公式ドキュメントにEnvironment variables and secrets
という項目が!!
どうやら、DockerfileだけでDeployするとsecretは使えなそうでdocker-compose.ymlが必要そう。
やってみた(NGパターン)
ドキュメント通りにdocker-compose.ymlを作って、amplify push
docker-compose.yml
version: "3.8"
services:
backend:
build:
args:
- NODE_ENV=development
context: backend
environment:
- DATABASE_NAME=mydb
secrets:
DB_PASSWORD:
file: ../secrets/.secret-pass
結果
- AWS Secrets Managerにsecretは作られた
- containerからは参照できない
ダメやん。。。
2022-02-07追記
- AWSのドキュメントがいつの間にか修正されていますね。NGパターンの記載はなくなりました。
解決方法
docker-compose.yml
version: "3.8"
services:
backend:
build:
args:
- NODE_ENV=development
context: backend
environment:
- DATABASE_NAME=mydb
secrets:
- DB_PASSWORD
secrets:
DB_PASSWORD:
file: ../secrets/.secret-pass
serviceの中にsecretsへの参照情報を加えるが正解でした。
これで、バックエンド開発が楽になるぞ!!
secretsが参照できなくなる事象(2021/02/06追記 → 2021/05/14追記)
この事象は、Amplify CLIのv4.51.0にて修正されました
-
amplify push
した時に、下記の質問が表示されるのですが、これにNo
を選択すると、登録済みのsecretへのECS(container)からの参照が削除されて使えなくなってしまいます- つまりsecretを持ってない開発者はPushできない。。。
"Secret configuration detected. Do you wish to store new values in the cloud?"
- amplify-cliのバージョンは4.41.2
- AWSのサポートに問い合わせ中(2021/02/06)
- 2021-02-16 調査中とのこと。たぶんバグ。
- 2021-02-19 バグ確定。issueになりました。
- 2021-05-14 修正されました。
NCDC株式会社( ncdc.co.jp/ )のエンジニアチームです。 募集中のエンジニアのポジションや、採用している技術スタックの紹介などはこちら( github.com/ncdcdev/recruitment )をご覧ください! ※エンジニア以外も記事を投稿することがあります
Discussion