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:
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:
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
Criar uma API REST do API Gateway com integração do Lambda