标记您的资源 AWS IoT Events - AWS IoT Events

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

标记您的资源 AWS IoT Events

为了帮助您管理和组织探测器模型和输入,您可以选择将自己的元数据以标签的形式分配给其中每个资源。本部分介绍标签并说明如何创建标签。

标签基本知识

标签使您能够以不同的方式对 AWS IoT Events 资源进行分类,例如按用途、所有者或环境进行分类。这在您有许多相同类型的资源时会非常有用。您可以根据分配到特定资源的标签来快速识别该资源。

每个标签都包含您定义的一个键和一个可选值。例如,您可为输入定义一系列标签,以帮助您按类型追踪发送这些输入的设备。我们建议您为每类资源创建一组可满足您的需求的标签键。使用一组连续的标签键,管理 资源时会更加轻松。

您可以根据添加或应用的标签搜索和筛选资源,使用标签对成本进行分类和跟踪,还可以使用标签来控制对资源的访问权限,如AWS IoT 开发者指南中的将标签与IAM策略结合使用中所述。

为便于使用,中的标签编辑器 AWS Management Console 提供了一种集中、统一的方式来创建和管理标签。有关更多信息,请参阅《标签 AWS 资源和标签编辑器用户指南》中的标签编辑器入门

您也可以使用 AWS CLI 和来处理标签 AWS IoT Events API。创建标签时,您可使用以下命令中的"Tags"字段,将标签与探测器模型和输入值关联:

您可以使用以下命令为支持标记的现有资源添加、修改或删除标签:

您可以修改标签的密钥和值,还可以随时删除资源的标签。您可以将标签的值设为空的字符串,但是不能将其设为空值。如果添加的标签的键与该资源上现有标签的键相同,新值就会覆盖旧值。如果删除资源,则所有与资源相关的标签都将被删除。

有关更多信息,请参阅为资源添加标签 AWS 的最佳实践

标签限制

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

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

  • 最大密钥长度 — -8 中UTF有 127 个 Unicode 字符

  • 最大值长度 — -8 中UTF有 255 个 Unicode 字符

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

  • 请勿在标签名称或值中使用"aws:"前缀,因为它已保留供 AWS 使用。您无法编辑或删除带此前缀的标签名称或值。具有此前缀的标签不计入每个资源的标签数限制。

  • 如果标签方案针对多个服务和资源使用,请记得其它服务可能对允许使用的字符有限制。通常,允许的字符有:可用 UTF -8 表示的字母、空格和数字,以及以下特殊字符:+-=. _:/@。

结合使用标签和 IAM 策略

您可以在用于操作的IAM策略中应用基于标签的资源级权限。 AWS IoT Events API这可让您更好地控制用户可创建、修改或使用哪些资源。

您可以在IAM策略中使用带有以下条件上下文键和值的Condition元素(也称为Condition区块),根据资源的标签控制用户访问权限(权限):

  • 使用 aws:ResourceTag/<tag-key>: <tag-value> 可允许或拒绝带特定标签的资源上的用户操作。

  • aws:RequestTag/<tag-key>: <tag-value>用于要求在API请求创建或修改允许使用标签的资源时使用(或不使用)特定标签。

  • aws:TagKeys: [<tag-key>, ...]用于要求在API请求创建或修改允许使用标签的资源时使用(或不使用)一组特定的标签密钥。

注意

IAM策略中的条件上下文键和值仅适用于那些将能够标记的资源的标识符作为必填参数的 AWS IoT Events 操作。

AWS Identity and Access Management 用户指南中的使用标签控制访问权限包含有关使用标签的额外信息。该指南的IAMJSON策略参考部分包含中JSON策略的元素、变量和评估逻辑的详细语法、描述和示例IAM。

以下策略示例应用两个基于标签的限制。受此策略限制的用户:

  • 无法为资源提供标签“env=prod”(在示例中,请参阅行 "aws:RequestTag/env" : "prod"

  • 无法修改或访问具有现有标签“env=prod”的资源(在示例中,请参阅行 "aws:ResourceTag/env" : "prod")。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "iotevents:CreateDetectorModel", "iotevents:CreateAlarmModel", "iotevents:CreateInput", "iotevents:TagResource" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/env": "prod" } } }, { "Effect": "Deny", "Action": [ "iotevents:DescribeDetectorModel", "iotevents:DescribeAlarmModel", "iotevents:UpdateDetectorModel", "iotevents:UpdateAlarmModel", "iotevents:DeleteDetectorModel", "iotevents:DeleteAlarmModel", "iotevents:ListDetectorModelVersions", "iotevents:ListAlarmModelVersions", "iotevents:UpdateInput", "iotevents:DescribeInput", "iotevents:DeleteInput", "iotevents:ListTagsForResource", "iotevents:TagResource", "iotevents:UntagResource", "iotevents:UpdateInputRouting" ], "Resource": "*", "Condition": { "StringLike": { "aws:ResourceTag/env": "prod" } } }, { "Effect": "Allow", "Action": [ "iotevents:*" ], "Resource": "*" } ] }

您还可以为给定标签键指定多个标签值,方法是将它们括在列表中,如下所述。

"StringEquals" : { "aws:ResourceTag/env" : ["dev", "test"] }
注意

如果您基于标签允许或拒绝用户访问资源,则必须考虑显式拒绝用户对相同资源添加或删除这些标签的能力。否则,用户可能通过修改资源标签来绕过您的限制并获得资源访问权限。