

# Entender como o Lambda gerencia as atualizações de versão do runtime
<a name="runtimes-update"></a>

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](runtime-management-configure-settings.md).

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](images-create.md) 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](runtime-management-identify.md).

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.14` ou `nodejs24.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.

**Topics**
+ [Compatibilidade retroativa](#runtime-update-compatibility)
+ [Modos de atualização de runtime](#runtime-management-controls)
+ [Lançamento da versão de runtime em duas fases](#runtime-management-two-phase)
+ [Configurar o gerenciamento de runtime do Lambda](runtime-management-configure-settings.md)
+ [Reverter uma versão do runtime do Lambda](runtime-management-rollback.md)
+ [Identificar alterações de versão do runtime do Lambda](runtime-management-identify.md)
+ [Entender o modelo de responsabilidade compartilhada para o gerenciamento do runtime do Lambda](runtime-management-shared.md)
+ [Controlar permissões de atualização de runtime para aplicações de alta conformidade](runtime-management-hc-applications.md)

## Compatibilidade retroativa
<a name="runtime-update-compatibility"></a>

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 | 
| --- | --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/lambda/latest/dg/runtimes-update.html)  | Sim | As futuras atualizações de runtime dos pacotes A e B são compatíveis com versões anteriores. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/lambda/latest/dg/runtimes-update.html)  | Sim | Sua implantação tem precedência, portanto, futuras atualizações de runtime nos pacotes A e B não terão efeito. | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/lambda/latest/dg/runtimes-update.html)  | Sim\$1 |  As futuras atualizações de runtime do pacote B são compatíveis com versões anteriores. \$1Se A e B estiverem fortemente acoplados, problemas de compatibilidade poderão ocorrer. Por exemplo, os pacotes `boto3` e `botocore` no AWS SDK para Python devem ser implantados juntos.  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/lambda/latest/dg/runtimes-update.html)  | 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
<a name="runtime-management-controls"></a>

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](configuration-versions.md) (`$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](#runtime-management-two-phase). 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 obter mais informações, consulte [Reverter uma versão do runtime do Lambda](runtime-management-rollback.md).

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 obter mais informações, consulte [Entender o modelo de responsabilidade compartilhada para o gerenciamento do runtime do Lambda](runtime-management-shared.md).

## Lançamento da versão de runtime em duas fases
<a name="runtime-management-two-phase"></a>

O Lambda apresenta novas versões de runtime nesta ordem:

1. 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](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionCode.html) ou [UpdateFunctionConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionConfiguration.html).

1. 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](images-create.md). 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.

# Configurar o gerenciamento de runtime do Lambda
<a name="runtime-management-configure-settings"></a>

É possível definir as configurações de gerenciamento de runtime usando o console do Lambda ou a AWS Command Line Interface (AWS CLI).

**nota**  
Você pode definir as configurações de gerenciamento de runtime separadamente para cada [versão de função](configuration-versions.md).

**Para configurar como o Lambda atualiza a versão de runtime (console)**

1. Abra a [página Funções](https://console.aws.amazon.com/lambda/home#/functions) do console do Lambda.

1. Escolha o nome de uma função.

1. Na guia **Code** (Código), em **Runtime settings** (Configurações de runtime), escolha **Edit runtime management configuration** (Editar configuração de gerenciamento de runtime).

1. Em **Configuração de gerenciamento de runtime**, escolha uma das seguintes opções:
   + Para que a função seja atualizada automaticamente para a versão de runtime mais recente, escolha **Auto** (Automático).
   + Para que a função seja atualizada para a versão de runtime mais recente ao alterar a função, escolha **Function update** (Atualização da função).
   + Para que a função seja atualizada para a versão de runtime mais recente somente ao alterar o ARN da versão de runtime, escolha **Manual**. É possível encontrar o ARN da versão de runtime em **Runtime management configuration** (Configuração de gerenciamento de runtime). Também é possível encontrar o ARN na linha `INIT_START` de seus logs de função.

   Para obter mais informações sobre essas opções, consulte [Modos de atualização de runtime](runtimes-update.md#runtime-management-controls).

1. Escolha **Salvar**.

**Para configurar como o Lambda atualiza a versão de runtime (AWS CLI)**

Para configurar o gerenciamento de runtime para uma função, execute o comando da AWS CLI [put-runtime-management-config](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/put-runtime-management-config.html). Ao usar o modo `Manual`, você também deve fornecer o ARN da versão de runtime.

```
aws lambda put-runtime-management-config \
  --function-name my-function \
  --update-runtime-on Manual \
  --runtime-version-arn arn:aws:lambda:us-east-2::runtime:8eeff65f6809a3ce81507fe733fe09b835899b99481ba22fd75b5a7338290ec1
```

Você deve ver saída semelhante a:

```
{
  "UpdateRuntimeOn": "Manual",
  "FunctionArn": "arn:aws:lambda:us-east-2:111122223333:function:my-function",
  "RuntimeVersionArn": "arn:aws:lambda:us-east-2::runtime:8eeff65f6809a3ce81507fe733fe09b835899b99481ba22fd75b5a7338290ec1"
}
```

# Reverter uma versão do runtime do Lambda
<a name="runtime-management-rollback"></a>

No caso raro de uma nova versão de runtime ser incompatível com a função existente, é possível reverter a versão de runtime para uma anterior. Isso mantém sua aplicação funcionando e minimiza as interrupções, fornecendo tempo para corrigir a incompatibilidade antes de retornar à versão de runtime mais recente.

O Lambda não impõe um limite de tempo para o uso de qualquer versão de runtime específica. No entanto, recomendamos fortemente atualizar para a versão de runtime mais recente o mais rápido possível para se beneficiar dos patches de segurança, melhorias de performance e recursos mais recentes. O Lambda oferece a opção de reverter para uma versão de runtime anterior somente como uma mitigação temporária no caso raro de um problema de compatibilidade de atualização de runtime. As funções que usam uma versão de runtime anterior por um período prolongado podem, futuramente, apresentar performance degradada ou problemas, como a expiração de um certificado, que podem fazer com que parem de funcionar corretamente.

É possível reverter uma versão de runtime das seguintes formas:
+ [Usar o modo manual de atualização de runtime](#runtime-management-rollback-manual)
+ [Usando versões de funções publicadas](#runtime-management-rollback-published)

Para obter mais informações, consulte [Introdução aos controles de gerenciamento de runtime do AWS Lambda](https://aws.amazon.com/blogs/compute/introducing-aws-lambda-runtime-management-controls/) no Blog de computação da AWS.

## Reverter uma versão de runtime usando o modo de atualização de runtime Manual
<a name="runtime-management-rollback-manual"></a>

Se você estiver usando o modo de atualização de versão de runtime **Auto** (Automático) ou estiver usando a versão de runtime `$LATEST`, poderá reverter a versão de runtime usando o modo **Manual**. Para a [versão de função](configuration-versions.md) que você deseja reverter, altere o modo de atualização de versão de runtime para **Manual** e especifique o ARN da versão de runtime anterior. Para obter mais informações sobre como localizar o ARN da versão de runtime anterior, consulte [Identificar alterações de versão do runtime do Lambda](runtime-management-identify.md).

**nota**  
Se a versão `$LATEST` de sua função estiver configurada para usar o modo **Manual**, não será possível alterar a arquitetura da CPU ou a versão de runtime que sua função usa. Para realizar essas alterações, você deve alterar para os modos **Auto** (Automático) ou **Function update** (Atualização da função).

## Reverter uma versão de runtime usando versões de funções publicadas
<a name="runtime-management-rollback-published"></a>

As [versões de função](configuration-versions.md) publicadas correspondem a um snapshot imutável do código da função `$LATEST` e da configuração no momento em que você os criou. No modo **Auto** (Automático), o Lambda atualiza automaticamente a versão de runtime das versões de funções publicadas durante a segunda fase da implantação da versão de runtime. No modo **Function update** (Atualização da função), o Lambda não atualiza a versão de runtime das versões de função publicadas.

Portanto, as versões de função publicadas usando o modo **Function update** (Atualização da função) criam um snapshot estático do código da função, da configuração e da versão de runtime. Ao usar o modo **Function update** (Atualização da função) com versões de função, é possível sincronizar as atualizações de runtime com as implantações. Também é possível coordenar a reversão do código, da configuração e das versões de runtime ao redirecionar o tráfego para uma versão de função publicada anteriormente. É possível integrar essa abordagem na integração e entrega contínuas (CI/CD) para reversão totalmente automática no caso raro de incompatibilidade de atualização de runtime. Ao usar essa abordagem, é necessário atualizar a função regularmente e publicar novas versões de função para obter as atualizações de runtime mais recentes. Para ter mais informações, consulte [Entender o modelo de responsabilidade compartilhada para o gerenciamento do runtime do Lambda](runtime-management-shared.md).

# Identificar alterações de versão do runtime do Lambda
<a name="runtime-management-identify"></a>

O [número e o ARN da versão de runtime](runtimes-update.md) são registrados na linha de log `INIT_START`, que o Lambda emite para o CloudWatch Logs sempre que um novo [ambiente de execução](concepts-basics.md#gettingstarted-concepts-runtime) é criado. Como o ambiente de execução usa uma versão de runtime semelhante para todas as invocações de função, o Lambda emite a linha de log `INIT_START` somente quando o Lamba executa a fase de inicialização. O Lambda não emite essa linha de log para cada invocação de função. O Lambda emite a linha de log para o CloudWatch Logs, mas não é algo visível no console. 

**nota**  
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.

**Example Exemplo de linha de log “INIT\$1START”**  

```
INIT_START Runtime Version: python:3.13.v14    Runtime Version ARN: arn:aws:lambda:eu-south-1::runtime:7b620fc2e66107a1046b140b9d320295811af3ad5d4c6a011fad1fa65127e9e6I
```

Em vez de trabalhar diretamente com os logs, é possível usar o [Amazon CloudWatch Contributor Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ContributorInsights-CreateRule.html) para identificar transições entre as versões de runtime. A regra a seguir contabiliza as versões de runtime distintas de cada linha de log `INIT_START`. Para usar a regra, substitua o nome do grupo de logs de exemplo `/aws/lambda/*` pelo prefixo apropriado para sua função ou grupo de funções.

```
{
  "Schema": {
    "Name": "CloudWatchLogRule",
    "Version": 1
  },
  "AggregateOn": "Count",
  "Contribution": {
    "Filters": [
      {
        "Match": "eventType",
        "In": [
          "INIT_START"
        ]
      }
    ],
    "Keys": [
      "runtimeVersion",
      "runtimeVersionArn"
    ]
  },
  "LogFormat": "CLF",
  "LogGroupNames": [
    "/aws/lambda/*"
  ],
  "Fields": {
    "1": "eventType",
    "4": "runtimeVersion",
    "8": "runtimeVersionArn"
  }
}
```

O relatório do CloudWatch Contributor Insights apresentado a seguir mostra um exemplo de uma transição de versão de runtime conforme capturado pela regra anterior. A linha laranja mostra a inicialização do ambiente de execução para a versão de runtime anterior (**python:3.13.v12**) e a linha azul mostra a inicialização do ambiente de execução para a nova versão de runtime (**python:3.13.v14**).

![\[\]](http://docs.aws.amazon.com/pt_br/lambda/latest/dg/images/runtime_version_graph.png)


# Entender o modelo de responsabilidade compartilhada para o gerenciamento do runtime do Lambda
<a name="runtime-management-shared"></a>

O Lambda é responsável por selecionar e publicar atualizações de segurança para todos os runtimes gerenciados e imagens de contêiner com suporte. A responsabilidade pela atualização das funções existentes para usar a versão de runtime mais recente varia de acordo com o modo de atualização de runtime usado.

O Lambda é responsável por aplicar atualizações de runtime a todas as funções configuradas para usar o modo de atualização de runtime **Auto** (Automático).

Para funções configuradas com o modo de atualização de runtime **Function update** (Atualização da função), você é responsável por atualizar regularmente a função. O Lambda é responsável por aplicar as atualizações de runtime quando você faz essas atualizações. Se você não atualizar sua função, o Lambda não atualizará o runtime. Se você não atualiza regularmente sua função, recomendamos fortemente configurá-la para atualizações automáticas de runtime a fim de que continue recebendo atualizações de segurança.

Para funções configuradas para usar o modo de atualização de runtime **Manual**, você é responsável por atualizar a função para usar a versão de runtime mais recente. É altamente recomendável que você use esse modo somente para reverter a versão de runtime como uma mitigação temporária no caso raro de incompatibilidade de atualização de runtime. Também é recomendado que você altere para o modo **Auto** (Automático) o mais rápido possível para minimizar o tempo em que suas funções não são corrigidas.

Se você estiver [usando imagens de contêiner para implantar as funções](images-create.md), o Lambda será responsável por publicar imagens de base atualizadas. Nesse caso, você é responsável por recriar a imagem de contêiner da função a partir da imagem de base mais recente e implantar novamente a imagem de contêiner.

Isso está resumido na seguinte tabela:


****  

| Modo de implantação | Responsabilidade do Lambda | Responsabilidade do cliente | 
| --- | --- | --- | 
| Runtime gerenciado, modo Auto (Automático) |  Publicar novas versões de runtime contendo os patches mais recentes. Aplicar os patches de runtime para as funções existentes.  | Reverter para uma versão de runtime anterior no caso raro de um problema de compatibilidade de atualização de runtime. Siga as práticas recomendadas para [compatibilidade com versões anteriores](runtimes-update.md#runtime-update-compatibility). | 
| Runtime gerenciado, modo Function update (Atualização da função) | Publicar novas versões de runtime contendo os patches mais recentes. |  Atualizar as funções regularmente para obter a versão de runtime mais recente. Alterar uma função para o modo **Auto** (Automático) quando não estiver atualizando a função regularmente. Reverter para uma versão de runtime anterior no caso raro de um problema de compatibilidade de atualização de runtime. Siga as práticas recomendadas para [compatibilidade com versões anteriores](runtimes-update.md#runtime-update-compatibility).  | 
| Runtime gerenciado, modo Manual | Publicar novas versões de runtime contendo os patches mais recentes. |  Usar esse modo somente para reversão temporária de runtime no caso raro de um problema de compatibilidade de atualização de runtime. Alterar as funções para os modos **Auto** (Automático) ou **Function update** (Atualização da função) e para a versão de runtime mais recente o mais rápido possível.  | 
| Imagem de contêiner | Publicar novas imagens de contêiner contendo os patches mais recentes. | Reimplantar as funções regularmente usando a imagem de contêiner de base mais recente para obter os patches mais recentes. | 

Para obter mais informações sobre a responsabilidade compartilhada com a AWS, consulte [Modelo de responsabilidade compartilhada](https://aws.amazon.com/compliance/shared-responsibility-model/).

# Controlar permissões de atualização de runtime para aplicações de alta conformidade
<a name="runtime-management-hc-applications"></a>

Para atender aos requisitos de aplicação de patches, os clientes do Lambda normalmente contam com atualizações automáticas de runtime. Se sua aplicação estiver sujeita a requisitos estritos de atualização de patches, convém limitar o uso de versões de runtime anteriores. É possível restringir os controles de gerenciamento de runtime do Lambda usando o AWS Identity and Access Management (IAM) para negar aos usuários em sua conta da AWS acesso à operação de API [PutRuntimeManagementConfig](https://docs.aws.amazon.com/lambda/latest/api/API_PutRuntimeManagementConfig.html). Esta operação é usada para escolher o modo de atualização de runtime para uma função. Negar o acesso a esta operação faz com que todas as funções sejam padronizadas para o modo **Auto** (Automático). É possível aplicar essa restrição em toda a organização usando [políticas de controle de serviços (SCP)](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html). Se você precisar reverter uma função para uma versão anterior do runtime, poderá fazer uma exceção à política caso a caso.