はじめに
先日、2018年8月に書いた「LaravelアプリケーションをローカルでもAWSでもDockerで動かす」という記事が100
LGTM
に到達しました。
2021年2月現在、私が書いた記事の中では、もっともLGTM
されている記事でして、今年に入ってからもLGTM
されていることから関心の高い内容なのかなと思っています。
とはいえ、3年近く経過している記事ではありますので、構築方法も含めアップデートしたいと思います。
この記事では、CloudFormation
を使って、いくつかコマンドを叩くことで、短いステップでECS
環境を構築していきます。
構築をはじめる前にやっておくこと
構築をはじめる前にやっておくことを以下に示します。
-
AWS CLI
のインストール -
aws configure --profile=$(profile)
による認証情報の設定 -
Docker
のインストール- Get Started with Docker | Docker
-
ECR
にDocker
イメージをプッシュする際に必要になります
-
Windows
の場合、Make
コマンドを使えるようにしておく -
github
のpersonal access token
を作成- 個人アクセストークンを使用する - GitHub Docs
-
repo
とadmin:repo_hook
権限を選択しておきます -
CodePipeline
によるデプロイで必要になります
いざ、構築
あらかじめ、CloudFormation
のテンプレートと簡単なアプリケーションをimunew/ecs-blue-green-demoにて用意しています。
リポジトリをfork
し、git clone
しておきます。
$ git clone git@github.com:{forkしたアカウント}/ecs-blue-green-demo.git
$ cd ecs-blue-green-demo
以下、imunew/ecs-blue-green-demo
を使って構築していきます。
1. VPC
、Subnet
、...LoadBalancer
の構築
以下のように、make
コマンドを実行していきます。
$ make deploy-vpc-subnet profile=$(profile)
$ make deploy-nat-instance profile=$(profile)
$ make deploy-network profile=$(profile)
$ make deploy-security-group profile=$(profile)
$ make deploy-load-balancer profile=$(profile)
2. ECR
リポジトリの作成、およびDocker
イメージのプッシュ
まずは、ECR
リポジトリを作成します。
$ make deploy-ecs-ecr profile=$(profile)
次に、Docker
イメージをビルドし、ECR
にプッシュします。
$ make push-docker-images profile=$(profile)
3. ECS
クラスターとサービスの構築
ECS
クラスターとサービスを構築します。
$ make deploy-ecs-cluster profile=$(profile)
$ make deploy-ecs-service profile=$(profile)
ECS
サービスが正常に構築できていれば、その時点でLoadBalancer
のDNS
からエンドポイントにアクセス可能となるはずです。
(phpinfo()
してるページが表示されるはずです。)
4. GitHub
プライベートアクセストークンをSecrets Manager
に登録する
access-token
には、事前に作成しておいたプライベートアクセストークンを指定します。
$ make deploy-secrets-github profile=$(profile) access-token=$(access-token)
5. CodeDeploy
アプリケーションとデプロイグループの作成
CodeDeploy
アプリケーションとデプロイグループを作成します。
$ make deploy-code-deploy profile=$(profile)
6. CodePipeline
の作成
CodePipeline
を作成します。
$ make deploy-code-pipeline profile=$(profile)
Blue/Green デプロイ
フォークしたリポジトリに、コードをプッシュすると、下記のように、CodePipeline
が動き出します。
Deploy
ステージの詳細
リンクをクリックすると、Blue/Greenデプロイ
の詳細を下記のように確認できます。
おわりに
ECS
環境の構築はできたでしょうか?
フォークしたリポジトリを色々カスタマイズしたりして、自分なりのテンプレートを作ってみてください。
何か詰まったところがあったり、ご意見などありましたら、この記事にコメントいただくか、imunew/ecs-blue-green-demo
にissue
かpull-request
ください。
ではでは。