Ir para o conteúdo

Como soluciono problemas de endpoints da API Gateway que se integram ao Lambda?

4 minuto de leitura
0

Desejo integrar um endpoint da Amazon API Gateway com o AWS Lambda, mas recebo um erro.

Resolução

Siga estas etapas de solução de problemas para o erro que você recebeu.

Antes de começar, ative o Amazon CloudWatch Logs para solucionar erros do API Gateway. Em Nível de log, selecione INFO para gerar logs de execução para todas as solicitações.

O API Gateway não tem permissões de função do Lambda

O erro Invalid permissions on Lambda function (Permissões inválidas na função do Lambda) ocorre quando a API Gateway não tem permissões para invocar a função do Lambda. Para resolver esse problema, consulte Como resolvo erros de “Invalid permissions on Lambda function” das APIs REST da API Gateway?

Observação: se você usar outro serviço para implantar seus recursos da API Gateway, como o AWS CloudFormation, conceda permissões ao recurso AWS::Lambda::Permission.

Ocorre o controle de utilização

Se o serviço de back-end for limitado devido a um grande número de solicitações, a API da API Gateway poderá retornar um Erro interno do servidor. Ative um mecanismo de recuo exponencial e repetição e, em seguida, envie a solicitação novamente. Se o problema persistir, verifique sua cota da API Gateway. Se você exceder a cota de serviço, solicite um aumento de cota para a simultaneidade da função do Lambda para que a função não seja limitada.

Você também pode receber erros de Taxa excedida e 429 TooManyRequestsException devido a problemas de controle de utilização da função do Lambda. Para obter mais informações, consulte Como soluciono problemas de controle de utilização “Rate exceeded” e ”TooManyRequestsException” da função do Lambda?

O mapeamento do código de status está incorreto ou ausente

Quando o mapeamento do código de status HTTP está incorreto ou ausente, é possível receber uma mensagem de erro 500 semelhante à seguinte:

“Execution failed due to configuration error: Output mapping refers to an invalid method response: 2xx/4xx/5xx”.

Para resolver esse erro, configure a solicitação e a resposta de integração da operação da API para retornar o código de status correto.

As exceções do serviço Lambda não são gerenciadas

Se você não gerenciar as exceções do serviço Lambda, como o tempo limite da função do Lambda, receberá um erro Lambda.Unknown. Para evitar o tempo limite de uma função do Lambda, torne o código da função do Lambda idempotente.

Para obter mais informações, consulte Padrões de tratamento de erros no API Gateway e no Lambda.

Problemas de tempo limite do endpoint de integração com o Lambda

O limite de cota padrão de tempo limite de integração do API Gateway é de 29 segundos para todos os tipos de integração. Se sua função do Lambda levar mais de 29 segundos para retornar a resposta, a solicitação falhará com um erro de tempo limite da solicitação 504 do endpoint.

Certifique-se de que sua função do Lambda retorne a resposta em 29 segundos. Se sua função do Lambda não conseguir retornar a resposta em 29 segundos, envie um aumento de cota para o limite de tempo limite de integração.

Observação: é possível aumentar o tempo limite de integração para mais de 29 segundos para APIs regionais e APIs privadas. No entanto, esse aumento pode exigir uma limitação na cota de aceleração a nível regional na sua conta da AWS.

Formato JSON de saída da função do Lambda incorreto

Se a saída da sua função do Lambda integrada não estiver em conformidade com o formato JSON especificado para as APIs REST, você receberá um erro de malformed proxy. Certifique-se de usar o formato JSON correto para a saída das funções do Lambda para integrações de proxy e dos autorizadores do Lambda.

Exemplo de função do Lambda para integração de proxy:

{

"isBase64Encoded": true|false,

"statusCode": httpStatusCode,

"headers": { "headerName": "headerValue", ... },

"multiValueHeaders": { "headerName": ["headerValue", "headerValue2", ...], ... },

"body": "..."

}

Informações relacionadas

Como posso solucionar erros de invocação HTTP do Gateway de API?