View a markdown version of this page

Lambda Web 函數端點 - AWS Lambda

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

Lambda Web 函數端點

端點是 Web 函數的子資源,可為 HTTP 流量提供網路進入點。每個端點都包含具有 TLS 和身分驗證類型的唯一網域名稱。它也有地理範圍、擴展、限流和流量路由的設定。Web 函數最多可以有 10 個端點,每個端點都有獨立的組態。

下列各節說明端點類型、網域名稱、身分驗證和複寫。如需擴展和調節設定的資訊,請參閱 Lambda Web 函數的擴展行為。如需自動部署模式和流量路由的相關資訊,請參閱 部署模式。

端點類型

端點類型會決定 Lambda 如何跨 Web 函數部署, AWS 區域 以及如何將流量路由至它。您可以在建立端點時選擇端點類型。建立後無法變更端點類型。

HomeRegion

在單一 中執行 Web 函數 AWS 區域。Lambda 會從您建立端點的區域提供請求。Lambda 會為端點配置單一區域網域名稱。

將 HomeRegion 用於不需要多區域可用性的應用程式,或您想要從最簡單的組態開始的應用程式。

MultiRegion

在多個 中執行 Web 函數 AWS 區域。您可以在建立端點時指定目標區域。Lambda 會自動新增主要區域。端點必須包含至少一個其他區域。若要將流量路由到修訂,您可以設定端點的修訂權重。然後,Lambda 會自動將您的程式碼和組態複寫到所有指定的區域。Lambda 會配置單一全域網域名稱。它使用以延遲為基礎的路由,將每個請求傳送到通常為發起人提供最低延遲的區域。Lambda 不會執行以運作狀態為基礎的容錯移轉。

您可以從單一主區域管理 Web 函數。Lambda 會處理其他區域的複寫。用戶端連接到一個網域名稱。

對於需要多個地理位置之使用者低延遲的全域應用程式,請使用 MultiRegion。

PerRegion

在多個 中執行 Web 函數 AWS 區域,每個區域都有個別的區域網域名稱。您可以在建立端點時指定目標區域。Lambda 會自動新增主要區域。端點必須包含至少一個其他區域。Lambda 會自動在每個指定的區域中設定端點。每個區域都有自己的獨立網域名稱。

與 MultiRegion 不同,Lambda 不會執行自動延遲型路由。您可以管理流量如何到達每個區域網域,例如使用您自己的 Route 53 路由政策或 CloudFront 分佈。

當您需要控制每個區域的路由決策時,請使用 PerRegion,例如實作地理限制、自訂容錯移轉邏輯或區域特定的流量政策。

區域和端點類型無法在建立後更新。若要變更這些項目,請使用您想要的組態建立新的端點、將流量遷移至新端點的網域名稱,然後刪除舊端點。

如需 Lambda 如何跨區域複寫 Web 函數並路由流量的詳細資訊,請參閱 多區域部署。

網域名稱

當您建立端點時,Lambda 會為每個端點配置唯一的網域名稱。用戶端會將 HTTPS 請求傳送至此網域,以叫用您的 Web 函數。網域支援 HTTPS,Lambda 會管理網域的 TLS 憑證。您不會自行建立、續約或管理憑證。

網域名稱格式取決於端點類型:

  • HomeRegion 和 PerRegion – 每個區域都有以下格式的網域:

    domain-id.shard-id.lambda-web.region.on.aws

    範例:bcdfghjklmnpqrst.b7t.lambda-web.ap-northeast-3.on.aws

  • MultiRegion – 格式的單一全域網域:

    domain-id.lambda-web.global.on.aws

    範例:bcdfghjklmn.lambda-web.global.on.aws

    Lambda 使用延遲型路由為每個用戶端選取區域。

端點達到作用中狀態後,您可以從GetWebFunctionEndpoint回應或從 Lambda 主控台擷取網域名稱。

注意

Web 函數端點不支援直接連接自訂網域名稱。呼叫端點網域的用戶端必須使用 Lambda 配置的網域名稱。若要在您自己的網域上提供流量,請將 Amazon CloudFront 分佈放在端點前面,並使用 Lambda 配置的網域名稱做為原始伺服器。

身分驗證類型

authType 設定會控制 Lambda 在將傳入的 HTTP 請求傳遞到您的應用程式之前,是否對其進行驗證。您可以在現有端點上更新此設定。

ApplicationManaged

Lambda 不會驗證傳入請求。所有 HTTP 請求都會直接轉送到您的應用程式。您有責任在應用程式程式碼中處理身分驗證。

IamAuth

Lambda 會驗證每個請求的簽章。使用 AWS 適用於 HomeRegion 和 PerRegion 網域的 Signature 第 4 版 (SigV4) 和適用於MultiRegion全域網域的 Signature 第 4a 版 (SigV4a) 簽署請求。只有具有 lambda:InvokeWebFunctionEndpoint許可的呼叫者才能叫用端點。

