定期実行していたAWS Batchを更新したら、次のようなエラーで実行失敗。
CannotPullContainerError: pull image manifest has been retried 1 time(s): failed to resolve ref XXXXXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com/hoge-fuga-batch:v1.0.5: unexpected status from HEAD request to https://XXXXXXXXXXXX.dkr.ecr.ap-northeast-1.amazonaws.com/v2/hoge-fuga-batch/manifests/v1.0.5: 403 Forbidden
アクセスが拒否されておる…。
結論としてはDockerイメージArn内のアカウントIDが間違っており、別アカウントにあるリポジトリを参照しようとして権限がなくエラーになっていたのでした。
上記のエラー文内で XXXXXXXXXXXX としているところです。(本当は同じアカウント内のリポジトリを参照しているつもりだった。)
公式のドキュメント によれば、 docker push や docker pull 時に403エラーが出るのは
- 別のリージョンに対して認証されている
- プッシュ先として認証したリポジトリに対するアクセス許可がない
- トークンの有効期限が切れた
-
wincred認証情報マネージャーのバグ
等が原因に挙げられるとのこと。
今回は「プッシュ先として認証したリポジトリに対するアクセス許可がない」のケースでした。