【AWS】APIGatewayにキャッシュを設定する際にハマったこと
はじめに
先日APIGatewayにキャッシュを設定しようとしてハマったので記事にしておきます。
キャッシュを無効化させたくない!
エンドポイントへのHTTPリクエストヘッダに[Cache-Control: max-age=0]が含まれていた場合も、APIGatewayの後ろに控えたLambdaを実行させたくない!キャッシュがある場合は必ずキャッシュを受け取ってほしい。
APIGateway設定
キャッシュの設定自体はキャッシュ有効化にチェックをつけ、キャパシティーやTTL等を自由に設定しておしまいです。
キャッシュコントロールヘッダについての設定は「キーごとのキャッシュの無効化」にあたります。
画像の設定では「認可されたリクエストで無ければ、HTTPリクエストに[Cache-Control: max-age=0]が含まれていた場合403エラーとして返すよ」という状態。
キャッシュ無効化できる…!?
この状態でターミナルから以下curlコマンドを叩いても、何事も無かったかのように応答が返ってきます。
ついでにCloudWatchでログを見るとキャッシュが効いていないログが確認できます。
curl <APIGatewayエンドポイントURL> -H "Cache-Control: max-age=0"
HTTPリクエストメソッド単位の設定が必要
先ほどキャッシュを設定した画面ですが、実はステージ単位だけではなくHTTPリクエストメソッド単位でも設定できるようになっています。
ここでステージ単位の設定を上書きしてしまっていたことが原因でした。
認可が必要にチェックが入っていないのでキャッシュ無効化し放題です。
解決!
リクエストメソッド単位でもステージ単位と同様にキャッシュの設定を行うことで、[Cache-Control: max-age=0]付きのcurlコマンドを実行すると無事エラーで応答されるようになりました。
以上です。お疲れ様でした
Author And Source
この問題について(【AWS】APIGatewayにキャッシュを設定する際にハマったこと), 我々は、より多くの情報をここで見つけました https://qiita.com/thim/items/abc3e42a3a993546ba7c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .