1

API GatewayとCloudFrontがどのように連携しているのかちょっと混乱しています。最終的には、カスタムヘッダーと値をキャッシュキーの一部とみなしたいと思っています。ホワイトリスト(CloudFrontを使用している場合)でこれを行うことができます。API Gateway CachingとCloudFront

だから私は、次のリクエスト作るとき:

GET/pagesRead/4 一部-ヘッダー:フィズ

これは、例えば、'29ページ

を返しますが、その後、そのポストがあります'45ページ

への更新番号4、私は、この要求

GET/pagesRead/4 をした場合いくつかの-ヘッダ:話題

は、今では'45ページ

を返します。しかし、私は明らかにそれが舞台裏CloudFrontは独自のしているAPIゲートウェイを、使用しています。私のカスタムヘッダーをホワイトリストに登録するために、その「裏側の」CloudFrontを使用するためにAPIゲートウェイを設定する方法はありますか?これは完了する必要がありますか?

このドキュメントによれば、https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-caching.htmlによると、APIゲートウェイでAPIキャッシングを有効にできるだけで、ヘッダーはキャッシュキーの一部と見なされるようです。

これを正しく理解していますか?私が望むのは、私のヘッダーがキャッシュキーの一部である場合、APIゲートウェイの「APIキャッシングを有効にする」とAPIゲートウェイの上にCloudFrontインスタンスを追加し、CloudFrontでホワイトリストを作成することの違いは何ですか?

UPDATE:

私は、APIゲートウェイでは、このようなヘッダを追加しました: enter image description here

をしかしGETに、私はキャッシュから古いデータを取得しています。

GET/pagesRead/4テストヘッダー:

答えて

3

違いの話題は、APIゲートウェイが実際にCloudFrontのキャッシュを使用しないことです。 CloudFrontのは、すべてのAPIゲートウェイのAPIエッジに最適化されたAPIエンドポイント¹ のためにいくつかのフロントエンドサービスを提供していますが、キャッシュはに基づいてそれらの1つ、ではありません、以下:

APIゲートウェイを作成することにより、キャッシュを有効に専用キャッシュ・インスタンス。あなたのAPIは、あなたのAPI Gatewayのキャッシュ・インスタンスから提供されているかどうかを判断するためにCloudFrontの応答からX-Cacheヘッダーを使用しないでください

...と...

https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-caching.html

あなたが作成CloudFrontの分布の後ろエッジ最適化されたAPIゲートウェイエンドポイントをカスケード接続することが可能であるが、それは特定の不便がないわけではないのです。あなたがより多くのシステムを通過しているので、レイテンシはいくらか増加します。 APIゲートウェイの配備では、実際のクライアントではなく、その前にある追加のCloudFrontディストリビューションの属性が表示されるため、CloudFront-Is-*-ViewerCloudFront-Viewer-Countryヘッダー、おそらくクライアントIPの概念は無効になります。 X-Forwarded-Forは正しいですが、正しく処理する必要がある追加のホップが1つ含まれるため、注意して処理する必要があります。

独自のCloudFrontディストリビューションの後ろにAPIゲートウェイを配置するアプリケーションでは、新しい地域のエンドポイントの1つを使用してAPIステージを展開します。

私のヘッダーはキャッシュキーの一部と見なされます。

引用したドキュメントに基づいてキャッシュキーを明示的に設定する必要がありますが、APIゲートウェイキャッシュはそのヘッダーの値とキャッシュキーの他の属性に基づいて応答をキャッシュします。


¹ エッジ最適化エンドポイント。 APIゲートウェイはtwo different kinds of endpointsになりました。元のデザインは、エッジ最適化と呼ばれ、新しいオプションはと呼ばれます。地域のエンドポイントはCloudFrontのフロントエンドサービスを使用せず、同じAWS地域内のEC2からアクセスするとレイテンシが低くなる可能性があります。既存のすべてのエンドポイントは、新しい地域能力が導入されたときにエッジ最適化されたものとして分類されました。地域エンドポイントでは、独自のCloudFrontディストリビューションを使用し、これらのヘッダーを原点に転送するためのホワイトリストを作成しない限り、CloudFront-*ヘッダーは要求に含まれません。あなたがAPIゲートウェイでキャッシュを有効

+0

私はAPIGに追加したもので、私の記事を編集しました。しかし、古いデータが残っているので、キャッシュキーに先頭を追加しているようには見えません。 – JAck28

+0

新しいリクエストを得るためには、リクエストごとにヘッダーに付随する値を変更する必要があります。 –

+0

私は郵便配達員でそれを試みましたが、それはうまくいかなかったのです。もう一度試してみましょう。私はそれを周りに遊んでいたので、多分私は郵便配達員の価値を繰り返しました。それがうまくいくかどうかを知らせます。ありがとう。 – JAck28

0

あなたはまた、必要に応じて追加することができ、

RequestPath 
QueryStringParameters 
Http Headers 

例えば、

http://example.com/api/ {機能} /?queryparam = queryanswer [でヘッダーcustomheader =値1]

上記のURLは、あなたは、に基づいてキャッシュするオプション、

PathParametersなしただ、URL:http://example.com/api/

オプションPathParameterを含める:http://example.com/api/ {機能} /:http://example.com/api/{機能}/

オプションでは、クエリ文字列が含まれていますか?queryparam = queryanswer

必要に応じてHTTPヘッダーを含める:あなたは、どちらかのことができますが、APIゲートウェイを持っているどのようなキャッシングモードのUser-Agentまたはカスタムヘッダのような定期的なヘッダ

が含まれ、あなたはまた、CloudFrontの下でそれを持つことができますよくあなたのHTTP応答では、キャッシュまで明らかにも

のCache-Controlを送信:最大エージング= 0

はそれがお役に立てば幸いです。

CloudFront cache image