質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

1回答

5055閲覧

[AWS, ECS] Cannotpullcontainererrorの原因を解消したい

kazuhiro_ikeda

総合スコア5

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

1クリップ

投稿2022/12/22 02:52

解決したいこと

ECSサービスを立ち上げると、掲題のエラーが発生してコンテナが立ち上がりません。
エラー内容及び、AWSにて使用しているVPC, ECR, ECSの環境を記述しました。

コンテナが立ち上がらない原因、何か分かりましたらヒントなどでもご教授いただけますと幸いです。

エラー内容

Cannotpullcontainererror: ref pull has been retried 5 time(s): failed to copy: httpReadSeeker: failed open: failed to do request: Get "https://prod-ap-northeast-1-starport-layer-bucket.s3.ap-northeast-1.amazonaws.com/....

動作環境

VPC

  • サブネット
    パブリックサブネットを二つ用意。
    リストパブリック IPv4 アドレスを自動割り当て済

  • ネットワークACL
    インバウンド、アウトバウンドルールにて、ポート番号80、443の0.0.0.0/0に対する通信を許可
    それ以外の通信は許否

  • セキュリティグループ
    インバウンド、アウトバウンドルールにて、ポート番号80、443の0.0.0.0/0に対する通信を許可

  • エンドポイント
    以下をサービス名のエンドポイントを作成して、VPCに紐付けた
    →com.amazonaws.ap-northeast-1.ecr.api
    →com.amazonaws.ap-northeast-1.ecr.dkr
    →com.amazonaws.ap-northeast-1.logs
    →com.amazonaws.ap-northeast-1.ssm
    →com.amazonaws.ap-northeast-1.s3(ゲートウェイ型)

    ※S3のエンドポイントを除いた全てのエンドポイントに対してセキュリティグループ(80番、443番の全通信(0.0.0.0/0)を許可)を付与してます

  • ルートテーブル
    0.0.0.0/0の通信をインターネットゲートウェイに設定
    com.amazonaws.ap-northeast-1.s3の通信をS3のエンドポイント(ゲートウェイ)に設定
    それ以外の通信をローカルに設定

ECR

  • ポリシー
    リンクに従い、AmazonEC2ContainerRegistryReadOnlyの部分のポリシーを付与した

ECS

  • タスク定義
    タスク実行ロール:ecsTaskExecutionRoleのみを付与
    アプリケーション環境:FARGATEを使用

  • クラスター
    ネットワークは上記に記述したVPCのサブネットを指定

  • サービス
    FARGATEバージョン:1.4
    コンピューティングオプション:起動タイプ
    ネットワーキングのセキュリティグループ:VPCで作成したセキュリティグループ
    パブリックIP:有効

備考

こちらに記述してある対処方法は一通り試しました。
→プライベートネットワークを導入していないため、NATインスタンスに関連する操作は特にしてませんが

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yu_1985

2022/12/22 06:53

タスク実行ロールにはどのようなポリシーが設定してありますか。 また、タスクロールとタスク実行ロールの設定を間違っていたりはしませんか。
kazuhiro_ikeda

2022/12/22 07:31

ご回答ありがとうございます! yu_1985さん ・タスク実行ロール  ecsTaskExecutionRoleというロールで、AmazonECSTaskExecutionRolePolicyが付与されてました。  こちらのAmazonECSTaskExecutionRolePolicyの内訳は、以下が付与されてました。  →"ecr:GetAuthorizationToken"  →"ecr:BatchCheckLayerAvailability"  →"ecr:GetDownloadUrlForLayer",  →"ecr:BatchGetImage",  →"logs:CreateLogStream",  →"logs:PutLogEvents" ・タスクロール  何も付与してませんでした。  立ち上がったFARGATEインスタンスからS3にアクセスする権限がなくて失敗してるのかな?と思いました。  こちら確認してみます。 odataikiさん  ご提示のブログは確認してました。  このブログでは別のVPCを作成したことで、ゲートウェイのエンドポイントが該当VPCに存在しなくなってしまったことがエラー発生の原因と見受けられます。  当方の環境では、VPCが一つでそのVPCに対してゲートウェイエンドポイントを設置しておりますので、こちらの原因とは別と考えております。
guest

