Mit Cloud Scheduler können Sie einen Cloud Run-Dienst sicher nach Zeitplan starten. Der Vorgang ähnelt einem Cronjob.
Mögliche Anwendungsfälle sind:
- Daten in regelmäßigen Zeitabständen sichern
- Wiederkehrende Verwaltungsaufgaben durchführen, wie:
- Sitemap noch einmal erstellen
- Alte Daten, Inhalte, Konfigurationen oder Überarbeitungen löschen
- Inhalte zwischen Datensystemen synchronisieren
- Tägliche E-Mail-Benachrichtigungen verarbeiten
- Zugriff auf nachgelagerte Dienste verifizieren und entsprechende Berichte erstellen
- Dokumente generieren, z. B. Rechnungen
In dieser Anleitung wird gezeigt, wie Cloud Scheduler mit Cloud Run sicher im selben Google Cloud-Projekt verwendet werden kann.
Hinweis
Aktivieren Sie die Cloud Scheduler API für das Projekt, das Sie verwenden.
Dienst erstellen und bereitstellen
So erstellen Sie Dienste und stellen sie bereit:
Implementieren Sie in Ihrem Dienst den Job, den Sie nach einem Zeitplan ausführen möchten.
Notieren Sie sich, von welchem Anfragetyp der Dienst die Jobanfragen erwartet, z. B. von
GET
oderPOST
. Wenn Sie den geplanten Job erstellen, der Ihren Dienst aufruft, müssen Sie die entsprechende HTTP-Methode angeben.Achten Sie beim Bereitstellen des Dienstes, den Sie mit Cloud Scheduler verwenden, darauf, keine nicht authentifizierten Aufrufe zuzulassen.
Das folgende Beispiel zeigt, wie Sie einen Cloud Run-Dienst mit Terraform bereitstellen:
Ersetzen Sie us-docker.pkg.dev/cloudrun/container/hello
durch einen Verweis auf Ihr eigenes Container-Image.
Dienstkonto für Cloud Scheduler erstellen
Sie müssen ein Dienstkonto erstellen, das mit Cloud Scheduler verknüpft werden soll, und diesem Dienstkonto die Berechtigung zum Aufrufen Ihres Cloud Run-Dienstes erteilen. Sie können ein vorhandenes Dienstkonto verwenden, um Cloud Scheduler darzustellen, oder ein neues erstellen.
So erstellen Sie ein Dienstkonto und erteilen ihm die Berechtigung zum Aufrufen des Cloud Run-Dienstes:
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 Scheduler 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.
So erstellen Sie ein Dienstkonto mit Terraform:
Cloud Scheduler-Job erstellen
Sie müssen einen Job erstellen, der Ihren Dienst zu bestimmten Zeiten aufruft. Sie können entweder die Konsole oder die Befehlszeile verwenden:
Jobs werden entweder in der Konsole oder in der gcloud-Befehlszeile erstellt. Klicken Sie auf den entsprechenden Tab:
Console
Gehen Sie in der Konsole zur Cloud Scheduler-Seite.
Klicken Sie auf Job erstellen.
Geben Sie einen Namen für den Job an.
Geben Sie an, mit welcher Häufigkeit bzw. in welchem Intervall der Job ausgeführt werden soll. Verwenden Sie dafür einen Konfigurationsstring. Beispiel: Bei Angabe des Strings
0 */3 * * *
wird der Job alle 3 Stunden ausgeführt. Hier kann jeder beliebige mit Crontab kompatible String angegeben werden.Weitere Informationen finden Sie unter Jobzeitpläne konfigurieren.
Wählen Sie aus der Drop-down-Liste die Zeitzone für die Jobhäufigkeit aus.
Geben Sie
HTTP
als Ziel an:Geben Sie die voll qualifizierte URL Ihres Dienstes an, z. B.
https://myservice-abcdef-uc.a.run.app
. Der Job sendet Anfragen an diese URL.Geben Sie die HTTP-Methode an: Die Methode muss mit dem übereinstimmen, was der zuvor bereitgestellte Cloud Run-Dienst erwartet. Der Standardwert ist
POST
.Geben Sie optional die Daten an, die an das Ziel gesendet werden sollen. Die Daten werden im Anfragetext gesendet, wenn die HTTP-Methode
POST
oderPUT
ausgewählt wurde.Klicken Sie auf Mehr, um die Authentifizierungseinstellungen anzuzeigen.
Wählen Sie im Drop-down-Menü die Option OIDC-Token hinzufügen aus.
Kopieren Sie im Feld Dienstkonto die E-Mail-Adresse des zuvor erstellten Dienstkontos.
Kopieren Sie im Feld Zielgruppe die vollständige URL Ihres Dienstes.
Klicken Sie auf Erstellen, um den Job zu erstellen und zu speichern.
Befehlszeile
Sie müssen die OIDC-Authentifizierung verwenden, um über Cloud Scheduler auf einen authentifizierten Cloud Run-Dienst zuzugreifen. Die OIDC-Authentifizierung umfasst das Dienstkonto und die Zielgruppen-Flags. Weitere Informationen finden Sie unter Authentifizierung für HTTP-Ziele verwenden.
So erstellen Sie den Cloud Scheduler-Job:
gcloud scheduler jobs create http test-job --schedule "5 * * * *"
--http-method=HTTP-METHOD
--uri=SERVICE-URL
--oidc-service-account-email=SERVICE-ACCOUNT-EMAIL
--oidc-token-audience=SERVICE-URL
Ersetzen
- HTTP-METHOD durch die HTTP-Methode (d. h. GET, POST, PUT usw.).
- SERVICE-URL durch Ihre Dienst-URL.
- SERVICE-ACCOUNT-EMAIL durch die E-Mail-Adresse Ihres Dienstkontos.
Terraform
Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.
So erstellen Sie einen Cloud Scheduler-Job für den Cloud Run-Dienst:
Ihr Cloud Run-Dienst wird durch eine Anfrage des Cloud Scheduler-Jobs in der von Ihnen definierten Häufigkeit ausgelöst. Sie können dies in den Logs für diesen Dienst prüfen und überwachen.
Nächste Schritte
- Logs aufzeichnen und ansehen
- Monitoring von Zustand und Leistung
- Aus Pub/Sub auslösen
- Mit HTTPS aufrufen