Mit Cloud Tasks können Sie eine Aufgabe sicher in die Warteschlange stellen, damit sie von einem Cloud Run-Dienst asynchron verarbeitet werden kann. Zu den typischen Anwendungsfällen gehören:
- Anfragen durch unerwartete Produktionsvorfälle beibehalten
- Traffic-Spitzen durch Verzögerung von Aufgaben ausgleichen, die nicht von Nutzern wahrgenommen werden
- Nutzerantwortzeit durch Delegieren langsamer Hintergrundvorgänge beschleunigen, die von einem anderen Dienst verarbeitet werden, z. B. Datenbankaktualisierungen oder Batchverarbeitung
- Aufrufrate von Back-up-Diensten wie Datenbanken und APIs von Drittanbietern beschränken
Auf dieser Seite wird gezeigt, wie Aufgaben, die sicher über das HTTPS-Protokoll an einen privaten Cloud Run-Dienst übertragen werden, in die Warteschlange gestellt werden. Sie beschreibt das erforderliche Verhalten für den privaten Cloud Run-Dienst, die erforderlichen Dienstkontoberechtigungen und die Erstellung von Aufgabenwarteschlangen und Aufgaben.
Hinweis
Aktivieren Sie die Cloud Tasks API für das Projekt, das Sie verwenden.
Cloud Run-Dienst zur Verarbeitung von Aufgaben bereitstellen
Wenn Sie einen Dienst bereitstellen möchten, der Aufgaben akzeptiert, die an die Aufgabenwarteschlange gesendet wurden, stellen Sie den Dienst genau wie jeden anderen Cloud Run-Dienst bereit. Der Cloud Run-Dienst muss einen HTTP200
-Code zurückgeben, um den Erfolg nach Abschluss der Aufgabenverarbeitung zu bestätigen.
Aufgaben werden als HTTPS-Anfragen von Cloud Tasks an diesen Cloud Run-Dienst übertragen.
Die Antwort auf Cloud Tasks muss innerhalb des konfigurierten Zeitlimits erfolgen. Verwenden Sie für Arbeitslasten, die länger als das maximale Cloud Tasks-Zeitlimit ausgeführt werden müssen, die Verwendung von Cloud Run-Jobs.
Mit Terraform bereitstellen
Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.
Fügen Sie der .tf
-Datei Folgendes hinzu, um einen Dienst zu erstellen:
Eine Aufgabenwarteschlange erstellen
Befehlszeile
Verwenden Sie den folgenden Befehl, um eine Aufgabenwarteschlange zu erstellen:
gcloud tasks queues create QUEUE-ID
Ersetzen Sie QUEUE-ID durch den Namen, den Sie der Aufgabenwarteschlange geben möchten. Er muss in Ihrem Projekt eindeutig sein. Wenn Sie aufgefordert werden, eine App Engine-Anwendung in Ihrem Projekt zu erstellen, antworten Sie mit y
, um sie zu erstellen. Cloud Tasks verwendet dies für die Warteschlange. Sie müssen dabei denselben Speicherort auswählen, den Sie für Ihren Cloud Run-Dienst verwenden.
Die Standardkonfiguration für Aufgabenwarteschlangen sollte in den meisten Fällen funktionieren. Sie können jedoch bei Bedarf andere Ratenbegrenzungen und Wiederholungsparameter festlegen.
Terraform
Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.
Fügen Sie der .tf
-Datei Folgendes hinzu, um eine Aufgabenwarteschlange zu erstellen:
Um die Änderungen anzuwenden, geben Sie terraform apply
ein.
Dienstkonto erstellen, das mit den Aufgaben verknüpft werden soll
Sie müssen ein Dienstkonto erstellen, das den Aufgaben in der Warteschlange zugewiesen wird. Dieses Dienstkonto muss über die IAM-Rolle "Cloud Run-Invoker" verfügen, damit die Aufgabenwarteschlange Aufgaben an den Cloud Run-Dienst übertragen kann. .
Console
Rufen Sie in der Google Cloud Console die Seite Dienstkonten auf:
Wählen Sie ein Projekt aus.
Geben Sie einen Dienstkontonamen ein, der in der Google Cloud Console angezeigt werden soll.
Die Google Cloud Console generiert anhand dieses Namens eine Dienstkonto-ID. Bearbeiten Sie gegebenenfalls die ID. Sie können die ID später nicht mehr ändern.
Optional: Geben Sie eine Beschreibung für das Dienstkonto ein.
Klicken Sie auf Erstellen und fortfahren.
Optional: Klicken Sie auf das Feld Rolle auswählen.
Wählen Sie Cloud Run > Cloud Run Invoker aus.
Klicken Sie auf Fertig.
Befehlszeile
Erstellen Sie das Dienstkonto:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \ --display-name "DISPLAYED_SERVICE_ACCOUNT_NAME"
Ersetzen
- SERVICE_ACCOUNT_NAME durch einen Namen in Kleinbuchstaben, der in Ihrem Google Cloud-Projekt eindeutig ist, z. B.
my-invoker-service-account-name
. - DISPLAYED_SERVICE_ACCOUNT_NAME durch den Namen, den Sie für dieses Dienstkonto anzeigen möchten, z. B. in der Konsole wie etwa
My Invoker Service Account
.
- SERVICE_ACCOUNT_NAME durch einen Namen in Kleinbuchstaben, der in Ihrem Google Cloud-Projekt eindeutig ist, z. B.
Erteilen Sie Ihrem Dienstkonto für Cloud Run die Berechtigung, den Dienst aufzurufen:
gcloud run services add-iam-policy-binding SERVICE \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/run.invoker
Ersetzen
- SERVICE durch den Namen des Dienstes, der von Cloud Tasks aufgerufen werden soll.
- SERVICE_ACCOUNT_NAME durch den Namen des Dienstkontos.
- PROJECT_ID durch Ihre Google Cloud-Projekt-ID.
Gewähren Sie Ihrem Dienstkonto Zugriff auf das Projekt, damit es berechtigt ist, bestimmte Aktionen für die Ressourcen in Ihrem Projekt auszuführen:
gcloud projects add-iam-policy-binding RESOURCE_ID \ --member=PRINCIPAL --role=roles/run.invoker
Ersetzen
RESOURCE_ID: Ihre Google Cloud-Projekt-ID.
PRINCIPAL: Eine Kennung für das Hauptkonto bzw. Mitglied, die normalerweise die folgende Form hat: PRINCIPAL_TYPE:ID. Beispiel:
user:my-user@example.com
. Eine vollständige Liste der für PRINCIPAL zulässigen Werte finden Sie in der Referenz zur Richtlinienbindung.
Terraform
Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.
Fügen Sie der Datei .tf
Folgendes hinzu:
Erstellen Sie das Dienstkonto:
Erteilen Sie Ihrem Dienstkonto für Cloud Run die Berechtigung, den Dienst aufzurufen:
Um die Änderungen anzuwenden, geben Sie terraform apply
ein.
HTTP-Aufgaben mit Authentifizierungstokens erstellen
Wenn Sie eine Aufgabe zum Senden an die Aufgabenwarteschlange erstellen, geben Sie das Projekt, den Speicherort, den Warteschlangennamen, die mit Aufgaben zu verknüpfende E-Mail des zuvor erstellten Dienstkontos, die URL des privaten Cloud Run-Dienstes, der die Aufgabe ausführt, und die anderen Daten an, die gesendet werden müssen. Sie können diese Werte hartcodieren, wobei Werte wie Projekt-ID, Standort und E-Mail-Adresse des Dienstkontos aus demCloud Run-Metadatenserver dynamisch abgerufen werden können.
Weitere Informationen zum Anfragetext der Aufgabe finden Sie in der Dokumentation zur Cloud Tasks API.
Anfragen, die Datennutzlasten enthalten, müssen die HTTP-Methode PUT
oder POST
verwenden.
Der Code, mit dem die Aufgaben in die Warteschlange gestellt werden, muss über die erforderlichen IAM-Berechtigungen verfügen, z. B. die Rolle "Cloud Tasks-Ersteller". Ihr Code verfügt über die erforderlichen IAM-Berechtigungen, wenn Sie das Standarddienstkonto in Cloud Run verwenden.
In den folgenden Beispielen werden Aufgabenanfragen beschrieben, die auch die Erstellung eines Header-Tokens umfassen. In den Beispielen werden OIDC-Token verwendet. Wenn Sie ein OAuth-Token verwenden, ersetzen Sie den OIDC-Parameter beim Erstellen der Anfrage durch den sprachspezifischen OAuth-Parameter.
Python
Beachten Sie die Datei requirements.txt
:
Java
Beachten Sie die Datei pom.xml
:
Go
Node.js
Beachten Sie die Datei package.json
:
Nächste Schritte
- Logs aufzeichnen und ansehen
- Monitoring von Zustand und Leistung
- Aus Pub/Sub auslösen
- Mit HTTPS aufrufen
- Dienste nach Zeitplan ausführen