

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# RDS 的 AWS AppSync 解析程式映射範本參考
<a name="resolver-mapping-template-reference-rds"></a>

 AWS AppSync RDS 解析程式映射範本可讓開發人員將 SQL 查詢傳送至 Amazon Aurora Serverless 的資料 API，並取回這些查詢的結果。

## 請求映射範本
<a name="request-mapping-template"></a>

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'"
    ]
}
```

## 版本
<a name="version"></a>

版本欄位適用於所有請求映射範本，定義範本使用的版本。版本欄位為必要欄位。值「2018-05-29」是 Amazon RDS 映射範本唯一支援的版本。

```
"version": "2018-05-29"
```

## 陳述式和 VariableMap
<a name="statements-variablemap"></a>

陳述式陣列是開發人員所提供查詢的預留位置。目前，每個請求映射範本最多支援兩個查詢。`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](https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/API_SqlParameter.html)** 查詢。SQL 陳述式會使用變數映射中提供的參數執行，這會消除 SQL 插入的風險。

## VariableTypeHintMap
<a name="variabletypehintmap"></a>

`variableTypeHintMap` 是選用欄位，其中包含可用於傳送 [SQL 參數](https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/API_SqlParameter.html)類型提示的別名類型。這些類型提示可避免 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。您可以在[此處](https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/API_SqlParameter.html)找到 RDS 支援的 `typeHints` 。