🦌

AppSyncのJavaScriptリゾルバをCDKで作成できるようになりました!

2023/01/15に公開

はじめに

昨年末に、AppSyncの関数、リゾルバをJavaScriptで作成できるようになりましたが、CDKはVTLしか対応しておらず、あいかわらずVTLのコーディングに苦戦していました。

数日前に、CDKのv2.60.0がリリースされ、ついに、CDKでもJavaScriptでリゾルバを作成できるようになりました!!

https://github.com/aws/aws-cdk/releases/tag/v2.60.0

やり方

aws-cdk、aws-cdk-libを2.60.0にしてください。
なお、v.2.60.0から@aws-cdk/aws-appsync-alphaは、安定版に含まれるようになったようなので、@aws-cdk/aws-appsync-alphaは必要ないです。

関数は、別ファイルで定義する場合は、

import { AppsyncFunction, Code, FunctionRuntime } from "aws-cdk-lib/aws-appsync"
...

    const hoge = new AppsyncFunction(scope, "hoge", {
      name: "hoge",
      api: api,
      dataSource: datasource.noneDataSource,
      runtime: FunctionRuntime.JS_1_0_0,
      code: Code.fromAsset(path.join(__dirname, "hoge.js")),
    })

のような感じで、JavaScriptファイル側は、

import { util } from "@aws-appsync/utils"

export function request(ctx) {
  console.log(ctx)
  return {}
}

export function response(ctx) {
  return ctx.prev.result
}

のような実装で大丈夫です。
requestや、responseの書き方などは、AWSのドキュメントを参照ください。

リゾルバの方も、同じような感じで、JavaScriptで実装できます。

WebStormを使って開発しているので、AppSyncのリゾルバをJavScriptでコーディングできると、作業が非常に楽になります。

Code.fromInlineをつかえば、インラインでも使えますが、この場合は、IDEの恩恵が受けられないので、微妙なところですね・・・。

インラインで値をセットしたい場合などは、VTL形式のままでよいかも・・。

Discussion