AWS Lambda
Guia do desenvolvedor

Invocação síncrona

Quando você invoca uma função de forma síncrona, o Lambda executa a função e aguarda uma resposta. Quando a execução da função termina, o Lambda retorna a resposta do código da função com dados adicionais, como a versão da função que foi executada. Para invocar uma função de forma síncrona com o AWS CLI, use o comando invoke.

$ aws lambda invoke --function-name my-function --payload '{ "key": "value" }' response.json { "ExecutedVersion": "$LATEST", "StatusCode": 200 }

O payload é uma string que contém um evento no formato JSON. response.json é o nome do arquivo onde o AWS CLI grava a resposta da função. Se a função retorna um objeto ou erro, a resposta é o objeto ou erro no formato JSON. Se a função é encerrada sem erros, a resposta é null.

A saída do comando, que é exibida no terminal, inclui informações de cabeçalhos na resposta do Lambda. Isso inclui a versão que processou o evento (útil quando você usa aliases) e o código de status retornado pelo Lambda. Se o Lambda foi capaz de executar a função, o código de status é 200, mesmo que a função tenha retornado um erro.

nota

Para funções com um longo tempo limite, o cliente pode ser desconectado durante a invocação síncrona enquanto aguarda por uma resposta. Configure seu cliente HTTP, SDK, firewall, proxy ou sistema operacional para permitir conexões longas com tempo limite ou configurações de ativação.

Se o Lambda não for capaz de executar a função, o erro será exibido na saída.

$ aws lambda invoke --function-name my-function --payload value response.json An error occurred (InvalidRequestContentException) when calling the Invoke operation: Could not parse request body into json: Unrecognized token 'value': was expecting ('true', 'false' or 'null') at [Source: (byte[])"value"; line: 1, column: 11]

Para obter logs para uma invocação a partir da linha de comando, use a opção --log-type. A resposta inclui um campo LogResult que contém até 4 KB de logs codificados em base64 da invocação.

$ aws lambda invoke --function-name my-function out --log-type Tail { "StatusCode": 200, "LogResult": "U1RBUlQgUmVxdWVzdElkOiA4N2QwNDRiOC1mMTU0LTExZTgtOGNkYS0yOTc0YzVlNGZiMjEgVmVyc2lvb...", "ExecutedVersion": "$LATEST" }

Você pode usar o utilitário base64 para decodificar os logs.

$ aws lambda invoke --function-name my-function out --log-type Tail \ --query 'LogResult' --output text | base64 -d START RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8 Version: $LATEST "AWS_SESSION_TOKEN": "AgoJb3JpZ2luX2VjELj...", "_X_AMZN_TRACE_ID": "Root=1-5d02e5ca-f5792818b6fe8368e5b51d50;Parent=191db58857df8395;Sampled=0"",ask/lib:/opt/lib", END RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8 REPORT RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8 Duration: 79.67 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 73 MB

O utilitário base64 está disponível no Linux, macOS e Ubuntu no Windows. Para macOS, o comando é base64 -D.

Para obter mais informações sobre a API do Invoke, incluindo uma lista completa de parâmetros, cabeçalhos e erros, consulte Invoke.

Quando invocar uma função diretamente, você poderá verificar a resposta quanto a erros e tentar novamente. O AWS CLI e o SDK da AWS também realizam automaticamente novas tentativas em erros de serviço, limitação e tempo limite do cliente. Para mais informações, consulte Lidar com erros e novas tentativas automáticas no AWS Lambda.