はじめに
なんと!!AWS AppSyncのレスポンスヘッダーを設定できるようになりました!
以下の記事でレスポンスヘッダーを追加したいのにできなかったので、CloudFrontを活用して実現していました。
それがAWS AppSyncがアップデートされて設定だけでできるようになったのです。素晴らしい。
なので、やってみます。
レスポンスヘッダーの追加方法
↓↓ アップデート内容にある通り、VTLユーティリティヘルパーにて、リゾルバーマッピングテンプレートで設定することになります。
↓↓ VTLユーティリティヘルパー:HTTP helpers in $util.http
マッピングテンプレートはこんな感じになります。
...
$util.http.addResponseHeader("count", 9)
$util.http.addResponseHeader("testId", $ctx.args.testId)
...
ご注意
以下の制限事項があります。
- 既存のヘッダー名と重複することはできない。
- 「x-amzn-」、「x-amz-」から始まるヘッダー名は設定できない。
- ヘッダー名と値で4KBを超えることができない。
レスポンスヘッダーを追加してみる
※すでにAPIは作ってある前提になります。
スキーマより、対象のリゾルバーを選択し、リゾルバー編集画面を開きます。
レスポンスマッピングテンプレートにレスポンスヘッダを追加するように追記します。
今回は↓を追記します。
$util.http.addResponseHeader("x-snow-key", "test")
これで完了です。簡単すぎる。。。
確認する
実際にAPIを叩いて確認してみます。(Postmanでリクエストします。)
追加したレスポンスヘッダーが返却されていることがわかります。
まとめ
CloudFrontでレスポンスヘッダーを追加しないといけないアーキテクチャがCloudFrontが不要なアーキテクチャで実現できることを実際に試すことができました。
↑が↓でよくなったわけです。
これは便利です。
では。