Puoi utilizzare Cloud Tasks per accodare in modo sicuro un'attività elaborati in modo asincrono da un servizio Cloud Run. Casi d'uso tipici include:
- Preservare le richieste in caso di incidenti di produzione imprevisti
- attenuare i picchi di traffico ritardando il lavoro non rivolto agli utenti
- Accelerare il tempo di risposta dell'utente delegando le operazioni in background lente a un altro servizio, ad esempio aggiornamenti del database o elaborazione collettiva
- Limitare la frequenza di chiamata ai servizi di supporto 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 servizio Cloud Run privato, autorizzazioni richieste per l'account di servizio, la creazione di coda di attività e creazione di 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 come per qualsiasi altro servizio Cloud Run. Il servizio Cloud Run deve restituire un codice HTTP 200
per confermare il 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 all'interno del proprio timeout configurato. Per i carichi di lavoro che devono essere eseguiti per più tempo del timeout massimo di Cloud Tasks, valuta la possibilità di utilizzare i job Cloud Run.
Esegui il deployment con Terraform
Per scoprire come applicare o rimuovere una configurazione Terraform, consulta: Comandi Terraform di base.
Per creare un servizio, aggiungi quanto segue al file .tf
:
Creazione di 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 progetto. Se ti viene richiesto di creare un'applicazione App Engine
app nel tuo progetto, rispondi y
per crearla. Cloud Tasks utilizza
questa per la coda: assicurati di scegliere la stessa posizione che utilizzi per
il servizio Cloud Run.
Nella maggior parte dei casi, la configurazione predefinita della coda di attività dovrebbe funzionare. Tuttavia, può anche impostare diversi limiti di frequenza e, se vuoi, riprovare i parametri.
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
.
Creazione di un account di servizio da associare alle attività
Devi creare un account di servizio verrà associato alle attività accodate. Questo account di servizio deve avere il ruolo IAM Invoker di Cloud Run per consentire alla coda di attività di inviare attività al servizio Cloud Run. .
Console
Nella console Google Cloud, vai ad Account di servizio. .
Seleziona un progetto.
Inserisci il nome di un account di servizio da visualizzare nella console Google Cloud.
La console Google Cloud genera un ID account di servizio basato su questo nome. Modifica l'ID, se necessario. Non potrai modificare l'ID in un secondo momento.
(Facoltativo) Inserisci una descrizione dell'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 nome 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
visualizzato per questo account di servizio, ad esempio nella console, ad esempio
My Invoker Service Account
.
- SERVICE_ACCOUNT_NAME con nome minuscolo univoco all'interno
del tuo progetto Google Cloud, ad esempio
Per Cloud Run, concedi all'account di servizio l'autorizzazione per invocare 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 invocare da Cloud Tasks.
- SERVICE_ACCOUNT_NAME con il nome dell'account di servizio.
- PROJECT_ID con il tuo ID progetto Google Cloud.
Concedi all'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 del tuo progetto Google Cloud.
PRINCIPAL: un identificatore per il principale o il membro, che in genere ha la seguente forma:PRINCIPAL_TYPE:ID. Ad esempio,
user:my-user@example.com
. Per un elenco completo dei valori che PRINCIPAL può avere, consulta Riferimento all'associazione dei criteri.
Terraform
Per scoprire come applicare o rimuovere una configurazione Terraform, consulta: Comandi Terraform di base.
Aggiungi quanto segue al tuo file .tf
:
Crea l'account di servizio:
Per Cloud Run, concedi all'account di servizio l'autorizzazione a invocare il servizio:
Applica le modifiche inserendo terraform apply
.
Creazione di attività HTTP con token di autenticazione
Quando crei un'attività da inviare alla coda delle attività, specifica il progetto, la posizione, il nome della coda, l'indirizzo email dell'account di servizio creato in precedenza da associare alle attività, l'URL del servizio Cloud Run privato che eseguirà l'attività e tutti gli altri dati da inviare. Puoi scegliere di codificare questi valori, anche se valori come l'ID progetto, la posizione e l'email del service account possono essere recuperati dinamicamente dal server di metadati Cloud Run.
Per informazioni dettagliate 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 per farlo, ad esempio il ruolo Inserzionista di Cloud Tasks. Il codice disporrà delle autorizzazioni IAM necessarie se utilizzi l'account di servizio 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 token OIDC. Per utilizzare un token OAuth sostituisci il parametro OIDC con il parametro OAuth della lingua appropriato per creare la richiesta.
Python
Prendi nota del file requirements.txt
:
Java
Prendi nota del file pom.xml
:
Vai
Node.js
Prendi nota del file package.json
:
Passaggi successivi
- Logging e visualizzazione dei log
- Monitoraggio dell'integrità e delle prestazioni
- Attivazione da Pub/Sub
- Richiamare con HTTPS
- Eseguire servizi in base a una pianificazione