API 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étodo – GET
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étodo – POST
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 com ê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étodo – POST
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 com 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étodo – POST
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 com 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"