

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


**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:` 前缀专门预留供 AWS 使用。如果某个标签具有带有此标签键，则您无法编辑该标签的键或值。具有 `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"
  ```

# 使用成本分配标签监控成本
<a name="tagging"></a>

在 MemoryDB 中向资源添加成本分配标签时，可以根据资源标签值对发票上的费用进行分组，从而跟踪您的成本。

MemoryDB 成本分配标签是您定义的键-值对，并与 MemoryDB 资源关联。键和值区分大小写。您可以使用标签键定义类别，而标签值作为该类别中的项目。例如，通过定义标签键 `CostCenter` 和标签值 `10010`，可以表示将资源分配给 10010 成本中心。再如，通过为标签使用 `Environment` 键和 `test` 或 `production` 值，可以将资源指定为测试或生产用途。我们建议您使用一组一致的标签键，从而方便跟踪与资源相关联的成本。

使用成本分配标签整理 AWS 账单，以反映您自己的成本结构。要执行此操作，请注册以获取包含标签键值的 AWS 账户账单。然后，如需查看组合资源的成本，请按有同样标签键值的资源组织您的账单信息。例如，您可以将特定的应用程序名称用作几个资源的标签，然后组织账单信息，以查看在数个服务中的使用该应用程序的总成本。

您也可以合并标签以采用更高详细信息级别跟踪成本。例如，要按区域跟踪服务成本，可以使用标签键 `Service` 和 `Region`。这样，一个资源的值可以有 `MemoryDB` 和 `Asia Pacific (Singapore)` 值，另一个资源可以有 `MemoryDB` 和 `Europe (Frankfurt)` 值。之后，您可以按区域查看 MemoryDB 的总体成本细分。有关更多信息，请参阅《AWS Billing 用户指南》**中的[使用成本分配标签](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html)。

可以向 MemoryDB 集群添加 MemoryDB 成本分配标签。在您添加、列出、修改、复制或删除标签时，操作仅应用到指定的集群。

**MemoryDB 成本分配标签的特性**
+ 成本分配标签应用到在 CLI 和 API 操作中指定为 ARN 的 MemoryDB 资源。资源类型将是“cluster”。

  ARN 格式：`arn:aws:memorydb:<region>:<customer-id>:<resource-type>/<resource-name>`

  示例 ARN：`arn:aws:memorydb:us-east-1:1234567890:cluster/my-cluster`
+ 标签键是标签的名称，属于必填内容。键的字符串值的长度可以在 1 到 128 个 Unicode 字符之间，并且不能带有前缀 `aws:`。字符串只能包含一组 Unicode 字母、数字、空格、下划线（\$1）、句点（.）、冒号（:）、斜杠（\$1）、等号（=）、加号（\$1）、连字符（-）或 @ 符号。
+ 标签值是标签的可选值。值的字符串值的长度可以在 1 到 256 个 Unicode 字符之间，并且不能带有前缀 `aws:`。字符串只能包含一组 Unicode 字母、数字、空格、下划线（\$1）、句点（.）、冒号（:）、斜杠（\$1）、等号（=）、加号（\$1）、连字符（-）或 @ 符号。
+ 一个 MemoryDB 资源最多可以有 50 个标签。
+ 在标签集中，值不必具有唯一性。例如，在您的标签集内，键 `Service` 和 `Application` 可同时具有值 `MemoryDB`。

AWS 不会对您的标签应用任何语义意义。标签会严格地作为字符串进行解析。AWS 不会自动在任何 MemoryDB 资源上设置任何标签。

# 使用 AWS CLI 管理成本分配标签
<a name="tagging.managing.cli"></a>

您可以使用 AWS CLI 添加、修改或删除成本分配标签。

示例 arn：`arn:aws:memorydb:us-east-1:1234567890:cluster/my-cluster`

**Topics**
+ [使用 AWS CLI 列出标签](#tagging.managing.cli.List)
+ [使用 AWS CLI 添加标签](#tagging.managing.cli.Add)
+ [使用 AWS CLI 修改标签](#tagging.managing.cli.modify)
+ [使用 AWS CLI 删除标签](#tagging.managing.cli.Remove)

## 使用 AWS CLI 列出标签
<a name="tagging.managing.cli.List"></a>

可以使用 AWS CLI，通过 [list-tags](https://docs.aws.amazon.com/cli/latest/reference/memorydb/list-tags.html) 操作列出现有 MemoryDB 资源上的标签。

以下代码使用 AWS CLI 列出 us-east-1 区域中的 MemoryDB 集群 `my-cluster` 上的标签。

对于 Linux、macOS 或 Unix：

```
aws memorydb list-tags \
  --resource-arn arn:aws:memorydb:us-east-1:0123456789:cluster/my-cluster
