如何解决 Amazon ECS 中的“error pulling image configuration: error parsing HTTP 403 response body”错误?

1 分钟阅读
0

从 Amazon Elastic Container Service(Amazon ECS)的 Amazon Elastic Container Registry(Amazon ECR)提取 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 存储桶的亚马逊资源名称(ARN):

arn:aws:s3:::prod-region-starport-layer-bucket/*

如果在路由表中使用 Amazon S3 网关端点,且所用策略限制访问 starport-layer-bucket,则会收到以下错误消息:

"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 中创建网关端点后,即可完全访问所有资源。

如果有允许访问特定资源的自定义策略,则必须将 starport-layer-bucket ARN 添加到 Amazon S3 策略中。

解决方法

要解决此错误,请完成下面的步骤:

  1. 打开 Amazon Virtual Private Cloud(Amazon VPC)控制台
  2. 从导航窗格中选择端点
  3. 从列表中选择 Amazon S3 端点。
  4. 选择策略选项卡,然后选择编辑策略
  5. 在策略的资源部分中,添加以下 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 网关端点

AWS 官方
AWS 官方已更新 10 个月前