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:
- Öffne die API Gateway-Konsole.
- Wähle APIs und dann deine REST-API aus.
- Wähle unter Ressourcen die Option GET aus, und wähle dann Integrationsanforderung aus.
- Wähle als Integrationstyp die Option Lambda-Funktion.
- Erweitere die URL-Anforderungsheader-Parameter, und wähle dann den Header-Parameter der Anfrage hinzufügen aus.
- Gib als Name X-Amz-Invocation-Type ein.
- Gib für Zugewiesen von den Text Event (Ereignis) ein.
- 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:
- Öffne die API Gateway-Konsole.
- Wähle APIs und dann deine REST-API aus.
- Wähle unter Ressourcen die Option GET aus, und wähle dann Methodenanforderung aus.
- Wähle in Anforderungsvalidierung das Symbol Bearbeiten aus.
- Wähle die Dropdown-Liste aus, und wähle dann Abfragezeichenfolgenparameter und Header validieren aus.
- Wähle das Symbol Speichern.
- Erweitere HTTP-Anforderungsheader und wähle dann Header hinzufügen aus.
- Gib als Name InvocationType ein und wähle dann Erforderlich aus.
- Erweitere in Integrationsanforderung die URL-Anforderungsheader-Parameter und wähle dann Header-Parameter der Anfrage hinzufügen aus.
- Gib als Name X-Amz-Invocation-Type ein.
- Gib für Zugewiesen von method.request.header.InvocationType ein.
- 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.