S3 - AWS IoT Core

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

S3

S3 (s3) 操作将 MQTT 消息中的数据写入 Amazon Simple Storage Service (Amazon S3) 存储桶。

要求

此规则操作具有以下要求:

  • AWS IoT 可以代入执行s3:PutObject操作的 IAM 角色。有关更多信息,请参阅授予 AWS IoT 规则所需的访问权限

    在 AWS IoT 控制台中,您可以选择或创建 AWS IoT 允许执行此规则操作的角色。

  • 如果您使用 AWS KMS 客户托管 AWS KMS key 来加密Amazon S3中的静态数据,则该服务必须有权代表呼叫者使用这些数据。 AWS KMS key 有关更多信息,请参阅《Amazon 简单存储服务开发者指南》 AWS KMS keys中的托AWS 管 AWS KMS keys 和客户托管

参数

使用此操作创建 AWS IoT 规则时,必须指定以下信息:

bucket

数据写入的 Amazon S3 存储桶。

仅支持替换模板:API 且 AWS CLI 仅支持

cannedacl

(可选)Amazon S3 封装的 ACL,用于控制对由对象键标识的对象的访问权限。有关更多信息,包括允许的值,请参阅 封装 ACL

支持替换模板:否

key

数据写入的文件路径。

考虑一个例子,其中此参数是 ${topic()}/${timestamp()},并且规则会收到一条消息,其中主题为 some/topic。如果当前时间戳为 1460685389,那么这个操作会将数据写入一个 S3 存储桶中名为 some/topic 的文件夹中的文件 1460685389

注意

如果您使用静态密钥,则每次调用规则时都会 AWS IoT 覆盖单个文件。我们建议您使用消息时间戳或其它唯一的消息标识符,这样可以在 Amazon S3 中针对接收的每个消息保存一个新文件。

支持替换模板:是

roleArn

允许访问 Amazon S3 存储桶的 IAM 角色。有关更多信息,请参阅要求

支持替换模板:否

示例

以下 JSON 示例在 AWS IoT 规则中定义了 S3 操作。

{ "topicRulePayload": { "sql": "SELECT * FROM 'some/topic'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "s3": { "bucketName": "my-bucket", "cannedacl": "public-read", "key": "${topic()}/${timestamp()}", "roleArn": "arn:aws:iam::123456789012:role/aws_iot_s3" } } ] } }

另请参阅