App Engine-Aufgabe einer Cloud Tasks-Warteschlange hinzufügen

Mit Cloud Tasks können Sie asynchrone Aufgaben an App Engine-Dienste senden, um Hintergrundarbeitslasten zu verarbeiten. In dieser Kurzanleitung verwenden Sie die Cloud Tasks API, um eine App Engine-Aufgabe zu erstellen und einer Cloud Tasks-Warteschlange hinzuzufügen.

Hinweis

  1. Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie einfach ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. Installieren Sie die Google Cloud CLI.

  3. Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.

  4. Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  5. Google Cloud -Projekt erstellen oder auswählen.

    Erforderliche Rollen zum Auswählen oder Erstellen eines Projekts

    • Projekt auswählen: Für die Auswahl eines Projekts ist keine bestimmte IAM-Rolle erforderlich. Sie können jedes Projekt auswählen, für das Ihnen eine Rolle zugewiesen wurde.
    • Projekt erstellen: Zum Erstellen eines Projekts benötigen Sie die Rolle „Project Creator“ (roles/resourcemanager.projectCreator), die die Berechtigung resourcemanager.projects.create enthält. Informationen zum Zuweisen von Rollen
    • So erstellen Sie ein Google Cloud Projekt:

      gcloud projects create PROJECT_ID

      Ersetzen Sie PROJECT_ID durch einen Namen für das Projekt in Google Cloud , das Sie erstellen.

    • Wählen Sie das von Ihnen erstellte Google Cloud Projekt aus:

      gcloud config set project PROJECT_ID

      Ersetzen Sie PROJECT_ID durch Ihren Google Cloud Projektnamen.

  6. Prüfen Sie, ob die Abrechnung für Ihr Google Cloud Projekt aktiviert ist.

  7. Aktivieren Sie die Cloud Resource Manager API und die Cloud Tasks API, falls sie noch nicht aktiviert sind:

    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

    gcloud services enable cloudresourcemanager.googleapis.com tasks.googleapis.com
  8. Wenn Sie eine lokale Shell verwenden, erstellen Sie lokale Authentifizierungsdaten für Ihr Nutzerkonto:

    gcloud auth application-default login

    Wenn Sie Cloud Shell verwenden, müssen Sie das nicht tun.

    Wenn ein Authentifizierungsfehler zurückgegeben wird und Sie einen externen Identitätsanbieter (IdP) verwenden, prüfen Sie, ob Sie sich mit Ihrer föderierten Identität in der gcloud CLI angemeldet haben.

  9. Installieren Sie die Google Cloud CLI.

  10. Wenn Sie einen externen Identitätsanbieter (IdP) verwenden, müssen Sie sich zuerst mit Ihrer föderierten Identität in der gcloud CLI anmelden.

  11. Führen Sie den folgenden Befehl aus, um die gcloud CLI zu initialisieren:

    gcloud init
  12. Google Cloud -Projekt erstellen oder auswählen.

    Erforderliche Rollen zum Auswählen oder Erstellen eines Projekts

    • Projekt auswählen: Für die Auswahl eines Projekts ist keine bestimmte IAM-Rolle erforderlich. Sie können jedes Projekt auswählen, für das Ihnen eine Rolle zugewiesen wurde.
    • Projekt erstellen: Zum Erstellen eines Projekts benötigen Sie die Rolle „Project Creator“ (roles/resourcemanager.projectCreator), die die Berechtigung resourcemanager.projects.create enthält. Informationen zum Zuweisen von Rollen
    • So erstellen Sie ein Google Cloud Projekt:

      gcloud projects create PROJECT_ID

      Ersetzen Sie PROJECT_ID durch einen Namen für das Projekt in Google Cloud , das Sie erstellen.

    • Wählen Sie das von Ihnen erstellte Google Cloud Projekt aus:

      gcloud config set project PROJECT_ID

      Ersetzen Sie PROJECT_ID durch Ihren Google Cloud Projektnamen.

  13. Prüfen Sie, ob die Abrechnung für Ihr Google Cloud Projekt aktiviert ist.

  14. Aktivieren Sie die Cloud Resource Manager API und die Cloud Tasks API, falls sie noch nicht aktiviert sind:

    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

    gcloud services enable cloudresourcemanager.googleapis.com tasks.googleapis.com
  15. Wenn Sie eine lokale Shell verwenden, erstellen Sie lokale Authentifizierungsdaten für Ihr Nutzerkonto:

    gcloud auth application-default login

    Wenn Sie Cloud Shell verwenden, müssen Sie das nicht tun.

    Wenn ein Authentifizierungsfehler zurückgegeben wird und Sie einen externen Identitätsanbieter (IdP) verwenden, prüfen Sie, ob Sie sich mit Ihrer föderierten Identität in der gcloud CLI angemeldet haben.

  16. Das App Engine-Standarddienstkonto wird automatisch erstellt, wenn Sie App Engine verwenden. Sie können dieses Dienstkonto verwenden, wenn Sie diese Kurzanleitung ausprobieren. Abhängig von der Konfiguration Ihrer Organisationsrichtlinie wird dem Standarddienstkonto für Ihr Projekt jedoch möglicherweise nicht automatisch die Rolle Editor zugewiesen. In diesem Fall müssen Sie dem Dienstkonto die folgenden Rollen zuweisen:
    1. Artifact Registry-Administrator (roles/artifactregistry.admin)
    2. Artifact Registry Create-on-Push Writer (roles/artifactregistry.createOnPushWriter)
    3. Compute-Administrator (roles/compute.admin)
    4. Log-Autor (roles/logging.logWriter)
    5. Storage-Objekt-Betrachter (roles/storage.objectViewer)

