「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」
API キャッシュを有効にして応答性を強化する
Amazon API Gateway で API キャッシュを有効にして、エンドポイントのレスポンスがキャッシュされるようにできます。キャッシュを有効にすると、エンドポイントへの呼び出しの数を減らすことができ、また、API へのリクエストのレイテンシーを短くすることもできます。
ステージに対してキャッシュを有効にすると、API Gateway は、秒単位で指定した有効期限 (TTL) が切れるまで、エンドポイントからのレスポンスをキャッシュします。その後、API Gateway は、エンドポイントへのリクエストを行う代わりに、キャッシュからのエンドポイントのレスポンスを調べます。API キャッシュのデフォルトの TTL 値は 300 秒です。最大の TTL 値は 3600 秒です。TTL=0 は、キャッシュが無効なことを意味します。
キャッシュが可能なレスポンスの最大サイズは 1048576 バイトです。キャッシュデータの暗号化は、キャッシュされているときのレスポンスのサイズを増やす可能性があります。
これは HIPAA 対象サービスです。AWS, U.S. の詳細1996 年制定の医療保険の相互運用性と説明責任に関する法律 (HIPAA)、および AWS のサービスを使用した保護されるべき医療情報
(PHI) の処理、保存、転送に関する詳細については、「HIPAA 概要
ステージに対してキャッシュを有効にすると、デフォルトではGET
メソッドのみでキャッシュが有効になります。これは、API の安全性と可用性を確保するのに役立ちます。オーバーライドするメソッドの設定により、他のメソッドのキャッシュを有効にできます。
キャッシュでは、時間単価で料金が発生し、AWS 無料利用枠の対象ではありません。
Amazon API Gateway のキャッシュを有効にする
API Gateway では、指定されたステージでキャッシュを有効にできます。
キャッシュを有効にするときは、キャッシュ容量を選択する必要があります。一般的に、容量を大きくすると、パフォーマンスは良くなりますが、コストは増えます。
API Gateway で、キャッシュを有効にするには、専用のキャッシュインスタンスを作成します。このプロセスには最長 4 分かかることがあります。
API Gateway で、キャッシュの容量を変更するには、既存のキャッシュインスタンスを削除してから、変更した容量でキャッシュインスタンスを作成します。既存のキャッシュされたデータはすべて削除されます。
キャッシュ容量は、キャッシュインスタンスの CPU、メモリ、およびネットワーク帯域幅に影響を及ぼします。その結果、キャッシュ容量はキャッシュのパフォーマンスに影響を与える可能性があります。
API Gateway では、10 分のロードテストを実行して、キャッシュ容量がワークロードに適していることを確認することをお勧めします。ロードテスト中のトラフィックが本番トラフィックを反映していることを確認します。例えば、ランプアップ、一定のトラフィック、およびトラフィックのスパイクを含めます。ロードテストには、キャッシュから提供できるレスポンスと、キャッシュに項目を追加する一意のレスポンスを含める必要があります。ロードテスト中に、レイテンシー、4xx、5xx、キャッシュヒット、キャッシュミスメトリクスをモニタリングします。これらのメトリクスに基づいて、必要に応じてキャッシュ容量を調整します。
API Gateway コンソールで、[Stage Editor (ステージエディター)] の [Settings (設定)] タブでキャッシュを設定します。
特定のステージの API キャッシュを設定するには
-
API Gateway コンソールに移動します。
-
API を選択します。
-
[ステージ] を選択します。
-
API の [ステージ] リストで、ステージを選択します。
-
[Settings] タブを選択します。
-
[API キャッシュを有効化] を選択します。
-
キャッシュの作成が完了するのを待機します。
キャッシュの作成または削除は、API Gateway が完了するまで約 4 分かかります。キャッシュが作成されると、[キャッシュのステータス] の値は CREATE_IN_PROGRESS
から AVAILABLE
に変わります。キャッシュの削除が完了すると、[キャッシュのステータス] の値は DELETE_IN_PROGRESS
から空の文字列に変わります。
ステージの [キャッシュ設定] 内でキャッシュを有効にすると、GET
メソッドのみがキャッシュされます。API の安全性と可用性を確保するため、この設定を変更しないことをお勧めします。ただし、オーバーライドするメソッドの設定により、他のメソッドのキャッシュを有効にできます。
キャッシュが想定どおり機能していることを確認するために、2 つの全般的なオプションがあります。
-
API とステージの CacheHitCount および CacheMissCount の CloudWatch メトリクスを調べる。
-
レスポンスにタイムスタンプを入力する。
API が API Gateway キャッシュのインスタンスから供給されているかどうか確認するために、CloudFront レスポンスの X-Cache
ヘッダーを使用しないでください。
API Gateway ステージレベルのキャッシュをメソッドキャッシュで上書きする
特定のメソッドのキャッシュを有効または無効にすることで、ステージレベルのキャッシュ設定を上書きできます。TTL 期間を増減するか、キャッシュされたレスポンスの暗号化をオンまたはオフにします。
キャッシュ中のメソッドがそのレスポンスで機密データを受け取ることが予想される場合は、[キャッシュ設定] で [キャッシュデータを暗号化する] を選択します。
コンソールを使用してメソッド別の API キャッシュを設定するには
-
API Gateway コンソール https://console.aws.amazon.com/apigateway
にサインインします。 -
API Gateway コンソールに移動します。
-
API を選択します。
-
[ステージ] を選択します。
-
API の [ステージ] リストで、ステージを展開し、API のメソッドを選択します。
-
[設定] の [このメソッドの上書き] を選択します。
-
[キャッシュ設定] エリアで、[メソッドキャッシュの有効化] を設定またはオフにするか、その他の必要なオプションをカスタマイズできます。(このセクションは、ステージレベルのキャッシュが有効になっている場合にのみ表示されます。)
メソッドパラメータまたは統合パラメータをキャッシュキーとして使用して、キャッシュされたレスポンスにインデックスを付ける
キャッシュされたメソッドや統合に、カスタムヘッダー、URL パス、またはクエリ文字列の形式でパラメーターを渡せる場合、パラメーターの一部またはすべてを使用してキャッシュキーを作成できます。API Gateway は、使用されたパラメータ値に応じて、メソッドレスポンスをキャッシュできます。
キャッシュキーはリソースにキャッシュを設定するときに必要です。
たとえば、以下の形式のリクエストがあるとします。
GET /users?type=... HTTP/1.1 host: example.com ...
このリクエストでは、type
は admin
または regular
の値を受け取ることができます。キャッシュキーに type
パラメーターを含めた場合、GET /users?type=admin
からのレスポンスと GET /users?type=regular
からのレスポンスは別々にキャッシュされます。
メソッドリクエストまたは統合リクエストが複数のパラメーターを受け取るときは、パラメーターの一部またはすべてを含めてキャッシュキーを作成するように選択できます。たとえば、指定した順に
TTL 期間内に行われる以下のリクエストに対して、キャッシュキーに type
パラメータのみを含めることができます。
GET /users?type=admin&department=A HTTP/1.1 host: example.com ...
このリクエストからのレスポンスがキャッシュされ、以下のリクエストの処理に使用されます。
GET /users?type=admin&department=B HTTP/1.1 host: example.com ...
API Gateway コンソールで、キャッシュキーにメソッドリクエストまたは統合リクエストのパラメータを含めるには、パラメータを追加した後に [Caching (キャッシュ)] を選択します。

