

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 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 ることができる IAM ロール`dynamodb:PutItem`。詳細については、「[必要なアクセスを AWS IoT ルールに付与する](iot-create-role.md)」を参照してください。

   AWS IoT コンソールで、このルールアクションを実行することを に許可 AWS IoT するロールを選択または作成できます。
+  カスタマーマネージド AWS KMS key (KMS キー) を使用して DynamoDB に保管中のデータを暗号化する場合、サービスには発信者に代わって KMS キーを使用するアクセス許可が必要です。詳細については、[*Amazon DynamoDB Getting Started Guide*](Amazon DynamoDB 開始方法ガイド) の [[Customer Managed KMS key](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/encryption.howitworks.html#managed-cmk-customer-managed)](カスタマー管理の CMK) を参照してください。

## パラメータ
<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`。  
[置換テンプレート](iot-substitution-templates.md)をサポート: API および AWS CLI のみ

`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)