はじめに
前ポストから1年以上経過し。いろいろあってブログへのアウトプットが滞り(忙しいと何かしら滞るダメ人間)。
思い出したので、軽くまとめたいと思います。
こちらはもがいて得た知見を個人の視点でまとめてるだけなので、ガチで対応する皆さんにおかれましては、公式資料をご覧ください。
自分のソースコードを動かしたい
前回はAWS FargateのLinuxコンテナでコンソール使用開始しましたが、今回は自身で作成したソースコードを動かせないと意味がありません。
手段的には、私が調べた中では
https://dev.classmethod.jp/articles/githubactions-ecs-fargate-cicd-beginner/
GitHub ActionsからECS FargateにCI/CD
https://qiita.com/TellMin/items/acddd8e5794a08334931#3-ecs-%E3%81%AB%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4%E3%81%99%E3%82%8B
GitHub Actions で ECR に Docker イメージをプッシュして ECS にデプロイ
https://docs.aws.amazon.com/ja_jp/AmazonECR/latest/userguide/ECR_on_ECS.html
Amazon ECS での Amazon ECR イメージの使用
うち、GitHub経由のはGitHub Actionを使うにはみかじめが要るとのことなので、お試しならば、とECRを使う方法を取ったのでした。
ECR プライベートリポジトリへプッシュ
https://docs.aws.amazon.com/ja_jp/AmazonECR/latest/userguide/image-push.html
流れ的には以下のとおり
- ECRにイメージをプッシュする権限を持ったIAM登録
- Dockerイメージをプッシュ
- プッシュしたイメージに署名をつけて
- ECSタスク定義で上記のイメージを使う
噛み砕くと、GitHubにプッシュする代わりにECRにプッシュする次第
なお、ECS Execが使えると大変便利
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/ecs-exec.html
使ってみた感想
さて、今回はECSの中にMySQLを持たせてしまいました。がこれが敗因となり。
Fargateをホストしている基盤に更新があったりセキュリティパッチが当たった場合、その上で動いているタスクを起動し直す必要があるためです。
運悪く会議の直前にこれに当たって、データベースが飛んじゃいました。肌感だと結構頻繁に更新されるっぽいです。
しかも提案しても聞いてくれそうなクライアントじゃなさそうだったんだもん。
データベースとかデータファイルとか恒久性を持たせたいデータは、RDSなりS3なりに置くんだぞ!
(RDSが金食い虫ならLightsailにMySQLをインストールするんだ!w)