Entender como o Lambda gerencia as atualizações de versão do runtime
O Lambda mantém cada runtime gerenciado atualizado com atualizações de segurança, correções de bugs, novos recursos, aprimoramentos de performance e suporte para lançamentos de versões secundárias. Essas atualizações de runtime são publicadas como versões de runtime. O Lambda aplica atualizações de runtime às funções ao migrar a função de uma versão de runtime anterior para uma nova versão de runtime.
Por padrão, para funções que usam runtimes gerenciados, o Lambda aplica atualizações de runtime automaticamente. Com as atualizações automáticas de runtime, o Lambda assume a responsabilidade operacional de corrigir as versões de runtime. Para a maioria dos clientes, as atualizações automáticas são a escolha mais adequada. Você pode alterar esse comportamento padrão definindo as configurações de gerenciamento de runtime.
O Lambda também publica cada nova versão de runtime como uma imagem de contêiner. Para atualizar as versões de runtime para as funções baseadas em contêiner, é necessário criar uma nova imagem de contêiner a partir da imagem base atualizada e implantar novamente a função.
Cada versão de runtime está associada a um número de versão e a um ARN (nome do recurso da Amazon). Os números de versão de runtime usam um esquema de numeração definido pelo Lambda, independentemente dos números de versão usados pela linguagem de programação. Números de versão de runtimes nem sempre são sequenciais. Por exemplo, a versão 42 pode ser seguida pela versão 45. O ARN da versão de runtime corresponde a um identificador exclusivo para cada versão de runtime. Você pode visualizar o ARN da versão atual do runtime da função no console do Lambda ou na linha INIT_START dos logs da função.
As versões de runtime não devem ser confundidas com os identificadores de runtime. Cada runtime tem um identificador de runtime exclusivo, como python3.13
ou nodejs22.x
. Eles correspondem a cada lançamento da versão principal da linguagem de programação. As versões de runtime descrevem a versão de patch de um runtime individual.
nota
O ARN para o mesmo número de versão de runtime pode variar entre as Regiões da AWS e as arquiteturas de CPU.
Tópicos
Compatibilidade retroativa
O Lambda se empenha para fornecer atualizações de runtime compatíveis com as funções existentes. No entanto, como acontece com a aplicação de patches de software, há casos raros em que uma atualização de runtime pode afetar negativamente uma função existente. Por exemplo, os patches de segurança podem expor um problema subjacente em uma função existente que depende do comportamento inseguro anterior.
Ao criar e implantar sua função, é importante entender como gerenciar suas dependências para evitar possíveis incompatibilidades com uma futura atualização de runtime. Por exemplo, suponha que sua função tenha uma dependência do pacote A, que por sua vez depende do pacote B. Ambos os pacotes estão incluídos no runtime do Lambda (por exemplo, eles podem ser partes do SDK ou de suas dependências, ou partes das bibliotecas do sistema de runtime).
Considere os seguintes cenários:
Implantação | Compatível com patches | Motivo |
---|---|---|
|
Sim | As futuras atualizações de runtime dos pacotes A e B são compatíveis com versões anteriores. |
|
Sim | Sua implantação tem precedência, portanto, futuras atualizações de runtime nos pacotes A e B não terão efeito. |
|
Sim* |
As futuras atualizações de runtime do pacote B são compatíveis com versões anteriores. *Se A e B estiverem fortemente acoplados, problemas de compatibilidade poderão ocorrer. Por exemplo, os pacotes |
|
Não | Futuras atualizações de runtime do pacote A podem exigir uma versão atualizada do pacote B. No entanto, a versão implantada do pacote B tem precedência e pode não ser compatível com versões futuras da versão atualizada do pacote A. |
Para manter a compatibilidade com futuras atualizações de runtime, siga estas práticas recomendadas:
-
Quando possível, empacote todas as dependências: inclua todas as bibliotecas necessárias, incluindo o AWS SDK e suas dependências, no seu pacote de implantação. Isso garante um conjunto estável e compatível de componentes.
-
Use SDKs fornecidos com o runtime com moderação: confie apenas no SDK fornecido com o runtime quando não puder incluir pacotes adicionais (por exemplo, ao usar o editor de código do console do Lambda ou código embutido em um modelo do AWS CloudFormation).
-
Evite substituir as bibliotecas do sistema: não implante bibliotecas personalizadas do sistema operacional que possam entrar em conflito com futuras atualizações de runtime.
Modos de atualização de runtime
O Lambda se empenha para fornecer atualizações de runtime compatíveis com as funções existentes. No entanto, como acontece com a aplicação de patches de software, há casos raros em que uma atualização de runtime pode afetar negativamente uma função existente. Por exemplo, os patches de segurança podem expor um problema subjacente em uma função existente que depende do comportamento inseguro anterior. Os controles de gerenciamento de runtime do Lambda ajudam a reduzir o risco de impacto em suas workloads no caso raro de uma incompatibilidade de versão de runtime. Para cada versão de função ($LATEST
ou a versão publicada), é possível escolher um dos seguintes modos de atualização de runtime:
Auto (Automático) (padrão): atualize automaticamente para a versão de runtime mais recente e segura usando Lançamento da versão de runtime em duas fases. Recomendamos este modo para a maioria dos clientes, para que você sempre se beneficie das atualizações de runtime.
Atualização da função: atualize para a versão de runtime mais recente e segura ao atualizar a função. Quando você atualiza a função, o Lambda atualiza o runtime da função para a versão de runtime mais recente e segura. Essa abordagem sincroniza as atualizações de runtime com as implantações de função, oferecendo a você controle sobre quando o Lambda aplicará as atualizações de runtime. Com esse modo, é possível detectar e mitigar incompatibilidades raras de atualização de runtime com antecedência. Ao usar esse modo, é necessário atualizar regularmente as funções para manter o runtime atualizado.
Manual: atualize manualmente sua versão do runtime. Especifique uma versão de runtime em sua configuração de função. A função usa essa versão de runtime indefinidamente. No caso raro em que uma nova versão de runtime é incompatível com uma função existente, você pode usar este modo para reverter a função para uma versão de runtime anterior. Não recomendamos o uso do modo Manual para tentar obter a consistência de runtime entre as implantações. Para ter mais informações, consulte Reverter uma versão do runtime do Lambda.
A responsabilidade pela aplicação de atualizações de runtime às funções varia de acordo com o modo de atualização de runtime escolhido. Para ter mais informações, consulte Entender o modelo de responsabilidade compartilhada para o gerenciamento do runtime do Lambda.
Lançamento da versão de runtime em duas fases
O Lambda apresenta novas versões de runtime nesta ordem:
Na primeira fase, o Lambda aplica a nova versão de runtime sempre que você cria ou atualiza uma função. Uma função é atualizada quando você chama as operações de API UpdateFunctionCode ou UpdateFunctionConfiguration.
Na segunda fase, o Lambda atualiza qualquer função que usa o modo de atualização de runtime Auto (Automático) e que ainda não tenha sido atualizada para a nova versão de runtime.
A duração geral do processo de implantação varia de acordo com diversos fatores, incluindo a gravidade de quaisquer patches de segurança inclusos na atualização de runtime.
Se você estiver desenvolvendo e implantando ativamente as funções, provavelmente adquirirá novas versões de runtime durante a primeira fase. Isso sincroniza as atualizações de runtime com as atualizações de função. No caso raro de a versão de runtime mais recente impactar negativamente a aplicação, essa abordagem permitirá que você tome medidas corretivas imediatas. As funções que não estão em desenvolvimento ativo ainda recebem o benefício operacional de atualizações automáticas de runtime durante a segunda fase.
Essa abordagem não afeta as funções definidas como os modos Function update (Atualização da função) ou Manual. As funções que usam o modo Function update (Atualização da função) recebem as atualizações de runtime mais recentes somente quando você as cria ou atualiza. As funções que usam o modo Manual não recebem as atualizações de runtime.
O Lambda publica novas versões de runtime de maneira gradual e contínua nas Regiões da AWS. Se as funções estiverem definidas para os modos Auto (Automático) ou Function update (Atualização da função), é possível que as funções implantadas ao mesmo tempo em regiões diferentes ou em momentos diferentes na mesma região selecionem diferentes versões de runtime. Os clientes que requerem consistência de versão de runtime garantida em seus ambientes devem usar imagens de contêiner para implantar as funções do Lambda. O modo Manual foi criado como mitigação temporária para permitir a reversão de versão runtime no caso raro de uma versão de runtime ser incompatível com a função.