Ativação e gerenciamento do Lambda SnapStart - AWS Lambda

Ativação e gerenciamento do Lambda SnapStart

Para usar o SnapStart, ative o SnapStart em uma função do Lambda nova ou existente. Em seguida, publique e invoque uma versão da função.

Ativação do SnapStart (console)

Para ativar o SnapStart para uma função
  1. Abra a página Funções do console do Lambda.

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

  3. Escolha Configuration (Configuração) e, em seguida, selecione General configuration (Configuração geral).

  4. No painel General configuration (Configuração geral), escolha Edit (Editar).

  5. Na página Edit basic settings (Editar configurações básicas), para SnapStart, escolha Published versions (Versões publicadas).

  6. Escolha Salvar.

  7. Publique uma versão da função. O Lambda inicializa o código, cria um snapshot do ambiente de execução inicializado e, em seguida, armazena em cache o snapshot para acesso de baixa latência.

  8. Invoque a versão da função.

Ativação do SnapStart (AWS CLI)

Para ativar o SnapStart para uma função existente
  1. Atualize a configuração da função executando o comando update-function-configuration com a opção --snap-start.

    aws lambda update-function-configuration \ --function-name my-function \ --snap-start ApplyOn=PublishedVersions
  2. Publique uma versão de função com o comando publish-version.

    aws lambda publish-version \ --function-name my-function
  3. Confirme se o SnapStart está ativado para a versão da função ao executar o comando get-function-configuration e especificar o número da versão. O exemplo a seguir especifica a versão 1.

    aws lambda get-function-configuration \ --function-name my-function:1

    Se a resposta mostrar que OptimizationStatus é On e State é Active, o SnapStart será ativado e um snapshot estará disponível para a versão da função especificada.

    "SnapStart": { "ApplyOn": "PublishedVersions", "OptimizationStatus": "On" }, "State": "Active",
  4. Invoque a versão da função ao executar o comando invoke e especificar a versão. O exemplo a seguir invoca a versão 1.

    aws lambda invoke \ --cli-binary-format raw-in-base64-out \ --function-name my-function:1 \ --payload '{ "name": "Bob" }' \ response.json

    A opção cli-binary-format será necessária se você estiver usando a AWS CLI versão 2. Para que essa seja a configuração padrão, execute aws configure set cli-binary-format raw-in-base64-out. Para obter mais informações, consulte A AWS CLI comporta opções de linha de comando globais no Guia do usuário da AWS Command Line Interface versão 2.

Para ativar o SnapStart ao criar uma nova função
  1. Crie uma função ao executar o comando create-function com a opção --snap-start. Para --role, especifique o nome do recurso da Amazon (ARN) do perfil de execução.

    aws lambda create-function \ --function-name my-function \ --runtime "java21" \ --zip-file fileb://my-function.zip \ --handler my-function.handler \ --role arn:aws:iam::111122223333:role/lambda-ex \ --snap-start ApplyOn=PublishedVersions
  2. Crie uma versão com o comando publish-version.

    aws lambda publish-version \ --function-name my-function
  3. Confirme se o SnapStart está ativado para a versão da função ao executar o comando get-function-configuration e especificar o número da versão. O exemplo a seguir especifica a versão 1.

    aws lambda get-function-configuration \ --function-name my-function:1

    Se a resposta mostrar que OptimizationStatus é On e State é Active, o SnapStart será ativado e um snapshot estará disponível para a versão da função especificada.

    "SnapStart": { "ApplyOn": "PublishedVersions", "OptimizationStatus": "On" }, "State": "Active",
  4. Invoque a versão da função ao executar o comando invoke e especificar a versão. O exemplo a seguir invoca a versão 1.

    aws lambda invoke \ --cli-binary-format raw-in-base64-out \ --function-name my-function:1 \ --payload '{ "name": "Bob" }' \ response.json

    A opção cli-binary-format será necessária se você estiver usando a AWS CLI versão 2. Para que essa seja a configuração padrão, execute aws configure set cli-binary-format raw-in-base64-out. Para obter mais informações, consulte A AWS CLI comporta opções de linha de comando globais no Guia do usuário da AWS Command Line Interface versão 2.

Ativação do SnapStart (API)

