Mettere in coda le esecuzioni dei flussi di lavoro utilizzando Cloud Tasks

Puoi utilizzare Cloud Tasks per mettere in coda un flusso di lavoro ed eseguirlo in modo asincrono.

Cloud Tasks offre i seguenti controlli:

  • Pianificare orari di consegna specifici
  • Gestire le percentuali di pubblicazione
  • Configura il comportamento di ripetizione
  • Accedere e gestire singole attività in una coda
  • Abilitare la deduplicazione di attività

Questi controlli possono essere utili, ad esempio, per gestire le richieste che attivano un workflow e che potrebbero superare in modo imprevisto i limiti di Workflows. Configurando una coda Cloud Tasks con limiti di frequenza e tentativi, puoi assicurarti che tutte queste richieste comportino l'esecuzione del flusso di lavoro.

Per saperne di più, consulta Informazioni su Cloud Tasks.

Tieni presente quanto segue:

  • Devi basare il limite di frequenza sul limite di Workflows per le richieste write all'API di esecuzione. Se necessario, puoi richiedere una modifica della maggior parte delle quote nella console Google Cloud . Scopri di più sugli aggiustamenti della quota.

  • Cloud Tasks è progettato per fornire la consegna "at least once"; tuttavia, Workflows non garantisce l'elaborazione "exactly-once" delle richieste duplicate da Cloud Tasks.

  • Puoi rimuovere i ritardi di esecuzione e massimizzare il throughput attivando il backlog di esecuzione in Workflows. Le esecuzioni in attesa vengono eseguite automaticamente non appena diventa disponibile la quota di concorrenza di esecuzione. Per maggiori informazioni, consulta Gestire il backlog di esecuzione.

Prima di iniziare

  1. Se non hai già un flusso di lavoro da mettere in coda, creane uno.
  2. Enable the Cloud Tasks API.

    Enable the API

Mettere in coda un'attività per eseguire un flusso di lavoro

  1. Crea un service account in modo che Cloud Tasks possa effettuare richieste all'API Workflows:

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

    Sostituisci SERVICE_ACCOUNT_NAME con un nome compreso tra 6 e 30 caratteri. Può contenere caratteri alfanumerici minuscoli e trattini. Una volta creato un account di servizio, non puoi modificarne il nome.

  2. Per consentire al principal che eseguirà i comandi Cloud Tasks di agire come service account Identity and Access Management (IAM), concedi un ruolo che consenta al principal di impersonare il service account.

  3. Concedi al nuovo account di servizio il ruolo workflows.invoker in modo che l'account abbia l'autorizzazione per attivare il workflow:

    gcloud projects add-iam-policy-binding PROJECT_NAME \
        --member serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_NAME.iam.gserviceaccount.com \
        --role roles/workflows.invoker

    Sostituisci quanto segue:

    • PROJECT_NAME: il nome del tuo Google Cloud progetto.
    • SERVICE_ACCOUNT_NAME: il nome del account di servizio che hai creato in precedenza.
  4. Se non hai ancora una coda Cloud Tasks, creane una.

  5. Crea un'attività che abbia come target l'endpoint HTTP del flusso di lavoro, utilizzando l'account di servizio creato in precedenza per l'autenticazione:

    gcloud tasks create-http-task \
        --queue="QUEUE_ID" \
        --url="https://workflowexecutions.googleapis.com/v1/projects/PROJECT_NAME/locations/REGION_NAME/workflows/WORKFLOW_NAME/executions" \
        --body-content="{\"argument\": \"DOUBLE_ESCAPED_JSON_STRING\"}" \
        --oauth-service-account-email="SERVICE_ACCOUNT_NAME@PROJECT_NAME.iam.gserviceaccount.com"

    Sostituisci quanto segue:

    • QUEUE_ID: l'identificatore che hai assegnato alla tua coda Cloud Tasks, ad esempio my-queue.
    • PROJECT_NAME: il nome del tuo progetto Google Cloud.
    • REGION_NAME: la regione in cui si trova il flusso di lavoro, ad esempio us-central1.
    • WORKFLOW_NAME: il nome del flusso di lavoro per cui vuoi creare un'attività.
    • DOUBLE_ESCAPED_JSON_STRING: una codifica JSON di tutti gli argomenti che stai passando. Le virgolette doppie all'interno della stringa tra virgolette vengono indicate con barre inverse (\). Ad esempio: --body-content="{\"argument\": \"{\\\"foo\\\": \\\"bar\\\"}\"}"
    • SERVICE_ACCOUNT_NAME: il nome del service account che hai creato in precedenza.

    L'attività viene creata e aggiunta alla coda Cloud Tasks. L'attività rimane nella coda finché non viene avviata l'esecuzione del flusso di lavoro e restituisce un codice di stato HTTP 2xx, a quel punto Cloud Tasks considera l'attività completata.

Passaggi successivi