小規模サイトを作る場合のECSの構成をTerraformでまとめました。
※ Publicサブネットに置いている事に抵抗がある方はNatGatewayを作成し、Purivateサブネットに移行してください。
-
.envの作成
$ cp .env.example .env
-
.envに環境変数のセット
-
コンテナを立ち上げてterraformのコンテナの中に入る
$ docker-compose up -d $ docker-compose exec terraform /bin/ash
-
モジュールの読み込み
# terraform init
-
環境の作成
# terraform apply
Nginx + Laravelを想定した場合のDockerfileをサンプルで格納しています。
このプロジェクトには使えませんが、サンプルとして配置しています。
そこまで重要度が高いサービスを置く予定がなく、NatGatewayが高いためです。
セキュリティ面を気にする場合はNatGatewayを使って、PrivateSubnetに置きましょう。
RDSをプライベートサブネットに置いていてるため外部からEC2経由で接続します。
またMigrationを自動化するのは危険なため、EC2から実行します。
GitHub Actionsで下記の事を行う事を想定しています。
- テスト
- コンテナbuild
- ECRへのPush
- ECSへのDeploy
※ ここではGitHubActionsの設定については触れません。
コンテナに閉じ込める事はあまりせず、AWSのパラメータストアを使ってTask実行時に渡してあげるようにしています。