Para ativar o SnapStart
  1. Execute um destes procedimentos:

  2. Publique uma versão de função com a ação PublishVersion. O Lambda inicializa o código, cria um snapshot do ambiente de execução inicializado e, em seguida, armazena em cache o snapshot para acesso de baixa latência.

  3. Confirme se o SnapStart está ativado para a versão da função ao usar a ação GetFunctionConfiguration. Especifique um número de versão para confirmar que o SnapStart está ativado para essa versão. Se a resposta mostrar que OptimizationStatus é On e State é Active, o SnapStart será ativado e um snapshot estará disponível para a versão da função especificada.

    "SnapStart": { "ApplyOn": "PublishedVersions", "OptimizationStatus": "On" }, "State": "Active",
  4. Invoque a versão de função com a ação Invoke.

Lambda SnapStart e estados de função

Os estados de função a seguir podem ocorrer quando você usa o SnapStart. Eles também podem ocorrer quando o Lambda recicla periodicamente o ambiente de execução e executa novamente o código de inicialização para uma função configurada com o SnapStart.

  • Pending: o Lambda está inicializando o código e obtendo um snapshot do ambiente de execução inicializado. Quaisquer invocações ou outras ações de API que operam na versão de função falharão.

  • Active: a criação do snapshot está concluída e é possível invocar a função. Para usar o SnapStart, é necessário invocar a versão de função publicada, não a versão não publicada ($LATEST).

  • Inactive: a versão de função não é invocada há 14 dias. Quando a versão da função se torna Inactive, o Lambda exclui o snapshot. Se você invocar a versão de função após 14 dias, o Lambda retornará uma resposta SnapStartNotReadyException e começará a inicializar um novo snapshot. Aguarde até que a versão de função atinja o estado Active e, em seguida, invoque-a novamente. O estado Inactive também pode ocorrer quando o Lambda executa uma reciclagem periódica do ambiente de execução. Nessa instância, se sua função não for inicializada, ela poderá entrar em um estado Inactive.

  • Failed: o Lambda encontrou um erro ao executar o código de inicialização ou criar o snapshot.

Atualização de um snapshot

O Lambda cria um snapshot para cada versão de função publicada. Para atualizar um snapshot, publique uma nova versão da função. O Lambda atualiza automaticamente os snapshots com os patches de segurança e runtime mais recentes.

Uso do SnapStart com o AWS SDK for Java

Para fazer chamadas para o SDK da AWS usando sua função, o Lambda gera um conjunto efêmero de credenciais ao assumir o perfil de execução da função. Essas credenciais estão disponíveis como variáveis ​​de ambiente durante a invocação da sua função. Não é necessário fornecer credenciais para o SDK diretamente no código. Por padrão, a cadeia de provedores de credenciais verifica sequencialmente cada local em que você pode definir credenciais e escolhe o primeiro disponível, que geralmente corresponde às variáveis de ambiente (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY e AWS_SESSION_TOKEN).

nota

Quando o SnapStart é ativado, o runtime do Java usa automaticamente as credenciais do contêiner (AWS_CONTAINER_CREDENTIALS_FULL_URI e AWS_CONTAINER_AUTHORIZATION_TOKEN), em vez das variáveis ​​de ambiente de chave de acesso. Isso evita que as credenciais expirem antes que a função seja restaurada.

Uso do SnapStart com o AWS CloudFormation, o AWS SAM e o AWS CDK

  • AWS CloudFormation: declare a entidade SnapStart em seu modelo.

  • AWS Serverless Application Model (AWS SAM): declare a propriedade do SnapStart em seu modelo.

  • AWS Cloud Development Kit (AWS CDK): use o tipo SnapStartProperty.

Exclusão de snapshots

O Lambda exclui snapshots quando:

  • Você exclui a função ou a versão de função.

  • Você não invoca a versão de função por 14 dias. Após 14 dias sem uma invocação, a versão de função transita para o estado Inactive (Inativo). Se você invocar a versão de função após 14 dias, o Lambda retornará uma resposta SnapStartNotReadyException e começará a inicializar um novo snapshot. Aguarde até que a versão de função atinja o estado Active (Ativo) e, em seguida, invoque-a novamente.

O Lambda remove todos os recursos associados aos snapshots excluídos em conformidade com o Regulamento Geral sobre a Proteção de Dados (GDPR).