Implementação gradual de aplicações sem servidor - AWS Serverless Application Model

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Implementação gradual de aplicações sem servidor

Se usar AWS SAM para criar a sua aplicação sem servidor, inclui CodeDeploy para proporcionar uma experiência Lambda implementações. Com apenas algumas linhas de configuração, AWS SAM faz o seguinte para si:

  • Implementa novas versões do seu Lambda função e cria automaticamente pseudónimos que apontam para a nova versão.

  • Muda gradualmente o tráfego de clientes para a nova versão até estar satisfeito por estar a funcionar como esperado, ou reverte a atualização.

  • Define as funções de teste pré-tráfego e pós-tráfego para verificar se o código recentemente implementado está configurado corretamente e se a sua aplicação funciona como esperado.

  • mudar a implementação se CloudWatch alarmes são acionados.

nota

Se ativar implementações graduais através do seu AWS SAM modelo, um CodeDeploy é criado automaticamente para si. Você pode ver a CodeDeploy diretamente através da Console de gerenciamento da AWS.

Exemplo

O exemplo seguinte demonstra uma versão simples da utilização CodeDeploy para mudar gradualmente os clientes para a sua versão recém-implementada:

Resources: MyLambdaFunction: Type: AWS::Serverless::Function Properties: Handler: index.handler Runtime: nodejs12.x CodeUri: s3://bucket/code.zip AutoPublishAlias: live DeploymentPreference: Type: Canary10Percent10Minutes Alarms: # A list of alarms that you want to monitor - !Ref AliasErrorMetricGreaterThanZeroAlarm - !Ref LatestVersionErrorMetricGreaterThanZeroAlarm Hooks: # Validation Lambda functions that are run before & after traffic shifting PreTraffic: !Ref PreTrafficLambdaFunction PostTraffic: !Ref PostTrafficLambdaFunction

Estas revisões ao AWS SAM faz o seguinte:

  • AutoPublishAlias: Ao adicionar esta propriedade e especificar um nome alternativo, AWS SAM:

    • Deteta quando está a ser implementado um novo código, com base nas alterações do Lambda função Amazon S3 URI.

    • Cria e publica uma versão atualizada dessa função com o código mais recente.

    • Cria um alias com um nome fornecido (a menos que já exista um alias) e aponta para a versão actualizada do Lambda função. As invocações de função devem usar o qualificador de alias para aproveitar isso. Se não estiver familiarizado com Lambda função de versões e pseudónimos, consulte AWS Lambda Versões de funções e alias .

  • Tipo de preferência de expansão: No exemplo anterior, 10 por cento do seu tráfego de clientes muda imediatamente para a sua nova versão. Após 10 minutos, todo o tráfego é mudado para a nova versão. No entanto, se o seu pré-gancho/pós-gancho os testes falham, ou se um CloudWatch o alarme é acionado, CodeDeploy navega a sua implementação. A tabela a seguir descreve outras opções de troca de tráfego que estão disponíveis além da que foi usada anteriormente. Observe o seguinte:

    • Canárias: O tráfego é alterado em dois incrementos. Pode escolher a partir de opções canárias predefinidas. As opções especificam a percentagem de tráfego que é alterada para a sua atualização Lambda a versão da função no primeiro incremento e o intervalo, em minutos, antes do tráfego restante ser alterado no segundo incremento.

    • Linear: O tráfego é deslocado em incrementos iguais com um número igual de minutos entre cada incremento. Pode escolher entre opções lineares predefinidas que especificam a percentagem de tráfego que é deslocada em cada incremento e o número de minutos entre cada incremento.

    • Tudo ao mesmo tempo: Todo o tráfego é desviado do original Lambda função para o Lambda versão de função de uma só vez.

    Tipo de preferência de implantação

    Canary10Percent30Minutes

    Canary10Percent5Minutes

    Canary10Percent10Minutes

    Canary10Percent15Minutes

    Linear10PercentEvery10Minutes

    Linear10PercentEvery1Minute

    Linear10PercentEvery2Minutes

    Linear10PercentEvery3Minutes

    AllAtOnce

  • Alarmes: Estas são CloudWatch que são accionados por quaisquer erros gerados pela implementação. Retrocedem automaticamente a sua implementação. Um exemplo é se o código atualizado que está a implementar está a criar erros na aplicação. Outro exemplo é se houver AWS Lambda ou personalizado CloudWatch que especificou violaram o limiar de alarme.

  • Ganchos: Tratam-se de funções de teste pré-tráfego e pós-tráfego que executam verificações de higienização antes do início da mudança de tráfego para a nova versão e após a conclusão da mudança de tráfego.

    • PreTraffic: Antes do início das mudanças de trânsito, CodeDeploy chama o gancho pré-tráfego Lambda função. Isto Lambda função tem de ligar de volta para CodeDeploy and indicate success or failure. Se a função falhar, aborta e reporta uma falha de volta a AWS CloudFormation. Se a função for bem-sucedida, CodeDeploy avança para a mudança de trânsito.

    • PostTraffic: Após a conclusão da mudança de trânsito, CodeDeploy chama o gancho pós-tráfego Lambda função. Isto é semelhante ao gancho pré-tráfego, onde a função deve chamar-nos novamente CodeDeploy para comunicar um sucesso ou falha. Use hooks de pós-tráfego para executar testes de integração ou outras ações de validação.

    Para obter mais informações, consulte Referência do SAM para implantações seguras.