如何解决从 Amazon ECR 提取 Docker 镜像时,在 Amazon ECS 中出现的“error pulling image configuration: error parsing HTTP 403 response body(提取镜像配置时出错:解析 HTTP 403 响应正文时出错)”错误?

上次更新日期:2022 年 4 月 5 日

当我在 Amazon Elastic Container Service(Amazon ECS)中,从 Amazon Elastic Container Registry(Amazon ECR)中提取 Docker 镜像时收到以下错误消息“error pulling image configuration: error parsing HTTP 403 response body(提取镜像配置时出错:解析 HTTP 403 响应正文时出错)”。

简短描述

Amazon ECR 使用 Amazon Simple Storage Service (Amazon S3) 来存储映像层。当容器从 Amazon ECR 下载映像时,它们必须访问 Amazon ECR 来获取映像清单,然后访问 Amazon S3 才能下载映像层。以下是 Amazon S3 存储桶的 Amazon Resource Name(ARN),其中包含每个 Docker 映像的层。

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

如果您使用的是路由表中的 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>"

默认情况下,如果您在 Simple Storage Service(Amazon S3)中创建了网关端点,那么您会拥有对所有资源的完全访问权限。

如果您拥有允许访问特定资源的自定义策略,则必须将 starport-layer-bucket ARN 添加到 Simple Storage Service(Amazon S3)策略中才能解决错误。

解决方法

1.    打开 Amazon Virtual Private Cloud(Amazon VPC)控制台

2.    从导航菜单中,选择终端节点

3.    从列表中选择 S3 终端节点。

4.    选择策略选项卡,然后选择编辑策略

5.    在策略的 Resource(资源)部分中,添加以下 ARN:

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

注意:请确保 ARN 包含您的 AWS 区域。

作为参考,请考虑以下示例策略:

{
  "Version": "2008-10-17",
  "Statement": [
    {
      "Sid": "Access-to-specific-buckets",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::prod-us-east-1-starport-layer-bucket/*"
      ]
    }
  ]
}

这篇文章对您有帮助吗?


您是否需要账单或技术支持?