本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
向 Amazon ECR 注册管理机构提出请求
您可以使用 IPv4仅限终端节点或双堆栈(和)终端节点在 Amazon ECR 私有注册表中推送、拉取、删除、查看和管理 OCI 映像、Docker 映像和兼容 OCI 的项目。IPv4 IPv6要从 IPv4 网络发出请求,您可以使用双堆栈或 IPv4 终端节点。要从 IPv6 网络发出请求,请使用双堆栈终端节点。有关使用 IPv4 和双栈终端节点向 Amazon ECR 公共注册机构发出请求的更多信息,请参阅向 Amazon ECR 公共注册管理机构发出请求。访问 Amazon ECR 无需支付任何额外费用。 IPv6有关定价的更多信息,请参阅 Amazon 弹性容器注册表定价
注意
Amazon ECR 不支持通过双堆栈 Amazon PrivateLink 终端节点传输流量。如果您需要 Amazon PrivateLink 支持,则必须使用 IPv4仅限使用的 Amazon ECR 终端节点。
Amazon ECR 终端节点由超出 IPv4仅限终端节点或双栈终端节点支持的属性指定。这些属性可以包括:
-
区域-每个终端节点都特定于一个区域。
-
类型 — 端点的选择取决于你使用的是软件开发工具包还是兼容 OCI 和 Amazon Docker 命令行接口。
-
安全 — 在部分地区,Amazon ECR 提供符合 FIPS 标准的终端节点。有关符合 FIPS 标准的 Amazon ECR 终端节点列表的更多信息,请参阅联邦信息处理标准 (
FIPS) 140-3。
开始提出请求 IPv6
要向 Amazon ECR 注册表发出请求 IPv6,您需要使用双堆栈终端节点。在访问 Amazon ECR 注册表之前 IPv6,请验证以下要求:
-
您的客户端和网络必须支持 IPv6。
-
Amazon ECR 支持以下请求类型: IPv6
-
OCI 和 Docker 客户端请求:
<registry-id>
.dkr-ecr.<aws-region>
.on.aws -
Amazon API 请求:
ecr.
<aws-region>
.api.aws
-
-
您必须更新使用源 IP 地址筛选的任何 Amazon Identity and Access Management (IAM) 或注册表策略,以包括 IPv6 地址范围。有关更多信息,请参阅 在 IAM 策略中使用 IPv6 地址。
-
使用时 IPv6,服务器访问日志会以 IPv6 格式显示
Remote IP
地址。更新现有工具、脚本和软件以解析这些 IPv6格式化的 IP 地址。注意
如果您遇到与日志文件中存在 IPv6 地址有关的问题,请与联系Amazon Web Services 支持
。
测试 IP 地址兼容性
如果您使用的是使用 Linux/Unix 或 Mac OS X,则可以使用以下示例所示的curl
命令 IPv6 来测试是否可以访问双栈端点:
curl --verbose https://ecr.us-west-2.api.aws
您获得的信息如下例所示。如果您通过连接的 IP 地址 IPv6 进行连接,则该地址将是一个 IPv6 地址。
* About to connect() to ecr.us-west-2.api.aws port 443 (#0) * Trying IPv6 address... connected * Connected to ecr.us-west-2.api.aws (IPv6 address) port 443 (#0) > Host: ecr.us-west-2.api.aws * Request completely sent off
如果你使用的是 Microsoft Windows 7 或 Windows 10,则可以测试是否 IPv6 可以通过 IPv4 或使用ping
命令访问双栈端点,如下例所示。
ping ecr.us-west-2.api.aws
使用双栈 IPv6 终端节点发出请求
您可以使用双堆栈终端节点调用 Amazon ECR API。 IPv6 无论您使用 IPv4 还是,Amazon ECR API 操作的功能和性能都将保持一致。 IPv6
使用 Amazon Command Line Interface (Amazon CLI) 和时 Amazon SDKs,您可以通过使用参数或标志来启用 IPv6 以切换到双堆栈终端节点,或者直接在配置文件中指定双堆栈终端节点以覆盖默认 Amazon ECR 终端节点。您也可以使用命令更改配置,该命令在默认配置文件中设置use_dualstack_endpoint
为 true。有关更多信息use_dualstack_endpoint
,请参阅双栈和 FIPS 终端节点。
例 使用命令更改配置
aws configure set default.ecr.use_dualstack_endpoint true
例 提出请求而不是 IPv6 使用 Amazon CLI
aws ecr describe-repositories --region us-west-2 --endpoint-url
https://ecr.us-west-2.api.aws
使用 docker CLI 中的亚马逊 ECR 终端节点
登录您的 Amazon ECR 存储库并标记映像后,您可以向亚马逊 ECR 注册表推送和拉取 OCI 映像和 Docker 镜像。以下示例演示了使用两个双堆栈端点的 docker push 和 docker pull 命令。
例 使用端点推送 docker 镜像 IPv4
docker push
<registry-id>
.dkr.ecr.us-west-1.amazonaws.com/my-repository:tag
例 使用双栈端点推送 docker 镜像
docker push
<registry-id>
.dkr-ecr.us-west-1.on.aws/my-repository:tag
例 使用端点提取 docker 镜像 IPv4
docker pull
<registry-id>
.dkr.ecr.us-west-1.amazonaws.com/my-repository:tag
例 使用双栈端点提取 docker 镜像
docker pull
<registry-id>
.dkr-ecr.us-west-1.on.aws/my-repository:tag
在 IAM 策略中使用 IPv6 地址
在使用访问注册表之前 IPv6,请确保使用 IP 地址筛选的 IAM 用户和 Amazon ECR 注册表策略包含 IPv6 地址范围。如果未更新 IP 地址筛选策略来处理 IPv6 地址,则客户端在开始使用注册表时可能会错误地丢失或无法访问注册表 IPv6。有关使用 IAM 管理访问权限的更多信息,请参阅 适用于 Amazon Elastic Container Registry 的 Identity and Access Management。
筛选 IP 地址的 IAM 策略使用 IP 地址条件运算符。以下注册表策略示例说明如何使用 IP IPv4 地址条件运算符识别允许的地址54.240.143.*
范围。任何超出此范围的 IP 地址都将被拒绝访问注册表 (exampleregistry
)。由于所有 IPv6地址都超出了允许的范围,因此此策略会阻止 IPv6 地址访问exampleregistry
。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "IPAllow", "Effect": "Allow", "Principal": "*", "Action": "ecr:*", "Resource": "arn:aws:ecr:::
exampleregistry
/*", "Condition": { "IpAddress": {"aws:SourceIp": "54.240.143.0/24"} } } ] }
要同时允许 IPv4 (54.240.143.0/24
) 和 IPv6 (2001:DB8:1234:5678::/64
) 地址范围,请修改注册表策略的 Condition 元素,如以下示例所示。您可以使用这种Condition
区块格式来更新您的 IAM 用户和注册表策略。
"Condition": { "IpAddress": { "aws:SourceIp": [ "54.240.143.0/24", "2001:DB8:1234:5678::/64" ] } }
重要
在使用之前, IPv6 您必须更新所有使用 IP 地址筛选的相关 IAM 用户和注册表策略。我们不建议在注册表策略中使用 IP 地址筛选。
您可以使用 IAM 控制台查看您的 IAM 用户政策,网址为https://console.aws.amazon.com/iam/