

# Estados da função do Lambda
<a name="functions-states"></a>

O Lambda inclui um campo de [Estado](https://docs.aws.amazon.com/lambda/latest/api/API_GetFunctionConfiguration.html#lambda-GetFunctionConfiguration-response-State) na configuração da função para todas as funções, para indicar quando a função está pronta para ser invocada. O `State` fornece informações sobre o status atual da função, incluindo se você pode invocá-la com êxito. Os estados de função não alteram o comportamento de invocações de função ou como sua função executa o código.

**nota**  
As definições do estado da função diferem um pouco para as funções [SnapStart](snapstart.md). Para obter mais informações, consulte [Lambda SnapStart e estados de função](snapstart-activate.md#snapstart-function-states).

Em muitos casos, uma tabela do DynamoDB é um modo ideal de reter estado entre invocações pois fornece acesso a dados de baixa latência e pode ser escalada com o serviço Lambda. Você também pode armazenar dados no [Amazon EFS for Lambda](https://aws.amazon.com/blogs/compute/using-amazon-efs-for-aws-lambda-in-your-serverless-applications/) se estiver usando esse serviço, e isso fornece acesso de baixa latência ao armazenamento do sistema de arquivos.

Os estados da função incluem:
+ `Pending` – Depois que o Lambda cria a função, ele define o estado como pendente. Enquanto estiver em estado pendente, o Lambda tenta criar ou configurar recursos para a função, como recursos de VPC ou EFS. O Lambda não invoca uma função durante o estado pendente. As invocações ou outras ações de API que operam na função falharão.
+ `Active` – Sua função transita para o estado ativo depois que o Lambda concluir a configuração e o provisionamento de recursos. As funções só podem ser invocadas com êxito enquanto estiverem ativas.
+ `Failed` – Indica que a configuração de recursos ou o provisionamento encontrou um erro. Quando a criação da função falha, o Lambda define o estado da função como com falha, e você deve excluir e recriar a função.
+ `Inactive` – Uma função torna-se inativa quando está ociosa tempo suficiente para que o Lambda recupere os recursos externos que foram configurados para ela. Quando tenta invocar uma função que está inativa, a invocação falha e o Lambda define a função para o estado pendente até que os recursos da função são recriados. Se o Lambda não conseguir recriar os recursos, a função voltará ao estado inativo. Talvez seja necessário resolver os erros e reimplantar a função para que ela volte ao estado ativo.

Se você estiver utilizando fluxos de trabalho de automação baseados em SDK ou chamando as APIs de serviço do Lambda diretamente, verifique o estado de uma função antes da invocação para conferir se ela está ativa. Você pode fazer isso com a ação da API do Lambda [GetFunction](https://docs.aws.amazon.com/lambda/latest/api/API_GetFunction.html) ou configurando um waiter usando o [AWS SDK for Java 2.0](https://github.com/aws/aws-sdk-java-v2).

```
aws lambda get-function --function-name my-function --query 'Configuration.[State, LastUpdateStatus]'
```

A seguinte saída deverá ser mostrada:

```
[
 "Active",
 "Successful" 
]
```

Ocorre falha nas seguintes operações enquanto a criação da função está pendente:
+ [Invocar](https://docs.aws.amazon.com/lambda/latest/api/API_Invoke.html)
+ [UpdateFunctionCode](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionCode.html)
+ [UpdateFunctionConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionConfiguration.html)
+ [PublishVersion](https://docs.aws.amazon.com/lambda/latest/api/API_PublishVersion.html)

## Estados da função durante atualizações
<a name="functions-states-updating"></a>

O Lambda tem duas operações para atualizar funções:
+ [UpdateFunctionCode](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionCode.html): atualiza o pacote de implantação da função
+ [UpdateFunctionConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionConfiguration.html): atualiza a configuração da função

O Lambda usa o atributo [LastUpdateStatus](https://docs.aws.amazon.com/lambda/latest/api/API_FunctionConfiguration.html#lambda-Type-FunctionConfiguration-LastUpdateStatus) para acompanhar o progresso dessas operações de atualização. Enquanto uma atualização estiver em andamento (quando `"LastUpdateStatus": "InProgress"`):
+ O [estado](https://docs.aws.amazon.com/lambda/latest/api/API_GetFunctionConfiguration.html#lambda-GetFunctionConfiguration-response-State) da função continua sendo `Active`.
+ As invocações continuam a usar o código e a configuração anterior da função até a conclusão da atualização.
+ As seguintes operações falham:
  + [UpdateFunctionCode](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionCode.html)
  + [UpdateFunctionConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionConfiguration.html)
  + [PublishVersion](https://docs.aws.amazon.com/lambda/latest/api/API_PublishVersion.html)
  + [TagResource](https://docs.aws.amazon.com/lambda/latest/api/API_TagResource.html)

Quando uma atualização falha (quando `"LastUpdateStatus": "Failed"`):
+ O [estado](https://docs.aws.amazon.com/lambda/latest/api/API_GetFunctionConfiguration.html#lambda-GetFunctionConfiguration-response-State) da função continua sendo `Active`.
+ As invocações continuam a usar o código e a configuração anterior da função.

**Example Resposta de GetFunctionConfiguration**  
O exemplo a seguir é o resultado da solicitação [GetFunctionConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_GetFunctionConfiguration.html) em uma função que está sendo atualizada.  

```
{
    "FunctionName": "my-function",
    "FunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:my-function",
    "Runtime": "nodejs24.x",
    "VpcConfig": {
        "SubnetIds": [
            "subnet-071f712345678e7c8",
            "subnet-07fd123456788a036",
            "subnet-0804f77612345cacf"
        ],
        "SecurityGroupIds": [
            "sg-085912345678492fb"
        ],
        "VpcId": "vpc-08e1234569e011e83"
    },
    "State": "Active",
    "LastUpdateStatus": "InProgress",
    ...
}
```