Header Ads

Como gerenciar diferentes versões das funções Lambda

As funções Lambda são uma entrada muito útil para os serviços de computação da AWS. Como eles são basicamente apenas uma função na nuvem, rastrear versões diferentes e implantar atualizações é crucial para trabalhar com elas de forma eficaz.

$ LATEST rastreia as atualizações mais recentes

Sempre que você faz uma alteração na função Lambda, as alterações são refletidas automaticamente em uma versão chamada $ LATEST. Isso rastreia as atualizações mais recentes e é a versão padrão para a maioria das funções do Lambda. As alterações na página de edição do Lambda, no Cloud9 IDE e no upload por zip da CLI atualizam esta versão.

Por esse motivo, a versão $ LATEST não deve ser usada na produção, pois qualquer atualização na função para testar novos recursos afetará o tráfego de produção. Além disso, não há uma maneira fácil de lançar atualizações ao longo do tempo com o CodeDeploy se você usar $ LATEST.

Em vez disso, recomendamos a criação de novas versões para cada versão e uma "produção" ” alias que aponta para ele. O $ LATEST pode ser usado para desenvolvimento, com seu próprio apelido apontando para ele também.

Adicionando uma nova versão (e transferindo tráfego para ela)

Trabalhar com versões é bastante fácil. No Lambda Management Console, selecione sua função e clique em “ Versão: ” suspenso. Isso permitirá que você alterne entre as versões e visualize as versões atualmente em uso.

Para publicar uma nova versão, você precisará alternar para a versão $ LATEST e clicar em "Publish new version" ” das “ Ações ” suspenso.

Novas versões são denotadas arcaicamente por um número inteiro crescente, sem nenhuma maneira de usar o formato major. minor. patch padrão usado na maioria das versões de software. Se você realmente precisa deste formato, recomendamos que você use o CodePipeline com implantações de SAM e acompanhe suas versões do Lambda no Git.

Esta nova versão pode ser usada em outros serviços, como o API Gateway. No entanto, você não deseja atualizar todos os serviços que usam sua função Lambda toda vez que a função em si é atualizada. Em vez disso, você deve criar um Alias, que aponta para um número de versão específico e pode ser definido como o terminal do API Gateway. Dessa forma, sempre que você publicar uma nova versão, basta atualizar o alias para alternar tudo.

Você pode criar aliases das mesmas "Ações" ” cardápio. Dê um nome, como "Produção", ” e selecione uma versão para a qual apontar.

Os aliases também podem mudar gradualmente o tráfego para uma nova versão. Embora você possa configurá-lo manualmente, ele é usado principalmente para implantações CodeDeploy, onde novas versões de suas funções podem ser implantadas gradualmente, por exemplo, 10% a cada cinco minutos. Dessa forma, você pode detectar erros com antecedência e reverter lançamentos antes que eles afetem a todos.

As implantações de SAM adicionam automaticamente novas versões

Criar versões manualmente é útil, mas se você estiver gerenciando muitas funções, provavelmente usará implantações de SAM. As funções Lambda implantadas usando modelos SAM adicionam automaticamente uma nova versão (e atualizam $ LATEST).

Combinado com o Git para controle de versão e o serviço CodePipeline CI / CD da AWS, isso facilita muito o gerenciamento de versões das funções Lambda. Sempre que uma alteração é enviada para a ramificação de liberação em seu controle de origem, o CodePipeline é acionado automaticamente e atualiza suas funções. Se você estiver trabalhando com uma linguagem que precisa ser compilada (ou transpilada no caso do TypeScript), também poderá enviar seu código de função ao CodeBuild para lidar com esse estágio também.

A implantação do SAM é uma extensão do CloudFormation, portanto, todas as implantações feitas usando o SAM criarão uma nova pilha do CloudFormation. Sempre que as atualizações são enviadas, o CloudFormation reconhece que é uma atualização da pilha, em vez de uma nova pilha, e substituirá a versão atual da função pela versão atualizada.

Via: How to Geek

Nenhum comentário