ECSにカスタムDockerイメージをアップロードしました。私はこの問題を試すためのアクセス許可を公開しました(これが機能するようになったらもう一度ロックします)。 DockerイメージをElastic Beanstalkにデプロイしようとしています。 Docker対応のElastic Beanstalk環境をセットアップしています。 AWSのドキュメントによると、AWSからイメージを取得している場合、認証情報を渡す必要はありません。 Dockerrun.aws.jsonファイルをアップロードして、インストールしようとしました。それはエラーで失敗します:
インスタンスでコマンドが失敗しました。戻りコード:1出力:「us-east-1」のレジストリ「434875166128」のECRによる認証に失敗しました。フック/opt/elasticbeanstalk/hooks/appdeploy/pre/03build.shが失敗しました。詳細については、コンソールまたはEB CLIを使用して/var/log/eb-activity.logを確認してください。
/var/log/eb-activity.log情報には何も有用ではありません。
これが私のDockerrun.aws.jsonファイルです。
{
"AWSEBDockerrunVersion": "1",
"Image": {
"Name": "{id000xxxx}.dkr.ecr.us-east-1.amazonaws.com/my-repo:1.0.0",
"Update": "true"
},
"Ports": [
{
"ContainerPort": "4000"
}
],
"Logging": "/var/log/app-name"
}
また、S3でdockercfg.jsonファイルを使用して認証を追加してみました。それも私にはうまくいきませんでした。
私は個人アカウントではなくビジネスアカウントを使用しているため、不明な差異がいくつかある可能性があることに注意してください。
ありがとう!
更新:私のユーザーも現時点で完全な権限を持っているので、権限に関して邪魔になることはありません。
私も同じ問題を抱えていました。
解決策:AWS -> IAM -> Roles - >
で、Beanstalkが使用しているロールを選択します。
私の場合はaws-elasticbeanstalk-ec2-role
に設定されていました
ロールのPermissionsの下で、ポリシーをアタッチします:AmazonEC2ContainerRegistryReadOnly
ECRでは、このロールに権限を与える必要はありません。
Elastic Beanstalkのnewコンソールを使用して、Elastic Beanstalk(aws-elasticbeanstalk-ec2-role、aws-elasticbeanstalk-service-role、AWSServiceRoleForECS)に必要なサービスロールを初期化できます。これは、各AWSアカウントで1回だけ実行する必要があります。
「コマンドがインスタンスで失敗しました。戻りコード:1出力:レジストリのECRによる認証に失敗しました」およびその他の奇妙なエラー(「指定したAWSアクセスキーIDがレコードに存在しません。(ElasticBeanstalk :: ManifestDownloadError) ")NEWコンソールを使用する。私はまだ古いものでこのエラーがありました。