ECSでCICD(GHA+Codeシリーズ)

これTerraformでやってみる🔥
下記のとおりコンテナイメージ、DBマイグレはアプリ、それ以外はインフラが作ることを意識!

イメージのプッシュまで(OIDCで)
できた

ECS、RDS、ALB、ネットワーク全般、Codeシリーズ作成
ある程度、ちゃんと作ろうとするとそれなりにリソース作成が必要になってしまった...
Terraform
Pipeline(ECRから未発火)
とりあえずパイプラインできたとこまで
→V2で発火(V1だとNG)

CodeBuild / RDS マイグレーション
SQLファイルをgitに配置時、GitHubActionsでイメージのビルドと一緒にS3へSQLファイルをコピーする。
RDSはプライベートサブネットに配置するとCodeBuildもVPC内に配置して、お互いにセキュリティ許可とCodeBuildが外部通信するためにNATをおくというなかなか手間なことになる。なので、今回はRDSをパブリックに配置。ただしこの場合、CodeBuildのIPがパッとわからないので、一旦IPを全許可する方向でテスト。
※一応IPはここから探れば絞れるかも?

CodeDepoloy
構成図はこんなかんじ
アーティファクトはいろんな動きをとることができるのでいろいろ考えてみた
できました☺️
まじでハローワールド...
やりのこしたこと(やりきれなかったこと)
- DBのマイグレーションはSQLを別でつくってやってるけど元のイメージ使ってやりたい
- appespecももっと簡単に取得したい(ソースステージ追加とか?)
- appscpecの <TASK_DEFINITION> がとれない(ARNベタ書きしてる)
- task_def.json 使いたい
- 複数リポジトリ&イメージになったらどうする?
かんそう
CodeBuildのマイグレーション、CodeDeployでアーティファクト設計が大変だった。 逆に言えばいろんな方法がとれるので、おもしろいなぁとおもった。
できるまで数日かかってしまった。アドカレのためにかいてたので12/31におわらせたかったけど、1/1までのびてしまった。でもおわってよかった。
参考

codeシリーズは ecspresso という選択肢も
ECS外の動作で結局はCodeシリーズ必要?
ecspressoとは、ECS専用の管理・デプロイツールです。
ecspressoの利点は、ECSとそれ以外の管理方法を明確に分離できる点です。一般に「アプリケーションの>デプロイ頻度>>他リソース(ex.EC2)のデプロイ頻度」より、管理方法が異なった方が都合が良いです。