3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWS AppSyncでレスポンスヘッダーを追加したい!

Last updated at Posted at 2022-02-21

今年は雪が多すぎて、除雪で身体が日々バキバキです。
そんな中、AWS AppSyncで開発中のAPIが指摘されました。
「除雪ばっかりしてないで、レスポンスヘッダー足りないから付けろ!」
と。

(除雪しないと車が動けない状態になるんです。)
そんなことはさておき、本題です。

脆弱性診断等、実施していくとレスポンスヘッダーが必要なことが
わかってきます。その際の解決方法を探ります。

AWS AppSyncを探る

まずは簡単にできないか
AWS AppSyncの設定画面を眺めてみます。
(2022.2.21時点)

image.png

はい、レスポンスヘッダーを追加する箇所はありません。

次は、レスポンスマッピングテンプレートかな。

image.png

パッとわからないので、
コンテキストリファレンスを見てみます。

コンテキスト情報は以下になります。

{
   "arguments" : { ... },
   "source" : { ... },
   "result" : { ... },
   "identity" : { ... },
   "request" : { ... },
   "info": { ... }
}

やはり、responseがない。。。

GitHubを探る

いました。
AWS AppSyncとして機能はなく、今後?アップデートされるのかもしれません。期待。

解決方法を探る

GitHubにも記載がありましたが、Amazon CloudFront / Lambda@Edgeでレスポンスヘッダーを追加する方法があります。

こんなイメージですね。

cf-lambda.drawio.png

最後のCloudFrontに設定したLambda@Edgeでレスポンスヘッダーを追加するパターンです。
ただ、「Lambdaのソースを管理したくないなー」と思ってしまうめんどくさがり屋です。
2021年11月頃、便利なアップデートが出ていました。Amazon CloudFront単体でレスポンスヘッダーを追加することができるのです。さすがです。

これでAWSの設定だけで解決できちゃいます。
こんなイメージです。

cf-lambda.drawio (1).png

やってみる

AWS AppSyncはすでにある前提です。

まずは、Amazon CloudFrontのディストリビューションを作成します。
image.png

image.png

ご注意
オリジンドメインの選択肢にAWS AppSyncは出てきませんが、API URLを直接入力します。

貼り付けた画像_2022_02_22_0_41.png

TLSの設定等を行った後(項目が多いので割愛します)、「デフォルトのキャッシュビヘイビア」の「レスポンスヘッダーポリシー」を設定します。
今回は、カスタムポリシーとしますので、「ポリシーを作成」を選択します。

image.png

ちなみに、マネージドポリシーもあるので、付与したいヘッダーがあれば活用すると良いですね。
image.png

レスポンスヘッダーポリシー作成ページで名前や説明、オプションを設定します。
その後、カスタムヘッダーを設定し、作成します。今回は、「x-snow-key」というヘッダーを追加します。
セキュリティヘッダーオプションもあるので、活用していきましょう。

image.png
image.png

最後に元のページで作成したポリシーを設定します。
image.png

確認する

設定したAmazon CloudFront経由でAWS AppSyncにアクセスしてみます。

image.png

先ほど設定した「x-snow-key」というレスポンスヘッダーが追加されていることがわかります。
無事、成功です。

まとめ

2022/2/21時点ではAWS AppSync内でレスポンスヘッダーを設定することができませんが、他のサービスを利用することでレスポンスヘッダーを追加することが可能です。さらにLambda@Edgeを準備することなく、CloudFrontの設定で実現できるのはありがたいですね。

同じことで悩んでいる方の少しでもお力になれれば幸いです。

※2022/3/9 追記
レスポンスヘッダーを追加できるようになったので、以下を書きました!

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?