设置 Amazon IoT Events - Amazon IoT Events
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

设置 Amazon IoT Events

如果您还没有 Amazon Web Services 账户,请完成以下步骤来创建一个。

注册 Amazon Web Services 账户

  1. 打开 https://portal.aws.amazon.com/billing/signup

  2. 按照屏幕上的说明进行操作。

    在注册时,您将接到一通电话,要求您使用电话键盘输入一个验证码。

设置 Amazon IoT Events 的权限

本部分介绍使用某些功能所需的角色和权限Amazon IoT Events. 您可以使用Amazon CLI命令或Amazon Identity and Access Management(IAM) 控制台,用于创建角色和关联权限策略以访问资源或执行特定功能Amazon IoT Events.

这些区域有:IAM 用户指南提供了有关安全控制访问权限的更多详细信息Amazon资源。ook er 有关以下内容的特定信息Amazon IoT Events请参阅的操作、资源和条件键Amazon IoT Events.

操作权限

Amazon IoT Events使您能够触发使用其他操作的操作Amazon服务 为此,您必须授予Amazon IoT Events代表您向您提供这些操作的工作流程权限。本部分包含操作列表和示例策略,该策略授予对您的资源执行所有这些操作的权限。更改领域账户 ID根据需要提供参考资料。如果可能,您还应更改通配符 (*),使其指代将要访问的特定资源。您可以使用 IAM 控制台向以下内容授予权限Amazon IoT Events发送您定义的 Amazon SNS 警报。有关更多信息,请参阅 使用 IAM 控制台管理角色和权限

Amazon IoT Events支持以下允许您使用计时器或设置变量的操作:

Amazon IoT Events支持下列操作,可让您使用Amazon服务

  • iotTopicPublish在 MQTT 主题上发布消息。

  • iotEvents将数据发送到Amazon IoT Events作为输入值。

  • iotSiteWise – 将数据发送到 Amazon IoT SiteWise 中的资产属性。

  • dynamoDB将数据发送到 Amazon DynamoDB 表。

  • dynamoDBv2将数据发送到 Amazon DynamoDB 表。

  • firehose将数据发送到 Amazon Kinesis Data Firehose 流。

  • lambda调用一个Amazon Lambda函数。

  • sns以推送通知的形式发送数据。

  • sqs将数据发送到 Amazon SQS 队列。

