AWS Lambda
Guia do desenvolvedor

Interface de tempo de execução do AWS Lambda

O AWS Lambda fornece uma API HTTP para tempos de execução personalizados para receber eventos de invocação do Lambda e enviar dados de resposta de volta para o ambiente de execução do Lambda.

A especificação OpenAPI para a versão da API de tempo de execução 2018-06-01 está disponível aqui: runtime-api.zip

Os tempos de execução obtêm um endpoint da variável de ambiente AWS_LAMBDA_RUNTIME_API, adicionam a versão da API e usam os seguintes caminhos de recursos para interagir com a API.

exemplo Solicitação

curl "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/next"

Próxima invocação

Caminho/runtime/invocation/next

MétodoGET

Recupera um evento de invocação. O corpo da resposta contém a carga útil da invocação, que é um documento JSON que contém os dados do evento do acionador da função. Os cabeçalhos de resposta contêm dados adicionais sobre a invocação.

Cabeçalhos de resposta

  • Lambda-Runtime-Aws-Request-Id – o ID da solicitação, que identifica a solicitação que acionou a invocação da função.

    Por exemplo, 8476a536-e9f4-11e8-9739-2dfe598c3fcd.

  • Lambda-Runtime-Deadline-Ms – a data em que a função expira tempo em milissegundos do Unix.

    Por exemplo, 1542409706888.

  • Lambda-Runtime-Invoked-Function-Arn – o ARN da função do Lambda, versão ou alias especificado na invocação.

    Por exemplo, arn:aws:lambda:us-east-2:123456789012:function:custom-runtime.

  • Lambda-Runtime-Trace-Id – O cabeçalho de rastreamento do AWS X-Ray.

    Por exemplo, Root=1-5bef4de7-ad49b0e87f6ef6c87fc2e700;Parent=9a9197af755a6419;Sampled=1.

  • Lambda-Runtime-Client-Context – Para invocações do AWS Mobile SDK, os dados sobre o aplicativo cliente e o dispositivo.

  • Lambda-Runtime-Cognito-Identity – para invocações do AWS Mobile SDK, os dados sobre o provedor de identidade do Amazon Cognito.

Chame /runtime/invocation/next para obter o evento de invocação e passá-lo para o manipulador de funções para processamento. Não defina um tempo limite na chamada GET. Entre o momento em que o Lambda inicializa o tempo de execução e o momento em que o tempo de execução tem um evento para retornar, o processo do tempo de execução pode ficar congelado por vários segundos.

O ID da solicitação rastreia a invocação dentro do Lambda. Use-o para especificar a invocação ao enviar a resposta.

O cabeçalho de rastreamento contém o ID de rastreamento, o ID pai e a decisão de amostragem. Se a solicitação for de amostra, a amostra da solicitação foi feita pelo Lambda ou um serviço upstream. O tempo de execução deve definir o _X_AMZN_TRACE_ID com o valor do cabeçalho. O X-Ray SDK lê isso para obter os IDs e determinar se deve rastrear a solicitação.

Resposta de invocação

Caminho/runtime/invocation/AwsRequestId/response

MétodoPOST

Envia uma resposta de invocação para o Lambda. Depois que o tempo de execução invoca o handler de funções, ele publica a resposta da função no caminho de resposta de invocação. Para chamadas síncronas, o Lambda envia a resposta de volta para o cliente.

exemplo Solicitação de êxito

REQUEST_ID=156cb537-e2d4-11e8-9b34-d36013741fb9 curl -X POST "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/$REQUEST_ID/response" -d "SUCCESS"

Erro de invocação

Caminho/runtime/invocation/AwsRequestId/error

MétodoPOST

Se a função retornar um erro, o tempo de execução formatará o erro em um documento JSON e o publicará no caminho de erro de invocação.

exemplo Corpo da solicitação

{ "errorMessage" : "Error parsing event data.", "errorType" : "InvalidEventDataException" }

exemplo Solicitação de erro

REQUEST_ID=156cb537-e2d4-11e8-9b34-d36013741fb9 ERROR="{\"errorMessage\" : \"Error parsing event data.\", \"errorType\" : \"InvalidEventDataException\"}" curl -X POST "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/$REQUEST_ID/error" -d "$ERROR" --header "Lambda-Runtime-Function-Error-Type: Unhandled"

Erro de inicialização

Caminho/runtime/init/error

MétodoPOST

Se o tempo de execução encontrar um erro durante a inicialização, ele publicará uma mensagem de erro no caminho de erro de inicialização.

exemplo Solicitação de erro de inicialização

ERROR="{\"errorMessage\" : \"Failed to load function.\", \"errorType\" : \"InvalidFunctionException\"}" curl -X POST "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/init/error" -d "$ERROR" --header "Lambda-Runtime-Function-Error-Type: Unhandled"