Wie rufe ich asynchron eine Lambda-Funktion von meiner API Gateway-API auf?

Lesedauer: 2 Minute
0

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

Lösung

REST-APIs

Bei der Lambda-Integration ohne Proxy ruft Lambda die Backend-Funktion standardmäßig synchron auf. Um die Backend-Funktion asynchron aufzurufen, setze den Lambda-Aufruftyp auf Event (Ereignis).

Führe die folgenden Schritte aus:

  1. Öffne die API Gateway-Konsole.
  2. Wähle APIs und dann deine REST-API aus.
  3. Wähle unter Ressourcen die Option GET aus, und wähle dann Integrationsanforderung aus.
  4. Wähle als Integrationstyp die Option Lambda-Funktion.
  5. Erweitere die URL-Anforderungsheader-Parameter, und wähle dann den Header-Parameter der Anfrage hinzufügen aus.
  6. Gib als Name X-Amz-Invocation-Type ein.
  7. Gib für Zugewiesen von den Text Event (Ereignis) ein.
  8. Stelle die REST-API erneut bereit.

Um die Lambda-Funktion mit der Option für asynchron oder synchron aufzurufen, füge einen InvocationType-Header hinzu.

Führe die folgenden Schritte aus:

  1. Öffne die API Gateway-Konsole.
  2. Wähle APIs und dann deine REST-API aus.
  3. Wähle unter Ressourcen die Option GET aus, und wähle dann Methodenanforderung aus.
  4. Wähle in Anforderungsvalidierung das Symbol Bearbeiten aus.
  5. Wähle die Dropdown-Liste aus, und wähle dann Abfragezeichenfolgenparameter und Header validieren aus.
  6. Wähle das Symbol Speichern.
  7. Erweitere HTTP-Anforderungsheader und wähle dann Header hinzufügen aus.
  8. Gib als Name InvocationType ein und wähle dann Erforderlich aus.
  9. Erweitere in Integrationsanforderung die URL-Anforderungsheader-Parameter und wähle dann Header-Parameter der Anfrage hinzufügen aus.
  10. Gib als Name X-Amz-Invocation-Type ein.
  11. Gib für Zugewiesen von method.request.header.InvocationType ein.
  12. Stelle die REST-API erneut bereit.

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

HTTP-APIs

HTTP-APIs unterstützen nur Proxy-Integrationen für Lambda. Du kannst den Header X-Amz-Invocation-Type in der API Gateway-Integration für HTTP-APIs nicht festlegen. Verwende stattdessen zwei Lambda-Funktionen mit einer, die als Proxy fungiert. Um eine Lambda-Funktion von einer anderen aus aufzurufen, verwende die Aufruf-API und setze InvocationType in der ersten Lambda-Funktion auf Event (Ereignis).

Beispielkonfiguration:

Die HTTP-API ruft Lambda1 synchron auf, und dann ruft Lambda1 Lambda2 asynchron auf.