

# Estágios para APIs HTTP no API Gateway
<a name="http-api-stages"></a>

O estágio de uma API é uma referência lógica a um estado do ciclo de vida de sua API (por exemplo, `dev`, `prod`, `beta` ou `v2`). Os estágios de API são identificados por seu ID de API e nome de estágio e são incluídos no URL que você usa para chamar a API. Cada estágio é uma referência nomeada a uma implantação da API e é disponibilizado para chamadas feitas por aplicativos cliente.

É possível criar um estágio `$default` que é servido a partir da base do URL da sua API, por exemplo, `https://{api_id}.execute-api.{region}.amazonaws.com/`. Use esse URL para chamar um estágio de API.

Uma implantação é um instantâneo da configuração da API. Depois de implantar uma API em um estágio, ela estará disponível para ser chamada por clientes. Você deve implantar uma API para que as alterações entrem em vigor. Se você habilitar implantações automáticas, as alterações em uma API serão liberadas automaticamente para você.

# Usar variáveis de estágio para APIs HTTP no API Gateway
<a name="http-api-stages.stage-variables"></a>

As variáveis de estágio são pares chave/valor que você pode definir para um estágio de uma API HTTP. Elas atuam como variáveis de ambiente e podem ser usadas na configuração da API.

As variáveis de estágio não se destinam a ser usadas para dados confidenciais, como credenciais. Para transmitir dados confidenciais para integrações, use um autorizador do AWS Lambda. Você pode passar dados confidenciais para integrações na saída do autorizador do Lambda. Para saber mais, consulte [Formato de resposta do autorizador do Lambda](http-api-lambda-authorizer.md#http-api-lambda-authorizer.payload-format-response).

## Exemplo: usar uma variável de estágio para personalizar o endpoint de integração HTTP
<a name="http-api-stages.stage-variables-examples"></a>

Por exemplo, você pode definir uma variável de estágio e, depois, definir seu valor como um endpoint HTTP para uma integração de proxy HTTP. Posteriormente, você pode fazer referência ao endpoint usando o nome da variável de estágio associada. Fazendo isso, você pode usar a mesma configuração de API com um endpoint diferente em cada estágio. Da mesma forma, você pode usar variáveis de estágio para especificar uma integração de função diferente do AWS Lambda para cada estágio da API.

Para usar uma variável de estágio para personalizar o endpoint de integração HTTP, primeiro defina o nome e o valor da variável de estágio (por exemplo, `url`) com um valor de `example.com`. Depois, configure uma integração de proxy HTTP. Em vez de inserir o URL do endpoint, você pode instruir o API Gateway a usar o valor da variável de estágio, **http://\$1\$1stageVariables.url\$1**. Esse valor instrui o API Gateway a substituir sua variável de estágio `${}` em tempo de execução, dependendo do estágio da API. 

É possível fazer referência a variáveis de estágio de forma semelhante para especificar um nome de função do Lambda ou um ARN de função da AWS.

Ao especificar um nome de função do Lambda como um valor de variável de estágio, você deve configurar as permissões nessa função do Lambda manualmente. O comando [add-permission](https://docs.aws.amazon.com/cli/latest/reference/lambda/add-permission.html) indicado abaixo configura a permissão para a função do Lambda:

```
aws lambda add-permission --function-name arn:aws:lambda:XXXXXX:your-lambda-function-name --source-arn arn:aws:execute-api:us-east-1:YOUR_ACCOUNT_ID:api_id/*/HTTP_METHOD/resource --principal apigateway.amazonaws.com --statement-id apigateway-access --action lambda:InvokeFunction
```

# Referência de variáveis de estágios do API Gateway para APIs HTTP no API Gateway
<a name="http-api-stages.stage-variables-reference"></a>

É possível usar variáveis de estágios do API Gateway para APIs HTTP nos casos a seguir.

## URIs de integração HTTP
<a name="http-api-stages.stage-variables-in-integration-HTTP-uris"></a>

Uma variável de estágio pode ser usada como parte de um URI de integração HTTP, como mostram os exemplos a seguir.
+ Um URI completo sem protocol – `http://${stageVariables.<variable_name>}`
+ Um domínio complet – `http://${stageVariables.<variable_name>}/resource/operation`
+ Um subdomíni – `http://${stageVariables.<variable_name>}.example.com/resource/operation`
+ Um caminh – `http://example.com/${stageVariables.<variable_name>}/bar`
+ Uma string de consult – `http://example.com/foo?q=${stageVariables.<variable_name>}` 

## Funções do Lambda
<a name="http-api-stages.stage-variables-in-integration-lambda-functions"></a>

 É possível usar uma variável de estágio no lugar de um nome ou alias de integração da função do Lambda, conforme mostrado nos exemplos a seguir. 
+ `arn:aws:apigateway:<region>:lambda:path/2015-03-31/functions/arn:aws:lambda:<region>:<account_id>:function:${stageVariables.<function_variable_name>}/invocations`
+ `arn:aws:apigateway:<region>:lambda:path/2015-03-31/functions/arn:aws:lambda:<region>:<account_id>:function:<function_name>:${stageVariables.<version_variable_name>}/invocations`

**nota**  
Para usar uma variável de estágio para uma função do Lambda, a função deve estar na mesma conta que a API. As variáveis de estágio não suportam funções do Lambda entre contas.

## AWSCredenciais de integração da
<a name="http-api-stages.stage-variables-in-integration-aws-credentials"></a>

 É possível usar uma variável de estágio como parte de um ARN de credencial de usuário ou de função da AWS, conforme mostrado no exemplo a seguir. 
+  `arn:aws:iam::<account_id>:${stageVariables.<variable_name>}` 