

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

# 型システム (リクエストマッピング)
<a name="aws-appsync-resolver-mapping-template-reference-dynamodb-typed-values-request"></a>

 AWS AppSync DynamoDB リゾルバーを使用して DynamoDB テーブルを呼び出す場合、 AWS AppSync はその呼び出しで使用する各値のタイプを知る必要があります。これは、DynamoDB が GraphQL や JSON よりも多くのタイプのプリミティブ (セットやバイナリデータなど) をサポートしているためです。 AWS AppSync は、GraphQL と DynamoDB の間で変換するときにいくつかのヒントを必要とします。そうしないと、テーブル内のデータの構造についていくつかの仮定を行う必要があります。

DynamoDB のデータ型の詳細については、DynamoDB の「[データ型記述子](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Programming.LowLevelAPI.html#Programming.LowLevelAPI.DataTypeDescriptors)」および「[データ型](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.NamingRulesDataTypes.html#HowItWorks.DataTypes)」の各ドキュメントを参照してください。

DynamoDB の値は、単一のキーと値のペアを含む JSON オブジェクトで表されます。キーは DynamoDB の型を指定し、値はその値自身を指定します。次の例では、キー `S` は値が文字列であることを示し、値 `identifier` がその文字列値です。

```
{ "S" : "identifier" }
```

JSON オブジェクトは複数のキーと値のペアを持つことはできません。複数のキーと値のペアが指定されている場合、リクエストマッピングドキュメントは解析されません。

DynamoDB の値は、値を指定する必要がある場合にはリクエストマッピングドキュメントのどこかで使用されます。これが必要になる箇所には、`key` セクションと `attributeValue` セクション、および式セクションの `expressionValues` セクションが含まれています。次の例では、DynamoDB の文字列値 `identifier` が、(おそらくは `GetItem` リクエストマッピングドキュメントの) `key` セクションの `id` フィールドに割り当てられています。

```
"key" : {
   "id" : { "S" : "identifier" }
}
```

 **サポートされているタイプ** 

AWS AppSync は、次の DynamoDB スカラー、ドキュメント、およびセットタイプをサポートしています。

**文字列型 `S` **  
単一の文字列値です。DynamoDB の文字列値は次のように表されます。  

```
{ "S" : "some string" }
```
以下は使用例です。  

```
"key" : {
   "id" : { "S" : "some string" }
}
```

**文字列セット型 `SS` **  
1 組の文字列値です。DynamoDB の文字列セット値は次のように表されます。  

```
{ "SS" : [ "first value", "second value", ... ] }
```
以下は使用例です。  

```
"attributeValues" : {
   "phoneNumbers" : { "SS" : [ "+1 555 123 4567", "+1 555 234 5678" ] }
}
```

**数値型 `N` **  
単一の数値です。DynamoDB の数値は次のように表されます。  

```
{ "N" : 1234 }
```
以下は使用例です。  

```
"expressionValues" : {
   ":expectedVersion" : { "N" : 1 }
}
```

**数値セット型 `NS` **  
1 組の数値です。DynamoDB の数値セット値は次のように表されます。  

```
{ "NS" : [ 1, 2.3, 4 ... ] }
```
以下は使用例です。  

```
"attributeValues" : {
   "sensorReadings" : { "NS" : [ 67.8, 12.2, 70 ] }
}
```

**バイナリ型 `B` **  
バイナリ値です。DynamoDB のバイナリ値は次のように表されます。  

```
{ "B" : "SGVsbG8sIFdvcmxkIQo=" }
```
値は実際には文字列であり、文字列はバイナリデータの base64 でエンコードされた表現です。 AWS AppSync はこの文字列をバイナリ値にデコードしてから DynamoDB に送信します。 AWS AppSync は RFC 2045 で定義されている base64 デコードスキームを使用します。base64 アルファベットにない文字は無視されます。  
以下は使用例です。  

```
"attributeValues" : {
   "binaryMessage" : { "B" : "SGVsbG8sIFdvcmxkIQo=" }
}
```

**バイナリセット型 `BS` **  
1 組のバイナリ値です。DynamoDB のバイナリセット値は次のように表されます。  

```
{ "BS" : [ "SGVsbG8sIFdvcmxkIQo=", "SG93IGFyZSB5b3U/Cg==" ... ] }
```
値は実際には文字列であり、文字列はバイナリデータの base64 でエンコードされた表現です。 AWS AppSync はこの文字列をバイナリ値にデコードしてから DynamoDB に送信します。 AWS AppSync は、RFC 2045 で定義されている base64 デコードスキームを使用します。base64 アルファベットにない文字は無視されます。  
以下は使用例です。  

```
"attributeValues" : {
   "binaryMessages" : { "BS" : [ "SGVsbG8sIFdvcmxkIQo=", "SG93IGFyZSB5b3U/Cg==" ] }
}
```

**ブール型 `BOOL` **  
ブール値。DynamoDB のブール値は次のように表されます。  

```
{ "BOOL" : true }
```
有効な値は、`true` と `false` のみです。  
以下は使用例です。  

```
"attributeValues" : {
   "orderComplete" : { "BOOL" : false }
}
```

**リスト型 `L` **  
サポートされているその他の DynamoDB の値のリストです。DynamoDB のリスト値は次のように表されます。  

```
{ "L" : [ ... ] }
```
この値は複合値です。リストには、サポートされる DynamoDB の値 (他のリストも含む) が 0 個以上入ります。このリストには、異なる型を混在させることもできます。  
以下は使用例です。  

```
{ "L" : [
      { "S"  : "A string value" },
      { "N"  : 1 },
      { "SS" : [ "Another string value", "Even more string values!" ] }
   ]
}
```

**マップ型 `M` **  
サポートされる他の DynamoDB の値の、キーと値のペアの順序付けされていない集合を表します。DynamoDB のマップ値は次のように表されます。  

```
{ "M" : { ... } }
```
マップには 0 個以上のキーと値のペアが入ります。キーは文字列である必要があり、値には、サポートされている DynamoDB の任意の値 (他のマップを含む) が使用できます。このマップには、異なる型を混在させることもできます。  
以下は使用例です。  

```
{ "M" : {
      "someString" : { "S"  : "A string value" },
      "someNumber" : { "N"  : 1 },
      "stringSet"  : { "SS" : [ "Another string value", "Even more string values!" ] }
   }
}
```

**Null 型 `NULL` **  
null 値です。DynamoDB の Null 値は次のように表されます。  

```
{ "NULL" : null }
```
以下は使用例です。  

```
"attributeValues" : {
   "phoneNumbers" : { "NULL" : null }
}
```

各タイプの詳細については、[DynamoDB のドキュメント](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.NamingRulesDataTypes.html)を参照してください。