API Gateway RESTAPIs中的 的快取設定 - Amazon API Gateway

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

API Gateway RESTAPIs中的 的快取設定

您可以在 API Gateway API 中啟用快取,以快取端點的回應。透過快取,您可以減少對端點進行的呼叫數量,也可以改善對 的請求延遲API。

當您為階段啟用快取時,APIGateway 會在指定的 time-to-live (TTL) 期間內快取來自端點的回應,以秒為單位。API Gateway 會透過從快取中查詢端點回應來回應請求,而不是向端點提出請求。API 快取的TTL預設值為 300 秒。TTL 最大值為 3600 秒。TTL=0 表示快取已停用。

注意

快取會盡力而為。您可以使用 Amazon 中的 CacheHitCountCacheMissCount指標 CloudWatch 來監控 API Gateway 從API快取提供的請求。

可以快取的回應大小上限是 1048576 個位元組。快取資料加密可能會在快取回應時增加回應的大小。

這是HIPAA符合資格的服務。如需有關 AWS、1996 年美國健康保險可攜性和責任法案 (HIPAA) 以及使用 AWS 服務來處理、存放和傳輸受保護健康資訊 (PHI) 的詳細資訊,請參閱HIPAA概觀

重要

當您啟用階段的快取時,預設只有 GET 方法會啟用快取。這有助於確保 的安全性和可用性API。您可以透過覆寫方法設定,來啟用其他方法的快取。

重要

快取是按小時計費,基於您選擇的快取大小。快取不符合 AWS 免費方案的資格。如需詳細資訊,請參閱 API Gateway Pricing。

啟用 Amazon API Gateway 快取

在API閘道中,您可以針對特定階段啟用快取。

當您啟用快取,您必須選擇快取容量。一般而言,容量越大效能越佳,但成本也越高。如需支援的快取大小,請參閱閘道參考 cacheClusterSize 中的 。 API API

API Gateway 透過建立專用快取執行個體來啟用快取。此程序最多需要 4 分鐘的時間。

API Gateway 透過移除現有的快取執行個體並建立具有修改後容量的新快取執行個體來變更快取容量。所有現有的快取資料都會遭到刪除。

注意

快取容量會影響快取執行個體的 CPU、記憶體和網路頻寬。因此,快取容量可能會影響快取的效能。

API Gateway 建議您執行 10 分鐘的載入測試,以驗證快取容量是否適合您的工作負載。確定負載測試期間的流量會反映生產流量。例如,包括提升、持續流量和流量尖峰。負載測試應包含可從快取提供的回應,以及將項目新增至快取的唯一回應。在負載測試期間監控延遲、4xx、5xx、快取命中和快取未命中指標。根據這些指標,視需要調整快取容量。如需負載測試的詳細資訊,請參閱如何選取最佳API閘道快取容量以避免達到速率限制?

在API閘道主控台中,您可以在階段頁面上設定快取。您可以佈建階段快取,並指定預設方法層級快取設定。如果您開啟預設方法層級快取,則除非該方法具有方法覆寫,否則階段上所有GET方法的方法層級快取都會開啟。您部署到階段的任何其他GET方法都會有方法層級快取。若要為階段的特定方法設定方法層級快取設定,您可以使用方法覆寫。如需方法覆寫的詳細資訊,請參閱 覆寫方法層級快取的API閘道階段層級快取

若要設定指定階段的API快取:
  1. https://console.aws.amazon.com/apigateway 登入API閘道主控台。

  2. 選擇 Stages (階段)。

  3. 在 的階段清單中API,選擇階段。

  4. 階段詳細資訊區段中,選擇編輯

  5. 其他設定 下,針對快取設定 ,開啟佈建API快取

    這會為您的階段佈建快取叢集。

  6. 若要為階段啟用快取,請開啟預設方法層級快取。

    這會開啟階段上所有GET方法的方法層級快取。您部署到此階段的任何其他GET方法都會有方法層級快取。

    注意

    如果您有方法層級快取的現有設定,變更預設方法層級快取設定不會影響該現有設定。

    開啟佈建API快取和預設方法層級快取。
  7. 選擇 Save changes (儲存變更)。

注意

建立或刪除快取大約需要 4 分鐘 API Gateway 才能完成。

建立快取時,快取叢集值會從 變更為 Create in progress Active。快取刪除完成時,快取叢集值會從 變更為 Delete in progress Inactive

當您開啟階段上所有方法的方法層級快取時,預設方法層級快取值會變更為 Active。如果您關閉階段上所有方法的方法層級快取,預設方法層級快取值會變更為 Inactive。如果您有方法層級快取的現有設定,變更快取的狀態不會影響該設定。

