Der Aufruf eines Google Cloud-Dienstes wie Cloud Run-Funktionen oder Cloud Run über Workflows erfolgt über eine HTTP-Anfrage. Die gängigsten Methoden für HTTP-Anfragen haben eine Aufrufverknüpfung wie http.get und http.post. Sie können aber eine beliebige Methode verwenden, um Typ der HTTP-Anfrage. Dazu setzen Sie das Feld call
auf http.request
und geben den Anfragetyp im Feld method
an. Weitere Informationen finden Sie unter HTTP-Anfrage stellen.
So senden Sie authentifizierte Anfragen:
Ihr Workflow muss einem Dienstkonto zugeordnet sein, dem eine oder mehrere IAM-Rollen (Identity and Access Management) mit den erforderlichen Berechtigungen zugewiesen wurden.
Sie müssen der Workflow-Definition explizit Authentifizierungsinformationen hinzufügen. Standardmäßig enthalten HTTP-Anfragen aus Sicherheitsgründen keine Identitäts- oder Zugriffstokens.
Weitere Informationen finden Sie unter Workflowberechtigungen für den Zugriff auf Google Cloud-Ressourcen gewähren.
Wann einen Dienst aufrufen
Woher wissen Sie, wann Sie Schritte in YAML oder JSON mit der Workflow-Syntax erstellen oder stattdessen einen Dienst erstellen sollten, z. B. einen Cloud Run-Dienst oder eine Cloud Run-Funktion?
Mit Workflows können Sie Dienste aus dem Workflow selbst aufrufen und die Ergebnisse verarbeiten sowie einfache Aufgaben wie einen HTTP-Aufruf ausführen. Workflows können Dienste aufrufen, Antworten analysieren und Eingaben für andere verbundene Dienste erstellen. Durch das Aufrufen eines Dienstes können Sie die Komplikationen zusätzlicher Aufrufe, zusätzlicher Abhängigkeiten und Dienste vermeiden, die Dienste aufrufen.
Dienste erstellen, um Aufgaben auszuführen, die für Workflows zu komplex sind, z. B. die Implementierung wiederverwendbarer Geschäftslogik, komplexer Berechnungen oder Transformationen, die von Workflows-Ausdrücken und der Standardbibliothek nicht unterstützt werden. Komplexe Fälle lassen sich in der Regel einfacher in Code implementieren, als mit YAML oder JSON und der Workflow-Syntax.
Dienste aufrufen, die auf internen Ingress beschränkt sind
Workflows können Cloud Run-Funktionen oder Cloud Run-Dienste im selben Google Cloud-Projekt aufrufen, die eingehenden Traffic auf internen Traffic beschränken. Mit dieser Konfiguration sind Ihre Dienste nicht über das Internet erreichbar, können aber über Workflows erreicht werden.
Wenn Sie diese Einschränkungen anwenden möchten, müssen Sie die Einstellungen für eingehenden Traffic Ihres Dienstes oder Ihrer Funktion anpassen. Der Cloud Run-Dienst muss über seine run.app
-URL und nicht über eine benutzerdefinierte Domain erreicht werden. Weitere Informationen finden Sie unter Eingehenden Traffic einschränken (für Cloud Run) und Netzwerkeinstellungen konfigurieren (für Cloud Run-Funktionen). Sie müssen keine weiteren Änderungen an Ihrem Workflow vornehmen.
Erstellen Sie ein Dienstkonto mit den erforderlichen Berechtigungen.
Beim Senden von Anfragen an andere Google Cloud-Dienste muss Ihr Workflow mit einem Dienstkonto verknüpft sein, das die erforderlichen Berechtigungen für den Zugriff auf die angeforderten Ressourcen hat. Informationen dazu, welches Dienstkonto mit einem vorhandenen Workflow verknüpft ist, finden Sie unter Verknüpftes Dienstkonto prüfen.
Wenn Sie ein Dienstkonto einrichten, verknüpfen Sie die anfragende Identität mit der Ressource, auf die Sie ihr Zugriff gewähren möchten. Sie machen die anfragende Identität zu einem Hauptkonto der Ressource und weisen dann die entsprechende Rolle zu. Die Rolle definiert, welche Berechtigungen die Identität im Kontext der Ressource hat.
Wenn Sie beispielsweise eine empfangende Cloud Run-Funktion so konfigurieren möchten, dass Anfragen von einer bestimmten aufrufenden Funktion oder einem bestimmten Dienst akzeptiert werden, müssen Sie das Dienstkonto des Aufrufers als Hauptkonto der empfangenden Funktion hinzufügen und diesem Hauptkonto die Rolle „Cloud Run-Aufrufer“ (roles/cloudfunctions.invoker
) zuweisen. Zum Einrichten eines Dienstkontos für Cloud Run weisen Sie diesem Dienstkonto die Rolle "Cloud Run Invoker" (roles/run.invoker
) zu. Weitere Informationen finden Sie unter Authentifizierungsinformationen für Cloud Run-Funktionen oder Cloud Run-Authentifizierungsübersicht.
Cloud Run-Funktionen (2. Generation) aufrufen
In Cloud Run Functions (2. Generation) sind Aufrufberechtigungen über die Verwaltung des zugrunde liegenden Cloud Run-Dienstes verfügbar. Wenn Ihr Workflow einen Cloud Run-Funktionsdienst (2. Generation) aufruft, müssen Sie dem Dienstkonto des Aufrufers nicht die Rolle „Cloud Run Functions-Invoker“ (roles/cloudfunctions.invoker
) zuweisen. Stattdessen müssen Sie die Rolle „Cloud Run-Aufrufer“ (roles/run.invoker
) gewähren.
Weitere Informationen finden Sie unter Versionsvergleich von Cloud Run Functions.
Authentifizierungsinformationen zum Workflow hinzufügen
Verwenden Sie OIDC zur Authentifizierung von Anfragen an Cloud Run-Funktionen oder Cloud Run.
Um eine HTTP-Anfrage mit OIDC zu senden, fügen Sie den Abschnitt auth
in den Abschnitt args
der Workflowdefinition ein, nachdem Sie die URL angegeben haben. In diesem Beispiel wird eine Anfrage gesendet, um eine Cloud Run-Funktion aufzurufen:
YAML
- step_A: call: http.get args: url: https://us-central1-project.cloudfunctions.net/functionA query: firstNumber: 4 secondNumber: 6 operation: sum auth: type: OIDC audience: OIDC_AUDIENCE
JSON
[ { "step_A": { "call": "http.get", "args": { "url": "https://us-central1-project.cloudfunctions.net/functionA", "query": { "firstNumber": 4, "secondNumber": 6, "operation": "sum" }, "auth": { "type": "OIDC", "audience": "OIDC_AUDIENCE" } } } } ]
audience
kann die OIDC-Zielgruppe für das Token angegeben werden.
Standardmäßig ist der Wert auf url
gesetzt. Er sollte jedoch auf die Stamm-URL Ihres Dienstes festgelegt sein. Beispiel: https://region-project.cloudfunctions.net/hello_world
.
Medientyp für die Antwortdaten angeben
Wenn in der Content-Type
-Kopfzeile für die Antwort ein application/json
-Medientyp angegeben ist, wird die in einer Variablen gespeicherte JSON-Antwort automatisch in eine Zuordnung konvertiert, auf die zugegriffen werden kann.
Ändern Sie bei Bedarf die aufgerufene API, um einen application/json
-Medientyp für den Content-Type
-Antwortheader anzugeben. Andernfalls können Sie die Funktionen json.decode
und text.encode
verwenden, um den Antworttext in eine Karte umzuwandeln. Beispiel:
json.decode(text.encode(RESPONSE_FROM_API))
Weitere Informationen finden Sie unter Auf in einer Variable gespeicherte HTTP-Antwortdaten zugreifen.
Cloud Run-Jobs ausführen
Im Gegensatz zu Cloud Run-Diensten warten Cloud Run-Jobs nicht auf HTTP-Anfragen und stellen sie nicht bereit. Wenn Sie Cloud Run-Jobs aus einem Workflow ausführen möchten, verwenden Sie den Cloud Run Admin API-Connector.
Ein End-to-End-Beispiel für die Ausführung eines Cloud Run-Jobs, der Daten verarbeitet, die als Umgebungsvariablen an den Job übergeben werden, finden Sie unter Einen Cloud Run-Job mithilfe von Workflows ausführen.
Ein End-to-End-Beispiel für die Ausführung eines Cloud Run-Jobs, der Daten in einem Cloud Storage-Bucket verarbeitet, was es Ihnen erlaubt, Daten mit vom Kunden verwalteten Verschlüsselungsschlüsseln (Customer-Managed Encryption Keys, CMEK) zu verschlüsseln, finden Sie unter Einen Cloud Run-Job ausführen, der Ereignisdaten in Cloud Storage verarbeitet.
Nächste Schritte
- HTTP-Endpunkt für die Funktion erstellen
- In Cloud Run gehosteten Dienst auslösen
- Workflows mit Cloud Run und Cloud Functions verwenden