本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
S3 (s3
) 動作會將訊息中的資料寫入 Amazon Simple Storage Service (Amazon S3) 儲存貯MQTT體。
要求
此規則動作具有下列需求:
-
AWS IoT 可以擔任以執行
s3:PutObject
操作IAM的角色。如需詳細資訊,請參閱授予 AWS IoT 規則所需的存取權。在 AWS IoT 主控台中,您可以選擇或建立角色, AWS IoT 以允許 執行此規則動作。
-
如果您使用受管 AWS KMS 客戶 AWS KMS key 來加密 Amazon S3 中的靜態資料,服務必須具有代表發起人使用 AWS KMS key 的許可。如需詳細資訊,請參閱《Amazon Simple Storage Service 開發人員指南》中的AWS 受管 AWS KMS keys 和客戶受管 AWS KMS keys。
參數
使用此動作建立 AWS IoT 規則時,您必須指定下列資訊:
bucket
-
要寫入資料的 Amazon S3 儲存貯體。
AWS CLI 僅支援替代範本: API和
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?