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 托管 AWS KMS keys 和客户托管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?