

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

# 重新标记 Amazon ECR 中的映像
<a name="image-retag"></a>

借助 Docker Image Manifest V2 Schema 2 镜像，可以使用 `--image-tag` 命令的 **put-image** 选项重新为现有镜像添加标签。无需使用 Docker 提取或推送镜像，即可重新添加标签。对于大型镜像，此过程可大大节省重新为镜像添加标签所需的网络带宽和时间。

## 重新为镜像添加标签 (AWS CLI)
<a name="retag-aws-cli"></a>

**要使用重新标记图像 AWS CLI**

1. 使用 **batch-get-image** 命令可获取要重新添加标签的镜像的镜像清单并将其写入文件中。在此示例中，存储库中带有标签的图像的清单被写入名为的环境变量*MANIFEST*。*latest* *amazonlinux*

   ```
   MANIFEST=$(aws ecr batch-get-image --repository-name amazonlinux --image-ids imageTag=latest --output text --query 'images[].imageManifest')
   ```

1. 使用 **put-image** 命令的 `--image-tag` 选项将镜像清单与新标签一起放置到 Amazon ECR 中。在此示例中，图像被标记为*2017.03*。
**注意**  
如果该`--image-tag`选项在您的版本中不可用 AWS CLI，请升级到最新版本。有关更多信息，请参阅《AWS Command Line Interface 用户指南》**中的[安装 AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html)。

   ```
   aws ecr put-image --repository-name amazonlinux --image-tag 2017.03 --image-manifest "$MANIFEST"
   ```

1. 验证您的新镜像标签是否已附加到您的镜像。在以下输出中，镜像具有标签 `latest` 和 ` 2017.03`。

   ```
   aws ecr describe-images --repository-name amazonlinux
   ```

   您可以在一个 (扩展) 代码行中执行所有这些操作：

   ```
   {
       "imageDetails": [
           {
               "imageSizeInBytes": 98755613,
               "imageDigest": "sha256:8d00af8f076eb15a33019c2a3e7f1f655375681c4e5be157a26EXAMPLE",
               "imageTags": [
                   "latest",
                   "2017.03"
               ],
               "registryId": "aws_account_id",
               "repositoryName": "amazonlinux",
               "imagePushedAt": 1499287667.0
           }
       ]
   }
   ```

## 重新为镜像添加标签 (AWS Tools for Windows PowerShell)
<a name="retag-powershell"></a>

**要使用重新标记图像 AWS Tools for Windows PowerShell**

1. 使用 **Get-ECRImageBatch** **cmdlet** 获取要重新添加标签的映像的描述，并将该映像写入到环境变量。在此示例中，存储库中带有标签的图像被写入环境变量*\$1Image*。* latest* *amazonlinux*
**注意**  
如果您的系统上没有可用的 **Get-ECRImageBatch** ** cmdlet**，请参阅 *AWS Tools for PowerShell 用户指南*中的[设置 AWS Tools for Windows PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/pstools-getting-set-up.html)。

   ```
   $Image = Get-ECRImageBatch -ImageId @{ imageTag="latest" } -RepositoryName amazonlinux
   ```

1. 将图像的清单写入*\$1Manifest*环境变量。

   ```
   $Manifest = $Image.Images[0].ImageManifest
   ```

1. 使用 **Write-ECRImage** ** cmdlet** 的 `-ImageTag` 选项将映像清单与新标签一起放置到 Amazon ECR 中。在此示例中，图像被标记为*2017.09*。

   ```
   Write-ECRImage -RepositoryName amazonlinux -ImageManifest $Manifest -ImageTag 2017.09
   ```

1. 验证您的新镜像标签是否已附加到您的镜像。在以下输出中，镜像具有标签 `latest` 和 ` 2017.09`。

   ```
   Get-ECRImage -RepositoryName amazonlinux
   ```

   您可以在一个 (扩展) 代码行中执行所有这些操作：

   ```
   ImageDigest                                                             ImageTag
   -----------                                                             --------
   sha256:359b948ea8866817e94765822787cd482279eed0c17bc674a7707f4256d5d497 latest
   sha256:359b948ea8866817e94765822787cd482279eed0c17bc674a7707f4256d5d497 2017.09
   ```