API GatewayのマッピングテンプレートでBodyのJSONを書き換える


API GatewayにPOST/PUTされてきたJSONのBody($input)を、マッピングテンプレートで中身を少しだけ書き換えてバックエンドへProxyしたい時:

#set($body = $input.path('$'))
#set($body.url = "https://example.tld/thingy/$body.id")
$input.json('$')

これだけでurl属性が#setで指定したURLに置き換わった状態のJSON文字列が生成される。

#setでの属性置き換え後、最後にJSON文字列化する部分が$body.json('$')では ない 点に注意。.json('$')$inputにしか定義されていない。

すべて参照渡しでまぁJavaScriptみたいなもんだよと言われれば、この使い方も、そんな気もしなくもないが、それにしても、

わかりにくすぎない!?

たったこれだけのことをするのに1日潰れてしまった……。

ref: