it-swarm.com.de

meldung: "Interner Serverfehler" beim Versuch, auf das aws-Gateway zuzugreifen

Lambda Hello-Weltfunktion mit Node.js erstellt und API-GateWay-Auslöser für Get-Aufruf erstellt. Die URL wurde für den Zugriff auf die Lambda-Funktion ausprobiert.

nachricht: "Interner Serverfehler".

(sehr neu bei AWS)

13
user1671308

Sie müssen die Variable statusCode übergeben, nachdem Sie die Lambda-Funktion ausgeführt haben. Wenn Sie es nicht übergeben, löst das API-Gateway standardmäßig einen Fehler 502 Bad Gateway aus.

message = {
   'message': 'Execution started successfully!'
}
return {
    'statusCode': 200,
    'headers': {'Content-Type': 'application/json'},
    'body': json.dumps(message)
}

BEARBEITEN: Dieses Beispiel ist für Python. Für node.js müssen Sie nur den Rückruf bearbeiten, die Nachricht ist im Wesentlichen die gleiche. 

callback(null, {
    statusCode: 200,
    body: JSON.stringify(message),
    headers: {'Content-Type': 'application/json'}
});
19
ljmocic

Ich hatte dieses Problem, aber in meinem Fall verwendete ich API-Gateway und Java-Lambda-Funktion. Bei der Suche in Cloudwatch ist kein Fehler aufgetreten, alles sieht gut aus. Das Problem tritt auf, wenn API Gateway versucht, die Antwort zu rendern. In meinem Fall hatte ich in meinem Antwortobjekt den Statuscode, der kein int war, während das API-Gateway ihn als int verwenden muss.

Diese 

    private final ResponseCode statusCode;
    private final String body;
    private final Map<String, String> headers;
    private final boolean isBase64Encoded;

Nachdem ich statusCode in int geändert habe

    private final int statusCode;

Das funktioniert

0
onlyme

Stellen Sie sicher, dass Sie den Text als Zeichenfolge in der Antwort übergeben. Wenn es sich um ein Objekt handelt, schlägt es fehl und zeigt den angezeigten Fehler an. Weitere Informationen finden Sie hier - http://www.awslessons.com/2017/lambda-api-gateway-internal-server-error/

0
Joel M.

Ich hatte dieses Problem bei der Verwendung von API Gateway + Lambda. In meinem Fall war das Problem lediglich eine Erlaubnisfrage. Ich habe Stufen in meiner API verwendet.

Ich musste ausführen

aws lambda add-permission --function-name X --source-arn "X" --principal apigateway.amazonaws.com --statement-id X --action lambda:InvokeFunction

Hoffe das hilft.

0
miqrc

Es wurde bereits oben erklärt, aber mein Problem war, dass dies bei mir mit dem bloßen Aufrufen des Lambda funktioniert hat:

exports.handler = async (event) => {
    return "gugus"
};

Alle Tests in Lambda waren also in Ordnung. Die Protokolle sahen auch gut aus. Nur die API-Antwort war nicht in Ordnung.

Um es mit dem API-Gateway aufzurufen, muss es ungefähr so ​​aussehen:

exports.handler = async (event) => {
...
    var res ={
        "statusCode": 200,
        "headers": {
            "Content-Type": "*/*"
        }
    };
    res.body = "gugus";
    return res;
};
0
Tobi

Dieser Fehler zeigt an, dass ein Problem mit der Konfiguration der API aufgetreten ist. Wenn Sie CloudWatch-Protokolle aktivieren, können Sie weitere Informationen erhalten: https://aws.Amazon.com/premiumsupport/knowledge-center/api-gateway-cloudwatch-logs/

0
Jack Kohn - AWS