Cloud Functions oder Cloud Run aufrufen

Der Aufruf eines Google Cloud-Dienstes wie Cloud Functions 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 Workflowberechtigung für den Zugriff auf Google Cloud-Ressourcen gewähren.

Wann sollte ein Dienst angerufen werden?

Woher wissen Sie, wann Sie mit der Workflows-Syntax Schritte in YAML oder JSON erstellen oder wann Sie stattdessen einen Dienst wie einen Cloud Run-Dienst oder eine Cloud Functions-Funktion erstellen müssen?

Mit Workflows können Sie Dienste direkt aus dem Workflow aufrufen und die Ergebnisse verarbeiten sowie einfache Aufgaben wie einen HTTP-Aufruf ausführen. Workflows können Dienste aufrufen, Antworten parsen und Eingaben für andere verbundene Dienste erstellen. Durch das Aufrufen eines Dienstes vermeiden Sie Komplikationen durch zusätzliche Aufrufe, zusätzliche Abhängigkeiten und Dienste, die Dienste aufrufen.

Erstellen Sie Dienste für Aufgaben, die für Workflows zu komplex sind. Implementieren Sie z. B. wiederverwendbare Geschäftslogik, komplexe Berechnungen oder Transformationen, die von Workflow-Ausdrücken und der zugehörigen 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.

Dienste aufrufen, die auf internen Ingress beschränkt sind

Workflows können Cloud Functions- oder Cloud Run-Dienste im selben Google Cloud-Projekt aufrufen, bei denen eingehender 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.

Passen Sie die Einstellungen für eingehenden Traffic Ihres Dienstes oder Ihrer Funktion an, um diese Einschränkungen anzuwenden. 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 Functions). 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 Functions-Funktion konfigurieren möchten, um Anfragen von einer bestimmten aufrufenden Funktion oder einem bestimmten Dienst zu akzeptieren, müssen Sie das Dienstkonto des Aufrufers als Hauptkonto der empfangenden Funktion hinzufügen und diesem Hauptkonto die Rolle "Cloud Functions Invoker" (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 Functions oder Cloud Run-Authentifizierungsübersicht.

Cloud Functions (2nd gen) aufrufen

In Cloud Functions (2nd gen) sind Aufrufberechtigungen über die Verwaltung des zugrunde liegenden Cloud Run-Dienstes verfügbar. Wenn Ihr Workflow einen Cloud Function-Dienst (2. Generation) aufruft, müssen Sie dem Dienstkonto des Aufrufers nicht die Rolle „Cloud Functions Invoker“ (roles/cloudfunctions.invoker) gewähren. Stattdessen müssen Sie die Rolle „Cloud Run Invoker“ (roles/run.invoker) gewähren.

Weitere Informationen finden Sie unter Cloud Functions-Versionsvergleich.

Authentifizierungsinformationen zum Workflow hinzufügen

Verwenden Sie OIDC zur Authentifizierung von Anfragen an Cloud Functions 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 Functions-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"
            }
          }
        }
      }
    ]
      
Mit dem Parameter audience kann die OIDC-Zielgruppe für das Token angegeben werden. Standardmäßig ist er auf den gleichen Wert wie url festgelegt, sollte jedoch auf die Stamm-URL Ihres Dienstes festgelegt werden. Beispiel: https://region-project.cloudfunctions.net/hello_world.

Geben Sie den Medientyp für die Antwortdaten an

Wenn im Header Content-Type für die Antwort der Medientyp application/json angegeben ist, wird die in einer Variable gespeicherte JSON-Antwort automatisch in eine Karte konvertiert, auf die zugegriffen werden kann.

Ändern Sie bei Bedarf die aufgerufene API, um für den Antwortheader Content-Type den Medientyp application/json anzugeben. Andernfalls können Sie den Antworttext mit den Funktionen json.decode und text.encode in eine Zuordnung konvertieren. 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 überwachen Cloud Run-Jobs keine HTTP-Anfragen und stellen sie auch nicht bereit. Verwenden Sie den Cloud Run Admin API-Connector, um Cloud Run-Jobs aus einem Workflow auszuführen.

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 mithilfe von Workflows ausführen.

Ein End-to-End-Beispiel für die Ausführung eines Cloud Run-Jobs, der in einem Cloud Storage-Bucket gespeicherte Daten verarbeitet, über die Sie die Daten mit vom Kunden verwalteten Verschlüsselungsschlüsseln (CMEK) verschlüsseln können, finden Sie unter Cloud Run-Job ausführen, der Ereignisdaten in Cloud Storage verarbeitet.

Nächste Schritte