Criar integrações de proxy AWS Lambda para APIs HTTP no API Gateway
Uma integração de proxy do Lambda permite integrar uma rota de API com uma função do Lambda. Quando um cliente chama sua API, o API Gateway envia a solicitação para a função do Lambda e retorna a resposta da função para o cliente. Para obter exemplos de criação de uma API HTTP, consulte Criar uma API HTTP.
Versão do formato da carga útil
A versão do formato de carga útil especifica o formato do evento que o API Gateway envia para uma integração do Lambda e como o API Gateway interpreta a resposta do Lambda. Por padrão, se você não especificar uma versão de formato de carga útil, o AWS Management Console usará a versão mais recente. Se você criar uma integração do Lambda usando a AWS CLI, o AWS CloudFormation ou um SDK, será necessário especificar um payloadFormatVersion
. Os valores suportados são 1.0
e 2.0
.
Para saber mais sobre como definir opayloadFormatVersion
, consulte create-integration. Para saber mais sobre como determinar a payloadFormatVersion
de uma integração existente, consulte get-integration.
Diferenças do formato da carga útil
A lista a seguir mostra as diferenças entre as versões do formato da carga útil 1.0
e 2.0
:
O formato
2.0
não tem camposmultiValueHeaders
oumultiValueQueryStringParameters
. Os cabeçalhos duplicados são combinados com vírgulas e incluídos no campoheaders
. As strings de consulta duplicadas são combinadas com vírgulas e incluídas no campoqueryStringParameters
.-
O formato
2.0
temrawPath
. Se você usar um mapeamento de API para associar o estágio a um nome de domínio personalizado,rawPath
não fornecerá o valor do mapeamento de API. Use o formato1.0
epath
para acessar o mapeamento da API de seu nome de domínio personalizado. O formato
2.0
inclui um novo campocookies
. Todos os cabeçalhos de cookie na solicitação são combinados com vírgulas e adicionados ao campocookies
. Na resposta ao cliente, cada cookie torna-se um cabeçalhoset-cookie
.
Estrutura do formato da carga útil
Os exemplos a seguir mostram a estrutura de cada versão do formato de carga útil. Todos os nomes de cabeçalho ficam em letras minúsculas.
Formato de resposta da função do Lambda
A versão do formato da carga determina a estrutura da resposta que a função do Lambda deve retornar.
Resposta de função do Lambda para o formato 1.0
Com a versão do formato 1.0
, as integrações do Lambda devem retornar uma resposta no formato JSON a seguir:
{ "isBase64Encoded": true|false, "statusCode": httpStatusCode, "headers": { "headername": "headervalue", ... }, "multiValueHeaders": { "headername": ["headervalue", "headervalue2", ...], ... }, "body": "..." }
Resposta de função do Lambda para o formato 2.0
Com a versão de formato 2.0
, o API Gateway pode inferir o formato de resposta para você. O API Gateway fará as suposições a seguir se sua função do Lambda retornar JSON válido e não retornar um statusCode
:
-
isBase64Encoded
éfalse
. -
statusCode
é200
. -
content-type
éapplication/json
. -
body
é a resposta da função.
Os exemplos a seguir mostram a saída de uma função do Lambda e a interpretação do API Gateway.
Saída da função do Lambda | Interpretação do API Gateway |
---|---|
|
|
|
|
Para personalizar a resposta, a função do Lambda deve retornar uma resposta com o formato a seguir.
{ "cookies" : ["
cookie1
", "cookie2
"], "isBase64Encoded": true|false, "statusCode":httpStatusCode
, "headers": { "headername
": "headervalue
", ... }, "body": "Hello from Lambda!
" }