本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
S3
S3 (s3
) 操作将MQTT消息中的数据写入亚马逊简单存储服务 (Amazon S3) 存储桶。
要求
此规则操作具有以下要求:
-
AWS IoT 可以IAM担任执行
s3:PutObject
操作的角色。有关更多信息,请参阅 授予 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": "amzn-s3-demo-bucket", "cannedacl": "public-read", "key": "${topic()}/${timestamp()}", "roleArn": "arn:aws:iam::123456789012:role/aws_iot_s3" } } ] } }
另请参阅
-
Amazon Simple Storage Service 用户指南中的什么是 Amazon S3?