Aws-ecs-fargate-1.4.0プラットフォームでプライベートリポジトリを実行しようとしています。
プライベートリポジトリ認証については、 docs を使用しましたが、うまく機能していました。
何とか既存のサービスを何度も更新した後、タスクの実行に失敗し、次のようなエラーが表示されます
ResourceInitializationError: unable to pull secrets or registry auth: execution resource retrieval failed: unable to get registry auth from asm: service call has been retried 1 time(s): asm fetching secret from the service for <secretname>: RequestError: ...
私はecsTaskExecutionRole
を変更していません。秘密の値を取得するために必要なすべてのポリシーが含まれています。
プラットフォームバージョン1.4.0
の起動タイプとしてFargateを使用すると、まったく同じ問題が発生していました。最後に、パブリックサブネットを使用していたので、タスクに public ipの割り当てを有効にする を実行するだけで、タスクに送信ネットワークアクセスを許可してイメージをプルすることができました。
プラットフォームバージョン1.3.0
を使用してサービスを作成しようとすると、解決のヒントが得られました。タスクの作成は、似ていますが 幸いにも文書化されています エラーで失敗しました。
私はあなたの設定について完全にはわかりませんが、いくつかの$を節約するためにNATゲートウェイを無効にした後、aws-ecs-fargate-1.4.0プラットフォームで非常に類似したエラーメッセージが表示されました。
Stopped reason: ResourceInitializationError: unable to pull secrets or registry auth: execution resource retrieval failed: unable to retrieve ecr registry auth: service call has been retried 1 time(s): RequestError: send request failed caused by: Post https://api.ecr....
次のサービス名にVPCエンドポイントを作成する必要があることがわかりました。
そして、aws-ecs-fargate-1.3.0プラットフォームにダウングレードする必要がありました。ダウングレード後、DockerイメージはECRからプルされ、デプロイメントは再び成功しました。
NATゲートウェイなしでシークレットマネージャーを使用している場合は、com.amazonaws.REGION.secretsmanager
のVPCエンドポイントを作成する必要がある可能性があります。
ECSサービスのセキュリティグループのルールを更新して、同様の問題を解決しました。以下のルール構成。
Inbound Rules:
* HTTP TCP 80 0.0.0.0/0
Outbound Rules:
* All traffic All All 0.0.0.0/0