読者コミュニティ|ECS(Fargate)でnextjs+laravel+rds環境構築
本の感想や質問をお気軽にコメントしてください。
はじめまして、有益な記事をありがとうございますmm
resource "aws_lb_listener" "https" {
load_balancer_arn = aws_lb.this.arn
port = 443
protocol = "HTTPS"
certificate_arn = data.aws_acm_certificate.host_domain_wc_acm.arn
default_action {
type = "fixed-response"
fixed_response {
content_type = "text/plain"
message_body = "503 Service Temporarily Unavailable"
status_code = "503"
}
}
}
この辺りの記述なのですが受け取ったリクエストを全て503で返すということで間違い無いでしょうか?
今この辺りなのですが、ブラウザで確認を取ろうとしても503が返ってきてしまっていて詰まっている状態です!
ロードバランサーを作るときに、デフォルトのアクションを便宜的に503にしているので、ALB作っただけのタイミングだと503しか帰って来ません。
ecs関連のリソースを作る部分で下記のようなルールを追加していく形ですので、コンテナまでの疎通確認したい場合にはそこまで進めて確認してみてください。
resource "aws_lb_listener_rule" "frontend" {
listener_arn = aws_lb_listener.https.arn
priority = 1
action {
type = "forward"
target_group_arn = aws_lb_target_group.frontend.arn
}
condition {
host_header {
values = [local.app_domain_name]
}
}
}
早い返信ありがとうございます!!
色々調べたところECSタスクが正常に起動しておらず、自身ががM1 MacでDocker imageをbuildしていたことが原因でした!
下記にその対処法が書かれていたので、この通り行ったところ正常に動作しました!
お手数おかけいたしましたmm
こちら完走することができました、ありがとうございます!
教材とは異なる実装、また記載されていない工程が必要だったところを書いておきます。もしかしたら僕が教材を読み込めていない可能性もありますがご了承くださいませ。
Codebuild用のカスタムイメージについて
php81
系のパッケージが見つかりませんでした。なのでDockerfileを下記のように修正することで対応しました。
- FROM docker:20.10.14-dind
+ FROM docker:20.10.17-dind-alpine3.16
...
- && apk add --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/edge/testing/ --allow-untrusted gnu-libiconv \
+ && apk add --no-cache --allow-untrusted gnu-libiconv \
...
またカスタムイメージをECRにプッシュする際にはlatest
のタグを付与する必要がありました。これはCodebuild上からpullする際に指定されているデフォルトのタグがlatest
のためです。
ECRのパーミッションに関して
以下のいずれかに該当する場合は、AWS CodeBuild が Docker イメージをビルド環境にプルできるように、Amazon ECR のイメージリポジトリにアクセス許可を割り当てる必要があります。
ECRのコンソール側からアクセス許可を割り当てる必要がありました。リポジトリもTerraformで作成していればTerraformから設定ができるのですが、今回はそういう運用ではないので直接コンソールから設定しました。