

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

# S3
<a name="s3-rule-action"></a>

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

## 要求
<a name="s3-rule-action-requirements"></a>

此规则操作具有以下要求：
+  AWS IoT 可以代入执行`s3:PutObject`操作的 IAM 角色。有关更多信息，请参阅 [授予 AWS IoT 规则所需的访问权限](iot-create-role.md)。

  在 AWS IoT 控制台中，您可以选择或创建 AWS IoT 允许执行此规则操作的角色。
+ 如果您使用 AWS KMS 客户托管 AWS KMS key 来加密Amazon S3中的静态数据，则该服务必须有权代表呼叫者使用这些数据。 AWS KMS key 有关更多信息，请参阅《*Amazon 简单存储服务开发者指南*》 AWS KMS keys中的[托AWS 管 AWS KMS keys 和客户托管](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html#aws-managed-customer-managed-cmks)。

## 参数
<a name="s3-rule-action-parameters"></a>

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

`bucket`  
数据写入的 Amazon S3 存储桶。  
仅支持[替换模板](iot-substitution-templates.md)：API 且 AWS CLI 仅支持

`cannedacl`  
（可选）Amazon S3 封装的 ACL，用于控制对由对象键标识的对象的访问权限。有关更多信息，包括允许的值，请参阅 [封装 ACL](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl)。  
支持[替换模板](iot-substitution-templates.md)：否

`key`  
数据写入的文件路径。  
考虑一个例子，其中此参数是 `${topic()}/${timestamp()}`，并且规则会收到一条消息，其中主题为 `some/topic`。如果当前时间戳为 `1460685389`，那么这个操作会将数据写入一个 S3 存储桶中名为 `some/topic` 的文件夹中的文件 `1460685389`。  
如果您使用静态密钥，则每次调用规则时都会 AWS IoT 覆盖单个文件。我们建议您使用消息时间戳或其它唯一的消息标识符，这样可以在 Amazon S3 中针对接收的每个消息保存一个新文件。
支持[替换模板](iot-substitution-templates.md)：是

`roleArn`  
允许访问 Amazon S3 存储桶的 IAM 角色。有关更多信息，请参阅 [要求](#s3-rule-action-requirements)。  
支持[替换模板](iot-substitution-templates.md)：否

## 示例
<a name="s3-rule-action-examples"></a>

以下 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"
                }
            }
        ]
    }
}
```

## 另请参阅
<a name="s3-rule-action-see-also"></a>
+ *《Amazon Simple Storage Service 用户指南》*中的[什么是 Amazon S3？](https://docs.aws.amazon.com/AmazonS3/latest/userguide/)