```

对于 Windows：

```
aws memorydb list-tags ^
  --resource-arn arn:aws:memorydb:us-east-1:0123456789:cluster/my-cluster
```

此操作的输出类似于下文，即列出资源上的所有标签。

```
{
   "TagList": [
      {
         "Value": "10110",
         "Key": "CostCenter"
      },
      {
         "Value": "EC2",
         "Key": "Service"
      }
   ]
}
```

如果资源上没有任何标签，则输出空标签列表。

```
{
   "TagList": []
}
```

有关更多信息，请参阅适用于 MemoryDB 的 AWS CLI [list-tags](https://docs.aws.amazon.com/cli/latest/reference/memorydb/list-tags.html)。

## 使用 AWS CLI 添加标签
<a name="tagging.managing.cli.Add"></a>

您可以使用 AWS CLI，通过 [tag-resource](https://docs.aws.amazon.com/cli/latest/reference/memorydb/tag-resource.html) CLI 操作向现有 MemoryDB 资源添加标签。如果资源上不存在标签键，则键和值将添加到资源。如果资源上已存在该键，则与该键关联的值将更新为新值。

下面的代码使用 AWS CLI 向 us-east-1 区域中集群 `my-cluster` 添加键 `Service` 和 `Region`，这两个键的值分别为 `memorydb` 和 `us-east-1`。

对于 Linux、macOS 或 Unix：

```
aws memorydb tag-resource \
 --resource-arn arn:aws:memorydb:us-east-1:0123456789:cluster/my-cluster \
 --tags Key=Service,Value=memorydb \
        Key=Region,Value=us-east-1
```

对于 Windows：

```
aws memorydb tag-resource ^
 --resource-arn arn:aws:memorydb:us-east-1:0123456789:cluster/my-cluster ^
 --tags Key=Service,Value=memorydb ^
        Key=Region,Value=us-east-1
```

此操作的输出将类似于下文，先列出资源上的所有标签，后面跟随操作。

```
{
   "TagList": [
      {
         "Value": "memorydb",
         "Key": "Service"
      },
      {
         "Value": "us-east-1",
         "Key": "Region"
      }
   ]
}
```

有关更多信息，请参阅适用于 MemoryDB 的 AWS CLI [tag-resource](https://docs.aws.amazon.com/cli/latest/reference/memorydb/tag-resource.html)。

还可以在创建新集群时使用 AWS CLI 向集群添加标签，方法是使用操作 [create-cluster](https://docs.aws.amazon.com/cli/latest/reference/memorydb/create-cluster.html)。

## 使用 AWS CLI 修改标签
<a name="tagging.managing.cli.modify"></a>

您可以使用 AWS CLI 修改 MemoryDB 集群上的标签。

修改标签：
+ 使用 [tag-resource](https://docs.aws.amazon.com/cli/latest/reference/memorydb/tag-resource.html) 可添加新标签和值，或更改与现有标签关联的值。
+ 使用 [untag-resource](https://docs.aws.amazon.com/cli/latest/reference/memorydb/untag-resource.html) 移除资源的指定标签。

以上任意操作的输出将是指定集群上标签及其值的列表。

## 使用 AWS CLI 删除标签
<a name="tagging.managing.cli.Remove"></a>

您可以使用 AWS CLI 从现有 MemoryDB 集群中移除标签，方法是使用 [untag-resource](https://docs.aws.amazon.com/cli/latest/reference/memorydb/untag-resource.html) 操作。

下面的代码使用 AWS CLI 移除了 us-east-1 区域中集群 `my-cluster` 的键 `Service` 和 `Region` 的标签。

对于 Linux、macOS 或 Unix：

```
aws memorydb untag-resource \
 --resource-arn arn:aws:memorydb:us-east-1:0123456789:cluster/my-cluster \
 --tag-keys Region Service
```

对于 Windows：

```
aws memorydb untag-resource ^
 --resource-arn arn:aws:memorydb:us-east-1:0123456789:cluster/my-cluster ^
 --tag-keys Region Service
