amplifyで@searchディレクティブを付けたテーブルのnextToken指定のアクセスでエラーになった時の対処法

amplifyで@searchディレクティブを付けたテーブルのnextToken指定のアクセスでエラーになった時の対処法

amplifyであるテーブルに関する検索機能を付けたい場合、@searchディレクティブを付けると便利ですよね。

検索結果を部分的にロードしてページングしたく、limitとnextTokenを付けてリクエストしたら、以下のような応答が返ってきて、2回目以降のクエリがエラーになりました。

{
  "data": {
    "searchImages": null
  },
  "errors": [
    {
      "message": "Unable to convert             \n                                                  \n                          \n      {\n  \"version\": \"2018-05-29\",\n  \"operation\": \"GET\",\n  \"path\": \"/image/_search\",\n  \"params\": {\n      \"body\":     {\n                \"search_after\": ,                                 \"size\":  20 ,\n                \"sort\": [{\"good\": {\"order\":\"desc\"}}, {\"id.keyword\": {\"order\":\"desc\"}}],\n                \"version\": false,\n                \"query\": {\"match_all\":{}},\n                \"aggs\": {}\n                }\n  }\n} to class com.amazonaws.deepdish.transform.model.lambda.LambdaVersionedConfig.",
      "errorType": "MappingTemplate",
      "data": null,
      "errorInfo": null,
      "path": [
        "searchImages"
      ],
      "locations": [
        {
          "line": 2,
          "column": 3,
          "sourceName": "GraphQL request"
        }
      ]
    }
  ]
}

自動生成リゾルバを確認したら、以下のBase64デコードした文字が空文字になっていることがわかりました。(上記errorsのsearch_afterの値)

$util.base64Decode($args.nextToken)

以下のようにしたら、解消しました。

$util.base64Decode($args.nextToken.toString())

$args.nextTokenの型はStringじゃないのかな?
細かいところは不明ですが、とりあえず解消したので、めでたしめでたし。