App Engine-Anwendung hinzufügen

Wenn Sie eine App Engine-Aufgabe als Ziel festlegen, müssen Sie Ihrem Projekt eine App Engine-Anwendung hinzufügen, bevor Sie eine App in der App Engine-Standardumgebung bereitstellen können.

  1. Rufen Sie in der Google Cloud Console die Seite App Engine auf.

    Zu App Engine

  2. Führen Sie im Dialogfeld Willkommen bei App Engine einen der folgenden Schritte aus:

    • Wenn Sie bereits eine App Engine-Anwendung erstellt haben und die Meldung Ihre App Engine-Anwendung wurde erstellt angezeigt wird, können Sie die verbleibenden Schritte in diesem Abschnitt überspringen und mit den Schritten im Abschnitt Beispiel installieren und bereitstellen fortfahren.

      oder

    • Wenn Sie noch keine App Engine-Anwendung erstellt haben, klicken Sie auf Anwendung erstellen und fahren Sie mit den verbleibenden Schritten in diesem Abschnitt fort.

  3. Wählen Sie eine Region für Ihre Anwendung aus und notieren Sie sie.

    Beachten Sie, dass europe-west und us-central in Cloud Tasks-Befehlen als europe-west1 bzw. us-central1 bezeichnet werden.

  4. Wählen Sie kein Dienstkonto aus. Es wird das App Engine-Standarddienstkonto verwendet.

  5. Klicken Sie auf Weiter.

    Die Anwendung wird konfiguriert und erstellt. Das kann einige Minuten dauern.

  6. Laden Sie das Cloud SDK nicht herunter, sondern klicken Sie auf Ich führe diesen Schritt später aus.

    Die Meldung Ihre App Engine-Anwendung wurde erstellt sollte angezeigt werden.

Beispiel installieren und bereitstellen

Das in diesem Schnellstart verwendete Node.js-Beispiel besteht aus zwei Dateien: createTask.js wird lokal als Befehlszeilentool ausgeführt, um Aufgaben zu erstellen und der Aufgabenwarteschlange hinzuzufügen. server.js wird in App Engine als Worker-Dienst bereitgestellt, um die Aufgabe zu verarbeiten.

  1. Klonen Sie in Ihrem Terminal das Repository der Beispielanwendung auf Ihren lokalen Computer.

    git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
    
  2. Wechseln Sie zu dem Verzeichnis, das den Beispielcode enthält.

    cd nodejs-docs-samples/cloud-tasks/snippets
    
  3. Installieren Sie alle Abhängigkeiten mit einem Node.js-Paketmanager.

    Sie können NPM verwenden:

    npm install
    

    Alternativ können Sie Yarn verwenden:

    yarn install
    
  4. Stellen Sie den Worker-Dienst (server.js) in der App Engine-Standardumgebung bereit.

    gcloud app deploy app.yaml
    
  5. Prüfen Sie, ob die Anwendung, die den Dienst enthält, ausgeführt wird.

    gcloud app browse
    
  6. Rufen Sie in Ihrem Browser den angegebenen Link auf. Beispiel:

    https://PROJECT_ID.uc.r.appspot.com/
    

    Hello, World! sollte angezeigt werden.

