Aggiungere un'attività App Engine a una coda Cloud Tasks

Questa guida rapida mostra come aggiungere un' attività App Engine a una coda Cloud Tasks utilizzando l'API Cloud Tasks.

Prima di iniziare

  1. Accedi al tuo Google Cloud account. Se non hai mai utilizzato Google Cloud, crea un account per valutare il rendimento dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei carichi di lavoro.
  2. Installa Google Cloud CLI.

  3. Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

  4. Per inizializzare gcloud CLI, esegui questo comando:

    gcloud init
  5. Crea o seleziona un Google Cloud progetto.

    Ruoli richiesti per selezionare o creare un progetto

    • Seleziona un progetto: la selezione di un progetto non richiede un ruolo IAM specifico: puoi selezionare qualsiasi progetto su cui ti è stato concesso un ruolo.
    • Crea un progetto: per creare un progetto, devi disporre del ruolo Autore progetto (roles/resourcemanager.projectCreator), che contiene l' resourcemanager.projects.create autorizzazione. Scopri come concedere i ruoli.
    • Crea un Google Cloud progetto:

      gcloud projects create PROJECT_ID

      Sostituisci PROJECT_ID con un nome per il Google Cloud progetto che stai creando.

    • Seleziona il Google Cloud progetto che hai creato:

      gcloud config set project PROJECT_ID

      Sostituisci PROJECT_ID con il nome del Google Cloud progetto.

  6. Verifica che la fatturazione sia attivata per il tuo Google Cloud progetto.

  7. Abilita l'API Cloud Resource Manager e l'API Cloud Tasks:

    Ruoli richiesti per abilitare le API

    Per abilitare le API, devi disporre dell'autorizzazione serviceusage.services.enable. Se hai creato il progetto, probabilmente hai già questa autorizzazione tramite il ruolo Proprietario (roles/owner). In caso contrario, puoi ottenere questa autorizzazione tramite il ruolo Amministratore Service Usage (roles/serviceusage.serviceUsageAdmin). Scopri come concedere i ruoli.

    gcloud services enable cloudresourcemanager.googleapis.com tasks.googleapis.com
  8. Se utilizzi una shell locale, crea le credenziali di autenticazione locali per il tuo account utente:

    gcloud auth application-default login

    Non devi eseguire questa operazione se utilizzi Cloud Shell.

    Se viene restituito un errore di autenticazione e utilizzi un provider di identità (IdP) esterno, verifica di aver acceduto a gcloud CLI con la tua identità federata.

  9. Installa Google Cloud CLI.

  10. Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

  11. Per inizializzare gcloud CLI, esegui questo comando:

    gcloud init
  12. Crea o seleziona un Google Cloud progetto.

    Ruoli richiesti per selezionare o creare un progetto

    • Seleziona un progetto: la selezione di un progetto non richiede un ruolo IAM specifico: puoi selezionare qualsiasi progetto su cui ti è stato concesso un ruolo.
    • Crea un progetto: per creare un progetto, devi disporre del ruolo Autore progetto (roles/resourcemanager.projectCreator), che contiene l' resourcemanager.projects.create autorizzazione. Scopri come concedere i ruoli.
    • Crea un Google Cloud progetto:

      gcloud projects create PROJECT_ID

      Sostituisci PROJECT_ID con un nome per il Google Cloud progetto che stai creando.

    • Seleziona il Google Cloud progetto che hai creato:

      gcloud config set project PROJECT_ID

      Sostituisci PROJECT_ID con il nome del Google Cloud progetto.

  13. Verifica che la fatturazione sia attivata per il tuo Google Cloud progetto.

  14. Abilita l'API Cloud Resource Manager e l'API Cloud Tasks:

    Ruoli richiesti per abilitare le API

    Per abilitare le API, devi disporre dell'autorizzazione serviceusage.services.enable. Se hai creato il progetto, probabilmente hai già questa autorizzazione tramite il ruolo Proprietario (roles/owner). In caso contrario, puoi ottenere questa autorizzazione tramite il ruolo Amministratore Service Usage (roles/serviceusage.serviceUsageAdmin). Scopri come concedere i ruoli.

    gcloud services enable cloudresourcemanager.googleapis.com tasks.googleapis.com
  15. Se utilizzi una shell locale, crea le credenziali di autenticazione locali per il tuo account utente:

    gcloud auth application-default login

    Non devi eseguire questa operazione se utilizzi Cloud Shell.

    Se viene restituito un errore di autenticazione e utilizzi un provider di identità (IdP) esterno, verifica di aver acceduto a gcloud CLI con la tua identità federata.

  16. Il service account predefinito di App Engine viene creato automaticamente quando utilizzi App Engine. Puoi utilizzare questo account di servizio quando provi questa guida rapida. Tuttavia, a seconda della configurazione della policy dell'organizzazione, al account di servizio predefinito potrebbe non essere assegnato automaticamente il ruolo Editor nel progetto. In questo caso, devi concedere al service account i seguenti ruoli:
    1. Amministratore Artifact Registry (roles/artifactregistry.admin)
    2. Artifact Registry Create-on-Push Writer (roles/artifactregistry.createOnPushWriter)
    3. Amministratore Compute (roles/compute.admin)
    4. Writer log (roles/logging.logWriter)
    5. Storage Object Viewer (roles/storage.objectViewer)

