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

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

设置 Amazon IoT Events

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

报名参加 Amazon Web Services 账户
  1. 打开 https://portal.aws.amazon.com/billing/signup

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

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

    当您注册时 Amazon Web Services 账户,就会创建Amazon Web Services 账户根用户一个。根用户有权访问该账户中的所有 Amazon Web Services 和资源。作为一种安全最佳实践,请为管理用户分配管理访问权限,并且只使用根用户执行需要根用户访问权限的任务

为设置权限 Amazon IoT Events

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

I AM 用户指南提供了有关安全控制 Amazon 资源访问权限的更多详细信息。有关特定信息 Amazon IoT Events,请参阅的操作、资源和条件键 Amazon IoT Events

要使用 IAM 控制台创建和管理角色和权限,请参阅 IAM 教程:使用 IAM 角色跨 Amazon 账户委派访问权限。

注意

密钥可以是 1-128 个字符,可包括:

  • 大写字母或小写字母 a-z

  • 数字 (0-9)

  • 特殊字符-_:

操作权限

Amazon IoT Events 使您能够触发使用其他 Amazon 服务的操作。为此,您必须授予代表您执行这些操作的 Amazon IoT Events 权限。本节包含操作列表和示例策略,该策略授权对您的资源执行所有此类操作。按需要更改区域账户 ID 参考。如有可能,您还应该更改通配符 (*),以引用特定的待访问资源。您可以使用 IAM 控制台授 Amazon IoT Events 予发送您定义的 Amazon SNS 提醒的权限。

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

Amazon IoT Events 支持以下允许您使用 Amazon 服务的操作:

  • iotTopicPublish 发布有关 MATT 主题的消息。

  • iotEvents 将数据以输入值的形式发送至 Amazon IoT Events 。

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

  • dynamoDB 向 Amazon DynamoDB 表发送数据。

  • dynamoDBv2 向 Amazon DynamoDB 表发送数据。

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

  • lambda 调用 Amazon Lambda 函数。

  • 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的通配符*),以限制对特定输入的权限。这可以让您限制对探测器模型使用并由用户或实体创建或更新的输入数据的访问权限。

Amazon CloudWatch 日志角色政策

以下策略文件提供了允许代表您向 CloudWatch 其提交日志 Amazon IoT Events 的角色策略和信任策略。

角色策略:

{ "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 权限策略,以允许该用户按以下方式传递角色。有关更多信息,请参阅 IAM 用户指南中的授予用户向 Amazon 服务传递角色的权限

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