本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS AppSync 的解析器映射範本參考 RDS
AWS AppSync RDS 解析器映射範本可讓開發人員將SQL查詢傳送至 Amazon Aurora Serverless API的資料,並傳回這些查詢的結果。
請求映射範本
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"
陳述式和 VariableMap
陳述式陣列是開發人員所提供查詢的預留位置。目前,每個請求映射範本最多支援兩個查詢。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 的SqlParameterized查詢API。使用變數映射中提供的參數執行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
可在此處找到 。