

# Promover uma versão canary
<a name="promote-canary-deployment"></a>

Ao promover uma versão canário, ela substitui as configurações atuais do estágio. A promoção de uma versão canary não desativa o canary no estágio. Para desativar um canary, você deve remover as configurações do canary do estágio. Para promover uma versão canário, realize o procedimento a seguir.
+ Redefina o [ID de implantação](https://docs.aws.amazon.com/apigateway/latest/api/API_Stage.html#deploymentId) do estágio com as configurações do [ID de implantação](https://docs.aws.amazon.com/apigateway/latest/api/API_Stage.html#canarySettings) do canary. Isso atualiza o snapshot da API do estágio com o snapshot do canary, tornando a versão de teste também a versão de produção.
+ Atualize as variáveis de estágio com as variáveis de estágio do canary, se houver alguma. Isso atualiza o contexto de execução da API do estágio com o do canary. Sem essa atualização, a nova versão da API pode produzir resultados inesperados se a versão de teste usar diferentes variáveis de estágio ou valores diferentes de variáveis de estágio existentes.
+ Defina a porcentagem do tráfego do canary para 0,0 %.

**Topics**
+ [Promover uma versão canary usando o console do API Gateway](#promote-canary-release-deployment-console)
+ [Promover uma versão canary usando a AWS CLI](#promote-canary-release-cli)

## Promover uma versão canary usando o console do API Gateway
<a name="promote-canary-release-deployment-console"></a>

Para usar o console do API Gateway para promover uma implantação da versão canary, faça o seguinte:

**Como promover uma implantação da versão de canário**

1.  Inicie uma sessão no console do API Gateway e escolha uma API existente no painel de navegação principal.

1.  No painel de navegação principal, selecione **Estágios** e escolha um estágio existente.

1.  Selecione a guia **Canário**.

1.  Escolha **Promover canário**.

1.  Confirme as alterações a serem realizadas e selecione **Promover canário**.

Após a promoção, a versão de produção faz referência à mesma versão da API (**deploymentId**) que a versão canary. Você pode verificar isso usando a AWS CLI. Por exemplo, consulte [Promover uma versão canary usando a AWS CLI](#promote-canary-release-cli). 

## Promover uma versão canary usando a AWS CLI
<a name="promote-canary-release-cli"></a>

Para promover a versão canary para a versão de produção usando os comandos da AWS CLI, chame o comando `update-stage` para copiar o `deploymentId` associado ao canary no `deploymentId` associado ao estágio, para redefinir a porcentagem de tráfego do canary para zero (`0.0`) e para copiar qualquer variável de estágio vinculada ao canary nas variáveis vinculadas ao estágio correspondentes. 

Suponha que tenhamos uma implantação da versão canary, descrita por um estágio semelhante ao seguinte: 

```
{
    "_links": {
        ...
    },
    "accessLogSettings": {
        ...
    },
    "cacheClusterEnabled": false,
    "cacheClusterStatus": "NOT_AVAILABLE",
    "canarySettings": {
        "deploymentId": "eh1sby",
        "useStageCache": false,
        "stageVariableOverrides": {
            "sv2": "val3",
            "sv1": "val2"
        },
        "percentTraffic": 10.5
    },
    "createdDate": "2017-11-20T04:42:19Z",
    "deploymentId": "nfcn0x",
    "lastUpdatedDate": "2017-11-22T00:54:28Z",
    "methodSettings": {
        ...
    },
    "stageName": "prod",
    "variables": {
        "sv1": "val1"
    }
}
```

Use o comando [update-stage](https://docs.aws.amazon.com/cli/latest/reference/apigateway/update-stage.html) indicado abaixo para promover o canário:

```
aws apigateway update-stage  \
    --rest-api-id {rest-api-id}  \
    --stage-name '{stage-name}'  \
    --patch-operations '[{                                
        "op": "replace",                                  
        "value": "0.0",                                    
        "path": "/canarySettings/percentTraffic"         
      }, {                                                
        "op": "copy",                                     
        "from": "/canarySettings/stageVariableOverrides", 
        "path": "/variables"                             
      }, {                                                
        "op": "copy",                                     
        "from": "/canarySettings/deploymentId",           
        "path": "/deploymentId"                           
      }]'
```

A saída será exibida da seguinte forma:

```
{
    "_links": {
        ...
    },
    "accessLogSettings": {
        ...
    },
    "cacheClusterEnabled": false,
    "cacheClusterStatus": "NOT_AVAILABLE",
    "canarySettings": {
        "deploymentId": "eh1sby",
        "useStageCache": false,
        "stageVariableOverrides": {
            "sv2": "val3",
            "sv1": "val2"
        },
        "percentTraffic": 0
    },
    "createdDate": "2017-11-20T04:42:19Z",
    "deploymentId": "eh1sby",
    "lastUpdatedDate": "2017-11-22T05:29:47Z",
    "methodSettings": {
        ...
    },
    "stageName": "prod",
    "variables": {
        "sv2": "val3",
        "sv1": "val2"
    }
}
```

Promover uma versão canário ao estágio não a desabilita, e a implantação continua sendo uma implantação da versão canário. Para torná-la uma implantação da versão de produção regular, você deve desabilitar as configurações do canary. Para obter mais informações sobre como desabilitar uma implantação da versão canary, consulte [Desativar uma versão de canário](delete-canary-deployment.md).