AWS Lambda
Guia do desenvolvedor

Aliases da funções do AWS Lambda

Você pode criar um ou mais aliases para sua função do AWS Lambda. Um alias do Lambda é como um indicador para uma versão específica da função do Lambda. Os usuários podem acessar a versão da função usando o alias ARN.

Para criar um alias

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

  2. Escolha uma função.

  3. Em Actions (Ações), escolha Create alias (Criar alias).

  4. No formulário Create a new alias (Criar um novo alias), insira um nome para o alias e uma descrição opcional. Escolha a versão da função para esse alias.

Para exibir os aliases definidos atualmente para uma função, selecione Qualifiers (Qualificadores) e escolha a guia Aliases.

Gerenciamento de aliases com a API do Lambda

Para criar um alias, use o comando create-alias.

$ aws lambda create-alias --function-name my-function --function-version version number --name alias name --description " "

Para alterar um alias para apontar uma nova versão da função, use o comando update-alias.

$ aws lambda update-alias --function-name my-function --function-version version number

Os comandos AWS CLI nas etapas anteriores correspondem às seguintes APIs do AWS Lambda:

Uso de aliases

Cada alias tem um ARN exclusivo. Um alias pode apontar somente para uma versão de função, e não para outro alias. O alias pode ser atualizado para apontar para uma nova versão da função.

Fontes de eventos, como Amazon S3 invocar sua função do Lambda. Essas origens de evento mantêm um mapeamento que identifica a função a ser invocada quando ocorrem eventos. Se você especificar um alias da função do Lambda na configuração de mapeamento, não precisará atualizar o mapeamento quando a versão da função for alterada.

Em uma política de recursos, é possível conceder permissões para fontes de eventos para usar sua função do Lambda. Se um ARN de alias for especificado na política, não será necessário atualizar a política quando a versão da função for alterada.

Políticas de recursos

Ao usar uma política baseada em recursos para conceder acesso a um serviço, recurso ou conta à sua função, o escopo dessa permissão depende de se foi aplicada a um alias, a uma versão ou a uma função. Se você usar o nome de um alias (como helloworld:PROD), a permissão é válida somente para chamar a função do helloworld usando o ARN do alias. Se usar o ARN de uma versão ou o ARN de uma função, você receberá um erro de permissão. Isso inclui o ARN da versão ao qual o alias aponta.

Por exemplo, o comando AWS CLI a seguir concede permissões do Amazon S3 para chamar o alias PROD da função do helloworld Lambda. Observe que o parâmetro --qualifier especifica o nome do alias.

$ aws lambda add-permission --function-name helloworld \ --qualifier PROD --statement-id 1 --principal s3.amazonaws.com --action lambda:InvokeFunction \ --source-arn arn:aws:s3:::examplebucket --source-account 123456789012

Neste caso, o Amazon S3 pode chamar agora o alias PROD. O Lambda pode executar então a versão da função do helloworld Lambda à qual o alias PROD faz referência. Para que isso funcione corretamente, é necessário usar o ARN do alias PROD na configuração de notificação do bucket do S3.

Configuração de roteamento de alias

Use a configuração de roteamento em um alias para enviar uma parte do tráfego para uma segunda versão de função. Por exemplo, você pode reduzir o risco de implantar uma nova versão configurando o alias para enviar a maior parte do tráfego para a versão existente e apenas uma pequena porcentagem de tráfego para a nova versão.

Você pode apontar um alias para um máximo de duas versões de função Lambda. As versões devem atender aos seguintes critérios:

  • Ambas as versões devem ter a mesma função de execução do IAM.

  • Ambas as versões devem ter a mesma configuração de fila de mensagens mortas ou configuração de nenhuma fila de mensagens mortas.

  • Ambas as versões devem ser publicadas. O alias não pode apontar para $LATEST.

Para configurar o roteamento em um alias

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

  2. Escolha uma função.

  3. Verifique se a função tem pelo menos duas versões publicadas. Para fazer isso, escolha Qualifiers (Qualificadores) e, em seguida, escolha Version (Versões) para exibir a lista de versões. Se precisar criar versões adicionais, siga as instruções em Versões de funções do AWS Lambda.

  4. No menu Actions(Ações), escolha Create alias (Criar alias).

  5. Na janela Create a new alias (Criar um novo alias) informe um valor para Name (Nome), insira opcionalmente um valor para Description (Descrição) e escolha a Version (Versão) da função do Lambda à qual o alias faz referência.

  6. Em Additional version (Versão adicional), especifique o seguinte:

    1. Escolha a segunda versão da função Lambda.

    2. Digite um valor de peso para a função. Peso é a porcentagem do tráfego atribuído a essa versão quando o alias é invocado. A primeira versão recebe o peso residual. Por exemplo, se você especificar 10% para Additional version (Versão adicional), a primeira versão receberá automaticamente a atribuição de 90 por cento.

  7. Escolha Criar.

Configurando o roteamento de alias

Use os comandos update-alias e create-alias para configurar os pesos de tráfego entre duas versões de uma função. Ao criar ou atualizar o alias, o peso do tráfego é especificado no parâmetro routing-config.

O exemplo a seguir cria um alias (denominado alias de roteamento) para uma função Lambda. O alias aponta para a versão 1 da função. A versão 2 da função recebe 3 por cento do tráfego. Os 97 por cento do tráfego restantes são roteados para a versão 1.

$ aws lambda create-alias --name routing-alias --function-name my-function --function-version 1 \ --routing-config AdditionalVersionWeights={"2"=0.03}

Use o comando update-alias para aumentar a porcentagem de tráfego de entrada para a versão 2. No exemplo a seguir, o tráfego é aumentado para 5%.

$ aws lambda update-alias --name routing-alias --function-name my-function \ --routing-config AdditionalVersionWeights={"2"=0.05}

Para rotear todo o tráfego para a versão 2, use o comando UpdateAlias para alterar a propriedade function-version para apontar o alias para a versão 2. O comando também redefine a configuração de roteamento.

$ aws lambda update-alias --name routing-alias --function-name my-function \ --function-version 2 --routing-config AdditionalVersionWeights={}

Os comandos da CLI nas etapas anteriores correspondem às seguintes operações da API do AWS Lambda:

Identificação da versão que foi invocada

Ao configurar pesos de tráfego entre duas versões da função, há duas maneiras de determinar a versão da função do Lambda que foi chamada:

  • CloudWatch Logs – O Lambda emite automaticamente uma entrada de log START que contém o ID da versão invocada para o CloudWatch Logs em cada invocação da função. Veja um exemplo a seguir:

    19:44:37 START RequestId: request id Version: $version

    O Lambda usa a dimensão Executed Version para filtrar os dados de métrica pela versão executada. Para obter mais informações, consulte AWS Lambda CloudWatch Dimensões.

  • Carga de resposta (invocações síncronas) – As respostas às invocações de função síncrona incluem um cabeçalho x-amz-executed-version para indicar qual versão de função foi invocada.