```

此操作的输出将类似于下文，先列出资源上的所有标签，后面跟随操作。

```
{
   "TagList": []
}
```

有关更多信息，请参阅适用于 MemoryDB 的 AWS CLI [untag-resource](https://docs.aws.amazon.com/cli/latest/reference/memorydb/untag-resource.html)。

# 使用 MemoryDB API 管理成本分配标签
<a name="tagging.managing.api"></a>

您可以使用 MemoryDB API 添加、修改或删除成本分配标签。

成本分配标签应用到适用于集群的 MemoryDB。要添加标签的集群是使用 ARN（Amazon 资源名称）指定的。

示例 arn：`arn:aws:memorydb:us-east-1:1234567890:cluster/my-cluster`

**Topics**
+ [使用 MemoryDB API 列出标签](#tagging.managing.api.List)
+ [使用 MemoryDB API 添加标签](#tagging.managing.api.Add)
+ [使用 MemoryDB API 修改标签](#tagging.managing.api.modify)
+ [使用 MemoryDB API 移除标签](#tagging.managing.api.Remove)

## 使用 MemoryDB API 列出标签
<a name="tagging.managing.api.List"></a>

可以使用 MemoryDB API，通过 [ListTags](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_ListTags.html) 操作列出现有资源上的标签。

以下代码使用 MemoryDB API 列出 us-east-1 区域中的资源 `my-cluster` 上的标签。

```
https://memory-db.us-east-1.amazonaws.com/
   ?Action=ListTags
   &ResourceArn=arn:aws:memorydb:us-east-1:0123456789:cluster/my-cluster
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &Version=2021-01-01
   &Timestamp=20210802T192317Z
   &X-Amz-Credential=<credential>
```

## 使用 MemoryDB API 添加标签
<a name="tagging.managing.api.Add"></a>

您可以使用 MemoryDB API，通过 [TagResource](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_TagResource.html) 操作向现有 MemoryDB 集群添加标签。如果资源上不存在标签键，则键和值将添加到资源。如果资源上已存在该键，则与该键关联的值将更新为新值。

以下代码使用 MemoryDB API 向 us-east-1 区域中的资源 `my-cluster` 添加键 `Service` 和 `Region`，两个键的值分别为 `memorydb` 和 `us-east-1`。

```
https://memory-db.us-east-1.amazonaws.com/
   ?Action=TagResource
   &ResourceArn=arn:aws:memorydb:us-east-1:0123456789:cluster/my-cluster
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &Tags.member.1.Key=Service 
   &Tags.member.1.Value=memorydb
   &Tags.member.2.Key=Region
   &Tags.member.2.Value=us-east-1
   &Version=2021-01-01
   &Timestamp=20210802T192317Z
   &X-Amz-Credential=<credential>
```

有关更多信息，请参阅 [TagResource](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_TagResource.html)。

## 使用 MemoryDB API 修改标签
<a name="tagging.managing.api.modify"></a>

您可以使用 MemoryDB API 修改 MemoryDB 集群上的标签。

修改标签的值：
+ 使用 [TagResource](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_TagResource.html) 操作可添加新标签和值，或更改现有标签的值。
+ 要从资源中删除标签，请使用 [UntagResource](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_UntagResource.html)。

以上任意操作的输出将是指定资源上标签及其值的列表。

## 使用 MemoryDB API 移除标签
<a name="tagging.managing.api.Remove"></a>

您可以使用 MemoryDB API 从现有 MemoryDB 集群中移除标签，方法是使用 [UntagResource](https://docs.aws.amazon.com/memorydb/latest/APIReference/API_UntagResource.html) 操作。

下面的代码使用 MemoryDB API 移除了 us-east-1 区域中集群 `my-cluster` 的包含键 `Service` 和 `Region` 的标签。

```
https://memory-db.us-east-1.amazonaws.com/
   ?Action=UntagResource
   &ResourceArn=arn:aws:memorydb:us-east-1:0123456789:cluster/my-cluster
   &SignatureVersion=4
   &SignatureMethod=HmacSHA256
   &TagKeys.member.1=Service
   &TagKeys.member.2=Region
   &Version=2021-01-01
   &Timestamp=20210802T192317Z
   &X-Amz-Credential=<credential>
```