Resolver mapping template reference for RDS
The Amazon AppSync RDS resolver mapping templates allow developers to send SQL queries to a Data API for Amazon Aurora Serverless and get back the result of these queries.
Request mapping template
The RDS request mapping template is fairly simple:
{ "version": "2018-05-29", "statements": [], "variableMap": {}, "variableTypeHintMap": {} }
Here is the JSON schema representation of the RDS request mapping template, once resolved.
{ "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" } } }
The following is an example of the request mapping template with a static query:
{ "version": "2018-05-29", "statements": [ "select title, isbn13 from BOOKS where author = 'Mark Twain'" ] }
Version
Common to all request mapping templates, the version field defines the version that the template uses. The version field is required. The value “2018-05-29” is the only version supported for the Amazon RDS mapping templates.
"version": "2018-05-29"
Statements and VariableMap
The statements array is a placeholder for the developer-provided queries. Currently, up to two queries per
request mapping template are supported. The variableMap
is an optional field that contains
aliases that can be used to make the SQL statements shorter and more readable. For example, the following is
possible:
{ "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) } }
Amazon AppSync will use the variable map values to construct the SqlParameterized
VariableTypeHintMap
The variableTypeHintMap
is an optional field containing aliased types that can be used to
send SQL
parameter
{ "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" } }
Amazon AppSync will use the variable map value to construct the queries that are sent to the Amazon Aurora
Serverless Data API. It also uses the variableTypeHintMap
data and sends the type's information
to RDS. RDS-supported typeHints
can be found here