Dienste nach Zeitplan ausführen

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.

Vorbereitung

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:

  1. Implementieren Sie in Ihrem Dienst den Job, den Sie nach einem Zeitplan ausführen möchten.

  2. Notieren Sie sich, von welchem Anfragetyp der Dienst die Jobanfragen erwartet, z. B. von GET oder POST. Wenn Sie den geplanten Job erstellen, der Ihren Dienst aufruft, müssen Sie die entsprechende HTTP-Methode angeben.

  3. Wenn Sie Cloud Run for Anthos in Google Cloud verwenden, müssen Sie die Identität im Container bestätigen. Weitere Informationen dazu finden Sie im IAP-Beispielcode.

  4. Achten Sie beim Bereitstellen des Dienstes, den Sie mit Cloud Scheduler verwenden, darauf, keine nicht authentifizierten Aufrufe zuzulassen.

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

  1. Rufen Sie in der Cloud Console die Seite Dienstkontoschlüssel erstellen auf.

    Seite "Dienstkonto erstellen"

  2. Wählen Sie aus der Dienstkontoliste die Option Neues Dienstkonto aus.

  3. Geben Sie im Feld Name des Dienstkontos den Namen ein, den Sie für das Dienstkonto verwenden möchten.

  4. Klicken Sie auf Erstellen.

  5. Kopieren Sie die E-Mail-Adresse des Dienstkontos, die Sie in den folgenden Schritten verwenden möchten.

  6. Klicken Sie auf Weiter, wenn Sie dazu aufgefordert werden, Berechtigungen anzugeben.

  7. Wechseln Sie in der Cloud Console zur Seite Cloud Run-Dienste.

    Zur Seite "Dienste"

  8. Wählen Sie Ihren Dienst in der angezeigten Liste aus.

  9. Klicken Sie gegebenenfalls ganz rechts auf der Seite auf die Ein-/Aus-Schaltfläche Infofeld anzeigen/Infofeld ausblenden, um Informationen anzuzeigen.

  10. Suchen Sie den Tab Berechtigungen und klicken Sie dort auf Mitglied hinzufügen.

  11. Fügen Sie die E-Mail-Adresse Ihres Dienstkontos in das Feld Neue Mitglieder ein.

  12. Wählen Sie im Drop-down-Menü "Rolle" Cloud Run > Cloud Run Invoker aus.

  13. Klicken Sie auf Speichern.

Befehlszeile

  1. Erstellen Sie das Dienstkonto:

    gcloud iam service-accounts create SERVICE-ACCOUNT_NAME \
       --display-name "DISPLAYED-SERVICE-ACCOUNT_NAME"

    Ersetzen Sie

    • 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.
  2. 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 Sie:

    • 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.

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:

Konsole

  1. Gehen Sie in der Konsole zur Cloud Scheduler-Seite.

    Zu Cloud Scheduler

  2. Klicken Sie auf Job erstellen.

    Screenshot

  3. Geben Sie einen Namen für den Job an.

  4. 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.

  5. Wählen Sie aus der Drop-down-Liste die Zeitzone für die Jobhäufigkeit aus.

  6. Geben Sie HTTP als Ziel an:

    1. 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.

    2. Geben Sie die HTTP-Methode an: Die Methode muss mit dem übereinstimmen, was der zuvor bereitgestellte Cloud Run-Dienst erwartet. Der Standardwert ist POST.

    3. Geben Sie optional die Daten an, die an das Ziel gesendet werden sollen. Die Daten werden im Anfragetext gesendet, wenn die HTTP-Methode POST oder PUT ausgewählt wurde.

    4. Klicken Sie auf Mehr, um die Authentifizierungseinstellungen anzuzeigen.

    5. Wählen Sie im Drop-down-Menü die Option OIDC-Token hinzufügen aus.

    6. Kopieren Sie im Feld Dienstkonto die E-Mail-Adresse des zuvor erstellten Dienstkontos.

    7. Kopieren Sie im Feld Zielgruppe die vollständige URL Ihres Dienstes.

  7. Klicken Sie auf Erstellen, um den Job zu erstellen und zu speichern.

gcloud

  1. Erstellen Sie den Job:

    gcloud beta 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 Sie:

    • HTTP-METHOD durch die HTTP-Methode, z. B. GET, POST, PUT usw.
    • SERVICE-URL durch Ihre Dienst-URL.
    • SERVICE-ACCOUNT-EMAIL durch die E-Mail-Adresse Ihres Dienstkontos.

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.

Weitere Informationen