

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

# 防止映像标签在 Amazon ECR 中被覆盖
<a name="image-tag-mutability"></a>

您可以在存储库中开启标签不可变性，以防止覆盖映像标签。为开启标签不可变性后，如果您推送某个标签已经在存储库中的映像，将返回 ` ImageTagAlreadyExistsException` 错误。标签不可变性会影响所有标签。您不能使某些标签不可变，而另一些则不是。

您可以使用 AWS 管理控制台 和 AWS CLI 工具为新存储库或现有存储库设置图像标签的可变性。要使用控制台步骤创建存储库，请参阅[创建 Amazon ECR 私有存储库以存储映像](repository-create.md)。

## 设置映像标签的可变性（AWS 管理控制台）
<a name="repository-edit"></a>

**要设置映像标签的可变性**

1. 在[https://console.aws.amazon.com/ecr/存储库](https://console.aws.amazon.com/ecr/repositories)中打开 Amazon ECR 控制台。

1. 从导航栏中，选择包含要编辑的存储库的区域。

1. 在导航窗格中的**私有注册表**下，选择**存储库**。

   如果看不到 “**存储库**”，请选择 “**私有注册表**” 以展开菜单，然后选择 “**存储库**”。

1. 在**私有存储库**页面上，选择要为其设置映像标签可变性设置的存储库名称前的单选按钮。

1. 选择**操作**，然后在**编辑**下选择**存储库**。

1. 对于**映像标签可变性**，为存储库选择以下标签可变性设置之一。
   + **可变**：如果您想覆盖映像标签，请选择此选项。建议用于使用提取缓存操作的存储库，以确保 Amazon ECR 可以更新缓存的映像。此外，要禁用一些可变标签的标签更新，请在**可变标签排除项**文本框中输入标签名称或使用通配符 (\$1) 来匹配多个相似的标签。
   + **不可变**：如果您想阻止覆盖映像标签，则选择此选项，在推送带有现有标签的映像时，它适用于存储库中的所有标签和排除项。如果您尝试推送带有现有标签的映像，Amazon ECR 将返回 `ImageTagAlreadyExistsException`。此外，要为一些不可变的标签启用标签更新，请在**不可变标签排除项**文本框中输入标签名称或使用通配符 (\$1) 来匹配多个相似的标签。

1. 对于 **Image scan settings**（镜像扫描设置），尽管您可以在存储库级别为基础扫描指定扫描设置，但最佳实践是在私有注册表级别指定扫描配置。通过在私有注册表级别指定扫描设置，您可以启用增强扫描或基本扫描，并定义用于指定扫描哪些存储库的筛选条件。有关更多信息，请参阅 [在 Amazon ECR 中扫描映像是否存在软件漏洞](image-scanning.md)。

1. 对于 **Encryption settings**（加密设置），此字段仅供查看，因为存储库的加密设置在存储库创建完成之后无法更改。

1. 选择**保存**以更新存储库设置。

## 设置映像标签的可变性（AWS CLI）
<a name="image-tag-mutability-cli"></a>

**创建配置有不可变标签的存储库**

使用以下命令之一创建配置有不可变标签的新镜像存储库。
+ [create-repository](https://docs.aws.amazon.com/cli/latest/reference/ecr/create-repository.html) (AWS CLI)，具有映像标签可变性

  ```
  aws ecr create-repository --repository-name name --image-tag-mutability IMMUTABLE --region us-east-2
  ```
+ [create-repository](https://docs.aws.amazon.com/cli/latest/reference/ecr/create-repository.html) (AWS CLI)，具有映像标签可变性排除项筛选条件

  ```
  aws ecr create-repository --repository-name name --image-tag-mutability IMMUTABLE_WITH_EXCLUSION --image-tag-mutability-exclusion-filters filterType=WILDCARD,filter=filter-text --region us-east-2
  ```
+ ne@@ [w-ECRRepository](https://docs.aws.amazon.com/powershell/latest/reference/items/New-ECRRepository.html) (AWS Tools for Windows PowerShell) 具有图像标签可变性

  ```
  New-ECRRepository -RepositoryName name -ImageTagMutability IMMUTABLE -Region us-east-2 -Force
  ```
+ 带有图像标签可变性排除过滤器的 ne@@ [w-ECRRepository](https://docs.aws.amazon.com/powershell/latest/reference/items/New-ECRRepository.html) (AWS Tools for Windows PowerShell)

  ```
  New-ECRRepository -RepositoryName name -ImageTagMutability IMMUTABLE_WITH_EXCLUSION -ImageTagMutabilityExclusionFilter @{FilterType=WILDCARD Filter=filter-text} -Region us-east-2 -Force
  ```

**要更新存储库的映像标签可变性设置**

使用以下命令之一更新现有存储库的镜像标签可变性设置。
+ [ put-image-tag-mutability](https://docs.aws.amazon.com/cli/latest/reference/ecr/put-image-tag-mutability.html)(AWS CLI) 具有图像标签的可变性

  ```
  aws ecr put-image-tag-mutability --repository-name name --image-tag-mutability IMMUTABLE --region us-east-2
  ```
+ [ put-image-tag-mutability](https://docs.aws.amazon.com/cli/latest/reference/ecr/put-image-tag-mutability.html)(AWS CLI) 带有图像标签可变性排除过滤器

  ```
  aws ecr put-image-tag-mutability --repository-name name --image-tag-mutability IMMUTABLE_WITH_EXCLUSION --image-tag-mutability-exclusion-filters filterType=WILDCARD,filter=latest --region us-east-2
  ```
+ [write-ECRImage TagMutability](https://docs.aws.amazon.com/powershell/latest/reference/items/Write-ECRImageTagMutability.html) (AWS Tools for Windows PowerShell) 具有图像标签的可变性

  ```
  Write-ECRImageTagMutability -RepositoryName name -ImageTagMutability IMMUTABLE -Region us-east-2 -Force
  ```
+ 带图像标签可变性排除过滤器的 [write-ECRImage TagMutability](https://docs.aws.amazon.com/powershell/latest/reference/items/Write-ECRImageTagMutability.html) (AWS Tools for Windows PowerShell)

  ```
  Write-ECRImageTagMutability -RepositoryName name -ImageTagMutability IMMUTABLE_WITH_EXCLUSION -ImageTagMutabilityExclusionFilter @{FilterType=WILDCARD Filter=latest}
  ```