Eu defini minha integração do Lambda no API Gateway usando uma variável de estágio. Por que recebo um “erro interno do servidor” e um código de status 500 quando invoco o método da API?
Eu configurei minha API do Amazon API Gateway para invocar uma função do AWS Lambda usando uma variável de estágio. Quando invoco o método da API, minha API retorna um “erro interno do servidor” e um código de status 500. Como resolvo o erro?
Breve descrição
Se a política baseada em recursos da sua função do Lambda não incluir permissões para sua API invocar a função, o API Gateway retornará uma mensagem de erro interno do servidor.
Se criar uma variável de estágio para chamar uma função por meio de sua API, você deverá adicionar as permissões necessárias fazendo o seguinte:
- Atualize a política do AWS Identity and Access Management (IAM) baseada em recursos da sua função do Lambda para que ela conceda permissão de invocação ao API Gateway.
-ou- - Crie um perfil do IAM que o API Gateway possa assumir para invocar sua função do Lambda.
Observação: se você criar uma API do API Gateway com a integração padrão do Lambda usando o console do API Gateway, o console adicionará as permissões necessárias automaticamente.
Resolução
Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), verifique se está usando sua versão mais recente.
Revisar seus Amazon CloudWatch Logs para confirmar que o erro é causado pela falta de permissões
Para APIs REST e APIs de WebSocket
Revise seus logs de execução do API Gateway. Se você vir uma mensagem de erro semelhante a Permissões inválidas na função do Lambda, as permissões ausentes estão causando o erro. Para obter mais informações, consulte Como eu ativo o CloudWatch Logs para solucionar problemas com minha API REST API Gateway ou API WebSocket?
Para APIs HTTP
Revise seus logs de acesso ao API Gateway. Se você vir uma mensagem de erro que inclua Permissões inválidas, as permissões ausentes estão causando o erro. Para obter mais informações, consulte Configurar logs para uma API HTTP.
Observação: a variável de contexto integrationErrorMessage ($context.integrationErrorMessage) inclui a mensagem de erro a ser revisada.
Para atualizar a política do IAM baseada em recursos da sua função do Lambda para que ela conceda permissão de invocação ao API Gateway
Instruções do console do Lambda
Siga as instruções em Conceder acesso à função aos serviços da AWS.
Veja a seguir um exemplo de política baseada em recursos que concede permissão de invocação ao API Gateway:
{ "Version": "2012-10-17", "Id": "default", "Statement": [ { "Sid": "ServiceAllowListing", "Effect": "Allow", "Principal": { "Service": "apigateway.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:<AWS_Region>:<AWS_Account_Number>:function:<LambdaFunctionName>", "Condition": { "ArnLike": { "AWS:SourceArn": "arn:aws:execute-api:<AWS_Region>:<AWS_Account_Number>:<API_ID>" } } } ] }
Instruções da AWS CLI
Execute o seguinte comando add-permission da AWS CLI:
Importante: substitua as variáveis a seguir antes de executar o comando:
- Em arn:aws:lambda:region:account-id:function:function-name, insira seu nome do recurso da Amazon (SRN) da função do Lambda.
- Em statement-id-guid, insira uma ID de instrução. Por exemplo, api-gateway-invoke.
- Em arn:aws:execute-api:region:account-id:api-id/*/GET/lambdasv1, insira o ARN do recurso do API Gateway que invoca sua função. Para o formato do ARN para as APIs HTTP e REST, consulte Formato do recurso de permissões para execução da API no API Gateway. Para o formato do ARN para APIs de WebSocket, consulte Usar a autorização do IAM.
aws lambda add-permission --function-name arn:aws:lambda:region:account-id:function:function-name --statement-id statement-id-guid --action lambda:InvokeFunction --source-arn arn:aws:execute-api:region:account-id:api-id/*/GET/lambdasv1
Para criar um perfil do IAM que o API Gateway possa assumir para invocar sua função do Lambda
Siga as instruções no modelo de permissões do API Gateway para invocar uma API.
Observação: para obter mais informações, consulte Controlar o acesso a uma API com permissões do IAM.
Informações relacionadas
Trabalhar com estágios para APIs HTTP
Configurar variáveis de estágio para uma implantação da API REST
Usar variáveis de estágio do Amazon API Gateway
Usar variáveis de estágio do API Gateway para gerenciar funções do Lambda
Vídeos relacionados
Conteúdo relevante
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 2 anos