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

设置 AWS IoT Events

如果您没有 AWS 账户,请通过以下步骤创建一个账户。

注册 AWS

  1. 打开 http://www.amazonaws.cn/,然后选择 Create an AWS Account

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

设置 AWS IoT Events 的权限

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

IAM 用户指南 具有有关安全控制访问权限的更多详细信息 AWS 资源。有关 AWS IoT Events,请参阅 操作、资源和条件键 AWS IoT Events.

操作权限

AWS IoT Events 使您能够触发使用其他 AWS 服务。为此,您必须授予 AWS IoT Events 代表您执行这些操作的权限。此部分包含操作列表和示例策略,授予在资源上执行所有这些操作的权限。更改 regionaccount-id 参考文件。如果可能,您还应更改通配符(*)以引用将访问的特定资源。您可以使用 IAM 控制台以授予权限 AWS IoT Events 发送一个 Amazon SNS 提醒您已定义。有关更多信息,请参阅 使用 IAM 控制台管理角色和权限

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

AWS IoT Events 支持以下可让您使用 AWS 服务的操作:

例 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 控制台以授予权限 AWS IoT Events 生成 Amazon SNS 代表您发出提醒。您还可以将角色附加到您将用于定义和发布 AWS IoT Events 检测器模型,其中包含发送 Amazon SNS 提醒。

要完成此示例,您需要现有 Amazon SNS 主题 用于 AWS IoT Events.

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

  1. 登录 AWS 管理控制台 并通过以下网址打开 IAM 控制台 https://console.amazonaws.cn/iam/

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

    
              设置 AWS IoT Events 服务角色 IAM 控制台。
  3. 选择创建角色

    
              设置 AWS IoT Events 服务角色 IAM 控制台。
  4. 创建角色 ,请执行以下。

    1. 对于 选择可信实体的类型,选择 AWS 服务.

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

    3. 对于 选择您的用例,选择 物联网 并选择 下一步: 权限。

    
              设置 AWS IoT Events 服务角色 IAM 控制台。
    
              设置 AWS IoT Events 服务角色 IAM 控制台。
  5. 创建角色 页面,针对 附加权限,请暂时保留这些权限并选择 下一步: 标签.

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

    
              设置 AWS IoT Events 服务角色 IAM 控制台。
  6. 创建角色 页面,针对 添加标记(可选),现在不要添加标记并选择 下一步:查看.

    
              设置 AWS IoT Events 服务角色 IAM 控制台。
  7. 回顾 页面中,输入 角色名称,可选 角色描述,并选择 创建角色.

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

    
              设置 AWS IoT Events 服务角色 IAM 控制台。
  9. 总结 页面 权限 选项卡,选择 附加策略.

    
              设置 AWS IoT Events 服务角色 IAM 控制台。
  10. 附加权限 页面,选择 创建策略.

    
              设置 AWS IoT Events 服务角色 IAM 控制台。
  11. 创建策略 页面中,选择 JSON(JSON) 选项卡。如果出现策略验证失败警告,请选择 X 图标将其取消。

    
              设置 AWS IoT Events 服务角色 IAM 控制台。
  12. JSON(JSON) 选项卡中,请执行以下操作。

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

    2. 更改 Resource 价值 Amazon SNS 主题 用于 AWS IoT Events.

    3. 选择查看策略。您也可以在 Amazon SNS 主题ARN授予更广泛的权限,但请注意安全问题会引发。

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

    您的政策应如下所示。

    
              设置 AWS IoT Events 服务角色 IAM 控制台。
  13. 审查政策 页面中,输入 名称 一个可选 描述,并选择 创建策略.

    
              设置 AWS IoT Events 服务角色 IAM 控制台。
  14. 政策 页面,在导航窗格中,选择 角色.

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

    
              设置 AWS IoT Events 服务角色 IAM 控制台。
  16. 总结 页面 权限 选项卡,选择 附加策略.

    
              设置 AWS IoT Events 服务角色 IAM 控制台。
  17. 附加权限 ,选择您创建的策略旁边的复选框,然后选择 附加策略.

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

    
              设置 AWS IoT Events 服务角色 IAM 控制台。
  19. 总结 页面 信任关系 选项卡,选择 编辑信任关系.

    
              设置 AWS IoT Events 服务角色 IAM 控制台。
  20. 编辑信任关系 页面,针对 政策文件,用以下内容替换现有JSON,然后选择 更新信任政策.

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

    您的政策应如下所示。

    
              设置 AWS IoT Events 服务角色 IAM 控制台。

您现在已经授权 AWS IoT Events 允许将提醒发送到您的 Amazon SNS 主题。为了增强安全性,请删除默认附加到您创建的角色的未使用策略。

Amazon CloudWatch 记录角色策略

以下策略文档提供了角色策略和信任策略,借助这些策略,AWS 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 允许用户传递角色的用户,如下所示。有关更多信息,请参阅 授予用户权限以将角色传递给 AWS 服务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 记录。这允许 AWS 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 消息传递角色策略

以下政策文件提供了角色政策和信任政策, AWS 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" } ] }