FargateのタスクでDockerHubからイメージを取得したいときに起きたエラーです。
原因や対処法を紹介していきます。
「CannotPullContainerError」の原因
主な原因としては、サブネット上から外部ネットワークへの通信ができずに、imageのpullに失敗しているからです。
Fargate起動時の「CannotPullContainerError」への対処法
Fargate起動時の「CannotPullContainerError」への対処法を紹介していきます。
1.Fargateに設定されたサブネットが外部と通信できるようになっていない
Fargateに設定されたサブネットから外部への通信ができないと「CannotPullContainerError」のエラーになってしまいます。
サブネットに関連付けられているルートテーブルからインターネットゲートウェイまたはNATゲートウェイへの通信が許可されていないといけません。
更にそれらのインターネットゲートウェイまたはNATゲートウェイを通して、外部への通信を許可できる設定になっていないと上記のエラーが起きてしまいます。
インターネットゲートウェイの場合の設定
インターネットゲートウェイの場合は以下のように設定することで外部との通信ができるような設定にできます。
2.ネットワークACLのアウトバウンドが許可になっていない
ネットワークACLはデフォルトでは以下のように外部との接続は許可されていますが、設定で通信を許可されていない場合は外部との通信ができません。
上手く行かない場合は以下のように一度すべての通信を許可して試してみてください。
まとめ
「CannotPullContainerError」は外部との通信ができずに起きるエラーでした。AWSは正しく設定できていないと外部との通信ができないので気をつけましょう。
おかしなところや分からない所があったら指摘頂けると助かります。
参考