ECS Fargate で CannotPullContainerError

0

起動に失敗したタスクの管理コンソールに下記のエラーが表示されます。

Task stopped at: 2023-10-04T00:41:25.283Z
CannotPullContainerError: containerd: pull command failed: panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation code=0x1 addr=0x40 pc=0x8919d0] goroutine 1 [running]: main.(*puller).pullWithClient(0x40007b5bb8, {0xd844b8, 0x400073e480}, {0xd7f180, 0x4000358000}, 0x40002f4f70, {0xd7f130, 0x40003fd5c0}) /root/go/src/github.com/aws/two/puller/pull.go:198 +0x3b0 main.(*puller).Pull(0x40007b5bb8, {0xd844b8, 0x40002fdb60}, 0x40002f4f70, {0xd7f130, 0x40003fd5c0}) /root/go/src/github.com/aws/two/puller/pull.go:147 +0x1f0 main.(*puller).pullImage(0xd844b8?, {0xd844b8, 0x40002fdb60}, 0x40002f4f70, {0xd7f130?, 0x40003fd5c0?}) /root/go/src/github.com/aws/two/puller/pull.go:350 +0x34 main.main() /root/go/src/github.com/aws/two/puller/main.go:75 +0x4b4 : exit status 2

このエラーの解消の解消のために試せることはありますか? 使用しているイメージのArchitectureはarm64です。 タスク定義に設定しているCpuArchitectureをARM64からX86_64に変えてみたりしましたが、エラーの内容は変わりませんでした。

tnkkk
質問済み 7ヶ月前1059ビュー
1回答
1

考えられる原因としては

  1. ECS が配置されているサブネットがブライベートサブネットであり、インターネットアクセスが出来ない(ECR も接続可能な VPC エンドポイントではない)
  2. ECS の実行ロールに適切な権限が付与されていない
  3. ECR リポジトリが違うリージョンにある、または違うアカウントにある

上記に該当するかまずチェックしてみて下さい。

profile picture
HS
回答済み 7ヶ月前
  • 回答ありがとうございます。

    1. 仰る通り、当該ECSはプライベートサブネットにあります。
      このエラーの前に、RequestError: send request failed caused by: Post "https://api.ecr.ap-northeast-1.amazonaws.com/": dial tcp 3.112.65.177:443: i/o timeout. Please check your task network configuration.というエラーが出ていたので、ECR接続用のVPCエンドポイントを作って当該ECSからの443リクエストを許可するセキュリティグループを追加したところ、主題のエラーに変化したので、ネットワーク関係の問題は解消されたのかなと思っていました。
    2. 試しに全てのリソースに対する全てのアクションを許可してみましたが、変化がなかったので権限の問題では無いのかもしれません。
    3. いずれも同一アカウントの同一リージョンに存在していることは確認できています。
  • エラーメッセージを英語で検索したところ、containerd の問題(バグ?)のようですね。

    こちらの GitHub Issue にも同じようなエラーが時々起こることが報告されていました。

    containerd sometimes crashes with panic: runtime error: invalid memory address or nil pointer dereference

    一応バージョン 1.6 で対応予定のようですが、直ってないかもしれないですね。

  • ありがとうございます。 そうなると、こちらでどうにかできるものではなさそうですね。 ただ、気掛かりなのは、私の場合は sometimes ではなく毎回crashするので、何か別の原因がありそうな気がしています。 もう少し基本的な構成から試して原因を切り分けてみたいと思います。

ログインしていません。 ログイン 回答を投稿する。

優れた回答とは、質問に明確に答え、建設的なフィードバックを提供し、質問者の専門分野におけるスキルの向上を促すものです。

質問に答えるためのガイドライン