Cloud Tasks-Aufgabenwarteschlange erstellen

Verwenden Sie den Befehl gcloud tasks queues create, um die Warteschlange in der vorbereiteten Umgebung zu erstellen.

  1. Erstellen Sie im Terminal eine Warteschlange, in der alle Vorgänge protokolliert werden.

    gcloud tasks queues create QUEUE_NAME \
        --log-sampling-ratio=1.0 \
        --location=REGION
    

    Ersetzen Sie Folgendes:

    • QUEUE_NAME: ein Name für Ihre Cloud Tasks-Warteschlange
    • REGION: die Region, in der Sie Ihre Anwendung bereitgestellt haben
  2. Warten Sie, bis die Warteschlange initialisiert wurde, und prüfen Sie dann, ob sie erfolgreich erstellt wurde.

    gcloud tasks queues describe QUEUE_NAME \
        --location=REGION
    

    Die Ausgabe sollte in etwa so aussehen:

     name: projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_NAME
     rateLimits:
       maxBurstSize: 100
       maxConcurrentDispatches: 1000
       maxDispatchesPerSecond: 500.0
     retryConfig:
       maxAttempts: 100
       maxBackoff: 3600s
       maxDoublings: 16
       minBackoff: 0.100s
     state: RUNNING
    

Aufgabe zur Cloud Tasks-Aufgabenwarteschlange hinzufügen

Erstellen Sie eine Aufgabe, fügen Sie sie der von Ihnen erstellten Warteschlange hinzu und stellen Sie sie dem Worker-Dienst zur Verfügung.

  1. Legen Sie die folgenden Umgebungsvariablen fest: Der Client verwendet diese Informationen, um die Anfrage zu erstellen.

    export PROJECT_ID=PROJECT_ID
    export LOCATION_ID=REGION
    export QUEUE_ID=QUEUE_NAME
    
  2. Erstellen Sie eine Aufgabe mit einer Nutzlast von hellound fügen Sie diese Aufgabe der Warteschlange hinzu. Die Nutzlast kann beliebige Daten aus der Anfrage enthalten, die der Worker-Dienst zum Verarbeiten der Aufgabe benötigt.

    node createTask.js $PROJECT_ID $QUEUE_ID $LOCATION_ID hello
    
  3. Prüfen Sie, ob die Aufgabe ausgeführt wurde, indem Sie die Logs des Worker-Dienstes aufrufen.

    gcloud app logs read
    

    Die Logs sollten in etwa so aussehen:

    2024-06-20 15:00:00 default[20240620t143852]  "POST /log_payload HTTP/1.1" 200
    2024-06-20 15:00:00 default[20240620t143852]  App listening on port 8081
    2024-06-20 15:00:00 default[20240620t143852]  Press Ctrl+C to quit.
    2024-06-20 15:00:00 default[20240620t143852]  Received task with payload: hello
    

Bereinigen

Löschen Sie das Projekt von Google Cloud zusammen mit den Ressourcen, damit Ihrem Konto von Google Cloud die auf dieser Seite verwendeten Ressourcen nicht in Rechnung gestellt werden.

Google Cloud -Projekt löschen:

gcloud projects delete PROJECT_ID

Alternativ können Sie die von Ihnen erstellten Ressourcen löschen:

  1. Löschen Sie die Cloud Tasks-Warteschlange:

    gcloud tasks queues delete QUEUE_NAME \
        --location=REGION
    
  2. App Engine-Anwendung deaktivieren

Nächste Schritte