AWS Lambda-Funktion REST-API-Endpunkt - Fehler 403
Habe ich eine AWS Lambda-Funktion, die sichtbar wird, als eine REST-API.
Wenn er aufgerufen wird es über die Test-Taste auf aws lambda-Konsole, funktioniert es.
Wenn Sie aufgerufen wird, über eine online-REST-client, bekomme ich den Fehler 403. Es wurde als erfordern - keine Authentifizierung (Offen).
Welche Konfiguration bin ich?
- Kann man sich die CloudWatch logs und mehr details? CloudWatch protokolliert jeden Schritt der Lambda-Funktion und das sollte helfen bei der Fehlerbehebung.
- Matt> habe ich überprüft,...aber finde keine logs entsprechend dem REST-basierte Aufruf, einfach weil der Aufruf sich nicht aufgrund 403(verboten). Irgendwelche anderen Ideen?
- Vermutlich die lambda ist der Zugriff über API-gateway. Was passiert, wenn Sie aufrufen über die Schaltfläche "Test" in der API-gateway-Konsole? docs.aws.amazon.com/apigateway/latest/developerguide/...
- Hast du dieses Problem beheben? Ich erlebe seltsame Verhalten, wobei: die lambda-proxy-integration funktioniert über die APIG-Konsole; ich habe zwei BEKOMMEN Pfade
/some/path?query=param
und/some/path/:id
. Von Postman-client, der die früheren Werke aber letztere gibt die 403, die Sie beschreiben.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Angeblich die Lambda ausgesetzt ist, durch eine AWS-API-Gateway.
Ein Grund, warum Sie bekommen würde, 403 auf eine frische "keine Authentifizierung" API-Gateway resource ist, weil Sie noch nicht implementiert Ihre änderungen.
In der API-Gateway-Konsole auf den
Actions
Dropdownliste, und wählen SieDeploy API
.Sollten Sie gut zu gehen.
Vielleicht haben Sie senden die Anfrage an einen falschen Endpunkt.
War ich immer Fehler 403-Antwort durch senden einer POST-Anforderung an https://example.com/locate
Allerdings, wenn ich Hinzugefügt Bühne http://example.com/dev/locate und implementiert änderungen an dieser API, es funktionierte ok, Rückkehr 200 Antwort.
Hoffe, das hilft.
Müssen Sie zuerst sicherstellen, dass CORS aktivieren bei AWS-API-Gateway wenn Sie den Zugriff aus verschiedenen Domänen, da ist es-API-gateway, das wirft Fehler 403 nicht die lambda-Funktion. Sie können CORS für eine Methode oder vollständige Ressource. Wählen Sie Aktionen und wählen Sie dann Aktivieren CORS . Dies wird fügen Sie OPTIONEN Methode auf die Ressource, wenn nicht bereits vorhanden.
Aktivieren CORS auf API-gateway wird sichergestellt, dass alle Antwort-Header haben Access-Control-Allow-Origin "- Wert auf ' * ' gesetzt (ich.e zulassen aller Herkunft, aber Sie können angeben, bestimmte Herkunft z.B. http://localhost).
Immer sicherstellen, dass Sie aufrufen richtige URL. Sie können get url aus Bühne Abschnitt der API-Gateway oder von der Lambda-Funktion (wenn Sie den Lambda-Funktion als integration Endpunkt)
Können Sie sehen, neuen Header gesetzt, in der Methode und Integration Antworten.
Wenn Sie mit Genehmigung der AWS dann AWS berechnen Signatur.
Wenn Sie die übergabe von get-oder post-Parameter zu versenden in alphabetischer Reihenfolge an.
Grund, weil, wenn Sie pass-token Berechnung der Signatur UI-oder front-end-calcuate basis, um die Sie Hinzugefügt, aber AWS neu berechnen Signatur pro alphabetischer Reihenfolge übereinstimmen Signatur.
Schicken params in alphabetischer Reihenfolge an.
post = {
'id': 23,
'tag': '35353
}