如需身分驗證的完整詳細資訊,包括 CloudFront 整合和資源型政策,請參閱 Lambda Web 函數端點存取控制。

自動部署模式

autoDeploymentMode 設定會控制 Lambda 是否在您每次部署應用程式時自動將流量路由到新的修訂版本。您可以在現有端點上更新此設定。

如果您在 API 請求autoDeploymentMode中省略 ,則預設為 Disabled。Lambda 主控台和 aws lambda-web deploy命令LatestRevision用於新HomeRegion端點。 LatestRevision 僅支援HomeRegion端點,因此 MultiRegion和 PerRegion端點一律使用 Disabled。使用 時Disabled,revisionWeights請指定總計 100。

LatestRevision

Lambda 會自動將 100% 的流量路由到最新的作用中修訂。用於開發和預備環境。LatestRevision 模式僅適用於 HomeRegion 端點。

已停用

當您建立新的修訂時,Lambda 不會變更流量路由。您可以使用修訂權重手動控制路由。用於生產環境。停用模式適用於所有端點類型。MultiRegion 和 PerRegion 端點一律使用已停用模式。

如需部署模式、轉返和模式切換行為的詳細資訊,請參閱 部署模式。

擴展和限流

每個端點都有控制容量的擴展和限流設定。您可以使用 更新現有端點上的這些設定update-web-function-endpoint。省略 --scaling-config或 --throttle-config 以保留其目前值,或傳遞空物件 ('{}') 以清除先前設定的值。若要移除速率限制,請傳遞空--throttle-config物件。0 rateLimit的 會封鎖所有流量。

  • maxEnvironments - 選用。每個區域中端點的執行環境數目上限。未設定時,端點會視需要在帳戶配額內擴展。

  • rateLimit – 每秒請求數上限。此設定是選用的。未設定時,端點會受到每個端點請求率配額 10,000 RPS 和帳戶配額的限制。速率限制適用於所有執行環境的端點整體。這不是每個環境的限制。對於MultiRegion和 PerRegion 端點,每個區域會獨立強制執行限制。超額請求會收到 HTTP 429。

如需這些設定如何與修訂層級並行互動的詳細資訊,以及選擇值的指引,請參閱 Lambda Web 函數的擴展行為。

建立和管理端點

建立端點

建立 HomeRegion 端點 (AWS CLI)
  • aws lambda-web create-web-function-endpoint \ --function-name my-web-app \ --endpoint-name my-endpoint \ --endpoint-type HomeRegion \ --auth-type ApplicationManaged \ --auto-deployment-mode LatestRevision
建立MultiRegion端點 (AWS CLI)
  • aws lambda-web create-web-function-endpoint \ --function-name my-web-app \ --endpoint-name my-global-endpoint \ --endpoint-type MultiRegion \ --regions us-east-1 eu-west-1 ap-northeast-1 \ --auth-type ApplicationManaged \ --revision-weights '[{"revisionId": "rev-a1b2c", "weight": 100}]'

    MultiRegion 和 PerRegion 端點需要修訂權重,因為 LatestRevision 自動部署不適用於它們。如需詳細資訊,請參閱部署模式。

列出端點

aws lambda-web list-web-function-endpoints \ --function-name my-web-app

回應包含每個端點的名稱、類型、網域名稱、狀態和組態。

取得端點詳細資訊

aws lambda-web get-web-function-endpoint \ --function-name my-web-app \ --endpoint-name my-endpoint

回應包含 regionalEndpoints欄位中端點的網域名稱、狀態、身分驗證類型、自動部署模式、擴展設定、修訂權重,以及 (適用於 MultiRegion和 PerRegion端點) 每個區域的狀態和更新狀態。

更新端點

您可以在現有端點上更新下列屬性:

  • description

  • authType

  • autoDeploymentMode

  • revisionWeights

  • scalingConfig

  • throttleConfig

您無法更新下列屬性。若要變更這些項目,請使用您想要的組態建立新的端點、將流量遷移至新端點的網域名稱,然後刪除舊端點。

  • endpointType (HomeRegion、MultiRegion、PerRegion)

  • regions (端點的目標區域)

刪除端點

aws lambda-web delete-web-function-endpoint \ --function-name my-web-app \ --endpoint-name my-endpoint

當您刪除端點時,它會進入刪除狀態。Lambda 會停止將新請求路由到端點,並淘汰其網域名稱。對於PerRegion端點,Lambda 會淘汰每個區域中的網域名稱。Lambda 絕不會將已刪除端點的網域名稱指派給任何帳戶中的另一個端點。Lambda 會耗盡傳輸中的請求。它可讓已在進行中的請求完成,並拒絕端點網域名稱的新請求。對於 MultiRegion和 PerRegion端點,Lambda 會從所有區域移除端點。刪除完成後,Lambda 會永久移除端點。

刪除端點並不會刪除 Web 函數或其修訂版。修訂仍然可供其他端點使用。