Puoi utilizzare Cloud Tasks per mettere in coda in modo sicuro un'attività da elaborare in modo asincrono da un servizio Cloud Run. I casi d'uso tipici includono:
- Conservare le richieste in caso di incidenti di produzione imprevisti
- Attenuare i picchi di traffico ritardando il lavoro non rivolto agli utenti
- Velocizzare il tempo di risposta degli utenti delegando le operazioni in background lente a un altro servizio, ad esempio aggiornamenti del database o elaborazione batch
- Limitare la frequenza di chiamata ai servizi di backend come database e API di terze parti
Questa pagina mostra come mettere in coda le attività che vengono inviate in modo sicuro tramite il protocollo HTTPS a un servizio Cloud Run privato. Descrive il comportamento richiesto per il servizio Cloud Run privato, le autorizzazioni account di servizio richieste, la creazione della coda di attività e la creazione delle attività.
Prima di iniziare
Abilita l'API Cloud Tasks nel progetto che stai utilizzando.
Eseguire il deployment di un servizio Cloud Run per gestire le attività
Per eseguire il deployment di un servizio che accetta le attività inviate alla coda di attività,
esegui il deployment del servizio nello stesso modo di qualsiasi altro
servizio Cloud Run. Il servizio Cloud Run deve restituire un codice HTTP 200 per confermare la riuscita del completamento dell'elaborazione dell'attività.
Le attività verranno inviate a questo servizio Cloud Run come richieste HTTPS da Cloud Tasks.
La risposta a Cloud Tasks deve avvenire entro il suo timeout configurato. Per i carichi di lavoro che devono essere eseguiti più a lungo del timeout massimo di Cloud Tasks, valuta la possibilità di utilizzare i job Cloud Run.
Creare una coda di attività
Riga di comando
Per creare una coda di attività, utilizza il comando
gcloud tasks queues create QUEUE-ID
sostituendo QUEUE-ID con il nome che vuoi assegnare alla coda di attività:
deve essere univoco nel tuo progetto. Se ti viene chiesto di creare un'app App Engine nel tuo progetto, rispondi y per crearla. Cloud Tasks utilizza questa coda: assicurati di scegliere la stessa località che utilizzi per il servizio Cloud Run.
La configurazione predefinita della coda di attività dovrebbe funzionare nella maggior parte dei casi. Tuttavia, se vuoi, puoi impostare limiti di frequenza e parametri di nuovi tentativi diversi.
Terraform
Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.
Per creare una coda di attività, aggiungi quanto segue al file .tf:
Applica le modifiche inserendo terraform apply.
Creare un account di servizio da associare alle attività
Devi creare un account di servizio che verrà associato alle attività messe in coda. Questo account di servizio deve avere il ruolo IAM Invoker di Cloud Run per consentire alla coda di attività di inviare le attività al servizio Cloud Run. .
Console
Nella Google Cloud console, vai alla pagina Service account.
Seleziona un progetto.
Inserisci il nome di un account di servizio da visualizzare nella Google Cloud console.
La Google Cloud console genera un ID account di servizio in base a questo nome. Modifica l'ID, se necessario. Non potrai modificare l'ID in un secondo momento.
(Facoltativo) Inserisci una descrizione del account di servizio.
Fai clic su Crea e continua.
(Facoltativo) Fai clic sul campo Seleziona un ruolo.
Seleziona Cloud Run > Invoker di Cloud Run.
Fai clic su Fine.
Riga di comando
Crea l'account di servizio:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \ --display-name "DISPLAYED_SERVICE_ACCOUNT_NAME"
Sostituisci
- SERVICE_ACCOUNT_NAME con un nome in minuscolo univoco all'interno del tuo progetto Google Cloud , ad esempio
my-invoker-service-account-name. - DISPLAYED_SERVICE_ACCOUNT_NAME con il nome che vuoi
visualizzare per questo account di servizio, ad esempio nella console, ad esempio
My Invoker Service Account.
- SERVICE_ACCOUNT_NAME con un nome in minuscolo univoco all'interno del tuo progetto Google Cloud , ad esempio
Per Cloud Run, concedi al account di servizio l'autorizzazione per richiamare il servizio:
gcloud run services add-iam-policy-binding SERVICE \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/run.invoker
Sostituisci
- SERVICE con il nome del servizio che vuoi che venga richiamato da Cloud Tasks.
- SERVICE_ACCOUNT_NAME con il nome del account di servizio.
- PROJECT_ID con l' Google Cloud ID progetto.
Concedi al account di servizio l'accesso al progetto, affinché sia autorizzato a completare azioni specifiche sulle risorse nel progetto:
gcloud projects add-iam-policy-binding RESOURCE_ID \ --member=PRINCIPAL --role=roles/run.invoker
Sostituisci
RESOURCE_ID: l'ID progetto. Google Cloud
PRINCIPAL: un identificatore per l'entità, o membro, che in genere ha il seguente formato: PRINCIPAL_TYPE:ID. Ad esempio,
user:my-user@example.com. Per un elenco completo dei valori che PRINCIPAL può avere, consulta il riferimento Policy Binding.
Terraform
Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.
Aggiungi quanto segue al file .tf:
Crea l'account di servizio:
Per Cloud Run, concedi al account di servizio l'autorizzazione per richiamare il servizio:
Applica le modifiche inserendo terraform apply.
Creare attività HTTP con token di autenticazione
Quando crei un'attività da inviare alla coda di attività, devi specificare il progetto, la località, il nome della coda, l' indirizzo email del service account creato in precedenza da associare alle attività, l'URL del servizio Cloud Run privato che eseguirà l'attività e tutti gli altri dati che devi inviare. Puoi scegliere di codificare questi valori, anche se valori come l'ID progetto, la località e l'email dell'account di servizio possono essere recuperati dinamicamente dal server di metadati di Cloud Run.
Per i dettagli sul
corpo della richiesta di attività, consulta la
documentazione dell'API Cloud Tasks.
Tieni presente che le richieste che contengono payload di dati devono utilizzare il metodo HTTP PUT o POST.
Il codice che mette in coda le attività deve disporre delle autorizzazioni IAM necessarie, ad esempio il ruolo Cloud Tasks Enqueuer. Il codice avrà le autorizzazioni IAM necessarie se utilizzi il service account predefinito su Cloud Run.
Gli esempi seguenti creano richieste di attività che includono anche la creazione di un token di intestazione. Negli esempi vengono utilizzati i token OIDC. Per utilizzare un token OAuth, sostituisci il parametro OIDC con il parametro OAuth appropriato per la lingua durante la creazione della richiesta.
Python
Nota il file requirements.txt:
Java
Nota il file pom.xml:
Go
Node.js
Nota il file package.json:
Passaggi successivi
- Logging e visualizzazione log
- Monitoraggio dell'integrità e delle prestazioni
- Triggering da Pub/Sub
- Richiamo con HTTPS
- Esecuzione di servizi in base a una pianificazione