型システム (リクエストマッピング) - AWS AppSync

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

型システム (リクエストマッピング)

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

DynamoDB のデータ型の詳細については、DynamoDB の「データ型記述子」および「データ型」の各ドキュメントを参照してください。

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=" }

値は実際には文字列であることに注意してください。ここで、文字列はバイナリ data の base64 でエンコードされた表現です。 は、この文字列をバイナリ値に AWS AppSync デコードしてから DynamoDB に送信します。 AWS AppSync は 2045 RFC で定義されている base64 デコードスキームを使用します。base64 アルファベットにない文字は無視されます。

以下は使用例です。

"attributeValues" : { "binaryMessage" : { "B" : "SGVsbG8sIFdvcmxkIQo=" } }
バイナリセット型 BS

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

{ "BS" : [ "SGVsbG8sIFdvcmxkIQo=", "SG93IGFyZSB5b3U/Cg==" ... ] }

値は実際には文字列であることに注意してください。ここで、文字列はバイナリ data の base64 でエンコードされた表現です。 は、この文字列をバイナリ値に AWS AppSync デコードしてから DynamoDB に送信します。 AWS AppSync は 2045 RFC で定義されている base64 デコードスキームを使用します。base64 アルファベットにない文字は無視されます。

以下は使用例です。

"attributeValues" : { "binaryMessages" : { "BS" : [ "SGVsbG8sIFdvcmxkIQo=", "SG93IGFyZSB5b3U/Cg==" ] } }
ブール型 BOOL

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

{ "BOOL" : true }

有効な値は、truefalse のみです。

以下は使用例です。

"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 のドキュメントを参照してください。