Wie kann ich eine Lambda-Funktion asynchron über meine Amazon-API-Gateway-API aufrufen?

Lesedauer: 2 Minute
0

Ich möchte eine AWS-Lambda-Funktion asynchron statt synchron für meine Amazon-API-Gateway-API aufrufen.

Lösung

REST-APIs

Bei der Nicht-Proxy-Integration von Lambda wird die Lambda-Back-End-Funktion standardmäßig synchron aufgerufen. Sie können die Lambda-Funktion für eine Nicht-Proxy-Integration von Lambda so konfigurieren, dass sie asynchron aufgerufen wird, indem Sie „Event“ (Ereignis) als Lambda-Aufruftyp angeben.

1.    Öffnen Sie die API-Gateway-Konsole, wählen Sie APIs und dann Ihre REST-API aus.

2.    Wählen Sie unter Resources (Ressourcen) die Option GET und anschließend Integration Request (Integrationsanforderung) aus.

3.    Wählen Sie Lambda-Funktion als Integrationstyp aus.

4.    Erweitern Sie HTTP Headers (HTTP-Header) und wählen Sie dann Add header (Header hinzufügen) aus.

5.    Geben Sie X-Amz-Invocation-Type als Name ein.

6.    Geben Sie unter Mapped from (Zugewiesen von) „Event“ (Ereignis) ein.

7.    Stellen Sie die REST-API erneut bereit.

Zum Aufrufen der Lambda-Funktion mit der Option entweder asynchron oder synchron fügen Sie einen InvocationType-Header hinzu.

1.    Öffnen Sie die API-Gateway-Konsole, wählen Sie APIs und dann Ihre REST-API aus.

2.    Wählen Sie unter Resources (Ressourcen) die Option GET und anschließend Method Request (Methodenanforderung) aus.

3.    Wählen Sie in Request Validator (Anforderungsvalidierung) das Bearbeitungssymbol und dann die Dropdownliste aus und wählen Sie dann die Option Validate query string parameters and headers (Abfragezeichenfolgenparameter und Header validieren).

4.    Wählen Sie das Aktualisierungssymbol, um die Änderungen zu speichern.

5.    Erweitern Sie HTTP Headers (HTTP-Header) und wählen Sie dann Add header (Header hinzufügen) aus.

6.    Geben Sie InvocationType als Name ein, und wählen Sie dann Required (Erforderlich) aus.

7.    Erweitern Sie in Integration Request (Integrationsanforderung) die Option HTTP Headers (HTTP-Header) und wählen Sie dann Add header (Header hinzufügen).

8.    Geben Sie X-Amz-Invocation-Type als Name ein.

9.     Geben Sie unter Mapped from (Zugewiesen von) method.request.header.InvocationType ein.

10.    Stellen Sie die REST-API erneut bereit.

Clients können den Header InvocationType: Event in API-Anforderungen für asynchrone Aufrufe oder InvocationType: RequestResponse für synchrone Aufrufe aufnehmen.

Weitere Informationen finden Sie unter Asynchronen Aufruf der Backend-Lambda-Funktion einrichten.

HTTP-APIs

HTTP-APIs unterstützen nur Proxy-Integrationen für Lambda. Sie können den Header X-Amz-Invocation-Type in der API-Gateway-Integration für HTTP-APIs nicht festlegen. Sie können zwei Lambda-Funktionen verwenden, von denen eine als Proxy fungiert.

Beispielkonfiguration:

HTTP API --> Invoke Lambda1 synchronously --> Invoke Lambda2 asynchronously

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr