Designing and Engineering "遊び心"駆動開発

Playful IT
3/3 11:18

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

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

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



{
  "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)
関連記事
4/14 11:15

AWS AppSyncでAWSDateTime型を使って日時を扱う

スキーマ定義 日時を扱うためにはAWSDateTime型を利用する。 GraphQLのスキーマでは以下のように使用できる。 リゾルバーで値を自動的にセットする 例えば上のスキーマで、createdAt…

2/14 6:14

Apollo Clientもくもく会 2019.2.14@AWSオフィス

はじめに Apollo Clientを勉強していて、おそらくデータの読み出しと監視を行なっている readQuery メソッドと watchQuery メソッドが出てきたので、公式ドキュメントを読んで概要を把握する。 readQueryについてApollo Client…

2018/11/7

GraphQL入門(AWS AppSync)セミナー@AWS Loft 2018/11/6

前書き この記事は2018/11/7のAWS Loftでのセミナー参加中に同時にメモした内容です。内容の誤りが多分にある可能性がありますのでご容赦ください。 資料 https://aws.amazon.com/jp/blogs/news/aws-devday-tokyo-201…

4/13 11:40

AWS AppSyncをGitでバージョン管理する

Serverless FrameworkにAWS AppSync用のプラグインを追加することで、AWS AppSyncのスキーマ・リゾルバーをはじめとした設定が全てコードで書けて、Gitを使ったバージョン管理も行えるようになる。 動作確認 macOS Mojave 10.14.…

2/13 7:03

AWS AppSync Chat Starterのメッセージ表示部分を調査する

前回まで ChatQLでApollo ClientのOptimistic Responseを使っている部分をちょっとだけ変更して、どのような動作をしているかを確認した。 AWS AppSync Chat Starter…

プロフィール