回答1

0

エラー内容は異なりますが、多分この辺なのではないでしょうか。
Amazon ECR から Docker イメージを取り出す際に、Amazon ECS の「error pulling image configuration: error parsing HTTP 403 response body」(イメージ設定を取り出す際のエラー: HTTP 403 レスポンス本文の解析エラー) を解決する方法を教えてください。

パブリックサブネットからの各サービスのアクセスにはVPCエンドポイントは必要ないのですが、あえて使用している理由はなにかありますでしょうか。

投稿2022/12/22 10:33

yu_1985

総合スコア7586

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kazuhiro_ikeda

2022/12/22 12:21 編集

パブリックサブネットでエンドポイントを用いた理由は、こちらのリンクを参考にしました。 https://aws.amazon.com/jp/premiumsupport/knowledge-center/ecs-unable-to-pull-secrets/ > AWS Fargate プラットフォームバージョン 1.4.0 では、タスクの Elastic Network Interface Fargate1.4.0にはENIを経由する必要があるということで、privateLink型のエンドポイントを導入しました。 また、リンクのご提示ありがとうございます。 確認しましたが、現在使用しているS3のゲートウェイエンドポイントはフルアクセス権を与えておりますので、この線も違うかな?と考えております。 追記 念の為ご提示のリンクのようにS3のポリシー(arn:aws:s3:::prod-region-starport-layer-bucket/*)※を修正しましたがNGでした ※もちろん、自身の使用するリージョンに置き換えております
yu_1985

2022/12/22 12:09

よくよく読むとENIを経由するからといってエンドポイントが必要とは書かれていません。 パブリックサブネットを使用する場合についてはPrivateLinkを使用することは言及されていません(使うこともできますが…) [Auto-assign public]を有効化するようには書かれています。 VPCエンドポイントが必須でないなら、試しにVPCエンドポイントを使わない状態で立ち上げることが可能か確かめてみてはいかがでしょう。 エラーメッセージを見ても、S3へのアクセスに問題を抱えていそうに思えます。
kazuhiro_ikeda

2022/12/23 07:13

よく読んだら、パブリックサブネットでエンドポイントは必須でないと記述ありました・・・ ご指摘ありがとうございます。 外したところ、今度は以下エラーが発生しました。 Resourceinitializationerror: unable to pull secrets or registry auth: execution resource retrieval failed: unable to retrieve ecr registry auth: service call has been retried 3 time(s): RequestError: send request failed caused by: Post "https://api.ecr.ap-northeast-1.amazonaws.com/": dial... エラー内容を検索して以下ページがヒットしたのですが、一部は該当しなささそうです。 https://aws.amazon.com/jp/premiumsupport/knowledge-center/ecs-unable-to-pull-secrets/ サブネットからインターネットへのルートを確認する:パブリックサブネットで、自動割り当てIPは有効、Secrets Manager,Systems Manager の使用なし、カスタムドメインサーバの使用なし ネットワーク ACL とセキュリティグループの設定を確認する:443番のポートを解放済み Amazon VPC エンドポイントを確認する:エンドポイント使用なし 他に該当するものがあるのか?もう少し調べてみます。
yu_1985

2022/12/23 07:22

セキュリティグループやACLのルールがちょっと気にはなりますね。 気になったのはアウトバウンドを絞っているのが影響していないかぐらいですが、httpsなので443が開いていれば十分そうに感じます。 試しに広めに開けてみて、もしそれでうまく行ったなら原因はそこということになります。
kazuhiro_ikeda

2022/12/26 01:15

取り急ぎ、動きましたのでご報告です。 ネットワークACL、セキュリティグループのインバウンドのポートを全開放したら無事コンテナが動きました。 →Resourceinitializationerror: unable to pull secrets or registry auth:...のエラーは出なくなった てっきり、インバウンドのポートはhttp, httpsのみで良いと思ってたので、こちら別途調査します。 根本的な原因が分かりましたら自分で回答して本質問はクローズしようと思います。 yu_1985さん、ご回答ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問