AWSコンテナ設計・構築[本格]入門をterraformで構築
概要
AWSコンテナ設計・構築[本格]入門内のハンズオンの内容をterraformで構築してみました。
背景
- AWSコンテナ設計・構築[本格]入門でECSやコンテナの学習していたところ、非常に良い内容だった。
- terraformのスキルアップも行いたかったので、ハンズオンをManagement Consoleではなく、terraformで実装した。
注意事項・前提事項
- README.mdに記載の通りです。
- オフィシャルなコンテンツではなく、著者や出版社とは何ら関係はありません。問い合わせ等行わないようお願いいたします。(重要なので再掲)
terraform管理外のリソース
Cloud9関連のリソースはterraform管理外とし、Management Consoleから手動で作成しています(具体的なリソースはREADMEに記載)。
terraformでの構築は可能でしたが、AWS側でEC2やEBS、SGが自動で作成されます。data参照したり、構築後にterraform importしたりすることは可能ですが、他のリソースから参照する訳ではなく、開発用のインスタンスであり、メインのコンテナが稼働する環境とは異なる性質のリソースであるため、terraform管理外としました。
書籍と異なる設定をした箇所
ECS Cloudwatch Log Group名
書籍ではタスク定義名に合わせてsuffixに-defがついていますが、Log Group名にdefが付いているのに(個人的に)違和感があったため、取り除きました。
/ecs/sbcntr-backend-def -> /ecs/sbcntr-backend
/ecs/sbcntr-frontend-def -> /ecs/sbcntr-frontend
FrontendもBackend同様、ECS Serviceを構築
書籍ではFrontendはECS Serviceを作成せず、直接タスク定義からコンテナを起動させていますが、今回はECS Serviceを構築しています。書籍ではハンズオンの分量の都合上、ECS Serviceを作成しない形にしていますが、本番運用ではECS Serviceを作成するのが通常だと思いますので、ECS Serviceを作成しています。
RDSパラメータグループはdefaultではなく、別途作成
アカウントの利用状況によっては作成されていない場合があり、また本番運用ではdefaultのパラメータグループを利用することは少ないと思いますので、別途作成する形にしています。
RDS 削除保護を無効化
terraform destroyが失敗しないようにするためです。
CodeCommit用のIAM policyを新規に作成
書籍では、Cloud9用に作成したsbcntr-AccessingECRRepositoryPolicy
を流用していますが、今回は別途terraformで作成しています。
Discussion