标记您的资源 ElastiCache - 亚马逊 ElastiCache

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

标记您的资源 ElastiCache

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

警告

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

标签是您分配给 AWS 资源的标签。每个标签都包含定义的一个密钥和一个可选值。标签使您能够以不同的方式对 AWS 资源进行分类,例如按用途或所有者进行分类。例如,您可以为账户的集 ElastiCache 群定义一组标签,以帮助您跟踪每个实例的所有者和用户组。

我们建议您针对每类资源设计一组标签,以满足您的需要。使用一组连续的标签键,管理 资源时会更加轻松。您可以根据添加的标签搜索和筛选资源。有关如何实施有效的资源标记策略的更多信息,请参阅 AWS 白皮书标记最佳实践

标签没有任何语义含义, ElastiCache 并且严格解释为字符串。同时,标签不会自动分配至您的资源。您可以修改标签的密钥和值,还可以随时删除资源的标签。您可以将标签的值设置为 null。如果您添加的标签的值与该实例上现有标签的值相同,新的值就会覆盖旧值。如果删除资源,资源的所有标签也会被删除。此外,如果添加或删除复制组的标签,则也将向该复制组中的所有节点添加或删除其标签。

您可以使用、和 AWS Management Console AWS CLI,来处理标签 ElastiCache API。

如果您正在使用IAM,则可以控制 AWS 账户中哪些用户有权创建、编辑或删除标签。有关更多信息,请参阅 资源级权限

您可以为账户中已存在的大多数 ElastiCache 资源添加标签。下表列出了支持标记的资源。如果您使用的是 AWS Management Console,则可以使用标签编辑器对资源应用标签。在您创建资源时,某些资源屏幕支持为资源指定标签;例如,包含 Name 键和您指定的值的标签。在大多数情况下,控制台会在资源创建后 (而不是在资源创建期间)立即应用标签。控制台可以根据名称标签组织资源,但是此标签对 ElastiCache 服务没有任何语义意义。

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

如果您使用的是 Amazon ElastiCache API AWS CLI、或 AWS SDK,则可以使用相关 ElastiCache API操作中的Tags参数来应用标签。它们是:

  • CreateServerlessCache

  • CreateCacheCluster

  • CreateReplicationGroup

  • CopyServerlessCacheSnapshot

  • CopySnapshot

  • CreateCacheParameterGroup

  • CreateCacheSecurityGroup

  • CreateCacheSubnetGroup

  • CreateServerlessCacheSnapshot

  • CreateSnapshot

  • CreateUserGroup

  • CreateUser

  • PurchaseReservedCacheNodesOffering

下表描述了 ElastiCache 可以标记的资源,以及在创建时可以使用 ElastiCache API AWS CLI、或标记的资源 AWS SDK。

为资源添加标签支持 ElastiCache
资源 支持标签 支持在创建时标记
serverlesscache
parametergroup
securitygroup
subnetgroup
replicationgroup
cluster
reserved-instance
serverlesscachesnapshot
快照
用户
usergroup
注意

无法标记全局数据存储。

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

有关更多信息,请参阅 标记资源示例

有关标记资源以便于计费的更多信息,请参阅 使用成本分配标签监控成本

