📚

AWSコンテナ設計・構築[本格]入門をterraformで構築

2022/12/29に公開

概要

AWSコンテナ設計・構築[本格]入門内のハンズオンの内容をterraformで構築してみました。
https://github.com/tournesol014s/aws-container-training

背景

  • 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