设置 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资源的费用。有关特定于的信息Amazon IoT Events中,请参阅的操作、资源和条件键Amazon IoT Events.

操作权限

Amazon IoT Events允许您触发使用其他Amazon服务。为此,您必须授予Amazon IoT Events权限代表您执行这些操作。本部分包含操作列表和一个示例策略,该策略授予对资源执行所有这些操作的权限。将更改为区域account-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 Lambdafunction.

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

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

例 Policy

{ "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 资源名称 (ARN) 的列表,而不是通配符”*“用于”Resource” 将此权限限制为特定输入。这使您能够限制对由用户或实体创建或更新的检测器模型所使用的输入数据的访问。

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

以下示例演示如何使用 IAM 控制台向Amazon IoT Events,代表您生成 Amazon SNS 警报。您还可以将角色附加到任何实体(用户或帐户所有者),这些实体将用于定义和发布Amazon IoT Events检测器模型,该模型包含发送 Amazon SNS 警报的事件操作。

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

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

  1. 登录 Amazon Web Services Management Console,单击 https://console.aws.amazon.com/iam/ 打开 IAM 控制台。

  2. 在导航窗格中,选择和。控制面板角色.

    
              设置Amazon IoT Events服务角色。
  3. 选择创建角色

    
              设置Amazon IoT Events服务角色。
  4. 在存储库的创建角色页面上,执行以下操作:

    1. 对于选择受信任实体的类型,选择 Amazon 服务

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

    3. 适用于选择您的使用案例中,选择IoT并选择后续:Permissions (下一步:权限)

    
              设置Amazon IoT Events服务角色。
    
              设置Amazon IoT Events服务角色。
  5. 在存储库的创建角色页面, 用于附加权限,请将这些权限保留为现在的权限,然后选择后续:标签

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

    
              设置Amazon IoT Events服务角色。
  6. 在存储库的创建角色页面, 用于添加标签(可选),请不要立即添加标签,然后选择下一步:审核.

    
              设置Amazon IoT Events服务角色。
  7. 在存储库的审核页面上,输入Role name (角色名称),一个可选的角色描述,然后选择创建角色.

    
              设置Amazon IoT Events服务角色。
  8. 在存储库的角色页面上,找到并选择您创建的角色的名称。

    
              设置Amazon IoT Events服务角色。
  9. 在存储库的摘要页面上的Permissions (权限)选项卡上,选择附加策略.

    
              设置Amazon IoT Events服务角色。
  10. 在存储库的附加权限页面上,选择创建策略.

    
              设置Amazon IoT Events服务角色。
  11. 在存储库的创建策略页面上,选择JSON选项卡。如果出现策略验证失败警告,请选择X图标将其关闭。

    
              设置Amazon IoT Events服务角色。
  12. 在存储库的JSON选项卡上,执行以下操作:

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

    2. 将更改为Resource值 ARN 置Amazon SNS 主题要在Amazon IoT Events.

    3. 选择查看策略。您还可以在 Amazon SNS 主题 ARN 中使用通配符来授予更广泛的权限,但请注意这引起的安全问题。

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

    您的策略应类似以下内容。

    
              设置Amazon IoT Events服务角色。
  13. 在存储库的查看策略页面上,输入名称对于策略,则可选说明,然后选择创建策略.

    
              设置Amazon IoT Events服务角色。
  14. 在存储库的策略页面上的导航窗格中,选择角色.

    
              设置Amazon IoT Events服务角色。
  15. 在存储库的角色页面上,找到并选择您创建的角色的名称。

    
              设置Amazon IoT Events服务角色。
  16. 在存储库的摘要页面上的Permissions (权限)选项卡上,选择附加策略.

    
              设置Amazon IoT Events服务角色。
  17. 在存储库的附加权限页面上,选中您创建的策略旁边的复选框,然后选择附加策略.

    
              设置Amazon IoT Events服务角色。
  18. 在存储库的角色页面上,找到并选择您创建的角色的名称。

    
              设置Amazon IoT Events服务角色。
  19. 在存储库的摘要页面上的信任关系选项卡上,选择编辑信任关系.

    
              设置Amazon IoT Events服务角色。
  20. 在存储库的编辑信任关系页面, 用于策略文档,将现有 JSON 替换为以下内容,然后选择更新信任策略.

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

    您的策略应类似以下内容。

    
              设置Amazon IoT Events服务角色。

您现在已授予Amazon IoT Events权限代表您向您的 Amazon SNS 主题发送警报。为增强安全性,删除默认情况下附加到您创建的角色的未使用策略。

Amazon 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 权限策略,以允许该用户传递角色,如下所示。有关更多信息,请参阅 。向用户授予权限以将角色传递给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 流中。

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" } ] }