

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

# 在 API Gateway 中部署 WebSocket API
<a name="apigateway-set-up-websocket-deployment"></a>

 建立 WebSocket API 後，您必須將其部署以您的使用者叫用。

若要部署 API，請建立 [API 部署](api-gateway-basic-concept.md#apigateway-definition-api-deployment)，並建立它與[階段](api-gateway-basic-concept.md#apigateway-definition-api-stage)的關聯。每個階段都是 API 的快照，而且可以供用戶端應用程式呼叫。

**重要**  
每次更新 API 時，都必須將其重新部署。對階段設定以外的任何變更都需要重新部署，對下列資源進行修改時也是如此：  
路由
整合
授權方
在預設情況下，每個 API 只能有 10 個階段。建議您針對部署重複使用這些階段。

若要呼叫已部署的 WebSocket API，用戶端會將訊息傳送到 API 的 URL。URL 的決定方式為 API 的主機名稱和階段名稱。

**注意**  
API Gateway 將支援高達 128 KB 的承載，影格大小上限為 32 KB。如果訊息超過 32 KB，則必須分割成多個影格，每個為 32 KB 或以下。

使用 API 的預設網域名稱，處於指定階段 (`{{{stageName}}}`) 的 (例如) WebSocket API URL 格式如下：

```
wss://{{{api-id}}}.execute-api.{{{region}}}.amazonaws.com/{{{stageName}}}
```

為了讓使用者更容易使用 WebSocket API 的 URL，您可以建立自訂網域名稱 (例如，`api.example.com`) 以取代 API 的預設主機名稱。其組態程序與 REST API 相同。如需更多詳細資訊，請參閱 [API Gateway 中公有 REST API 的自訂網域名稱](how-to-custom-domains.md)。

階段啟用 API 的強大版本控制。例如，您可以將 API 部署至 `test` 階段和 `prod` 階段，並使用 `test` 階段作為測試組建，以及使用 `prod` 階段作為穩定組建。更新通過測試之後，您就可以將 `test` 階段提升為 `prod` 階段。您可以將 API 重新部署到 `prod` 階段來進行提升。如需階段的詳細資訊，請參閱 [在 API Gateway 中為 REST API 設定階段](set-up-stages.md)。

**Topics**
+ [使用 建立 WebSocket API 部署 AWS CLI](#apigateway-create-websocket-deployment-using-awscli)
+ [使用 API Gateway 主控台建立 WebSocket API 部署](#apigateway-create-websocket-deployment-using-console)

## 使用 建立 WebSocket API 部署 AWS CLI
<a name="apigateway-create-websocket-deployment-using-awscli"></a>

下列 [create-deployment](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/create-deployment.html) 命令會建立部署：

```
aws apigatewayv2 --region us-east-1 create-deployment --api-id aabbccddee
```

輸出將如下所示：

```
{
    "DeploymentId": "fedcba",
    "DeploymentStatus": "DEPLOYED",
    "CreatedDate": "2018-11-15T06:49:09Z"
}
```

在您將此部署與階段建立關聯前，都無法呼叫已部署的 API。您可以建立新階段或重複使用您之前建立的階段。

以下 [create-stage](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/create-stage.html) 命令會建立一個新階段，並將其與部署建立關聯：

```
aws apigatewayv2 --region us-east-1 create-stage --api-id aabbccddee --deployment-id fedcba --stage-name test
```

輸出看起來如下：

```
{
    "StageName": "test",
    "CreatedDate": "2018-11-15T06:50:28Z",
    "DeploymentId": "fedcba",
    "DefaultRouteSettings": {
        "MetricsEnabled": false,
        "ThrottlingBurstLimit": 5000,
        "DataTraceEnabled": false,
        "ThrottlingRateLimit": 10000.0
    },
    "LastUpdatedDate": "2018-11-15T06:50:28Z",
    "StageVariables": {},
    "RouteSettings": {}
}
```

您也可以使用新建立的部署 ID ({{deployment-id}}) 來更新階段的 `deploymentId` 屬性，以重複使用現有階段。以下 [update-stage](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/update-stage.html) 命令會更新階段的部署 ID：

```
aws apigatewayv2 update-stage --region {{region}} \
    --api-id {{api-id}} \ 
    --stage-name {{stage-name}} \ 
    --deployment-id {{deployment-id}}
```

## 使用 API Gateway 主控台建立 WebSocket API 部署
<a name="apigateway-create-websocket-deployment-using-console"></a>

若要使用 API Gateway 主控台為 WebSocket API 建立部署：

1. 登入 API Gateway 主控台並選擇 API。

1. 選擇**部署 API**。

1. 從下拉式清單中選擇所需的階段，或輸入新階段的名稱。