AWS Lambda
Guia do desenvolvedor

Versões de funções do AWS Lambda

Você pode usar versões para gerenciar a implantação das suas funções do AWS Lambda. Por exemplo, você pode publicar uma nova versão de uma função para testes beta sem afetar os usuários da versão de produção estável.

O sistema cria uma nova versão da sua função do Lambda cada vez que você publicar a função. A nova versão é uma cópia da versão não publicada da função. A versão da função inclui as seguintes informações:

  • O código da função e todas as dependências associadas.

  • O tempo de execução do Lambda que executa a função.

  • Todas as configurações das funções, incluindo as variáveis de ambiente.

  • Um nome de recurso da Amazon (ARN) para identificar essa versão da função.

O código e as configurações das funções somente podem ser alterados na versão não publicada de uma função. Ao publicar uma versão, o código e a maioria das configurações são bloqueados, para garantir uma experiência consistente para os usuários dessa versão. Para obter mais informações sobre a configuração de funções, consulte Configuração de função do AWS Lambda.

Para criar uma versão nova de uma função

  1. Abra a página Functions (Funções) do console do Lambda.

  2. Escolha a função que deseja publicar.

  3. Em Actions (Ações), escolha Publish new version (Publicar nova versão).

Depois de publicar a primeira versão de uma função, o console do Lambda exibe um menu suspenso das versões disponíveis. O painel Designer exibe um qualificador de versões no final do nome da função.

Para exibir as versões atuais da função, selecione uma função e escolha Qualificadores. No menu Qualifiers (Qualificadores) expandido, escolha a guia Version (Versões) . O painel Version (Versões) exibe a lista de versões da função selecionada. Se não tiver publicado uma versão da função selecionada, o painel Versões lista apenas a versão $LATEST.

Gerenciamento de versões com a API do Lambda

Para publicar uma versão de uma função, use a ação de API PublishVersion.

O exemplo a seguir publica uma nova versão de uma função. A resposta retorna as informações de configuração sobe a versão da função, incluindo o número da versão e o ARN da função com o sufixo da versão.

$ aws lambda publish-version --function-name my-function { "CodeSha256": "OjRFuuHKizEE8tHFIMsI+iHR6BPAfJ5S0rW31Mh6jKg=", "FunctionName": "my-function", "CodeSize": 287, "MemorySize": 128, "FunctionArn": "arn:aws:lambda:us-west-2:account-id:function:my-function:1", "Version": "1", "Role": "arn:aws:iam::account-id:role/lambda_basic_execution", "Timeout": 3, "LastModified": "2015-10-03T00:48:00.435+0000", "Handler": "my-function.handler", "Runtime": "nodejs12.x", "Description": "" }

Utilização de versões

Para fazer referência à sua função Lambda, utilize seu ARN. Há dois ARNs associados a essa versão inicial:

  • ARN qualificado – O ARN da função com o sufixo da versão.

    arn:aws:lambda:aws-region:acct-id:function:helloworld:$LATEST
  • ARN não qualificado – O ARN da função sem o sufixo da versão.

    arn:aws:lambda:aws-region:acct-id:function:helloworld

    Você pode usar esse ARN não qualificado em todas as operações relevantes. No entanto, não é possível usá-lo para criar um alias.

Se você decidir não publicar versões de funções, poderá usar o ARN qualificado ou não qualificado no mapeamento da origem do evento para chamar a função.

O Lambda publica a nova versão de uma função apenas se o código nunca tiver sido publicado ou se o código tiver sido alterado em comparação com a versão publicada mais recentemente. Se não houver nenhuma alteração, a versão da função permanece na versão publicada mais recentemente.

Cada versão de função do Lambda possui um ARN exclusivo. Depois de publicar uma versão, não é possível alterar o ARN ou o código da função.

Políticas de recursos

Quando você usa uma política baseada em recursos para conceder acesso de um serviço, recurso ou conta à sua função, o escopo da permissão depende se você o aplicou a uma função ou a uma versão de uma função:

  • Se você usar um nome de função qualificado (como helloworld:1), a permissão é válida para chamar a versão 1 da função do helloworld usando apenas seu ARN qualificado. A utilização de qualquer outro ARN resulta em um erro de permissão.

  • Se você usar um nome de função não qualificado (como helloworld), a permissão é válida somente para chamar a função do helloworld usando o ARN não qualificado da função. A utilização de qualquer outro ARN, inclusive $LATEST, resulta em um erro de permissão.

  • Se você usar o nome de função qualificado $LATEST (como helloworld:$LATEST), a permissão é válida para chamar a função do helloworld utilizando apenas seu ARN qualificado. O uso de um ARN não qualificado resulta em um erro de permissão.

Você pode simplificar o gerenciamento de fontes de eventos e políticas de recursos utilizando aliases de funções. Para obter mais informações, consulte Aliases da funções do AWS Lambda.