API Gateway で API ステージキャッシュをフラッシュする
API キャッシュが有効になったら、API ステージのキャッシュ全体をフラッシュして、API のクライアントが統合エンドポイントから最新のレスポンスを取得するようにできます。
API ステージキャッシュをフラッシュするには、API Gateway コンソールのステージエディターで、[Settings (設定)] タブの [Cache Settings (キャッシュ設定)] セクションにある [Flush entire cache (キャッシュ全体のフラッシュ)] ボタンを選択します。キャッシュのフラッシュオペレーションには数分かかります。その後、キャッシュステータスはフラッシュ直後に AVAILABLE
になります。
キャッシュがフラッシュされると、再度キャッシュが作成されるまで、統合エンドポイントからレスポンスが処理されます。この間に、統合エンドポイントに送信されるリクエストの数が増加する場合があります。これにより、API のレイテンシー全体が一時的に増える可能性があります。
API Gateway のキャッシュエントリの無効化
API のクライアントは既存のキャッシュエントリを無効化し、個別のリクエストに対して統合エンドポイントからそのエントリを再ロードできます。クライアントは、Cache-Control: max-age=0
ヘッダーを含むリクエストを送信する必要があります。クライアントは、クライアントが許可されている場合、キャッシュの代わりに統合エンドポイントから直接レスポンスを受け取ります。これは既存のキャッシュエントリを、統合エンドポイントから取得される新しいレスポンスで置き換えます。
クライアントのアクセス許可を付与するには、次の形式のポリシーを、ユーザーの IAM 実行ロールにアタッチします。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "execute-api:InvalidateCache" ], "Resource": [ "arn:aws:execute-api:
region
:account-id
:api-id
/stage-name
/GET/resource-path-specifier
" ] } ] }
このポリシーでは、API Gateway 実行サービスが指定された 1 つまたは複数のリソースのリクエストに対してキャッシュを無効にします。対象リソースのグループを指定するには、account-id
、api-id
、および他のエントリの ARN 値 Resource
に対してワイルドカード文字 (*) を使用します。API Gateway 実行サービスのアクセス許可の設定方法については、「IAM アクセス許可により API へのアクセスを制御する」を参照してください。
InvalidateCache
ポリシーを適用しない場合 (またはコンソールで [Require authorization (認証が必要)] チェックボックスをオンにした場合)、すべてのクライアントが API キャッシュを無効にできます。すべてまたはほとんどのクライアントが API キャッシュを無効にする場合、API
のレイテンシーが非常に大きくなる可能性があります。
ポリシーが設定されると、キャッシュが有効になり、承認が必要になります。API Gateway コンソールの [Handle unauthorized requests (未承認リクエストの処理)] からオプションを選択して、未認証リクエストの処理方法を制御できます。

3 つのオプションにより、次の動作が発生します。
-
403 ステータスコードでリクエストに失敗する: 403 Unauthorized レスポンスが返されます。
API を使用してこのオプションを設定するには、
FAIL_WITH_403
を使用します。 -
キャッシュコントロールヘッダーを無視し、レスポンスヘッダーに警告を追加する: リクエストを処理し、レスポンスに警告ヘッダーを追加します。
API を使用してこのオプションを設定するには、
SUCCEED_WITH_RESPONSE_HEADER
を使用します。 -
キャッシュコントロールヘッダーを無視する: リクエストを処理し、レスポンスで警告ヘッダーを追加しません。
API を使用してこのオプションを設定するには、
SUCCEED_WITHOUT_RESPONSE_HEADER
を使用します。