例 策略

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:Publish", "Resource": "arn:aws:iot:<region>:<account_id>:topic/*" }, { "Effect": "Allow", "Action": "iotevents:BatchPutMessage", "Resource": "arn:aws:iotevents:<region>:<account_id>:input/*" }, { "Effect": "Allow", "Action": "iotsitewise:BatchPutAssetPropertyValue", "Resource": "*" }, { "Effect": "Allow", "Action": "dynamodb:PutItem", "Resource": "arn:aws:dynamodb:<region>:<account_id>:table/*" }, { "Effect": "Allow", "Action": [ "firehose:PutRecord", "firehose:PutRecordBatch" ], "Resource": "arn:aws:firehose:<region>:<account_id>:deliverystream/*" }, { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:<region>:<account_id>:function:*" }, { "Effect": "Allow", "Action": "sns:Publish", "Resource": "arn:aws:sns:<region>:<account_id>:*" }, { "Effect": "Allow", "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:<region>:<account_id>:*" } ] }

保护输入数据

重要的是要考虑谁可以授予在探测器模型中使用的输入数据的访问权限。如果您要限制某个用户或实体的总体权限,但允许其创建或更新探测器模型,则还必须授予该用户或实体更新输入路由的权限。这意味着,除了授予权限外iotevents:CreateDetectorModeliotevents:UpdateDetectorModel,您还必须授予权限iotevents:UpdateInputRouting.

以下策略添加了对的权限iotevents:UpdateInputRouting.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "updateRoutingPolicy", "Effect": "Allow", "Action": [ "iotevents:UpdateInputRouting" ], "Resource": "*" } ] }

您可以指定输入Amazon Resource Name (ARN)” 列表,而不是通配符”*“为了”Resource“将此权限限制为特定输入。这使您可以限制对用户或实体创建或更新的探测器模型所消耗的输入数据的访问。

使用 IAM 控制台管理角色和权限

以下示例说明如何使用 IAM 控制台向以下对象授予权限Amazon IoT Events代表您生成 Amazon SNS 提醒。您还可以将角色附加到用于定义和发布的任何实体(用户或账户所有者)Amazon IoT Events检测器模型,包含发送 Amazon SNS 警报的事件操作。

要完成此示例,您需要现有的 ARN。Amazon SNS 主题在中使用Amazon IoT Events.

使用 IAM 控制台管理角色和权限

  1. 登录Amazon Web Services Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 在导航窗格中,选择面板板,角色.

    
              设置 IAMAmazon IoT EventsIAM 控制台中的服务角色。
  3. 选择Create role(创建角色)

    
              设置 IAMAmazon IoT EventsIAM 控制台中的服务角色。
  4. 创建角色页面,请执行以下操作。

    1. 对于Select type of trusted entity(选择受信任实体的类型),选择 Amazon service(服务)

    2. 对于选择将使用此角色的服务,选择IoT.

    3. 对于选择您的使用案例,选择IoT然后选择下一步:s ( Permissions (下一步:权限)

    
              设置 IAMAmazon IoT EventsIAM 控制台中的服务角色。
    
              设置 IAMAmazon IoT EventsIAM 控制台中的服务角色。
  5. 创建角色页面附加权限,将这些权限保持目前不变,然后选择下一步:s ( 标签

    您可在以后的步骤中添加新策略,以授予所需权限。

    
              设置 IAMAmazon IoT EventsIAM 控制台中的服务角色。
  6. 创建角色页面添加标签(可选),现在不要添加标签然后选择下一步:审核.

    
              设置 IAMAmazon IoT EventsIAM 控制台中的服务角色。
  7. 审核页面,输入角色名称,可选角色描述,然后选择创建角色.

    
              设置 IAMAmazon IoT EventsIAM 控制台中的服务角色。
  8. 角色页面上,查找并选择您创建的角色的名称。

    
              设置 IAMAmazon IoT EventsIAM 控制台中的服务角色。
  9. 摘要你的角色页面,在Permissions (权限)选项卡,选择附加策略.

    
              设置 IAMAmazon IoT EventsIAM 控制台中的服务角色。
  10. 附加权限页面,选择创建策略.

    
              设置 IAMAmazon IoT EventsIAM 控制台中的服务角色。
  11. 创建策略页面上,选择JSON选项卡。如果出现策略验证失败警告,请选择X图标将其关闭。

    
              设置 IAMAmazon IoT EventsIAM 控制台中的服务角色。
  12. JSON选项卡,请执行以下操作。

    1. 在编辑器中使用以下示例替换 JSON。

    2. 更改Resource值转换为 ARN。Amazon SNS 主题在中使用Amazon IoT Events.

    3. 选择Review policy(查看策略)。您也可以在 Amazon SNS 主题 ARN 中使用通配符来授予更广泛的权限,但请注意由此引发的安全问题。

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "sns:*" ], "Effect": "Allow", "Resource": "arn:aws:sns:us-east-1:123456789012:testAction" } ] }

    您的保单应类似以下内容。

    
              设置 IAMAmazon IoT EventsIAM 控制台中的服务角色。
  13. 查看策略页面,输入名称对于该策略,是可选的说明,然后选择创建策略.

    
              设置 IAMAmazon IoT EventsIAM 控制台中的服务角色。
  14. 策略页面上,在导航窗格中,选择角色.

    
              设置 IAMAmazon IoT EventsIAM 控制台中的服务角色。
  15. 角色页面上,查找并选择您创建的角色的名称。

    
              设置 IAMAmazon IoT EventsIAM 控制台中的服务角色。
  16. 摘要你的角色页面,在Permissions (权限)选项卡,选择附加策略.

    
              设置 IAMAmazon IoT EventsIAM 控制台中的服务角色。
  17. 附加权限” 页面,选中您创建的策略旁边的复选框,然后选择附加策略.

    
              设置 IAMAmazon IoT EventsIAM 控制台中的服务角色。
  18. 角色页面上,查找并选择您创建的角色的名称。

    
              设置 IAMAmazon IoT EventsIAM 控制台中的服务角色。
  19. 摘要该角色的页面,在信任关系选项卡,选择编辑信任关系.

    
              设置 IAMAmazon IoT EventsIAM 控制台中的服务角色。
  20. 编辑信任关系页面策略文档,将现有的 JSON 替换为以下内容并选择更新信任策略.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "iotevents.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

    您的保单应类似以下内容。

    
              设置 IAMAmazon IoT EventsIAM 控制台中的服务角色。

你现在已经授予了Amazon IoT Events允许代表您向您的 Amazon SNS 主题发送提醒。为了增强安全性,请删除您创建的角色(默认情况下附加到您创建的角色)。

亚马逊 CloudWatch 记录角色策略

以下策略文档提供了角色策略和信任策略,可以Amazon IoT Events将日志提交到 CloudWatch 代表您们。

角色策略:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:PutMetricFilter", "logs:PutRetentionPolicy", "logs:GetLogEvents", "logs:DeleteLogStream" ], "Resource": [ "arn:aws:logs:*:*:*" ] } ] }

信任策略:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "iotevents.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

您还需要附加至 IAM 用户的 IAM permissions policy(权限策略),允许该用户传递策略,如下所示。有关更多信息,请参阅 。向用户授予权限以将角色传递给Amazon服务在里面IAM 用户指南.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Action": [ "iam:GetRole", "iam:PassRole" ], "Resource": "arn:aws:iam::<account-id>:role/Role_To_Pass" } ] }

您可使用以下命令将资源策略放入 CloudWatch 日志。这允许Amazon IoT Events将日志事件放入 CloudWatch 流流。ook

aws logs put-resource-policy --policy-name ioteventsLoggingPolicy --policy-document "{ \"Version\": \"2012-10-17\", \"Statement\": [ { \"Sid\": \"IoTEventsToCloudWatchLogs\", \"Effect\": \"Allow\", \"Principal\": { \"Service\": [ \"iotevents.amazonaws.com\" ] }, \"Action\":\"logs:PutLogEvents\", \"Resource\": \"*\" } ] }"

使用以下命令放置日志选项。替换roleArn使用您创建的日志角色。

aws iotevents put-logging-options --cli-input-json "{ \"loggingOptions\": {\"roleArn\": \"arn:aws:iam::123456789012:role/testLoggingRole\", \"level\": \"INFO\", \"enabled\": true } }"

Amazon SNS 消息角色政策

以下策略文档提供了角色策略和信任策略,可以Amazon IoT Events发送 SNS 消息。

角色策略:

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "sns:*" ], "Effect": "Allow", "Resource": "arn:aws:sns:us-east-1:123456789012:testAction" } ] }

信任策略:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "iotevents.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }