從 Amazon ECR 提取 Docker 映像檔時,如何解決 Amazon ECS 中的「提取映像檔組態出錯:解析 HTTP 403 回應內文時出錯」錯誤?

1 分的閱讀內容
0

當我從 Amazon Elastic Container Service (Amazon ECS) 中的 Amazon Elastic Container Registry (Amazon ECR) 中提取 Docker 映像檔時,出現以下錯誤消息:「提取映像檔組態出錯:解析 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>"

根據預設,在 Amazon S3 中建立閘道端點時,您可以完整存取所有資源。

如果您有允許存取特定資源的自訂政策,則必須將 starport-layer-bucket ARN 新增至 Amazon S3 政策以解決錯誤。

解決方法

  1. 開啟 Amazon Virtual Private Cloud (Amazon VPC) 主控台

  2. 從導覽功能表中選擇端點

  3. 從清單中選取 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 官方已更新 2 年前