Definí mi integración de Lambda en API Gateway mediante una variable de etapa. ¿Por qué aparece un «error de servidor interno» y un código de estado 500 cuando invoco el método de la API?
Configuré mi API Amazon API Gateway para invocar una función de AWS Lambda mediante una variable de etapa. Cuando invoco el método de la API, mi API devuelve un «error de servidor interno» y un código de estado 500. ¿Cómo soluciono el error?
Descripción breve
Si la política basada en recursos de la función de Lambda no incluye permisos para que la API invoque la función, API Gateway devuelve un mensaje de error interno del servidor.
Si crea una variable de etapa para llamar a una función a través de su API, debe añadir los permisos necesarios mediante una de las siguientes acciones:
- Actualice la política de AWS Identity and Access Management (IAM) basada en recursos de su función de Lambda para que conceda permiso de invocación a API Gateway.
-o- - Cree un rol de IAM que API Gateway pueda asumir para invocar su función de Lambda.
**Nota:**Si crea una API de API Gateway con una integración de Lambda estándar mediante la consola de API Gateway, la consola añade los permisos necesarios automáticamente.
Resolución
Nota: Si recibe errores al ejecutar los comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), asegúrese de utilizar la versión más reciente de AWS CLI.
Revise sus registros de Amazon CloudWatch para confirmar que el error se debe a la falta de permisos
Para API de REST y API de WebSocket
Revise sus registros de ejecución de API Gateway. Si aparece un mensaje de error similar a Permisos no válidos en la función de Lambda, significa que la falta de permisos es la causa del error. Para obtener más información, consulte ¿Cómo activo los registros de CloudWatch para solucionar problemas con mi API de REST o API de WebSocket de API Gateway?
Para las API HTTP
Revise sus registros de acceso a API Gateway. Si aparece un mensaje de error que incluye Permisos inválidos, significa que la falta de permisos es la causa del error. Para obtener más información, consulte Configuración de registro para una API HTTP.
Nota: La variable de contexto integrationErrorMessage ($context.integrationErrorMessage) incluye el mensaje de error que se va a revisar.
Para actualizar la política de IAM basada en recursos de su función de Lambda para que conceda permiso de invocación a API Gateway
Instrucciones de la consola de Lambda
Siga las instrucciones que se indican en Concesión de acceso a las funciones a los servicios de AWS.
El siguiente es un ejemplo de política basada en recursos que otorga permisos de invocación a 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>" } } } ] }
Instrucciones de AWS CLI
Ejecute el siguiente comando add-permission de AWS CLI:
Importante: Sustituya las siguientes variables antes de ejecutar el comando:
- Para arn:aws:lambda:region:account-id:function:function-name, introduzca el nombre de recurso de Amazon (ARN) de su función de Lambda.
- Para statement-id-guid, introduzca un ID de instrucción único. Por ejemplo, api-gateway-invoke.
- Para arn:aws:execute-api:region:account-id:api-id/*/GET/lambdasv1, introduzca el ARN del recurso de API Gateway que invoca su función. Para conocer el formato ARN para las API HTTP y las API de REST, consulte Formato de recursos de los permisos para ejecutar la API en API Gateway. Para obtener información sobre el formato ARN de las API de WebSocket, consulte Uso de la autorización de 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 crear un rol de IAM que API Gateway pueda asumir para invocar su función de Lambda
Siga las instrucciones de Modelo de permisos de API Gateway para invocar una API.
**Nota:**Para obtener más información, consulte Control del acceso a una API con permisos de IAM.
Información relacionada
Trabajar con etapas para API HTTP
Configuración de variables de etapa para un despliegue de una API de REST
Uso de variables de etapa de Amazon API Gateway
Uso de variables de etapa de API Gateway para administrar las funciones de Lambda
Desarrollo de una API de REST de API Gateway con integración de Lambda
Vídeos relacionados
Contenido relevante
- OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace 2 meses