AppSyncのリゾルバー(VTL)ケーススタディ

2019.03.03

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

インデックスを使用してクエリする



{
  "version" : "2017-02-28",
  "operation" : "Query",
  "index": "email-index",
  "query" : {
    "expression": "email = :email"
    "expressionValues" : {
      ":email": {
        "S": "sample@example.com"
      }
    }
  }
}

※IAMロールにインデックスへのアクセス権限をつける必要がある。

アンダーバーで始まる列名で検索する



{
  "version" : "2017-02-28",
  "operation" : "Query",
  "index": "email-index",
  "query" : {
    "expression": "#email = :email"
    "expressionNames" : {
      "#typename": "_email"
    },
    "expressionValues" : {
      ":email": {
        "S": "sample@example.com"
      }
    }
  }
}

レスポンスマッピングテンプレート

ハッシュの配列に属性を追加する



// 元データ
[
  { id: "1", content: "ABC" },
  { id: "2", content: "DEF" }
]

// 目標
[
  { id: "1", content: "ABC", attr: "123" },
  { id: "2", content: "DEF", attr: "123" }
]



## 変数を宣言
#set($items = [])

## ループして属性を追加した要素を変数に追加
#foreach ($item in $ctx.result.items)
	$util.qr($item.put("id", "${item.pk}"))
	$util.qr($items.add($item))
#end

## AppSyncに渡す形に整形
$util.toJson($items)