terraform使ってALB+ECS+ECR+VPC EndpointでFargateを動かしてみた
ソースコードはこちら
構成
- ECS(Fargate)
- ECR
- ALB
- VPC Endpoint
背景
実務でECSを触る機会がなく時代の流れに乗り遅れそうだったので
AWSコンテナ設計・構築[本格]入門 Kindle版を買って勉強しました.3章のハンズオン以降を重点的にやり,何度かハマりましたが,頑張って最後まで行けました.ECSがよく分かっていない方にはオススメです.
一通り終えてたところでAWSコンソールからではなく,terraformでFargateにLaravelを乗せて動かせるようになりたい!と思いやってみることにしました.
月曜日が成人の日で3連休を使えばできるだろうと思っていたのですが,色々ハマってしまい,Laravelを乗せるところまではできませんでした.
terraformはTerraformでFargateを構築してGitHub Actionsでデプロイ!Laravel編で学習したのですが,途中で止まってしまって,あとは流し読みになっていました.
途中でやめてしまったのは,当時の僕はterraformもECSも両方わからずで進まなくなってしまったからだと思います.もうすこしレベルを下げて,AWSコンソールでポチポチとECSの理解を深めてからやるべきだったかなと振り返っています.
ハマった所
ECSタスクを立ち上げるときにECRからDockerイメージをpullできないというエラーで半日くらいハマりました.原因としてはVPC EndpointのセキュリティグループのインバウンドルールでHTTPS(443)を許可するべきところを,HTTP(80)を設定してしまっていました.
pull失敗したら,どこで止まったかなどを簡単にわかればいいのですが.
ちなみにVPC Endpointの代わりにNAT Gatewayを使う方法もあったのですが,NAT Gatewayの料金がお高いのでやめておきました.
感想
AWS認定資格などの勉強のときにある程度の構成がわかったつもりでいたのですが,実際に手を動かしてみるとALB周りなどの設定の理解不足を感じました.
Dockerイメージが単なるApacheならALBから動作確認することができたので,次はLaravelをECSに乗せていきたいと思います.
Discussion