Promover uma versão canary - Amazon API Gateway

Promover uma versão canary

Para promover uma versão canary, disponibilize no estágio de produção a versão da API em teste. A operação envolve as seguintes tarefas:

  • Redefina o ID de implantação do estágio com as configurações do ID de implantação 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 %.

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.

Promover uma versão canary usando o console do API Gateway

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.

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

  3. Selecione a guia Canário.

  4. Escolha Promover canário.

  5. 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.

Promover uma versão canary usando a AWS CLI

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" } }

Chamamos a seguinte solicitação update-stage para promovê-la:

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" }]'

Após a promoção, o estágio agora se parece com:

{ "_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" } }

Como você pode ver, promover a versão canary para o estágio não desabilita o canary e a implantação continua sendo uma implantação da versão canary. 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.