RDS のリゾルバーのマッピングテンプレートリファレンス - AWS AppSync

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

RDS のリゾルバーのマッピングテンプレートリファレンス

AWS AppSyncRDS リゾルバーのマッピングテンプレートを使用すると、開発者は SQL クエリを Data API for Amazon Aurora Serverless に送信し、これらのクエリの結果を取得できます。

リクエストマッピングテンプレート

RDS リクエストマッピングテンプレートは非常にシンプルです。

{ "version": "2018-05-29", "statements": [], "variableMap": {}, "variableTypeHintMap": {} }

以下に示しているのは、解決済み RDS リクエストマッピングテンプレートの JSON スキーマ表現です。

{ "definitions": {}, "$schema": "https://json-schema.org/draft-07/schema#", "$id": "https://example.com/root.json", "type": "object", "title": "The Root Schema", "required": [ "version", "statements", "variableMap" ], "properties": { "version": { "$id": "#/properties/version", "type": "string", "title": "The Version Schema", "default": "", "examples": [ "2018-05-29" ], "enum": [ "2018-05-29" ], "pattern": "^(.*)$" }, "statements": { "$id": "#/properties/statements", "type": "array", "title": "The Statements Schema", "items": { "$id": "#/properties/statements/items", "type": "string", "title": "The Items Schema", "default": "", "examples": [ "SELECT * from BOOKS" ], "pattern": "^(.*)$" } }, "variableMap": { "$id": "#/properties/variableMap", "type": "object", "title": "The Variablemap Schema" }, "variableTypeHintMap": { "$id": "#/properties/variableTypeHintMap", "type": "object", "title": "The variableTypeHintMap Schema" } } }

以下は、静的クエリを使用したリクエストマッピングテンプレートの例です。

{ "version": "2018-05-29", "statements": [ "select title, isbn13 from BOOKS where author = 'Mark Twain'" ] }

バージョン

すべてのリクエストマッピングテンプレートに共通で、バージョンフィールド はテンプレートが使用するバージョンを定義します。バージョンフィールドは必須です。値「2018-05-29」は、Amazon RDS マッピングテンプレートでサポートされている唯一のバージョンです。

"version": "2018-05-29"

statements と VariableMap

statements 配列は、開発者が提供したクエリのプレースホルダーです。現在、リクエストマッピングテンプレートごとに最大 2 つのクエリがサポートされています。variableMap は、SQL ステートメントを短くして読みやすくするために使用できるエイリアスを含むオプションのフィールドです。例えば、以下のことが可能です。

{ "version": "2018-05-29", "statements": [ "insert into BOOKS VALUES (:AUTHOR, :TITLE, :ISBN13)", "select * from BOOKS WHERE isbn13 = :ISBN13" ], "variableMap": { ":AUTHOR": $util.toJson($ctx.args.newBook.author), ":TITLE": $util.toJson($ctx.args.newBook.title), ":ISBN13": $util.toJson($ctx.args.newBook.isbn13) } }

AWS AppSync は、変数マップ値を使用して、Amazon Aurora Serverless Data API に送信される SqlParameterized クエリをコンストラクトします。SQL ステートメントは変数マップに指定されたパラメータを使用して実行されるため、SQL インジェクションのリスクが排除されます。

VariableTypeHintMap

variableTypeHintMap は、SQL パラメータの型ヒントを送信するために使用できるエイリアス型を含むオプションのフィールドです。これらのタイプヒントは、SQL ステートメント内での明示的なキャストを回避し、より短くします。例えば、以下のことが可能です。

{ "version": "2018-05-29", "statements": [ "insert into LOGINDATA VALUES (:ID, :TIME)", "select * from LOGINDATA WHERE id = :ID" ], "variableMap": { ":ID": $util.toJson($ctx.args.id), ":TIME": $util.toJson($ctx.args.time) }, "variableTypeHintMap": { ":id": "UUID", ":time": "TIME" } }

AWS AppSync は、変数マップ値を使用して、Amazon Aurora Serverless Data API に送信されるクエリをコンストラクトします。また、variableTypeHintMap データを使用してタイプの情報を RDS に送信します。RDS がサポートしている typeHints については、こちらをご覧ください。