當您在階段的快取設定中啟用快取時,只會啟用 GET 方法的快取。為了確保 的安全性和可用性API,建議您不要變更此設定。但是,您可以透過覆寫方法設定,來啟用其他方法的快取。

如果您想要確認快取是否如預期般運作,您有兩個一般選項:

  • 檢查 CacheHitCountCacheMissCount 的 CloudWatch 指標,以了解您的 API和 階段。

  • 將時間戳記放在回應中。

注意

您不應該使用 CloudFront 回應中的X-Cache標頭來判斷您的 API 是否從API閘道快取執行個體提供服務。

覆寫方法層級快取的API閘道階段層級快取

您可以開啟或關閉特定方法的快取,以覆寫階段層級快取設定。您也可以修改TTL期間,或開啟或關閉快取回應的加密。

如果您在階段詳細資訊 中變更預設方法層級快取設定,不會影響具有覆寫的方法層級快取設定。

如果您預期正在快取的方法會在其回應中收到敏感性資料,請在 Cache Settings (快取設定) 中,選擇 Encrypt cache data (加密快取資料)。

若要使用主控台設定個別方法的API快取:
  1. https://console.aws.amazon.com/apigateway 登入API閘道主控台。

  2. 選擇 API。

  3. 選擇 Stages (階段)。

  4. 在 的階段清單中API,展開階段,然後在 中選擇方法API。

  5. 方法覆寫區段中,選擇編輯

  6. 方法設定 區段中,開啟或關閉啟用方法快取,或自訂任何其他想要的選項。

    注意

    快取在您為階段佈建快取叢集之前,不會處於作用中狀態。

  7. 選擇 Save (儲存)。

使用方法或整合參數作為快取金鑰來編製快取回應的索引

您可以使用 方法或整合參數作為快取金鑰,來索引快取的回應。這包括自訂標頭、URL路徑或查詢字串。您可以指定部分或全部這些參數作為快取金鑰,但必須至少指定一個值。當您有快取金鑰時,APIGateway 會分別快取每個金鑰值的回應,包括快取金鑰不存在時。

注意

設定資源的快取時必須提供快取金鑰。

例如,假設您有一個請求,其格式如下:

GET /users?type=... HTTP/1.1 host: example.com ...

在此請求中,type 可接受 adminregular 值。如果您包含 type 參數作為快取金鑰的一部分,則會分別快取 GET /users?type=admin 的回應與 GET /users?type=regular 的回應。

當方法或整合請求接受多個參數時,您可以選擇包含部分或所有參數來建立快取金鑰。例如,您只能將type參數包含在下列請求的快取金鑰中,並在TTL一段時間內以列出的順序提出:

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閘道主控台中將方法或整合請求參數包含在快取金鑰中,請在新增參數後選取快取

包含方法或整合參數做為快取金鑰來編製快取回應的索引

排清 API Gateway 中的API階段快取

啟用API快取時,您可以排清API階段的快取,以確保 API的用戶端從整合端點取得最新的回應。

若要排清API階段快取,請選擇階段動作選單,然後選擇排清階段快取。

注意

快取排清之後,會從整合端點處理回應,直到再度建立快取。在此期間,傳送至整合端點的請求數目可能會增加。這可能會暫時增加 的整體延遲API。

使API閘道快取項目無效

您 的用戶端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閘道執行服務將指定資源 (或 資源) 上請求的快取失效。若要指定目標資源群組,請針對 account-idapi-id和 ARN 值中的其他項目使用萬用字元 (*) 字元Resource。如需如何設定API閘道執行服務許可的詳細資訊,請參閱 控制對RESTAPI具有IAM權限的訪問

如果您沒有強加InvalidateCache政策 (或在主控台中選擇需要授權核取方塊),任何用戶端都可以使API快取失效。如果大多數或所有用戶端使API快取失效,可能會大幅增加 的延遲API。

當政策設定完成時,便會啟用快取,且需要授權。

您可以在API閘道主控台中選擇未授權請求處理的選項,以控制未經授權請求的處理方式。

設定快取無效判定

這三個選項會導致下列行為:

  • Fail the request with 403 status code (請求失敗並顯示 403 狀態碼):傳回 403 未授權回應。

    若要使用 設定此選項API,請使用 FAIL_WITH_403

  • Ignore cache control header; Add a warning in response header (忽略快取控制標頭;在回應標頭中新增警告):處理請求並在回應中新增警告標頭。

    若要使用 設定此選項API,請使用 SUCCEED_WITH_RESPONSE_HEADER

  • Ignore cache control header (忽略快取控制標頭):處理請求但不會在回應中新增警告標頭。

    若要使用 設定此選項API,請使用 SUCCEED_WITHOUT_RESPONSE_HEADER