Aggiungere un'applicazione App Engine

Quando scegli come target un'attività App Engine, prima di poter eseguire il deployment di un'app nell'ambiente standard di App Engine, devi aggiungere un'applicazione App Engine al tuo progetto.

  1. Nella Google Cloud console, vai alla pagina App Engine.

    Vai ad App Engine

  2. Nella finestra di dialogo Benvenuto in App Engine, esegui una delle seguenti operazioni:

    • Se hai già creato un'applicazione App Engine e viene visualizzato il messaggio L'applicazione App Engine è stata creata, puoi saltare i passaggi rimanenti in questa sezione e procedere con i passaggi nella sezione Installare ed eseguire il deployment dell'esempio.

      o

    • Se non hai ancora creato un'applicazione App Engine, fai clic su Crea applicazione e continua con i passaggi rimanenti in questa sezione.

  3. Seleziona una regione per la tua applicazione e prendine nota.

    Tieni presente che europe-west e us-central sono chiamate, rispettivamente, europe-west1 e us-central1 nei comandi Cloud Tasks.

  4. Non selezionare un account di servizio; viene utilizzato il service account predefinito di App Engine.

  5. Fai clic su Avanti.

    L'applicazione viene configurata e creata. Questa operazione può richiedere alcuni minuti.

  6. Non scaricare Cloud SDK; fai invece clic su Lo farò in un secondo momento.

    Dovresti visualizzare il messaggio L'applicazione App Engine è stata creata.

Installare ed eseguire il deployment dell'esempio

L'esempio Node.js utilizzato in questa guida rapida è composto da due file: createTask.js viene eseguito localmente come strumento a riga di comando per creare e aggiungere attività alla coda Tasks; server.js viene eseguito il deployment su App Engine come servizio worker per elaborare l'attività.

  1. Nel terminale, clona il repository dell'applicazione di esempio sulla tua macchina locale.

    git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
    
  2. Vai alla directory contenente il codice campione.

    cd nodejs-docs-samples/cloud-tasks/snippets
    
  3. Installa tutte le dipendenze utilizzando un gestore di pacchetti Node.js.

    Puoi utilizzare NPM:

    npm install
    

    In alternativa, puoi utilizzare Yarn:

    yarn install
    
  4. Esegui il deployment del servizio worker (server.js) nell'ambiente standard di App Engine.

    gcloud app deploy app.yaml
    
  5. Assicurati che l'app contenente il servizio sia in esecuzione.

    gcloud app browse
    
  6. Nel browser, vai al link fornito. Ad esempio:

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

    Dovresti vedere Hello, World!.

Creare una coda di attività Cloud Tasks

Utilizza il gcloud tasks queues create comando per creare la coda nell'ambiente che hai preparato.

  1. Nel terminale, crea una coda che registra tutte le operazioni.

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

    Sostituisci quanto segue:

    • QUEUE_NAME: un nome per la coda Cloud Tasks
    • REGION: la regione in cui hai eseguito il deployment dell'app
  2. Attendi l'inizializzazione della coda e poi verifica che sia stata creata correttamente.

    gcloud tasks queues describe QUEUE_NAME \
        --location=REGION
    

    L'output dovrebbe essere simile al seguente:

     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
    

Aggiungere un'attività alla coda Cloud Tasks

Crea un'attività, aggiungila alla coda che hai creato e inviala al servizio worker.

  1. Imposta le seguenti variabili di ambiente. Il client utilizza queste informazioni per creare la richiesta.

    export PROJECT_ID=PROJECT_ID
    export LOCATION_ID=REGION
    export QUEUE_ID=QUEUE_NAME
    
  2. Crea un'attività con un payload di hello e aggiungila alla coda. Il payload può essere qualsiasi dato della richiesta di cui il servizio worker ha bisogno per elaborare l'attività.

    node createTask.js $PROJECT_ID $QUEUE_ID $LOCATION_ID hello
    
  3. Verifica che l'attività sia stata eseguita visualizzando i log del servizio worker.

    gcloud app logs read
    

    I log dovrebbero avere un aspetto simile al seguente:

    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
    

Libera spazio

Per evitare che al tuo Google Cloud account vengano addebitati costi relativi alle risorse utilizzate in questa pagina, elimina il Google Cloud progetto con le risorse.

Elimina un Google Cloud progetto:

gcloud projects delete PROJECT_ID

In alternativa, puoi eliminare le risorse che hai creato:

  1. Elimina la coda Cloud Tasks:

    gcloud tasks queues delete QUEUE_NAME \
        --location=REGION
    
  2. Disattiva l'applicazione App Engine.

Passaggi successivi