

# Implantar APIs de WebSocket no API Gateway
<a name="apigateway-set-up-websocket-deployment"></a>

 Depois de criar sua API WebSocket, você deve implantá-la para permitir que seja invocada por seus usuários após a disponibilização. 

Para implantar uma API, você cria uma [implantação da API](api-gateway-basic-concept.md#apigateway-definition-api-deployment) e a associa a um [estágio](api-gateway-basic-concept.md#apigateway-definition-api-stage). Cada estágio é um snapshot da API, sendo disponibilizado para ser chamado pelos aplicativos do cliente. 

**Importante**  
Toda vez que atualizar uma API, você deverá reimplantá-la. Alterações em qualquer item que não sejam as configurações do estágio exigem uma nova implantação, incluindo modificações nos seguintes recursos:  
Rotas
Integrações
Authorizers
Por padrão, você está limitado a dez estágios para cada API. Recomendamos reutilizar estágios para as implantações. 

Para chamar uma API WebSocket implantada, o cliente envia uma mensagem à URL da API. A URL é determinada pelo nome do host e pelo nome do estágio da API.

**nota**  
O API Gateway oferecerá suporte a cargas de até 128 KB com quadros de máximo 32 KB. Se uma mensagem exceder 32 KB, deve ser dividida em vários quadros, cada qual contendo 32 KB ou menos.

Com o nome de domínio padrão da API, a URL base de uma (por exemplo) API WebSocket em determinado estágio (`{{{stageName}}}`) tem o seguinte formato:

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

Para facilitar o uso da URL da API WebSocket, você pode criar um nome de domínio personalizado (por exemplo, `api.example.com`) para substituir o nome de domínio padrão da API. O processo de configuração é o mesmo utilizado para APIs REST. Para obter mais informações, consulte [Nome de domínio personalizado para APIs REST públicas no API Gateway](how-to-custom-domains.md).

Os estágios permitem um controle de versão robusto para sua API. Por exemplo, você pode implantar uma API em um estágio `test` e um `prod`, e usar o estágio `test` como uma compilação de teste e o estágio `prod` como uma compilação estável. Depois que as atualizações passarem no teste, você poderá promover o estágio `test` para o estágio `prod`. Essa promoção pode ser feita por meio da reimplantação da API ao estágio `prod`. Para obter mais detalhes sobre estágios, consulte [Configurar um estágio para uma API REST no API Gateway](set-up-stages.md).

**Topics**
+ [Criar uma implantação de API do WebSocket usando a AWS CLI](#apigateway-create-websocket-deployment-using-awscli)
+ [Criar uma implantação de API WebSocket usando o console do API Gateway](#apigateway-create-websocket-deployment-using-console)

## Criar uma implantação de API do WebSocket usando a AWS CLI
<a name="apigateway-create-websocket-deployment-using-awscli"></a>

O seguinte comando [create-deployment](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/create-deployment.html) cria uma implantação:

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

A saída será exibida da seguinte forma:

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

A API implantada não poderá ser chamada até que a implantação seja associada a um estágio. Você pode criar um novo estágio ou reutilizar um estágio que criou anteriormente.

O comando [create-stage](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/create-stage.html) indicado abaixo cria um estágio e o associa à implantação:

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

A saída será exibida como a seguir:

```
{
    "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": {}
}
```

É possível reutilizar um estágio existente atualizando a propriedade `deploymentId` do estágio com o ID da implantação recém-criado ({{deployment-id}}). O comando [update-stage](https://docs.aws.amazon.com/cli/latest/reference/apigatewayv2/update-stage.html) indicado abaixo atualiza o ID de implantação do estágio:

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

## Criar uma implantação de API WebSocket usando o console do API Gateway
<a name="apigateway-create-websocket-deployment-using-console"></a>

Para usar o console do API Gateway a fim de criar uma implantação para uma API WebSocket:

1. Inicie uma sessão no console do API Gateway e escolha a API.

1. Escolha **Implantar API**.

1. Escolha o estágio desejado na lista suspensa ou insira o nome de um novo estágio.