本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
标记 ElastiCache 资源
为了帮助您管理集群和其他 ElastiCache 资源,您可以标签的形式为每个资源分配您自己的元数据。标签可让您按各种标准(例如用途、所有者或环境)对 AWS 资源进行分类。这在您具有相同类型的很多资源时会很有用 – 您可以根据分配给特定资源的标签快速识别该资源。本主题介绍标签并说明如何创建标签。
警告
作为最佳实践,我们建议您不要在标签中包含敏感数据。
标签是为AWS资源分配的标记。每个标签都包含定义的一个键 和一个可选值。标签可让您按各种标准(例如用途或拥有者)对 AWS 资源进行分类。例如,您可以为账户中的 ElastiCache 集群定义一组标签,以帮助跟踪每个实例的拥有者和用户组。
我们建议您针对每类资源设计一组标签,以满足您的需要。使用一组连续的标签键,管理 资源时会更加轻松。您可以根据添加的标签搜索和筛选资源。有关如何实施有效的资源标记策略的更多信息,请参阅 AWS 白皮书标记最佳实践
标签对 ElastiCache 没有任何语义意义,应严格按字符串进行解析。同时,标签不会自动分配至您的资源。您可以修改标签的密钥和值,还可以随时删除资源的标签。您可以将标签的值设置为 null
。如果您添加的标签的值与该实例上现有标签的值相同,新的值就会覆盖旧值。如果删除资源,资源的所有标签也会被删除。此外,如果添加或删除复制组的标签,则也将向该复制组中的所有节点添加或删除其标签。
您可以使用 AWS Management Console、AWS CLI 和 ElastiCache API 处理标签。
如果您使用的是 IAM,则可以控制 AWS 账户中的哪些用户拥有创建、编辑或删除标签的权限。有关更多信息,请参阅 资源级权限。
您可以标记账户中已存在的大多数 ElastiCache 资源。下表列出了支持标记的资源。如果您使用的是 AWS Management Console,则可以使用标签编辑器向资源应用标签。在您创建资源时,某些资源屏幕支持为资源指定标签;例如,包含 Name 键和您指定的值的标签。在大多数情况下,控制台会在资源创建后 (而不是在资源创建期间)立即应用标签。控制台可能根据 Name(名称)标签对资源进行组织,但此标签对 ElastiCache 服务没有任何语义意义。
此外,某些资源创建操作允许您在创建资源时为其指定标签。如果无法在资源创建期间应用标签,系统会回滚资源创建过程。这样可确保要么创建带有标签的资源,要么根本不创建资源,即任何时候都不会创建出未标记的资源。通过在创建时标记资源,您不需要在资源创建后运行自定义标记脚本。
如果您使用的是 Amazon ElastiCache API,AWS CLI 或 AWS 开发工具包,则可以使用相关 ElastiCache API 操作上的 Tags
参数来应用标签。它们是:
CreateServerlessCache
CreateCacheCluster
CreateReplicationGroup
CopyServerlessCacheSnapshot
CopySnapshot
CreateCacheParameterGroup
CreateCacheSecurityGroup
CreateCacheSubnetGroup
CreateServerlessCacheSnapshot
CreateSnapshot
CreateUserGroup
CreateUser
PurchaseReservedCacheNodesOffering
下表描述了可以标记的 ElastiCache 资源以及可在创建时使用 ElastiCache API、AWS CLI 或 AWS 开发工具包标记的资源。
资源 | 支持标签 | 支持在创建时标记 |
---|---|---|
serverlesscache | 是 | 是 |
parametergroup | 是 | 是 |
securitygroup | 是 | 是 |
subnetgroup | 是 | 是 |
replicationgroup | 是 | 是 |
cluster | 是 | 是 |
reserved-instance | 是 | 是 |
serverlesscachesnapshot | 是 | 是 |
快照 | 是 | 是 |
用户 | 是 | 是 |
usergroup | 是 | 是 |
注意
无法标记全局数据存储。
对于支持在创建时标记的 ElastiCache API 操作,您可以在 IAM 策略中应用基于标签的资源级权限,以对可在创建时标记资源的用户和组实施精细控制。资源从创建开始就会受到适当的保护 – 标签会立即应用于资源。因此,控制资源使用的任何基于标签的资源级权限都会立即生效。可以更准确地对您的资源进行跟踪和报告。您可以强制对新资源使用标记,可以控制对资源设置哪些标签键和值。
有关更多信息,请参阅 标记资源示例。
有关标记资源以便于计费的更多信息,请参阅 使用成本分配标签监控成本。
以下规则适用于请求操作中的标记:
-
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:
-
如果请求中包含标签,则仅将请求标签添加到无服务器缓存快照。
-
-
AddTagsToResource 和 RemoveTagsFromResource:
-
向复制组添加标签或删除其标签,并将此操作传播到复制组中的所有集群。
注意
AddTagsToResource 和 RemoveTagsFromResource 不能用于默认参数和安全组。
-
-
IncreaseReplicaCount 和 ModifyReplicationGroupShardConfiguration:
-
对添加到复制组的所有新集群应用与复制组相同的标签。
-
下面是适用于标签的基本限制:
每个资源的标签数上限 – 50
对于每个资源,每个标签键都必须是唯一的,每个标签键只能有一个值。
最大键长度 – 128 个 Unicode 字符 (采用 UTF-8 格式)。
最大值长度 – 256 个 Unicode 字符 (采用 UTF-8 格式)。
虽然 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"
-
允许仅当集群具有 Project=XYZ 标签时才对该集群应用
AddTagsToResource
操作。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "elasticache:AddTagsToResource", "Resource": [ "arn:aws:elasticache:*:*:cluster:*" ], "Condition": { "StringEquals": { "aws:ResourceTag/Project": "XYZ" } } } ] }
-
当复制组包含 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" ] } } } ] }
-
允许仅当标签与 Project 和 Service 不同时才能对任何资源应用
AddTagsToResource
。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "elasticache:AddTagsToResource", "Resource": [ "arn:aws:elasticache:*:*:*:*" ], "Condition": { "ForAnyValue:StringNotEqualsIgnoreCase": { "aws:TagKeys": [ "Service", "Project" ] } } } ] }
-
在请求具有
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" } } } ] }
-
在源快照具有 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" } } } ] }
-
如果请求标签
CreateCacheCluster
丢失或不等于Project
、Dev
或QA
,则拒绝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" ] } } } ] }
有关条件键的相关信息,请参阅使用条件键。