以下规则适用于请求操作中的标记:

  • CreateReplicationGroup:

    • 如果请求中包含 --primary-cluster-id--tags 参数,则会向复制组添加请求标签且标签会传播到复制组中的所有缓存群集。如果主缓存群集具有现有标签,则这些标签将被请求标签覆盖,以便所有节点上的标签保持一直。

      如果没有请求标签,则主缓存群集标记将添加到复制组并传播到所有缓存群集。

    • 如果提供了 --snapshot-name--serverless-cache-snapshot-name

      如果请求中包含标签,则仅使用这些标签对复制组进行标记。如果请求中未包含任何标签,则快照标签将添加到复制组。

    • 如果提供了 --global-replication-group-id

      如果请求中包含标签,则请求标签将添加到复制组并传播到所有缓存群集。

  • CreateCacheCluster :

    • 如果提供了 --replication-group-id

      如果请求中包含标签,则仅使用这些标签对缓存群集进行标记。如果请求中未包含任何标签,则缓存群集将继承复制组标签,而不是主缓存群集的标签。

    • 如果提供了 --snapshot-name

      如果请求中包含标签,则仅使用这些标签对缓存群集进行标记。如果请求中未包含任何标签,则将向缓存群集添加快照标签。

  • CreateServerlessCache :

    • 如果请求中包含标签,则仅将请求标签添加到无服务器缓存。

  • CreateSnapshot :

    • 如果提供了 --replication-group-id

      如果请求中包含标签,则仅将请求标签添加到快照。如果请求中未包含任何标签,则复制组标签将添加到快照。

    • 如果提供了 --cache-cluster-id

      如果请求中包含标签,则仅将请求标签添加到快照。如果请求中未包含任何标签,则缓存群集标签将添加到快照。

    • 自动快照:

      标签将传播自复制组标签。

  • CreateServerlessCacheSnapshot :

    • 如果请求中包含标签,则仅将请求标签添加到无服务器缓存快照。

  • CopySnapshot :

    • 如果请求中包含标签,则仅将请求标签添加到快照。如果请求中未包含任何标签,则源快照标签将添加到复制的快照。

  • CopyServerlessCacheSnapshot :

    • 如果请求中包含标签,则仅将请求标签添加到无服务器缓存快照。

  • AddTagsToResourceRemoveTagsFromResource

    • 向复制组添加标签或删除其标签,并将此操作传播到复制组中的所有集群。

    注意

    AddTagsToResourceRemoveTagsFromResource不能用于默认参数和安全组。

  • IncreaseReplicaCountModifyReplicationGroupShardConfiguration

    • 对添加到复制组的所有新集群应用与复制组相同的标签。

下面是适用于标签的基本限制:

  • 每个资源的标签数上限 – 50

  • 对于每个资源,每个标签键都必须是唯一的,每个标签键只能有一个值。

  • 最大密钥长度 — -8 中的 128 个 Unicode 字符。UTF

  • 最大值长度 — -8 中的 256 个 Unicode 字符。UTF

  • 尽管 ElastiCache 允许在其标签中使用任何字符,但其他服务可能会受到限制。服务中允许使用的字符有:可用 UTF -8 表示的字母、数字和空格,以及以下字符:+-=。_:/@

  • 标签键和值区分大小写。

  • aws:前缀已保留供 AWS 使用。如果某个标签具有带有此标签键,则您无法编辑该标签的键或值。具有 aws: 前缀的标签不计入每个资源的标签数限制。

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

