概要
cloudformationを使用したECS環境構築時に、エラーが発生しました。
エラー内容は下記の通り。
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....
google翻訳で訳したら、
ResourceInitializationError:シークレットまたはレジストリ認証をプルできません:実行リソースの取得に失敗しました:ecrレジストリ認証を取得できません:サービス呼び出しが1回再試行されました:RequestError:リクエストの送信に失敗しました原因:投稿https://api.ecr。 ..。。
エラー文を見るにECRとのやりとりがうまくいっていないみたい。privatelinkで接続しているので、エンドポイントに問題があると推測し、調査しました。
原因
Fargate起動タイプにおいて、プラットフォームバージョン1.3.0以前のものはエンドポイント設定がecr.dkr
のみで十分だったのですが、1.4.0からはecr.api
も必要になったとのこと。
【衝撃に備えろ】Fargate PV1.4のVPCエンドポイント変更点について
解決
cloudformationのエンドポイント用テンプレートにecr.api
の設定項目を追記。
EcrApiEndpoint:
Type: "AWS::EC2::VPCEndpoint"
Properties:
ServiceName: !Sub "com.amazonaws.${AWS::Region}.ecr.api"
VpcEndpointType: "Interface"
PrivateDnsEnabled: true
VpcId: { "Fn::ImportValue": !Sub "${PJPrefix}-vpc" }
SubnetIds:
- { "Fn::ImportValue": !Sub "${PJPrefix}-private-subnet-a" }
- { "Fn::ImportValue": !Sub "${PJPrefix}-private-subnet-c" }
SecurityGroupIds:
- { "Fn::ImportValue": !Sub "${PJPrefix}-endpoint-sg" }
無事に構築し直せました。
補足
今回のデプロイ環境は2ヶ月ほど運用。そのそもなんで2021年3月16日現在、急にエラーが起きたのか?
原因は以下、
ECS FargateプラットフォームバージョンのLATESTが1.4.0へ
Latestで設定して入れば最新バージョンだろうと考えていましたが、Fargateの方は1.3のままだったんですね。全然気がつかなかった。先日アプデがきたことで、これまで1.3の設定でよかったものが、1.4に変更になり、エラーが起きたというものでした。けど、アプデが来たのが3月8日。1週間ほどラグがあったのはなんでだろう…