AWS AppSync のスカラー型 - AWS AppSync

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

AWS AppSync のスカラー型

GraphQL オブジェクトタイプには名前とフィールドがあり、これらのフィールドにはサブフィールドを使用できます。最終的には、オブジェクトタイプのフィールドを、クエリの各要素を表すスカラー型に解決する必要があります。オブジェクトタイプとスカラーの詳細については、GraphQL ウェブサイトの「スキーマとタイプ」を参照してください。

GraphQL スカラーのデフォルトセットに加えて、AWS AppSync では AWS プレフィックスで始まるサービス定義のスカラーも使用できます。AWS AppSync ではユーザー定義 (カスタム) スカラーの作成はサポートしていません デフォルトまたは AWS スカラーのいずれかを使用する必要があります。

カスタムオブジェクトタイプのプレフィックスとして AWS を使用することはできません。

次のセクションはスキーマタイピングのリファレンスです。

デフォルトスカラー

GraphQL は、次のデフォルトスカラー を定義します。

ID

オブジェクトの一意な識別子。このスカラーは、String のようにシリアル化されますが、人間が読めることは意図していません。

String

UTF-8 文字シーケンス。

Int

-(231) と 231-1の間の整数値。

Float

IEEE 754 浮動小数点値

Boolean

ブール値 (true または false)。

AWS AppSync スカラー

AWS AppSync は次のスカラーを定義します。

AWSDate

拡張機能ISO 8601 の日付形式の文字列YYYY-MM-DD

AWSTime

拡張機能ISO 8601形式の文字列hh:mm:ss.sss

AWSDateTime

拡張機能ISO 8601 の日時番号形式の文字列YYYY-MM-DDThh:mm:ss.sssZ

注記

AWSDateAWSTime、および AWSDateTime スカラーは、必要に応じてタイムゾーンオフセットに含むことができます。例えば、値 1970-01-01Z1970-01-01-07:00、 および 1970-01-01+05:30 はすべて AWSDate に有効です。タイムゾーンのオフセットは、Z(UTC)、または時間と分 (およびオプションで秒) のオフセットのいずれかである必要があります。例えば、±hh:mm:ss です。ISO 8601 標準には含まれていませんが、タイムゾーンオフセットの第 2 フィールドは有効と見なされます。

AWSTimestamp

1970-01-01-T00:00Z 前後の秒数を表す整数値。

AWSEmail

RFC 822で定義される local-part@domain-part 形式のメールアドレス。

AWSJSON

JSON 文字列。すべての有効な JSON コンストラクトは、リテラルな入力文字列としてではなく、マップ、リスト、スカラー値として自動的に解析され、リゾルバーマッピングテンプレートにロードされます。引用符で囲まれていない文字列、または無効な JSON は GraphQL 検証エラーになります。

AWSPhone

電話番号 この値は文字列として保存されます。電話番号には、スペースまたはハイフンのいずれかを指定して、数字グループを区切ることができます。国番号のない電話番号は、北米番号計画 (NANP)に紐づいている米国/北米の電話番号とみなされます。

AWSURL

RFC 1738によって定義される URL。例えば、https://www.amazon.com/dp/B000NZW3KC/mailto:example@example.com などです。URL にはスキーマ (http,mailto) および 2 つのフォワードスラッシュ (//) をパス部分に入れる必要があります。

AWSIPAddress

有効な IPv4 または IPv6 アドレス。IPv4 アドレスはクアッドドット表記で想定されます (123.12.34.56)。IPv6 アドレスは、角カッコで囲まれていないコロン区切りの形式で想定されます (1a2b:3c4b::1234:4567)。オプションの CIDR サフィックス (123.45.67.89/16) を含めることで、サブネットマスクを示すことができます。

スキーマの使用例

以下に示す GraphQL スキーマの例は、すべてのカスタムのスカラーを「オブジェクト」として使用するとともに、基本的なput、get、および list 操作にリゾルバーリクエストとレスポンステンプレートを使用しています。最後に、 クエリとミューテーションを実行するときに、この をどのように 使用できるかの例を示します。

type Mutation { putObject( email: AWSEmail, json: AWSJSON, date: AWSDate, time: AWSTime, datetime: AWSDateTime, timestamp: AWSTimestamp, url: AWSURL, phoneno: AWSPhone, ip: AWSIPAddress ): Object } type Object { id: ID! email: AWSEmail json: AWSJSON date: AWSDate time: AWSTime datetime: AWSDateTime timestamp: AWSTimestamp url: AWSURL phoneno: AWSPhone ip: AWSIPAddress } type Query { getObject(id: ID!): Object listObjects: [Object] } schema { query: Query mutation: Mutation }

putObject のリクエストテンプレートは次のようになります。putObjectPutItem オペレーションを使用して Amazon DynamoDB テーブル内の項目を作成または更新します。このコードスニペットには、データソースとして Amazon DynamoDB テーブルが設定されていないことに注意してください。これは例としてのみ使用されています。

{ "version" : "2017-02-28", "operation" : "PutItem", "key" : { "id": $util.dynamodb.toDynamoDBJson($util.autoId()), }, "attributeValues" : $util.dynamodb.toMapValuesJson($ctx.args) }

putObject のレスポンステンプレートは結果を返します。

$util.toJson($ctx.result)

getObject のリクエストテンプレートは次のようになります。getObjectGetItem オペレーションを開始し、指定されたプライマリキーを持つ項目の属性のセットを取得します。このコードスニペットには、データソースとして Amazon DynamoDB テーブルが設定されていないことに注意してください。これは例としてのみ使用されています。

{ "version": "2017-02-28", "operation": "GetItem", "key": { "id": $util.dynamodb.toDynamoDBJson($ctx.args.id), } }

getObject のレスポンステンプレートは結果を返します。

$util.toJson($ctx.result)

listObjects のリクエストテンプレートは次のようになります。listObjectsScan オペレーションを使用して 1 つ以上の項目と属性を返します。このコードスニペットには、データソースとして Amazon DynamoDB テーブルが設定されていないことに注意してください。これは例としてのみ使用されています。

{ "version" : "2017-02-28", "operation" : "Scan", }

listObjects のレスポンステンプレートは結果を返します。

$util.toJson($ctx.result.items)

このスキーマを GraphQL クエリと共に使用する例をいくつか次に示します。

mutation CreateObject { putObject(email: "example@example.com" json: "{\"a\":1, \"b\":3, \"string\": 234}" date: "1970-01-01Z" time: "12:00:34." datetime: "1930-01-01T16:00:00-07:00" timestamp: -123123 url:"https://amazon.com" phoneno: "+1 555 764 4377" ip: "127.0.0.1/8" ) { id email json date time datetime url timestamp phoneno ip } } query getObject { getObject(id:"0d97daf0-48e6-4ffc-8d48-0537e8a843d2"){ email url timestamp phoneno ip } } query listObjects { listObjects { json date time datetime } }