有关您可以标记的 ElastiCache 资源的更多信息,请参阅您可以为之添加标签的资源

  • 使用标签创建无服务器缓存。此示例使用 Memcached 作为引擎。

    aws elasticache create-serverless-cache \ --serverless-cache-name CacheName \ --engine memcached --tags Key="Cost Center", Value="1110001" Key="project",Value="XYZ"
  • 向无服务器缓存添加标签

    aws elasticache add-tags-to-resource \ --resource-name arn:aws:elasticache:us-east-1:111111222233:serverlesscache:my-cache \ --tags Key="project",Value="XYZ" Key="Elasticache",Value="Service"
  • 向复制组添加标签。

    aws elasticache add-tags-to-resource \ --resource-name arn:aws:elasticache:us-east-1:111111222233:replicationgroup:my-rg \ --tags Key="project",Value="XYZ" Key="Elasticache",Value="Service"
  • 使用标签创建缓存群集。

    aws elasticache create-cache-cluster \ --cluster-id testing-tags \ --cluster-description cluster-test \ --cache-subnet-group-name test \ --cache-node-type cache.t2.micro \ --engine valkey \ --tags Key="project",Value="XYZ" Key="Elasticache",Value="Service"
  • 使用标签创建缓存群集。此示例使用 Redis 作为引擎。

    aws elasticache create-cache-cluster \ --cluster-id testing-tags \ --cluster-description cluster-test \ --cache-subnet-group-name test \ --cache-node-type cache.t2.micro \ --engine valkey \ --tags Key="project",Value="XYZ" Key="Elasticache",Value="Service"
  • 创建具有标签的无服务器快照。此示例使用 Memcached 作为引擎。

    aws elasticache create-serverless-cache-snapshot \ --serverless-cache-name testing-tags \ --serverless-cache-snapshot-name bkp-testing-tags-scs \ --tags Key="work",Value="foo"
  • 创建具有标签的快照。

    快照目前仅适用于 Redis。在此情况下,如果您根据请求添加标签,即使复制组包含标签,快照也将仅接收请求标签。

    aws elasticache create-snapshot \ --replication-group-id testing-tags \ --snapshot-name bkp-testing-tags-rg \ --tags Key="work",Value="foo"
  1. 仅当集群的标签为 Project XYZ = 时,才允许对该集群执行AddTagsToResource操作。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "elasticache:AddTagsToResource", "Resource": [ "arn:aws:elasticache:*:*:cluster:*" ], "Condition": { "StringEquals": { "aws:ResourceTag/Project": "XYZ" } } } ] }
  2. 当复制组包含 Project 和 Service 标签且密钥与 Project 和 Service 不同时,允许该复制组执行 RemoveTagsFromResource 操作。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "elasticache:RemoveTagsFromResource", "Resource": [ "arn:aws:elasticache:*:*:replicationgroup:*" ], "Condition": { "StringEquals": { "aws:ResourceTag/Service": "Elasticache", "aws:ResourceTag/Project": "XYZ" }, "ForAnyValue:StringNotEqualsIgnoreCase": { "aws:TagKeys": [ "Project", "Service" ] } } } ] }
  3. 允许仅当标签与 Project 和 Service 不同时才能对任何资源应用 AddTagsToResource

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "elasticache:AddTagsToResource", "Resource": [ "arn:aws:elasticache:*:*:*:*" ], "Condition": { "ForAnyValue:StringNotEqualsIgnoreCase": { "aws:TagKeys": [ "Service", "Project" ] } } } ] }
  4. 在请求具有 Tag Project=Foo 时拒绝 CreateReplicationGroup 操作。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "elasticache:CreateReplicationGroup", "Resource": [ "arn:aws:elasticache:*:*:replicationgroup:*" ], "Condition": { "StringEquals": { "aws:RequestTag/Project": "Foo" } } } ] }
  5. 如果源快照的标签为 Project= XYZ 且请求标签为 Service=Elasticache,则拒绝CopySnapshot执行操作。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "elasticache:CopySnapshot", "Resource": [ "arn:aws:elasticache:*:*:snapshot:*" ], "Condition": { "StringEquals": { "aws:ResourceTag/Project": "XYZ", "aws:RequestTag/Service": "Elasticache" } } } ] }
  6. 如果请求标签 CreateCacheCluster 丢失或不等于 ProjectDevQA,则拒绝 Prod 操作。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster" ], "Resource": [ "arn:aws:elasticache:*:*:parametergroup:*", "arn:aws:elasticache:*:*:subnetgroup:*", "arn:aws:elasticache:*:*:securitygroup:*", "arn:aws:elasticache:*:*:replicationgroup:*" ] }, { "Effect": "Deny", "Action": [ "elasticache:CreateCacheCluster" ], "Resource": [ "arn:aws:elasticache:*:*:cluster:*" ], "Condition": { "Null": { "aws:RequestTag/Project": "true" } } }, { "Effect": "Allow", "Action": [ "elasticache:CreateCacheCluster", "elasticache:AddTagsToResource" ], "Resource": "arn:aws:elasticache:*:*:cluster:*", "Condition": { "StringEquals": { "aws:RequestTag/Project": [ "Dev", "Prod", "QA" ] } } } ] }

有关条件键的相关信息,请参阅使用条件键