Monitorar o estado de uma função com a API do Lambda
Quando você cria ou atualiza uma função, o Lambda provisiona os recursos de computação e rede que permitem que ela seja executada. Na maioria dos casos, esse processo é muito rápido, e sua função está pronta para ser invocada ou modificada imediatamente.
Se você configurar sua função para se conectar a uma nuvem privada virtual (VPC), o processo poderá demorar mais tempo. Quando você conecta uma função pela primeira vez a uma VPC, o Lambda provisiona interfaces de rede, o que leva cerca de um minuto. Para comunicar o estado atual da sua função, o Lambda inclui campos adicionais no documento de configuração da função que é retornado por várias ações de API do Lambda.
Quando você cria uma função, ela está inicialmente no estado Pending
. Quando a função está pronta para ser invocada, o estado muda de Pending
para Active
. Enquanto o estado é Pending
, invocações e outras ações de API que operam na função retornam um erro. Se você
criar automação em torno da criação e atualização de funções, aguarde a função se
tornar ativa antes de executar ações adicionais operadas na função.
É possível usar a API do Lambda para obter informações sobre o estado de uma função.
Informações de estado são incluídas no documento FunctionConfiguration retornado por várias ações de API. Para visualizar o estado da função com a AWS CLI,
use o comando get-function-configuration
.
$
aws lambda get-function-configuration --function-name my-function
{ "FunctionName": "my-function", "FunctionArn": "arn:aws:lambda:us-east-2:123456789012:function:my-function", "Runtime": "nodejs12.x", "Role": "arn:aws:iam::123456789012:role/lambda-role", "TracingConfig": { "Mode": "Active" },"State": "Pending", "StateReason": "The function is being created.", "StateReasonCode": "Creating",
... }
O StateReason
e o StateReasonCode
contêm informações adicionais sobre o estado quando não é Active
. Ocorre falha nas seguintes operações enquanto a criação da função está pendente:
Quando você atualiza a configuração de uma função, a atualização pode acionar uma
operação assíncrona para provisionar recursos. Enquanto esse processo estiver em andamento,
você poderá invocar a função, mas ocorrerá uma falha em outras operações na função.
As invocações ocorridas enquanto a atualização está em andamento são executadas na
configuração anterior. O estado da função é Active
, mas LastUpdateStatus
é InProgress
.
exemplo Configuração de funções – conectar-se a uma VPC
{ "FunctionName": "my-function", "FunctionArn": "arn:aws:lambda:us-east-2:123456789012:function:my-function", "Runtime": "nodejs12.x", "VpcConfig": { "SubnetIds": [ "subnet-071f712345678e7c8", "subnet-07fd123456788a036", "subnet-0804f77612345cacf" ], "SecurityGroupIds": [ "sg-085912345678492fb" ], "VpcId": "vpc-08e1234569e011e83" },
"State": "Active", "LastUpdateStatus": "InProgress"
, ... }
Ocorre falha nas seguintes operações enquanto uma atualização assíncrona está em andamento:
Outras operações, incluindo invocação, funcionam enquanto as atualizações estão em andamento.
Por exemplo, quando você conecta sua função a uma nuvem privada virtual (VPC), o Lambda
provisiona uma interface de rede elástica para cada sub-rede. Esse processo pode deixar
a função em um estado pendente por cerca de um minuto. O Lambda também recupera interfaces
de rede que não estão em uso, colocando a função em um estado Inactive
. Quando a função está inativa, uma invocação faz com que ela entre no estado Pending
enquanto o acesso à rede é restaurado. Uma falha ResourceNotReadyException
ocorrerá na invocação que aciona a restauração e outras invocações enquanto a operação
estiver pendente.
Se o Lambda encontrar um erro ao restaurar a interface de rede de uma função, a função
voltará ao estado Inactive
. A próxima invocação pode acionar outra tentativa. Para alguns erros de configuração,
o Lambda aguarda pelo menos 5 minutos antes de tentar criar outra interface de rede.
Esses erros têm os seguintes valores de LastUpdateStatusReasonCode
:
-
InsufficientRolePermission
– a função não existe ou há permissões ausentes. -
SubnetOutOfIPAddresses
– todos os endereços IP em uma sub-rede estão em uso.
Para obter mais informações sobre como os estados funcionam com a conectividade da VPC, consulte Configurar uma função do Lambda para acessar recursos em uma VPC.