Der Aufruf eines Google Cloud -Dienstes wie Cloud Run Functions oder Cloud Run über Workflows erfolgt über eine HTTP-Anfrage. Für die gängigsten HTTP-Anfragemethoden gibt es ein Aufrufkürzel (z. B. http.get und http.post). Sie können jedoch jede Art von HTTP-Anfrage stellen, indem Sie das Feld call auf http.request setzen und den Anfragetyp im Feld method angeben. 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 Workflowberechtigung für den Zugriff auf Google Cloud -Ressourcen gewähren.
Wann ein Dienst aufgerufen werden sollte
Woher wissen Sie, wann Sie Schritte in YAML oder JSON mit der Workflows-Syntax erstellen müssen und wann Sie stattdessen einen Dienst erstellen müssen, z. B. einen Cloud Run-Dienst oder eine Cloud Run-Funktion?
Mit Workflows können Sie Dienste aus dem Workflow selbst aufrufen, die Ergebnisse verarbeiten und einfache Aufgaben wie das Ausführen eines HTTP-Aufrufs ausführen. Workflows können Dienste aufrufen, Antworten parsen und Eingaben für andere verbundene Dienste erstellen. Wenn Sie einen Dienst aufrufen, können Sie die Komplikationen zusätzlicher Aufrufe, zusätzlicher Abhängigkeiten und Dienste, die Dienste aufrufen, vermeiden.
Erstellen Sie Dienste für alle Aufgaben, die für Workflows zu komplex sind, z. B. die Implementierung wiederverwendbarer Geschäftslogik, komplexer Berechnungen oder Transformationen, die von Workflow-Ausdrücken und der Standardbibliothek nicht unterstützt werden. Ein komplizierter Fall lässt sich in der Regel einfacher im Code implementieren, anstatt YAML oder JSON und die Workflows-Syntax zu verwenden.
Zeitüberschreitung bei Anfragen und Nutzlastlimits
Wenn Sie einen Cloud Run-Dienst oder eine Cloud Run-Funktion über HTTP aufrufen, beachten Sie, dass synchrone HTTP-Anfragen (http.get, http.post, http.request) in Workflows standardmäßig ein Zeitlimit von 5 Minuten (300 Sekunden) haben,ein maximales Zeitlimit von 30 Minuten (1.800 Sekunden) unterstützen und eine maximale Antwortgröße von 2 MB zulassen (vorbehaltlich des variablen Speicherlimits von 512 KB, wenn sie in Variablen gespeichert werden).
Obwohl Cloud Run-Dienste und Cloud Run Functions (2. Generation) Zeitüberschreitungen von bis zu 60 Minuten unterstützen, wird bei jedem synchronen http.*-Schritt in Workflows nach der konfigurierten Zeitüberschreitung (bis zu 30 Minuten) eine Zeitüberschreitung mit einem TimeoutError ausgelöst. Verwenden Sie für Arbeitslasten, die länger als 30 Minuten ausgeführt werden oder große Nutzlasten zurückgeben, Cloud Run-Jobs oder Callback-Endpunkte. Einen Vergleich der Limits und empfohlenen Muster finden Sie unter Zeitlimits und Nutzlastgrößen für alle Dienste angleichen.
Dienste aufrufen, die auf internen Ingress beschränkt sind
Workflows können Cloud Run Functions-Funktionen oder Cloud Run-Dienste im selben Google Cloud Projekt oder VPC Service Controls-Perimeter aufrufen, bei denen der eingehende Traffic auf internen Traffic beschränkt ist. Mit dieser Konfiguration sind Ihre Dienste über das Internet nicht 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. Beachten Sie, dass der Cloud Run-Dienst über die URL run.app und nicht über eine benutzerdefinierte Domain erreichbar sein muss. Weitere Informationen finden Sie unter Eingehenden Netzwerktraffic einschränken (für Cloud Run und Cloud Run Functions (2. Generation)) und Netzwerkeinstellungen konfigurieren (1. Generation) (für Cloud Run Functions (1. Generation)). An Ihrem Workflow sind keine weiteren Änderungen erforderlich.
Erstellen Sie ein Dienstkonto mit den erforderlichen Berechtigungen.
Wenn Sie Anfragen an andere Google Cloud -Dienste stellen, muss Ihr Workflow mit einem Dienstkonto verknüpft sein, das die richtigen Berechtigungen für den Zugriff auf die angeforderten Ressourcen hat. Informationen dazu, welches Dienstkonto mit einem vorhandenen Workflow verknüpft ist, finden Sie unter Mit einem Workflow verknüpftes Dienstkonto prüfen.
Wenn Sie ein Dienstkonto einrichten, verknüpfen Sie die anfragende Identität mit der Ressource, auf die Sie Zugriff gewähren möchten. Sie machen die anfragende Identität zu einem Hauptkonto der Ressource und weisen ihr 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 (1. Generation) 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 in der empfangenden Funktion hinzufügen und diesem Hauptkonto die Rolle „Cloud Functions-Aufrufer“ (roles/cloudfunctions.invoker) zuweisen. Wenn Sie ein Dienstkonto für Cloud Run-Dienste oder Cloud Run Functions (2. Generation) einrichten möchten, weisen Sie diesem Dienstkonto die Rolle „Cloud Run-Aufrufer“ (roles/run.invoker) zu. Weitere Informationen finden Sie unter Zugriffssteuerung mit IAM oder in der Übersicht über die Cloud Run-Authentifizierung.
Cloud Run-Funktionen aufrufen
In Cloud Run Functions sind Aufrufberechtigungen über die Verwaltung des zugrunde liegenden Cloud Run-Dienstes verfügbar. Wenn Ihr Workflow einen Cloud Run Functions-Dienst aufruft, müssen Sie dem Dienstkonto des Aufrufers nicht die IAM-Rolle Cloud Functions-Aufrufer (roles/cloudfunctions.invoker) zuweisen. Stattdessen müssen Sie die IAM-Rolle Cloud Run Invoker (roles/run.invoker) zuweisen.
Weitere Informationen finden Sie unter Cloud Run-Funktionen vergleichen.
Authentifizierungsinformationen zum Workflow hinzufügen
Verwenden Sie OIDC zur Authentifizierung, wenn Sie Anfragen an Cloud Run Functions oder Cloud Run senden.
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 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 wird die OIDC-Zielgruppe (OIDC_AUDIENCE) für das Token angegeben. Standardmäßig ist er auf denselben Wert wie url festgelegt. Wenn url jedoch zusätzliche Pfadsegmente über die Stamm-URL des Dienstes oder der Funktion hinaus enthält, legen Sie audience auf die Stamm-URL fest (z. B. https://us-central1-project.cloudfunctions.net/functionA).
Medientyp für die Antwortdaten angeben
Wenn im Content-Type-Header für die Antwort ein application/json-Medientyp angegeben ist, wird die in einer Variablen gespeicherte JSON-Antwort automatisch in eine Map konvertiert, auf die zugegriffen werden kann.
Ändern Sie bei Bedarf die aufgerufene API, um einen application/json-Medientyp für den Antwortheader Content-Type anzugeben. Andernfalls können Sie die Funktionen json.decode und text.encode verwenden, um den Antworttext in eine Zuordnung zu konvertieren. Beispiel:
json.decode(text.encode(RESPONSE_FROM_API))
Weitere Informationen finden Sie unter Auf in einer Variablen 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 über einen Workflow ausführen möchten, verwenden Sie den Cloud Run Admin API-Connector.
Wenn ein Job länger als 30 Minuten dauert, konfigurieren Sie sowohl das Aufgabenzeitlimit des Jobs (standardmäßig 10 Minuten, konfigurierbar bis zu 168 Stunden oder 7 Tage) als auch connector_params.timeout im Connector-Aufruf (standardmäßig 1.800 Sekunden, konfigurierbar bis zu 31.536.000 Sekunden oder 1 Jahr).
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 Cloud Run-Job mit 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 in Cloud Storage gespeicherte Ereignisdaten verarbeitet.
Nächste Schritte
- Mit einer HTTPS-Anfrage aufrufen
- Anleitung: Workflows mit Cloud Run und Cloud Run Functions verwenden