Workflowausführungen mit Cloud Tasks in die Warteschlange stellen

Mit Cloud Tasks können Sie einen Workflow in die Warteschlange stellen und asynchron ausführen.

Cloud Tasks bietet die folgenden Steuerelemente:

  • Bestimmte Lieferzeiten planen
  • Zustellungsraten verwalten
  • Wiederholungsprozess konfigurieren
  • Auf einzelne Aufgaben in einer Warteschlange zugreifen und verwalten
  • Deduplizierung von Aufgaben aktivieren

Diese Steuerelemente können beispielsweise verwendet werden, um Anfragen zu verwalten, die einen Workflow auslösen und die Workflows-Limits unerwartet überschreiten könnten. Wenn Sie eine Cloud Tasks-Warteschlange mit Ratenbegrenzungen und Wiederholungen konfigurieren, können Sie sicherstellen, dass alle diese Anfragen zu Workflowausführungen führen.

Weitere Informationen finden Sie unter Cloud Tasks.

Wichtige Hinweise:

  • Sie sollten die Ratenbegrenzung auf dem Workflows-Limit für Schreibanfragen an die Execution API basieren. Bei Bedarf können Sie in der Google Cloud Console eine Anpassung der meisten Kontingente beantragen. Weitere Informationen zu Kontingentanpassungen.

  • Cloud Tasks ist darauf ausgelegt, eine Aufgabe „mindestens einmal“ auszuführen. Workflows garantiert jedoch nicht die genaue einmalige Verarbeitung doppelter Anfragen von Cloud Tasks.

  • Sie können Ausführungsverzögerungen vermeiden und den Durchsatz maximieren, indem Sie in Workflows die Ausführungs-Backlogs aktivieren. Backlog-Ausführungen werden automatisch ausgeführt, sobald das Kontingent für die Ausführungskonkurrenz verfügbar ist. Weitere Informationen finden Sie unter Ausführungs-Backlogs verwalten.

Hinweis

  1. Wenn Sie noch keinen Workflow haben, den Sie in die Warteschlange stellen möchten, erstellen Sie einen.
  2. Aktivieren Sie die Cloud Tasks API.

    Erforderliche Rollen zum Aktivieren von APIs

    Zum Aktivieren von APIs benötigen Sie die Berechtigung serviceusage.services.enable. Wenn Sie das Projekt erstellt haben, haben Sie diese Berechtigung wahrscheinlich bereits über die Rolle „Inhaber“ (roles/owner). Andernfalls können Sie diese Berechtigung über die Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin) erhalten. Informationen zum Zuweisen von Rollen.

    API aktivieren

Aufgabe in die Warteschlange stellen, um einen Workflow auszuführen

  1. Erstellen Sie ein Dienstkonto damit Cloud Tasks Anfragen an die Workflows API senden kann:

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

    Ersetzen Sie SERVICE_ACCOUNT_NAME durch einen Namen mit 6 bis 30 Zeichen. Er kann alphanumerische Zeichen in Kleinschreibung sowie Bindestriche enthalten. Nachdem Sie ein Dienstkonto erstellt haben, können Sie den Namen nicht mehr ändern.

  2. Damit das Hauptkonto, das Ihre Cloud Tasks Befehle ausführt, als IAM-Dienstkonto (Identity and Access Management) fungieren kann, weisen Sie eine Rolle zu, mit der das Hauptkonto die Identität des Dienstes übernehmen kann.

  3. Weisen Sie Ihrem neuen Dienstkonto die Rolle workflows.invoker zu, damit das Konto die Berechtigung zum Auslösen Ihres Workflows hat:

    gcloud projects add-iam-policy-binding PROJECT_NAME \
        --member serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_NAME.iam.gserviceaccount.com \
        --role roles/workflows.invoker

    Dabei gilt:

    • PROJECT_NAME: Der Name Ihres Google Cloud Projekts.
    • SERVICE_ACCOUNT_NAME: Der Name des zuvor erstellten Dienstkontos.
  4. Wenn Sie noch keine Cloud Tasks-Warteschlange haben, erstellen Sie eine.

  5. Erstellen Sie eine Aufgabe, die auf den HTTP-Endpunkt Ihres Workflows ausgerichtet ist. Verwenden Sie dazu das Dienstkonto, das Sie zuvor zur Authentifizierung erstellt haben:

    gcloud tasks create-http-task \
        --queue="QUEUE_ID" \
        --url="https://workflowexecutions.googleapis.com/v1/projects/PROJECT_NAME/locations/REGION_NAME/workflows/WORKFLOW_NAME/executions" \
        --body-content="{\"argument\": \"DOUBLE_ESCAPED_JSON_STRING\"}" \
        --oauth-service-account-email="SERVICE_ACCOUNT_NAME@PROJECT_NAME.iam.gserviceaccount.com"

    Dabei gilt:

    • QUEUE_ID: Die ID, die Sie Ihrer Cloud Tasks-Warteschlange zugewiesen haben, z. B. my-queue.
    • PROJECT_NAME: Der Name Ihres Google Cloud Projekts.
    • REGION_NAME: Die Region, in der sich Ihr Workflow befindet, z. B. us-central1.
    • WORKFLOW_NAME: Der Name des Workflows, für den Sie eine Aufgabe erstellen möchten.
    • DOUBLE_ESCAPED_JSON_STRING: Eine JSON-Codierung aller Argumente, die Sie übergeben. Die doppelten Anführungszeichen innerhalb des Strings in Anführungszeichen werden mit Schrägstrichen (\) maskiert. Beispiel: --body-content="{\"argument\": \"{\\\"foo\\\": \\\"bar\\\"}\"}"
    • SERVICE_ACCOUNT_NAME: Der Name des zuvor erstellten Dienstkontos.

    Ihre Aufgabe wird erstellt und Ihrer Cloud Tasks-Warteschlange hinzugefügt. Die Aufgabe bleibt in der Warteschlange, bis die Workflowausführung beginnt und einen HTTP-Statuscode 2xx zurückgibt. Dann betrachtet Cloud Tasks die Aufgabe als abgeschlossen.

Nächste Schritte