Passer au contenu

J'ai défini mon intégration Lambda dans API Gateway à l'aide d'une variable d’étape. Pourquoi une erreur « Internal server error » et un code de statut 500 s’affichent-ils lorsque j'invoque la méthode API ?

Lecture de 4 minute(s)
0

J'ai configuré mon API Amazon API Gateway pour invoquer une fonction AWS Lambda à l'aide d'une variable d’étape. Lorsque j’invoque la méthode API, mon API renvoie une erreur « Internal server error » et un code de statut 500.

Brève description

Si la politique basée sur les ressources de votre fonction Lambda n'inclut pas les autorisations permettant à votre API d'invoquer la fonction, API Gateway renvoie un message d’erreur Internal server error.

Si vous créez une variable d'étape pour appeler une fonction via votre API, vous devez ajouter les autorisations requises en effectuant l'une des opérations suivantes :

Remarque : si vous créez une API API Gateway avec une intégration Lambda standard à l'aide de la console API Gateway, celle-ci ajoute automatiquement les autorisations requises.

Résolution

Remarque : si vous recevez des messages d’erreur lors de l’exécution des commandes de l’interface de la ligne de commande AWS (AWS CLI), vérifiez que vous utilisez bien la version la plus récente de l’AWS CLI.

Consultez vos journaux Amazon CloudWatch pour vous assurer que l'erreur est due à des autorisations manquantes

Pour les API REST et les API WebSocket

Consultez les journaux d'exécution de votre API Gateway. Si un message d'erreur similaire à Invalid permissions on Lambda function, cela signifie que les autorisations manquantes sont à l'origine de l'erreur. Pour en savoir plus, consultez la section Comment puis-je activer CloudWatch Logs afin de résoudre les problèmes liés à mon API REST d’API Gateway ou à mon API WebSocket ?

Pour les API HTTP

Consultez vos journaux d'accès à API Gateway. Si un message d'erreur contenant des autorisations non valides s'affiche, cela signifie que les autorisations manquantes sont à l'origine de l'erreur. Pour plus d’informations, consultez la section Configuration de la journalisation pour une API HTTP.

Remarque : la variable de contexte integrationErrorMessage context variable ($context.integrationErrorMessage) inclut le message d'erreur à consulter.

Mettez à jour la politique IAM basée sur les ressources de votre fonction Lambda afin qu'elle accorde l'autorisation d'invocation à API Gateway

Instructions de la console Lambda

Suivez les instructions de la section Octroi de l'accès aux fonctions aux services AWS.

Voici un exemple de politique basée sur les ressources qui accorde l'autorisation d'invocation à 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>"
              }
            }
        }
     ]
}

AWS CLI

Exécutez la commande d'interface de ligne de commande AWS add-permission suivante :

Important : remplacez les valeurs suivantes avant d’exécuter la commande :

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

Créez un rôle IAM qu'API Gateway peut assumer pour invoquer votre fonction Lambda

Suivez les instructions du modèle d'autorisations API Gateway pour invoquer une API.

Remarque : pour en savoir plus, consultez la section Contrôler l’accès à une API avec des autorisations IAM.

Informations connexes

Utilisation des étapes pour les API HTTP

Configuration de variables d'étape pour le déploiement d'une API REST

Utilisation des variables d'étape Amazon API Gateway

Utilisation de variables d'étape API Gateway pour gérer les fonctions Lambda

Créer une API REST API Gateway avec intégration Lambda