¿Cómo soluciono los errores de permisos de las API HTTP de API Gateway con una integración de Lambda o un autorizador de Lambda?

5 minutos de lectura
0

Cuando intento ejecutar mi función de AWS Lambda con una API HTTP de API Gateway, aparece el mensaje «Error interno del servidor». En Registros de Amazon CloudWatch, aparece el error «no tiene permisos para llamar a la integración» o «no tiene permisos para llamar al autorizador».

Breve descripción

Si una API HTTP de API Gateway intenta ejecutar una función Lambda sin el permiso de ejecución de Lambda, API Gateway devuelve el mensaje «Error interno del servidor». Si activó el registro de CloudWatch para su API HTTP, API Gateway también registra uno de los siguientes mensajes de error en sus registros de acceso:

  • En el caso de las API HTTP con una integración de Lambda: «integrationError»: «El rol de IAM configurado en la integración o API Gateway no tiene permisos para llamar a la integración. Compruebe los permisos e inténtelo de nuevo».
  • En el caso de las API HTTP con un autorizador de Lambda: «authorizerError»: «El rol de IAM configurado en el autorizador o API Gateway no tiene permisos para llamar al autorizador. Compruebe los permisos e inténtelo de nuevo».

Para resolver estos errores, realice una de las siguientes acciones:

Utilice la consola de API Gateway o la Interfaz de la línea de comandos de AWS (AWS CLI) para añadir un permiso de ejecución de Lambda basado en recursos a su API HTTP.

-o bien-

Configure un rol de ejecución de AWS Identity and Access Management (IAM) que otorgue permiso a la API HTTP para ejecutar su función. Para obtener más información, consulte Modelo de permisos de API Gateway para invocar una API.

Para obtener más información sobre la solución de errores al utilizar integraciones de Lambda con las API HTTP, consulte Solución de problemas con las integraciones de Lambda de las API HTTP.

Resolución

Nota: Si recibe errores al ejecutar los comandos de AWS CLI, asegúrese de utilizar la versión más reciente de AWS CLI.

Utilice la consola de API Gateway para añadir el permiso de ejecución de Lambda a una API HTTP con una integración de Lambda

  1. Abra la consola de API Gateway.
  2. En el panel API, elija el nombre de su API HTTP.
  3. En el panel de navegación de la izquierda, elija Integraciones.
  4. Elija Gestionar integración.
  5. Busque el nombre de su integración de Lambda y, a continuación, pulse el botón Editar situado junto al nombre de su integración de Lambda.
  6. En Permisos de ejecución, elija Conceder permiso a API Gateway para ejecutar la función de Lambda.
    También puede proporcionar el ARN del rol de IAM que API Gateway puede usar para ejecutar la función de Lambda.
  7. Elija Guardar y, a continuación, elija Implementar la API para añadir el permiso de ejecución de Lambda a la API.

Utilice AWS CLI para añadir el permiso de ejecución de Lambda a una API HTTP con una integración de Lambda

Ejecute el siguiente comando add-permission de AWS CLI:

aws lambda add-permission \
--function-name "$YOUR_FUNCTION_ARN" \
--source-arn "arn:aws:execute-api:$API_GW_REGION:$YOUR_ACCOUNT:$API_GW_ID/*/$METHOD/$RESOURCE" \
--principal apigateway.amazonaws.com \
--statement-id $STATEMENT_ID \
--action lambda:InvokeFunction

Nota: Reemplace el valor de function-name por el ARN de la función de Lambda. Reemplace el valor de source-arn por el ARN de origen de la API. Reemplace el valor de statement-id por un identificador de declaración que diferencie la declaración de otras de la misma política.

Utilice la consola de API Gateway para añadir el permiso de ejecución de Lambda a una API HTTP con un autorizador de Lambda

  1. Abra la consola de API Gateway.
  2. En el panel API, elija el nombre de su API HTTP.
  3. En el panel de navegación de la izquierda, elija Autorización.
  4. Elija Administrar autorización.
  5. Busque el nombre de su autorizador de Lambda y, a continuación, pulse el botón Editar situado junto al nombre de su autorizador de Lambda.
  6. En Permisos de ejecución, elija Conceder permiso automáticamente a API Gateway para ejecutar la función de Lambda.
    También puede proporcionar el ARN del rol de IAM que API Gateway puede usar para ejecutar la función de Lambda.
  7. Elija Guardar y, a continuación, elija Implementar la API para añadir el permiso de ejecución de Lambda a la API.

Utilice AWS CLI para añadir el permiso de ejecución de Lambda a una API HTTP con un autorizador de Lambda

Ejecute el siguiente comando add-permission de AWS CLI:

aws lambda add-permission \
--function-name "$YOUR_FUNCTION_ARN" \
--source-arn "arn:aws:execute-api:$API_GW_REGION:$YOUR_ACCOUNT:$API_GW_ID/authorizers/$AUTHORIZER_ID" \
--principal apigateway.amazonaws.com \
--statement-id $STATEMENT_ID \
--action lambda:InvokeFunction

Nota: Reemplace el valor de function-name por el ARN de la función de Lambda. Reemplace el valor de source-arn por el ARN de origen de la API. Reemplace el valor de statement-id por un identificador de declaración que diferencie la declaración de otras de la misma política.


OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año