

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# DynamoDB
<a name="dynamodb-rule-action"></a>

 DynamoDB (`dynamoDB`) 動作會將 MQTT 訊息的全部或部分寫入 Amazon DynamoDB 表格。

您可依循對您展示如何使用 DynamoDB 動作 來建立及測試規則的教學課程。如需詳細資訊，請參閱[教學課程：將裝置資料儲存在 DynamoDB 表格中](iot-ddb-rule.md)。

**注意**  
此規則會以二進位資料形式將非 JSON 資料寫入 DynamoDB 中。DynamoDB 主控台會以 Base64 編碼文字來顯示資料。

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

此規則動作具有下列需求：
+  AWS IoT 可以擔任以執行`dynamodb:PutItem`操作的 IAM 角色。如需詳細資訊，請參閱[授予 AWS IoT 規則所需的存取權](iot-create-role.md)。

  在 AWS IoT 主控台中，您可以選擇或建立角色， AWS IoT 以允許 執行此規則動作。
+  如果您使用客戶受管 AWS KMS key (KMS 金鑰） 來加密 DynamoDB 中的靜態資料，則服務必須具有代表發起人使用 KMS 金鑰的許可。如需詳細資訊，請參閱《Amazon DynamoDB 入門指南》**中的[客戶管理 KMS 金鑰](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/encryption.howitworks.html#managed-cmk-customer-managed)。

## Parameters
<a name="dynamodb-rule-action-parameters"></a>

當您使用此動作建立 AWS IoT 規則時，您必須指定下列資訊：

`tableName`  
DynamoDB 資料表的名稱。  
僅支援[替代範本](iot-substitution-templates.md)：API 和 AWS CLI 

`hashKeyField`  
雜湊索引鍵 (也稱為分割區索引鍵) 的名稱。  
僅支援[替代範本](iot-substitution-templates.md)：API 和 AWS CLI 

`hashKeyType`  
(選用) 雜湊索引鍵 (也稱為分割區索引鍵) 的資料類型。有效值：`STRING`、`NUMBER`。  
僅支援[替代範本](iot-substitution-templates.md)：API 和 AWS CLI 

`hashKeyValue`  
雜湊索引鍵的值。考慮使用替代範本，例如 `${topic()}` 或 `${timestamp()}`。  
支援[替代範本](iot-substitution-templates.md)：是

`rangeKeyField`  
(選用) 範圍索引鍵 (亦稱為排序索引鍵) 的名稱。  
僅支援[替代範本](iot-substitution-templates.md)：API 和 AWS CLI 

`rangeKeyType`  
(選用) 範圍索引鍵 (亦稱為排序索引鍵) 的資料類型。有效值：`STRING`、`NUMBER`。  
 AWS CLI 僅支援[替代範本](iot-substitution-templates.md)：API 和

`rangeKeyValue`  
(選用) 範圍索引鍵的值。考慮使用替代範本，例如 `${topic()}` 或 `${timestamp()}`。  
支援[替代範本](iot-substitution-templates.md)：是

`payloadField`  
(選用) 承載寫入的欄名稱。若省略此值，則會將承載寫入名為 `payload` 的欄。  
支援[替代範本](iot-substitution-templates.md)：是

`operation`  
(選用) 欲執行的作業類型。有效值：`INSERT`、`UPDATE`、`DELETE`。  
支援[替代範本](iot-substitution-templates.md)：是

`roleARN`  
允許存取 DynamoDB 資料表的 IAM 角色。如需詳細資訊，請參閱[要求](#dynamodb-rule-action-requirements)。  
支援[替代範本](iot-substitution-templates.md)：否

寫入 DynamoDB 表格的資料產自於規則的 SQL 陳述式。

## 範例
<a name="dynamodb-rule-action-examples"></a>

下列 JSON 範例會在 AWS IoT 規則中定義 DynamoDB 動作。

```
{
    "topicRulePayload": {
        "sql": "SELECT * AS message FROM 'some/topic'", 
        "ruleDisabled": false,
        "awsIotSqlVersion": "2016-03-23",
        "actions": [
            {
                "dynamoDB": {
                    "tableName": "my_ddb_table",
                    "hashKeyField": "key",
                    "hashKeyValue": "${topic()}",
                    "rangeKeyField": "timestamp",
                    "rangeKeyValue": "${timestamp()}",
                    "roleArn": "arn:aws:iam::123456789012:role/aws_iot_dynamoDB"
                }
            }
        ]
    }
}
```

## 另請參閱
<a name="dynamodb-rule-action-see-also"></a>
+ 《Amazon DynamoDB 開發人員指南》**中的[什麼是 Amazon DynamoDB？](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/)
+ 《Amazon DynamoDB 開發人員指南》**中的 [DynamoDB 入門](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GettingStartedDynamoDB.html)
+ [教學課程：將裝置資料儲存在 DynamoDB 表格中](iot-ddb-rule.md)