https://zenn.dev/ponta/articles/a0437927ce0c6a
元々、AWS Elastic Beanstalkで動いていたAPIサーバをFargateに移行しました。 移行作業で行ったことを書いていきます。
以上の理由から移行することにしました。
まず、開発環境でDockerを利用していたものの、Fargateで利用することを考慮していなかったため、Docker環境を修正しました。 ちなみにAPIサーバはLaravelを使用しており、Nginx & Laravelの構成にしました。
一点だけNginxとLaravel間はTCPで通信しているのですが、 ローカルとFargateではネットワークが異なるため、
${PHP_HOST}
としてDocker起動時にsed
で書き換えることにしました。
次に既存インフラのコード化していきました。 既存インフラは既にサービスとして動いていたので、Terraformを使用して慎重にコード化していきました。 最初はAWS CDKで構築しようか迷っていたのですが、情報量の多さからTerraformを選択しました。
次にFargate環境をTerraformで作成していきました。
ECR Dockerイメージをプッシュする場所としてECRを作成しました。 M1 MacでビルドしたイメージはFargateのLinux環境で使用できなかったため、DockerのビルドとプッシュはGitHub Actionsで自動化することにしました。
ECS クラスター作成、タスク定義作成、サービスの作成を行った後でサービスの更新(デプロイ)はGitHub Actionsで自動化することにしました。 `amazon-ecs-render-task-definition`を利用することでタスク定義の更新とサービス更新(デプロイ)が自動化できます。