Amazon Elastic Container Registry (Amazon ECR) から Amazon Elastic Container Service (Amazon ECS) にDocker イメージを取得すると、次のエラーが表示されます: 「error pulling image configuration: error parsing HTTP 403 response body.」
簡単な説明
Amazon ECR は Amazon Simple Storage Service (Amazon S3) を使用してイメージレイヤーを保存します。コンテナで Amazon ECR からイメージをダウンロードする場合、Amazon ECR にアクセスしてイメージマニフェストを取得する必要があります。コンテナは、Amazon ECR にアクセスした後で、Amazon S3 にアクセスしてイメージレイヤーをダウンロードします。
各 Docker イメージのレイヤーを含む Amazon S3 バケットの Amazon リソースネーム (ARN) を次に示します。
arn:aws:s3:::prod-region-starport-layer-bucket/*
starport-layer-bucket へのアクセスを制限するポリシーが設定されたルートテーブル内で S3 ゲートウェイエンドポイントを使用すると、次のエラーメッセージが表示されます。
"error pulling image configuration: error parsing HTTP 403 response body: invalid character '<' looking for beginning of value: "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>SAMPLE-REQUEST-ID</RequestId><HostId>SAMPLE-HOST-ID</HostId></Error>"
Amazon S3 でゲートウェイエンドポイントを作成すると、デフォルトではすべてのリソースへのフルアクセスが許可されます。
特定のリソースへのアクセスをカスタムポリシーで許可している場合は、Amazon S3 ポリシーに starport-layer-bucket ARN を追加する必要があります。
解決方法
このエラーを解決するには、次の手順を実行してください:
- Amazon Virtual Private Cloud (Amazon VPC) コンソールを開きます。
- ナビゲーションペインで [エンドポイント] を選択します。
- リストから [S3 endpoint] を選択します。
- [ポリシー] タブをクリックし、[ポリシーの編集] を選択します。
- ポリシーの [リソース] セクションに、次の ARN を追加します。
arn:aws:s3:::prod-region-starport-layer-bucket/*
注: ARN には所属の AWS リージョンを含める必要があります。
ポリシーの例:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Access-to-specific-buckets",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::prod-us-east-1-starport-layer-bucket/*"
]
}
]
}
関連情報
Amazon S3 ゲートウェイエンドポイントを作成する