Ich baue eine API, die von Lambda-Funktionen bedient wird, aber ich brauche diese asynchron zu sein, anstatt das API-Gateway direkt mit der Lambda-Funktion zu verbinden. Ich benutze den "AWS Service Proxy "zu veröffentlichen SNS-Nachrichten und dann haben Sie die Lambda-Funktion abonnieren Sie die relevanten SNS Thema, so dass es die Lieferung der Anfragen empfängt. Hier ist ein Bild, das den Fluss zeigt:AWS API-Gateway kommuniziert mit SNS
ich getestet habe sowohl die Lambda-Funktion in Isolation als auch pub/Sub-Nachrichten zwischen SNS und Lambda, aber ich habe Schwierigkeiten mit dem API-Gateway SNS-Handoff. Die Dokumentation ist ziemlich leicht, aber was ich gehe davon ist jetzt, dass die folgenden Attribute in der POST-Anforderung gesendet werden muss:
Aktion: der API-Gateway bietet diese in der Benutzeroberfläche festgelegt und ich habe setzen in den Aktion veröffentlichen, die
Nachricht die entsprechenden SNS Aktion ist: der Körper der POST-Meldung ein JSON-Dokument sein sollte. Es würde vom Webclient übergeben und über das Gateway an SNS weitergeleitet.
TopicArn: gibt das SNS-Thema an, zu dem wir veröffentlichen. In meinem Entwurf wäre dies ein statischer Wert/Endpunkt, also würde ich bevorzugen, dass der Web-Client dies auch nicht passieren muss, aber wenn es einfacher wäre, dies zu tun, wäre das auch in Ordnung.
Ich habe viele Dinge ausprobiert, bin aber nur stecken. Würde gerne ein gutes Codebeispiel irgendwo finden, aber jede Hilfe würde geschätzt werden.
Wollte ein wenig mehr Kontext auf meinem aktuellen Versuch hinzuzufügen:
ich meine API veröffentlichen und mit Postman versucht haben, um zu versuchen, eine gültige Antwort zu erhalten. Hier ist der Postbote Bildschirme (einer für Kopf Vars, eine für JSON Körper):
Daraus ergibt sich die folgende Fehlermeldung:
{
"Error": {
"Code": "InvalidParameter",
"Message": "Invalid parameter: TopicArn or TargetArn Reason: no value for required parameter",
"Type": "Sender"
},
"RequestId": "b33b7700-e8a3-58f7-8ebe-39e4e62b02d0"
}
der Fehler scheint darauf hinzudeuten, dass die TopicArn Parameter wird nicht an SNS gesendet, aber ich habe Folgendes in das API-Gateway aufgenommen:
Konnten Sie das jemals lösen? Ich stoße auf ähnliche Probleme mit genau der gleichen Architektur. Bevor ich eine separate Frage über meine Probleme veröffentlichte, dachte ich mir, dass ich sehen würde, ob es dir gelingen würde, das funktionieren zu lassen. – AlexGad
Uh oh. Ich hatte eine Antwort geschrieben, aber es ging nicht durch. Ich werde versuchen, morgen dazu zu kommen. – ken
Haben Sie es geschafft, dies mit POST-Anfragen auszuführen? Die einzige Möglichkeit, dies zu tun, ist das Setzen von TopicArn und Message als Abfrage-String-Parameter (wie die unten stehende Antwort), weil der Anfragetext immer ignoriert wurde, obwohl ich die POST-Methode eingestellt habe. Ich brauche jedoch, was in der Anfrage Körper ist und es scheint, es gibt keine Möglichkeit, ich kann es als Abfrage String-Parameter kopieren. – nanestev