Cloud Tasks-Handler können auf jedem HTTP-Endpunkt mit externer IP-Adresse ausgeführt werden Adresse wie GKE Compute Engine oder sogar einen lokalen Webserver. Ihr können Aufgaben in einem zuverlässigen, konfigurierbaren Mode.
Auf dieser Seite wird gezeigt, wie grundlegende HTTP-Zielaufgaben programmatisch erstellt werden. und platzieren Sie sie Cloud Tasks-Warteschlangen
Bei Aufgaben mit HTTP-Zielen (im Gegensatz zu expliziten App Engine-Zielen) weniger häufig vorkommen), gibt es zwei Möglichkeiten, Aufgaben zu erstellen:
BufferTask
-Methode: Verwenden Sie diese Methode, wenn Ihre Warteschlange für Folgendes eingerichtet ist: um Aufgaben vor einem Dienst zu puffern. Die Warteschlange muss ein Routing auf Warteschlangenebene haben. Für die meisten Anwendungsfälle ist dies der beste Ansatz. Bei diesem Ansatz wird die MethodeBufferTask
-Methode.CreateTask
-Methode:Diese Methode ist komplexer. Du musst explizit ein Aufgabenobjekt zu erstellen. Verwenden Sie diese Methode, wenn die Aufgaben in der Warteschlange unterschiedliche Routingkonfigurationen haben. In diesem Fall geben Sie das Routing an Aufgabenebene und kann kein Routing auf Warteschlangenebene verwenden. Bei diesem Ansatz wird die MethodeCreateTask
-Methode.
Grundlegende Aufgabenerstellung (Methode BufferTask
)
In diesem Abschnitt wird beschrieben, wie Sie eine Aufgabe durch Senden einer HTTP-Anfrage erstellen. Die Methode
die Sie verwenden, heißt BufferTask
.
Beschränkungen
Die Methode BufferTask
unterliegt den folgenden Einschränkungen:
Clientbibliotheken:Die Methode
BufferTask
wird im Client nicht unterstützt. Bibliotheken.RPC API:Die Methode
BufferTask
wird in der RPC API nicht unterstützt.Routing auf Aufgabenebene: Diese Methode unterstützt kein Routing auf Aufgabenebene. Seit es nirgendwo gibt, um Routeninformationen hinzuzufügen, wenn Sie auf diese Weise eine Aufgabe erstellen. muss Routing auf Warteschlangenebene verwenden (andernfalls hat die Aufgabe keine Routinginformationen). Wenn für Ihre Warteschlange noch kein Routing auf Warteschlangenebene verwendet wird, lesen Sie den Abschnitt Konfigurieren Sie das Routing auf Warteschlangenebene für HTTP-Aufgaben.
Methode BufferTask
aufrufen
Die folgenden Beispiele zeigen, wie Sie eine Aufgabe durch Senden eines HTTP-POST
erstellen.
Anfrage an die Cloud Tasks API
buffer
-Endpunkt.
Python
curl
Das folgende Code-Snippet zeigt ein Beispiel für die Aufgabenerstellung mit dem
BufferTask
-Methode mit curl
:
curl -X HTTP_METHOD\ "https://cloudtasks.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/queues/QUEUE_ID/tasks:buffer" \
Ersetzen Sie Folgendes:
HTTP_METHOD
: Die HTTP-Methode für Ihre Anfrage, für BeispielGET
oderPOST
.PROJECT_ID
: ID Ihres Google Cloud-Projekts. Sie können sie abrufen, indem Sie Folgendes in Ihrem Terminal ausführen:gcloud config get-value project
LOCATION
: Der Speicherort deiner Warteschlange.QUEUE_ID
: Die ID der Warteschlange.
Erweiterte Aufgabenerstellung (Methode CreateTask
)
In diesem Abschnitt wird erläutert, wie Sie eine Aufgabe mithilfe des Aufgabenobjekts erstellen. Sie verwenden
die Methode CreateTask
.
Wenn Sie eine Aufgabe mit der Methode CreateTask
erstellen, erstellen Sie und
das Aufgabenobjekt zu definieren. Sie müssen den Dienst und den Handler angeben, die
die Aufgabe zu erledigen.
Optional können Sie aufgabenspezifische Daten an den Handler übergeben. Sie können auch die Feinabstimmung der Konfiguration für die Aufgabe, z. B. das Planen eines Zeitpunkts in der Zukunft, zu dem die Aufgabe ausgeführt werden soll oder die Anzahl der Wiederholungen bei Fehlversuchen zu begrenzen Weitere Informationen finden Sie unter Erweiterte Konfiguration.
In den folgenden Beispielen wird die Methode CreateTask
aufgerufen, um eine Aufgabe mithilfe des
Cloud Tasks-Clientbibliotheken
C#
Python
Beachten Sie die Datei requirements.txt
:
Java
Beachten Sie die Datei pom.xml
:
PHP
Beachten Sie die Datei composer.json
:
Go
Node.js
Beachten Sie die Datei package.json
:
Ruby
Dienstkonten für die HTTP-Ziel-Handler-Authentifizierung einrichten
Cloud Tasks kann HTTP-Ziel-Handler aufrufen, für die Folgendes erforderlich ist: Authentifizierung, wenn Sie ein Dienstkonto haben mit den entsprechenden Anmeldedaten, um auf den Handler zuzugreifen.
Wenn Sie ein aktuelles Dienstkonto haben, das Sie verwenden möchten, können Sie das tun. Gewähren Sie ihm einfach die entsprechenden Rollen. In dieser Anleitung wird das Erstellen eines neuen Dienstkontos speziell für diese Funktion beschrieben. Das vorhandene oder neue verwendete Dienstkonto für die Cloud Tasks-Authentifizierung muss sich im selben Projekt wie Ihr Cloud Tasks-Warteschlangen
Rufen Sie in der Google Cloud Console die Seite Dienstkonten auf:
Wählen Sie bei Bedarf das entsprechende Projekt aus.
Klicken Sie auf Dienstkonto erstellen.
Geben Sie im Abschnitt Dienstkontodetails einen Namen für das Konto ein. Die in der Konsole ein zugehöriger E-Mail-Kontoname für das Konto erstellt wird. So können Sie auf das Konto verweisen. Sie können auch eine Beschreibung des Kontos hinzufügen. für die Sie angegeben haben. Klicken Sie auf Erstellen und fortfahren.
Klicken Sie im Abschnitt Diesem Dienstkonto Zugriff auf das Projekt gewähren auf Wählen Sie eine Rolle aus. Suchen Sie nach Cloud Tasks-Ersteller und wählen Sie ihn aus. Diese Rolle gewährt dem Dienstkonto die Berechtigung, Aufgaben zur Warteschlange hinzuzufügen.
Klicken Sie auf + Weitere Rolle hinzufügen.
Klicken Sie auf Rolle auswählen. Suchen Sie nach Dienstkontonutzer und wählen Sie die Option aus. Dieses ermöglicht dem Dienstkonto, die Warteschlange zum Erstellen von Tokens für mit den Anmeldedaten des Dienstkontos.
Wenn Ihr Handler Teil von Google Cloud ist, weisen Sie dem Dienstkonto die Rolle zu, die mit dem Zugriff auf den Dienst verknüpft ist, auf dem der Handler ausgeführt wird. Jeder Dienst innerhalb von Google Cloud benötigt eine andere Rolle. Um beispielsweise auf einen Handler in Cloud Run zuzugreifen, ist die Rolle Cloud Run Invoker erforderlich usw. Sie können das gerade erstellte Dienstkonto oder ein anderes Dienstkonto in Ihrem Projekt verwenden.
Klicken Sie auf Fertig, um das Erstellen des Dienstkontos abzuschließen.
Cloud Tasks selbst muss ein eigenes Dienstkonto haben, dem die Rolle Cloud Tasks Service Agent
zugewiesen ist. Auf diese Weise können Header-Tokens basierend auf den Anmeldedaten generiert werden, die mit dem Cloud Tasks-Dienstkonto verknüpft sind, um sich bei Ihrem Handler-Ziel zu authentifizieren. Das Cloud Tasks-Dienstkonto mit dieser Rolle wird automatisch erstellt, wenn Sie die Cloud Tasks API aktivieren, es sei denn, Sie haben sie vor dem 19. März 2019 aktiviert. In diesem Fall müssen Sie die Rolle manuell hinzufügen.
HTTP-Zielaufgaben mit Authentifizierungstokens verwenden
Authentifizierung zwischen Cloud Tasks und einem HTTP-Ziel
Handler, der eine solche Authentifizierung erfordert, erstellt Cloud Tasks
ein Header-Token. Dieses Token basiert auf den Anmeldedaten im
Cloud Tasks Enqueuer
-Dienstkonto, das durch seine E-Mail-Adresse identifiziert wird. Die
Das für die Authentifizierung verwendete Dienstkonto muss zum selben
Projekt, in dem sich Ihre Cloud Tasks-Warteschlange befindet. Die Anfrage mit dem Parameter
-Header-Token, wird über HTTPS von der Warteschlange an den Handler gesendet. Sie können entweder
ein ID-Token
oder ein Zugriffstoken.
ID-Tokens sollten im Allgemeinen für jeden Handler verwendet werden, der in Google Cloud ausgeführt wird,
beispielsweise in Cloud Functions oder Cloud Run. Die größte Ausnahme ist,
Für Google APIs, die auf *.googleapis.com
gehostet werden: Diese APIs erwarten ein Zugriffstoken.
Sie können die Authentifizierung auf Warteschlangen- oder auf Aufgabenebene konfigurieren. Bis Authentifizierung auf Warteschlangenebene konfigurieren, siehe Cloud Tasks-Warteschlangen erstellen Wenn die Authentifizierung auf Warteschlangenebene konfiguriert ist, überschreibt diese Konfiguration auf Aufgabenebene konfigurieren. Um die Authentifizierung auf Aufgabenebene zu konfigurieren, geben Sie entweder ID-Token (OIDC) oder Zugriffstoken (OAuth-Token) in der Aufgabe selbst.
Methode BufferTask
In den folgenden Beispielen werden die Standardanmeldedaten für Anwendungen zur Authentifizierung verwendet, wenn
mithilfe der Methode BufferTask
zum Erstellen einer Aufgabe.
Python
Geben Sie im folgenden Codebeispiel den Wert Ihres Authentifizierungstokens an.
curl
curl -X HTTP_METHOD\ "https://cloudtasks.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/queues/QUEUE_ID/tasks:buffer" \ -H "Authorization: Bearer ACCESS_TOKEN"
Ersetzen Sie Folgendes:
HTTP_METHOD
: Die HTTP-Methode für Ihre Anfrage, für BeispielGET
oderPOST
.PROJECT_ID
: ID Ihres Google Cloud-Projekts. Sie können sie abrufen, indem Sie Folgendes in Ihrem Terminal ausführen:gcloud config get-value project
LOCATION
: Der Speicherort deiner Warteschlange.QUEUE_ID
: Die ID der Warteschlange.ACCESS_TOKEN
: Ihr Zugriffstoken. Sie erhalten diese Führen Sie Folgendes in Ihrem Terminal aus:gcloud auth application-default login
gcloud auth application-default print-access-token
Methode CreateTask
In den folgenden Beispielen wird die Methode CreateTask
mit dem Parameter
Cloud Tasks-Clientbibliotheken verwenden, um eine Aufgabe zu erstellen,
beinhaltet die Erstellung eines Header-Tokens. In den Beispielen werden ID-Tokens verwendet.
Ersetzen Sie den OIDC-Parameter durch die entsprechende Sprache, um ein Zugriffstoken zu verwenden
OAuth-Parameter beim Erstellen der Anfrage.
Python
Beachten Sie die Datei requirements.txt
:
Java
Beachten Sie die Datei pom.xml
:
Go
Node.js
Beachten Sie die Datei package.json
:
Eigene HTTP-Zielaufgaben-Handler bereitstellen
HTTP Target-Aufgaben-Handler sind den App Engine-Aufgaben-Handlern mit den folgenden Ausnahmen sehr ähnlich:
- Zeitüberschreitungen: Für alle HTTP-Ziel-Task-Handler beträgt das Standardzeitlimit 10 Minuten. mit einer Dauer von maximal 30 Minuten.
- Authentifizierungslogik: wenn Sie eigenen Code in der Ziel-URL schreiben. zur Validierung des Tokens verwenden, sollten Sie ein ID-Token verwenden. Weitere Informationen dazu finden Sie unter OpenID Connect im Abschnitt Validating an ID token.
Headers: Eine HTTP-Zielanfrage enthält von der Warteschlange festgelegte Header, die Folgendes enthalten: aufgabenspezifische Informationen, die der Handler verwenden kann. Diese ähneln den in App Engine-Aufgabenanfragen festgelegten Headern, sind jedoch nicht mit diesen identisch. Diese Header enthalten nurnur Informationen. Sie sollten nicht verwendet werden, Identitätsquellen.
Wenn diese Header in einer externen Nutzeranfrage an Ihre Anwendung vorhanden waren, werden sie durch die internen ersetzt. Die einzige Ausnahme dabei sind Anfragen von angemeldeten Administratoren der Anwendung, die Header für Testzwecke festlegen dürfen.
HTTP-Zielanfragen enthalten immer die folgenden Header:
Header Beschreibung X-CloudTasks-QueueName
Der Name der Warteschlange. X-CloudTasks-TaskName
Der "kurze" Name der Aufgabe oder, wenn bei der Erstellung kein Name festgelegt wurde, eine vom System generierte eindeutige ID. Dies ist der my-task-id
-Wert im vollständigen Aufgabennamen, also task_name =projects/my-project-id/locations/my-location/queues/my-queue-id/tasks/my-task-id
.X-CloudTasks-TaskRetryCount
Die Anzahl der Ausführungsversuche für diese Aufgabe. Für den ersten Versuch lautet dieser Wert 0
. Diese Zahl umfasst Versuche, bei denen die Aufgabe aufgrund von 5XX-Fehlercodes fehlgeschlagen ist und die Ausführungsphase nicht erreicht wurde.X-CloudTasks-TaskExecutionCount
Die Gesamtzahl der Antworten, die die Aufgabe vom Handler erhalten hat. Da Cloud Tasks eine Aufgabe löscht, sobald eine erfolgreiche Antwort empfangen wurde, sind alle vorherigen Handler-Antworten fehlgeschlagen. Diese Zahl umfasst keine Fehler aufgrund von 5XX-Fehlercodes. X-CloudTasks-TaskETA
Die geplante Zeit für eine Aufgabe, angegeben in Sekunden seit dem 1. Januar 1970. Außerdem können Anfragen von Cloud Tasks die folgenden Header enthalten:
Header Beschreibung X-CloudTasks-TaskPreviousResponse
Der HTTP-Antwortcode aus der vorangegangenen Wiederholung. X-CloudTasks-TaskRetryReason
Der Grund für die Wiederholung der Aufgabe.
Cloud Tasks-Dienst-Agent-Rolle manuell zu Ihrem Cloud Tasks-Dienstkonto hinzufügen
Dies ist nur erforderlich, wenn Sie die Cloud Tasks API vor dem 19. März 2019 aktiviert haben.
Konsole verwenden
- Suchen Sie auf der Seite mit den Google Cloud-Projekteinstellungen nach der Projektnummer Ihres Projekts.
- Notieren Sie die Nummer.
- Öffnen Sie die Seite der IAM-Admin-Konsole.
- Klicken Sie auf Zugriff erlauben. Der Bildschirm Zugriff gewähren wird geöffnet.
Fügen Sie im Bereich Hauptkonten hinzufügen eine E-Mail-Adresse im folgenden Format hinzu:
service-PROJECT_NUMBER@gcp-sa-cloudtasks.iam.gserviceaccount.com
Ersetzen Sie PROJECT_NUMBER durch die Projektnummer von oben.
Suchen Sie im Bereich Rollen zuweisen nach Cloud Tasks-Dienst-Agent
Klicken Sie auf Speichern.
gcloud verwenden
Ermitteln Sie Ihre Projektnummer:
gcloud projects describe PROJECT_ID --format='table(projectNumber)'
Ersetzen Sie PROJECT_ID durch Ihre Projekt-ID.
Notieren Sie die Nummer.
Weisen Sie dem Cloud Tasks-Dienstkonto die Rolle
Cloud Tasks Service Agent
mit der Projektnummer zu, die Sie kopiert haben:gcloud projects add-iam-policy-binding PROJECT_ID --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloudtasks.iam.gserviceaccount.com --role roles/cloudtasks.serviceAgent
Ersetzen Sie PROJECT_ID durch Ihre Projekt-ID und PROJECT_NUMBER durch die Projektnummer von oben.
Erweiterte Konfiguration
In Ihrer Aufgabe können Sie eine Reihe von Attributen konfigurieren. Für eine vollständige sehen Sie sich die Ressourcendefinition
Beispiele für Attribute, die Sie anpassen können:
- Benennung: Wenn Sie einen Namen für die Aufgabe, Cloud Tasks kann diesen Namen verwenden, um die Deduplizierung von Aufgaben, Allerdings kann die dafür erforderliche Verarbeitung die Latenz erhöhen.
- Planung:Sie können eine Aufgabe für einen späteren Zeitpunkt planen. Nur unterstützt
für
CreateTask
(nicht unterstützt fürBufferTask
) - Wiederholungskonfiguration: Konfigurieren Sie das Wiederholungsverhalten für eine Aufgabe, wenn die Aufgabe
schlägt fehl. Nur unterstützt für
CreateTask
(nicht unterstützt fürBufferTask
)
Nächste Schritte
- Weitere Informationen zu HTTP-Zielaufgaben finden Sie in der RPC API-Referenz.
- Weitere Informationen zu HTTP-Zielaufgaben finden Sie in der Referenz zur REST API.