

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

# 标记 MemoryDB 资源
<a name="tagging-resources"></a>

为了帮助您管理集群和其他 MemoryDB 资源，您可以标签的形式为每个资源分配您自己的元数据。标签可让您按各种标准（例如用途、所有者或环境）对 Amazon 资源进行分类。这在您具有相同类型的很多资源时会很有用 – 您可以根据分配给特定资源的标签快速识别该资源。本主题介绍标签并说明如何创建标签。

**警告**  
作为最佳实践，我们建议您不要在标签中包含敏感数据。

## 标签基本知识
<a name="tagging-basics"></a>

标签是为Amazon资源分配的标记。每个标签都包含定义的一个键 和一个可选值。标签可让您按各种标准（例如用途或拥有者）对 Amazon 资源进行分类。例如，您可以为账户中的 MemoryDB 集群定义一组标签，以帮助跟踪每个集群的拥有者和用户组。

我们建议您针对每类资源设计一组标签，以满足您的需要。使用一组连续的标签键，管理资源时会更加轻松。您可以根据添加的标签搜索和筛选资源。有关如何实施有效的资源标记策略的更多信息，请参阅 [Amazon 白皮书标记最佳实践](https://d1.awsstatic.com/whitepapers/aws-tagging-best-practices.pdf)。

标签对 MemoryDB 没有任何语义意义，应严格按字符串进行解析。同时，标签不会自动分配至您的资源。您可以修改标签的密钥和值，还可以随时删除资源的标签。您可以将标签的值设置为 `null`。如果您添加的标签的值与该实例上现有标签的值相同，新的值就会覆盖旧值。如果删除资源，资源的所有标签也会被删除。

 可以使用 Amazon Web Services 管理控制台、Amazon CLI 和 MemoryDB API 处理标签。

如果您使用的是 IAM，则可以控制 Amazon 账户中的哪些用户拥有创建、编辑或删除标签的权限。有关更多信息，请参阅 [资源级权限](iam.resourcelevelpermissions.md)。

## 您可以为之添加标签的资源
<a name="tagging-your-resources"></a>

您可以标记您的账户中已存在的大多数 MemoryDB 资源。下表列出了支持标记的资源。如果您使用的是 Amazon Web Services 管理控制台，则可以使用[标签编辑器](https://docs.amazonaws.cn/ARG/latest/userguide/tag-editor.html)向资源应用标签。在您创建资源时，某些资源屏幕支持为资源指定标签；例如，包含 Name 键和您指定的值的标签。在大多数情况下，控制台会在资源创建后 （而不是在资源创建期间）立即应用标签。控制台可能根据**名称**标签对资源进行组织，但此标签对 MemoryDB 服务没有任何语义意义。

 此外，某些资源创建操作让您可以在创建资源时为其指定标签。如果无法在资源创建期间应用标签，系统会回滚资源创建过程。这样可确保要么创建带有标签的资源，要么根本不创建资源，即任何时候都不会创建出未标记的资源。通过在创建时标记资源，您不需要在资源创建后运行自定义标记脚本。

 如果您使用的是 Amazon MemoryDB API，Amazon CLI 或 Amazon 开发工具包，则可以使用相关 MemoryDB API 操作上的 `Tags` 参数来应用标签。它们是：
+ `CreateCluster`
+ `CopySnapshot`
+ `CreateParameterGroup`
+ `CreateSubnetGroup`
+ `CreateSnapshot`
+ `CreateACL`
+ `CreateUser`
+ `CreateMultiRegionCluster`

下表描述了可以标记的 Amazon MemoryDB 资源以及可在创建时使用 MemoryDB API、 CLI 或 Amazon 软件开发工具包标记的资源。


**MemoryDB 资源标记支持**  

| 资源 | 支持标签 | 支持在创建时标记 | 
| --- | --- | --- | 
| parametergroup | 支持 | 是 | 
| subnetgroup | 支持 | 是 | 
| cluster | 支持 | 是 | 
| 快照 | 支持 | 是 | 
| 用户 | 是 | 是 | 
| acl | 支持 | 是 | 
| 多区域集群 | 支持 | 是 | 

对于支持在创建时进行标记的 MemoryDB API 操作，您可以在 IAM policies 中应用基于标签的资源级权限，以对可在创建时标记资源的用户和组实施精细控制。资源从创建开始就会受到适当的保护 – 标签会立即应用于资源。因此，控制资源使用的任何基于标签的资源级权限都会立即生效。可以更准确地对您的资源进行跟踪和报告。您可以强制对新资源使用标记，可以控制对资源设置哪些标签键和值。

有关更多信息，请参阅 [标记资源示例](#tagging-your-resources-example)。

 有关标记资源以便于计费的更多信息，请参阅 [使用成本分配标签监控成本](tagging.md)。

## 为集群和快照以及多区域集群添加标签
<a name="tagging-clusters-snapshots"></a>

以下规则适用于请求操作中的标记：
+ **CreateCluster**：
  +  如果提供了 `--cluster-name`：

    如果请求中包含标签，则对集群进行标记。
  + 如果提供了 `--snapshot-name`：

    如果请求中包含标签，则仅使用这些标签对集群进行标记。如果请求中未包含任何标签，则将向集群添加快照标签。
+ **CreateSnapshot**：
  +  如果提供了 `--cluster-name`：

    如果请求中包含标签，则仅将请求标签添加到快照。如果请求中未包含任何标签，则集群标签将添加到快照。
  + 自动快照：

    标签将传播自集群标签。
+ **CopySnapshot**：

  如果请求中包含标签，则仅将请求标签添加到快照。如果请求中未包含任何标签，则源快照标签将添加到复制的快照。
+ **TagResource** 和 **UntagResource**：

  向资源添加/删除标签。

## 为多区域集群添加标签
<a name="tagging-multi-region-clusters"></a>

MemoryDB 多区域集群是全局资源。因此，可以在任何支持 MemoryDB 多区域的给定区域中，通过调用相关 API 来指定、修改或列出多区域集群上的标签。有关区域支持的更多信息，请参阅 [先决条件和限制](multi-region.prereq.md)。

多区域集群上的标签与区域集群上的标签是独立的。您可以在多区域集群及其包含的区域集群上指定不同的标签集。这些标签之间没有层次连接关系，也不会通过这些资源类型之间的层次结构进行复制。

当您通过 `TagResource` 和 `UntagResource` API 添加或删除标签时，由于标签对于多区域集群最终是一致的，您可能不会立即在 ListTags API 响应中看到最新的有效标签。

## 标签限制
<a name="tagging-restrictions"></a>

下面是适用于标签的基本限制：
+ 每个资源的标签数上限 – 50
+ 对于每个资源，每个标签键都必须是唯一的，每个标签键只能有一个值。
+ 最大键长度 – 128 个 Unicode 字符 （采用 UTF-8 格式)。
+ 最大值长度 – 256 个 Unicode 字符 （采用 UTF-8 格式)。
+ 虽然 MemoryDB 允许在其标签中使用任何字符，但其他服务对此具有严格限制。允许在不同的服务中使用的字符包括：可以使用 UTF-8 表示的字母、数字和空格以及以下字符：\$1 - = . \$1 : / @
+ 标签键和值区分大小写。
+ `aws:` 前缀专门预留供 Amazon 使用。如果某个标签具有带有此标签键，则您无法编辑该标签的键或值。具有 `aws:` 前缀的标签不计入每个资源的标签数限制。

您不能仅依据标签终止或删除资源，而必须指定资源的标识符。例如，要删除您使用名为 `DeleteMe` 的标签键标记的快照，您必须将 `DeleteSnapshot` 操作与快照的资源标识符（如 `snap-1234567890abcdef0`）结合使用。

有关可以标记的 MemoryDB 资源的详细信息，请参阅 [您可以为之添加标签的资源](#tagging-your-resources)。

## 标记资源示例
<a name="tagging-your-resources-example"></a>
+ 向集群添加标签。

  ```
  aws memorydb tag-resource \
  --resource-arn arn:aws:memorydb:us-east-1:111111222233:cluster/my-cluster \
  --tags Key="project",Value="XYZ" Key="memorydb",Value="Service"
  ```
+ 使用标签创建集群。

  ```
  aws memorydb create-cluster \
  --cluster-name testing-tags \
  --description cluster-test \
  --subnet-group-name test \
  --node-type db.r6g.large \
  --acl-name open-access \
  --tags Key="project",Value="XYZ" Key="memorydb",Value="Service"
  ```
+ 创建具有标签的快照。

  在此情况下，如果您根据请求添加标签，即使集群包含标签，快照也将仅接收请求标签。

  ```
  aws memorydb create-snapshot \
  --cluster-name testing-tags \
  --snapshot-name bkp-testing-tags-mycluster \
  --tags Key="work",Value="foo"
  ```