Google Cloud-Dienst wie Cloud Run-Funktionen aufrufen
oder Cloud Run aus Workflows über
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 ein Dienst aufgerufen werden sollte
Woher wissen Sie, wann Sie mithilfe der Workflows in YAML oder JSON Schritte erstellen sollten? Syntax oder wann ein Dienst erstellt werden soll, z. B. ein Cloud Run-Dienst oder eine Cloud Run-Funktion, um stattdessen die Arbeit zu erledigen?
Verwenden Sie Workflows, um Services direkt aus dem Workflow heraus aufzurufen und und einfache Aufgaben wie HTTP-Aufrufe ausführen. Workflows können Dienste aufrufen, Antworten parsen Eingänge für andere verbundene Dienste. Wenn Sie einen Dienst aufrufen, Komplikationen zusätzlicher Aufrufe, zusätzlicher Abhängigkeiten und Dienste Anrufdienste.
Dienste für alle Arbeiten erstellen, die für Workflows zu komplex sind z. B. die Implementierung wiederverwendbarer Geschäftslogik, komplexe Berechnungen oder Transformationen, die nicht von Workflows-Ausdrücken und zugehörigen Standardbibliothek. Komplizierte Fälle lassen sich in der Regel einfacher in Code implementieren, statt YAML oder JSON und die Workflows-Syntax zu verwenden.
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.
Um diese Einschränkungen anzuwenden, müssen Sie die Einstellungen für eingehenden Traffic Ihres
Dienst oder einer Funktion. Der Cloud Run-Dienst muss
unter seiner run.app
-URL und nicht in einer benutzerdefinierten Domain erreicht wurde. Weitere Informationen
Siehe 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 konfigurieren möchten, die
Anfragen von einer bestimmten aufrufenden Funktion oder
einem Dienst aufzurufen, müssen Sie den Parameter
Dienstkonto des Aufrufers als Hauptkonto für die empfangende Funktion festlegen
Hauptkonto des Cloud Run-Funktionsaufrufers (roles/cloudfunctions.invoker
)
Rolle. 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 in der
Authentifizierungsinformationen für Cloud Run-Funktionen
oder unter Cloud Run-Authentifizierung.
Cloud Run-Funktionen (2. Generation) aufrufen
In Cloud Run-Funktionen (2. Generation) sind Aufrufberechtigungen über die Verwaltung
den zugrunde liegenden Cloud Run-Dienst. Wenn Ihr Workflow eine
Cloud Run-Funktionsdienst (2. Generation) ausgeführt haben, müssen Sie den
Dienstkonto des Aufrufers, Cloud Run-Funktionen Invoker
Rolle (roles/cloudfunctions.invoker
). Stattdessen müssen Sie den
Rolle „Cloud Run Invoker“ (roles/run.invoker
).
Weitere Informationen finden Sie unter Versionsvergleich von Cloud Run-Funktionen.
Authentifizierungsinformationen zum Workflow hinzufügen
Wenn Sie Anfragen an Cloud Run-Funktionen oder Cloud Run stellen, zur Authentifizierung OIDC verwenden.
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
zum Aufrufen einer Cloud Run-Funktion gesendet:
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
.
Geben Sie den Medientyp für die Antwortdaten an
Wenn der Content-Type
-Header für die Antwort ein
application/json
, also die JSON-Antwort, die in einem
wird automatisch in eine Karte konvertiert, auf die zugegriffen werden kann.
Ändern Sie gegebenenfalls 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 HTTP-Antwortdaten zugreifen, die in einer Variablen gespeichert sind
Cloud Run-Jobs ausführen
Im Gegensatz zu Cloud Run-Diensten Cloud Run-Jobs warten nicht auf oder HTTP-Anfragen senden. So führen Sie Cloud Run-Jobs in einem Workflow aus: verwenden Sie die Cloud Run Admin API-Connector.
Ein End-to-End-Beispiel für die Ausführung eines Cloud Run-Jobs, der verarbeitet Daten, die als Umgebungsvariablen an den Job übergeben wurden, siehe Cloud Run-Job mit Workflows ausführen
Ein End-to-End-Beispiel für die Ausführung eines Cloud Run-Jobs, der verarbeitet Daten, die in einem Cloud Storage-Bucket gespeichert sind, sodass Sie Daten mit vom Kunden verwalteten Verschlüsselungsschlüsseln (CMEK) verschlüsseln; siehe 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