Aliases de função do Lambda - AWS Lambda

Aliases de função do Lambda

Você pode criar aliases para sua função Lambda. Um alias do Lambda é como um indicador para uma versão específica da função. Os usuários podem acessar a versão da função usando o nome de recurso da Amazon (ARN) do alias.

Para criar um alias

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

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

  3. Na página de configuração da função, escolha Actions (Ações) e Create alias (Criar alias).

  4. Na página Create alias (Criar alias), faça o seguinte:

    1. Insira um Name (Nome) para o alias.

    2. (Opcional) Insira uma Description (Descrição) do alias.

    3. Em Version (Versão), escolha uma versão da função para a qual você deseja que o alias indique.

    4. (Opcional) Para configurar o roteamento no alias, expanda Weighted alias (Alias ponderado). Para obter mais informações, consulte Configuração de roteamento de alias.

    5. Escolha Salvar.

Para exibir os aliases definidos atualmente para uma função, na página de configuração da função, escolha Qualifiers (Qualificadores) e escolha a guia Aliases.

Gerenciar aliases com a API do Lambda

Para criar um alias usando a AWS Command Line Interface (AWS CLI), use o comando create-alias.

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

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

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

Para excluir um alias, use o comando delete-alias.

$ aws lambda delete-alias --function-name my-function --name alias-name

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

Usar 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 o Amazon Simple Storage Service (Amazon S3), invocam 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. Para obter mais informações, consulte Mapeamentos da fonte de eventos do AWS Lambda.

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

É possível usar uma política baseada em recurso para conceder acesso a um serviço, recurso ou conta à sua função. O escopo dessa permissão depende se você a aplica a um alias, uma versão ou a toda a função. Por exemplo, se você usar um nome de alias (como helloworld:PROD), a permissão permite invocar a função helloworld usando o ARN do alias (helloworld:PROD).

Se você tentar invocar a função sem um alias ou uma versão específica, receberá um erro de permissão. Esse erro de permissão ainda ocorrerá mesmo se você tentar invocar diretamente a versão da função associada ao alias.

Por exemplo, o comando da AWS CLI a seguir concede permissões do Amazon S3 para invocar o alias PROD da função helloworld quando o Amazon S3 está agindo em nome de examplebucket.

$ 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

Para obter mais informações sobre como usar nomes de recursos em políticas, consulte Recursos e condições para ações do Lambda.

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:

  • As duas versões devem ter a mesma função de execução.

  • 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 Funções do console do Lambda.

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

  3. Verifique se a função tem pelo menos duas versões publicadas. Na página de configuração da função, escolha Qualifiers (Qualificadores) e escolha a guia Versions (Versões) para exibir a lista de versões. Para criar versões adicionais, siga as instruções em Versões de função do Lambda.

  4. Escolha Actions (Ações) e Create alias (Criar alias).

  5. Na página Create alias (Criar alias), faça o seguinte:

    1. Insira um Name (Nome) para o alias.

    2. (Opcional) Insira uma Description (Descrição) do alias.

    3. Em Version (Versão), escolha a primeira versão da função para a qual você deseja que o alias aponte.

    4. Expanda Weighted alias (Alias ponderado).

    5. Em Additional version (Versão adicional), escolha a segunda versão da função para a qual você deseja que o alias aponte.

    6. Em Weight (%) (Peso (%)), insira 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 Save (Salvar).

Configurar o roteamento de alias

Use os comandos create-alias e update-alias da AWS CLI 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 de função do Lambda chamado routing-alias que 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 update-alias 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 AWS CLI nas etapas anteriores correspondem às seguintes operações de API do Lambda:

Determinar qual versão 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 Amazon 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 invocada. Para obter mais informações, consulte Trabalhar com métricas de função do AWS Lambda.

  • 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.