Fargateでタスク定義実行時,ECRからイメージの取得に失敗
問題
- タスク定義を走らせると状態が PENDING → STOPPED
- CloudWatchにもログが貯まっていない
- エラーメッセージは
CannotPullContainerError: Error response from daemon: Get <Repository URL>: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
原因
いつも通りGitHub Issueの紹介記事になっちゃうのですが,原因はこれでした.
Fargate: CannotPullContainer located on ECS registry · Issue #1128 · aws/amazon-ecs-agent · GitHub
ECSはインターネットアクセス経由でイメージを取得するのでFargate側からインターネットへアクセスできるようにする 必要がある. - Public IPを使うなら0.0.0.0/0へのアウトバウンドをインターネットゲートウェイへルーティングしているか,
- Public IPを使わないなら0.0.0.0/0をNATゲートウェイ/インスタンスへルーティングさしているか,
- Security Groupが0.0.0.0/0へのアウトバウンドを許可しているか,
確認して.
とのこと.
結果
Public IPの自動割り当てを許可したら走りました.