

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 将映像上传到 Amazon Elastic Container Registry
<a name="ml-uploading-your-images"></a>

创建推理和训练映像后，您可以将它们上传到 Amazon Elastic Container Registry。[Amazon ECR](https://aws.amazon.com/ecr/) 是一个完全托管的 Docker 注册表。 Amazon SageMaker AI 从 Amazon ECR 中提取图像来创建用于推理的模型包或用于训练作业的算法。 AWS Marketplace 还会从 Amazon ECR 检索这些图像以发布您的模型包和算法产品。本主体介绍如何将推理和训练映像上传到 Amazon ECR。

**Topics**
+ [我必须上传哪些映像？](#ml-which-images-must-i-upload)
+ [需要哪些 IAM 权限？](#ml-what-iam-permissions-are-required)
+ [将你的 Docker 客户端登录到 AWS](#ml-log-in-your-docker-client)
+ [创建存储库并上传映像](#ml-create-repository-and-upload-image)
+ [扫描上传的映像](#ml-scan-your-uploaded-image)

## 我必须上传哪些映像？
<a name="ml-which-images-must-i-upload"></a>

 如果您要发布模型包，请仅上传推理映像。如果您要发布算法，请同时上传推理映像和训练映像。如果推理映像和训练映像合并在一起，则仅上传一次合并后的映像。

## 需要哪些 IAM 权限？
<a name="ml-what-iam-permissions-are-required"></a>

 以下步骤假设本地计算机具有卖家中某个 AWS Identity and Access Management (IAM) 角色或用户的正确 AWS 证书 AWS 账户。角色或用户必须为两者 AWS Marketplace 和 Amazon ECR 制定正确的策略。例如，您可以使用以下 AWS 托管策略：
+  [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSMarketplaceSellerProductsFullAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSMarketplaceSellerProductsFullAccess.html)— 用于访问 AWS Marketplace 
+  [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ContainerRegistryFullAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonEC2ContainerRegistryFullAccess.html) – 用于访问 Amazon ECR 

**注意**  
点击这些链接可跳转至 *AWS 托管式策略参考*。

## 将你的 Docker 客户端登录到 AWS
<a name="ml-log-in-your-docker-client"></a>

 为要从中发布 AWS 区域 的设置变量（请参阅[AWS 区域 支持发布](ml-service-restrictions-and-limits.md#ml-supported-aws-regions-for-publishing)）。对于本示例，请选择美国东部（俄亥俄州）区域。

```
region=us-east-2
```

 运行以下命令以使用您的 AWS 账户 ID 设置变量。此示例假设当前 AWS Command Line Interface (AWS CLI) 证书属于卖家的 AWS 账户。

```
account=$(aws sts get-caller-identity --query Account --output text)
```

 要使用您所在地区的 AWS 账户 Amazon ECR Docker 注册表对您的 Docker CLI 客户端进行身份验证，请运行以下命令。

```
aws ecr get-login-password \
--region ${region} \
| sudo docker login \
--username AWS \
--password-stdin \
${account}.dkr.ecr.${region}.amazonaws.com
```

## 创建存储库并上传映像
<a name="ml-create-repository-and-upload-image"></a>

 为上传映像的标签设置一个变量，为上传的映像存储库的名称设置另一个变量。

```
image=my-inference-image
repo=my-inference-image
```

**注意**  
 在本指南的前几节中，推理和训练图像是生成的，它们分别被标记为**my-inference-image**和**my-training-image**。在本示例中，创建推理映像并将其上传到同名的存储库。

 运行以下命令，在 Amazon ECR 中创建映像存储库。

```
aws ecr --region ${region} create-repository --repository-name "${repo}"
```

 Amazon ECR 存储库位置的全名由以下部分组成：` <account-id>.dkr.ecr.<region>.amazonaws.com/<image-repository-name>`

 要将映像推送到存储库，必须使用存储库位置的全名对其进行标记。

 为映像存储库位置的全名和 `latest` 标签设置一个变量。

```
fullname="${account}.dkr.ecr.${region}.amazonaws.com/${repo}:latest"
```

 用全名标记映像。

```
sudo docker tag ${image} ${fullname}
```

 最后，将推理映像推送到 Amazon ECR 中的存储库。

```
sudo docker push ${fullname}
```

 上传完成后，该映像将出现在您要从中发布的区域的 [Amazon ECR 控制台的存储库列表](https://console.aws.amazon.com/ecr/repositories?region=us-east-2)中。在前面的示例中，映像被推送到美国东部（俄亥俄州）区域的存储库中。

## 扫描上传的映像
<a name="ml-scan-your-uploaded-image"></a>

 在 [Amazon ECR 控制台](https://console.aws.amazon.com/ecr/repositories?region=us-east-2)中 AWS 区域 ，选择您要发布的，然后打开上传图像的存储库。选择您上传的图像并开始扫描以检查是否存在已知漏洞。 AWS Marketplace 在发布之前，请检查您的 Amazon A SageMaker I 资源中使用的容器映像的 Amazon ECR 扫描结果。在创建产品之前，必须修复存在严重程度为“严重”或“高”的漏洞的容器映像。

 成功扫描映像后，它们可用于创建模型包或算法资源。

如果您认为自己的产品在扫描中存在误报错误，请联系 [AWS Marketplace 卖家运营](https://aws.amazon.com/marketplace/management/contact-us)团队并提供有关错误的信息。

 **后续步骤** 
+  查看[创建机器学习产品的要求和最佳实操](ml-listing-requirements-and-best-practices.md)中的文件大小限制 
+  继续[创建你的 Amazon SageMaker AI 资源](ml-creating-your-amazon-sagemaker-resource.md) 