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.
Tópicos
Ativação do SnapStart (console)
Para ativar o SnapStart para uma função
Abra a página Funções
do console do Lambda. -
Escolha o nome de uma função.
-
Escolha Configuration (Configuração) e, em seguida, selecione General configuration (Configuração geral).
-
No painel General configuration (Configuração geral), escolha Edit (Editar).
-
Na página Edit basic settings (Editar configurações básicas), para SnapStart, escolha Published versions (Versões publicadas).
-
Escolha Salvar.
-
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.
Ativação do SnapStart (AWS CLI)
Para ativar o SnapStart para uma função existente
-
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
-
Publique uma versão de função com o comando publish-version
. aws lambda publish-version \ --function-name my-function
-
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"
, -
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.jsonA 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
-
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 -
Crie uma versão com o comando publish-version
. aws lambda publish-version \ --function-name my-function
-
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"
, -
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.jsonA 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
-
Execute um destes procedimentos:
-
Crie uma nova função com o SnapStart ativado ao usar a ação de API CreateFunction com o parâmetro SnapStart.
-
Ative o SnapStart para uma função existente ao usar a ação UpdateFunctionConfiguration com o parâmetro SnapStart.
-
-
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.
-
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"
, -
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 tornaInactive
, o Lambda exclui o snapshot. Se você invocar a versão de função após 14 dias, o Lambda retornará uma respostaSnapStartNotReadyException
e começará a inicializar um novo snapshot. Aguarde até que a versão de função atinja o estadoActive
e, em seguida, invoque-a novamente. O estadoInactive
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 estadoInactive
. -
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).