

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

# Lambda Web 函數端點
<a name="web-functions-endpoints"></a>

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

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

## 端點類型
<a name="web-functions-endpoint-types"></a>

端點類型會決定 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 函數並路由流量的詳細資訊，請參閱 [多區域部署](web-functions-endpoint-replication.md)。

## 網域名稱
<a name="web-functions-endpoint-domain"></a>

當您建立端點時，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 配置的網域名稱做為原始伺服器。

## 身分驗證類型
<a name="web-functions-endpoint-auth"></a>

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

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

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

如需身分驗證的完整詳細資訊，包括 CloudFront 整合和資源型政策，請參閱 [Lambda Web 函數端點存取控制](web-functions-endpoint-access-control.md)。

## 自動部署模式
<a name="web-functions-endpoint-auto-deploy"></a>

`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** 端點一律使用已停用模式。

如需部署模式、轉返和模式切換行為的詳細資訊，請參閱 [部署模式](web-functions-deployment.md)。

## 擴展和限流
<a name="web-functions-endpoint-scaling-summary"></a>

每個端點都有控制容量的擴展和限流設定。您可以使用 更新現有端點上的這些設定`update-web-function-endpoint`。省略 `--scaling-config`或 `--throttle-config` 以保留其目前值，或傳遞空物件 (`'{}'`) 以清除先前設定的值。若要移除速率限制，請傳遞空`--throttle-config`物件。0 `rateLimit`的 會封鎖所有流量。
+ **`maxEnvironments`** - 選用。每個區域中端點的執行環境數目上限。未設定時，端點會視需要在帳戶配額內擴展。
+ **`rateLimit`** – 每秒請求數上限。此設定是選用的。未設定時，端點會受到每個端點請求率配額 10，000 RPS 和帳戶配額的限制。速率限制適用於所有執行環境的端點整體。這不是每個環境的限制。對於**MultiRegion**和 **PerRegion** 端點，每個區域會獨立強制執行限制。超額請求會收到 HTTP 429。

如需這些設定如何與修訂層級並行互動的詳細資訊，以及選擇值的指引，請參閱 [Lambda Web 函數的擴展行為](web-functions-scaling.md)。

## 建立和管理端點
<a name="web-functions-endpoint-manage"></a>

### 建立端點
<a name="web-functions-endpoint-create"></a>

**建立 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** 自動部署不適用於它們。如需詳細資訊，請參閱[部署模式](web-functions-deployment.md)。

### 列出端點
<a name="web-functions-endpoint-list"></a>

```
aws lambda-web list-web-function-endpoints \
    --function-name {{my-web-app}}
```

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

### 取得端點詳細資訊
<a name="web-functions-endpoint-get"></a>

```
aws lambda-web get-web-function-endpoint \
    --function-name {{my-web-app}} \
    --endpoint-name {{my-endpoint}}
```

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

### 更新端點
<a name="web-functions-endpoint-update"></a>

您可以在現有端點上更新下列屬性：
+ `description`
+ `authType`
+ `autoDeploymentMode`
+ `revisionWeights`
+ `scalingConfig`
+ `throttleConfig`

*您無法*更新下列屬性。若要變更這些項目，請使用您想要的組態建立新的端點、將流量遷移至新端點的網域名稱，然後刪除舊端點。
+ `endpointType` (HomeRegion、MultiRegion、PerRegion)
+ `regions` （端點的目標區域）

### 刪除端點
<a name="web-functions-endpoint-delete"></a>

```
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 函數或其修訂版。修訂仍然可供其他端點使用。