I gestori di Cloud Tasks possono essere eseguiti su qualsiasi endpoint HTTP con un indirizzo IP esterno, ad esempio GKE, Compute Engine o anche un server web on-premise. Le tue attività possono essere eseguite su uno qualsiasi di questi servizi in modo affidabile e configurabile.
Questo documento mostra come creare in modo programmatico attività target HTTP utilizzando le librerie client Cloud Tasks e inserirle nelle code Cloud Tasks. Puoi anche creare attività di destinazione HTTP nella console Google Cloud , utilizzando Google Cloud CLI o inviando una richiesta diretta all'API Cloud Tasks. Per maggiori informazioni, vedi Creare attività.
Per le attività con target HTTP (anziché target App Engine espliciti, che sono meno comuni), esistono due modi per creare attività:
Metodo
CreateTask:devi creare esplicitamente un oggetto attività. Utilizza questo metodo se le attività nella coda hanno configurazioni di routing diverse. In questo caso, specifichi il routing a livello di attività e non puoi utilizzare il routing a livello di coda. Questo approccio utilizza il metodoCreateTask.Metodo
BufferTask:utilizza questo metodo se la coda è configurata per memorizzare nel buffer le attività davanti a un servizio. La coda deve avere un routing a livello di coda. Questo approccio utilizza il metodoBufferTask.
Per indicazioni su come scegliere tra i due metodi per creare attività HTTP, consulta Scegliere il metodo di creazione delle attività.
Crea un'attività utilizzando il metodo CreateTask
Questa sezione descrive la creazione di un'attività tramite la costruzione dell'oggetto attività. Utilizzi il metodo CreateTask.
Quando crei un'attività utilizzando il metodo CreateTask, crei e definisci esplicitamente l'oggetto attività. Devi specificare il servizio e il gestore che elaborano
l'attività.
Se vuoi, puoi trasmettere al gestore dati specifici dell'attività. Puoi anche ottimizzare la configurazione per l'attività, ad esempio pianificare un orario futuro in cui deve essere eseguita o limitare il numero di tentativi di esecuzione dell'attività in caso di errore (vedi Configurazione avanzata).
Gli esempi seguenti chiamano il metodo CreateTask per creare un'attività utilizzando le librerie client di Cloud Tasks.
C#
Go
Java
Prendi nota del file pom.xml:
Node.js
Prendi nota del file package.json:
PHP
Prendi nota del file composer.json:
Python
Prendi nota del file requirements.txt:
Ruby
Crea un'attività utilizzando il metodo BufferTask
Questa sezione descrive la creazione di un'attività inviando una richiesta HTTP. Il metodo
che utilizzi è chiamato BufferTask.
Limitazioni
Il metodo BufferTask è soggetto alle seguenti limitazioni:
Librerie client:il metodo
BufferTasknon è supportato nelle librerie client.API RPC: il metodo
BufferTasknon è supportato nell'API RPC.Routing a livello di attività:questo metodo non supporta il routing a livello di attività. Poiché non è possibile aggiungere informazioni di routing quando si crea un'attività in questo modo, devi utilizzare il routing a livello di coda (altrimenti l'attività non ha informazioni di routing). Se la tua coda non utilizza già il routing a livello di coda, consulta Configurare il routing a livello di coda per le attività HTTP.
Chiama il metodo BufferTask
Gli esempi seguenti mostrano come creare un'attività inviando una richiesta HTTP POST
all'endpoint buffer dell'API Cloud Tasks.
curl
Il seguente snippet di codice mostra un esempio di creazione di attività utilizzando il metodo BufferTask con curl:
curl -X HTTP_METHOD\ "https://cloudtasks.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/queues/QUEUE_ID/tasks:buffer" \
Sostituisci quanto segue:
HTTP_METHOD: il metodo HTTP per la richiesta, ad esempioGEToPOST.PROJECT_ID: l'ID del tuo Google Cloud progetto. Puoi ottenerlo eseguendo questo comando nel terminale:gcloud config get-value project
LOCATION: la posizione della coda.QUEUE_ID: l'ID della coda.
Python
Configura un account di servizio per l'autenticazione del gestore di destinazione HTTP
Cloud Tasks può chiamare i gestori di destinazione HTTP che richiedono l'autenticazione se disponi di un service account con le credenziali appropriate per accedere al gestore.
Puoi utilizzare il tuo account di servizio attuale se gli concedi i ruoli appropriati. Queste istruzioni riguardano la creazione di un nuovo account di servizio specifico per questa funzione. Il account di servizio esistente o nuovo utilizzato per l'autenticazione di Cloud Tasks deve trovarsi nello stesso progetto delle code Cloud Tasks.
Nella console Google Cloud , vai alla pagina Service account.
Se necessario, seleziona il progetto appropriato.
Fai clic su Crea service account.
Assegna un nome al account di servizio. Prendi nota dell'indirizzo email correlato generato nella console. Cercherai questa email in un passaggio successivo. Per copiare l'email, fai clic su Copia negli appunti . Puoi anche aggiungere una descrizione dello scopo dell'account.
Fai clic su Crea e continua.
Nell'elenco Seleziona un ruolo, cerca e seleziona Cloud Tasks Enqueuer (beta). Questo ruolo concede al service account l'autorizzazione per aggiungere attività alla coda.
Se utilizzi un Google Cloud handler, fai clic su + Aggiungi un altro ruolo per concedere al account di servizio il ruolo associato all'accesso al servizio in cui è in esecuzione l'handler. Ogni servizio all'interno di Google Cloud richiede un ruolo diverso. Ad esempio, per accedere a un gestore su Cloud Run, concedi il ruolo Cloud Run Invoker.
Per completare la creazione del account di servizio, fai clic su Fine.
Per consentire a Cloud Tasks di creare token di autenticazione utilizzando il account di servizio appena creato, devi concedere il ruolo Utente service account (
roles/iam.serviceAccountUser) all'agente di servizio principale di Cloud Tasks nel account di servizio appena creato.Nella Google Cloud console, vai alla pagina Service account.
Nella riga del account di servizio che hai appena creato, seleziona la casella di controllo e poi fai clic su Gestisci accesso.
Nel riquadro Gestisci accesso, fai clic su Aggiungi entità.
Nell'elenco Nuove entità, cerca e seleziona il service agent Cloud Tasks che avrà un indirizzo email nel formato
service-PROJECT_NUMBER@gcp-sa-cloudtasks.iam.gserviceaccount.com.Nell'elenco Seleziona un ruolo, cerca e seleziona il ruolo Utente service account.
Fai clic su Salva.
Utilizzare attività target HTTP con token di autenticazione
Per l'autenticazione tra Cloud Tasks e un gestore di destinazione HTTP che richiede tale autenticazione, Cloud Tasks crea un token di intestazione. Questo token si basa sulle credenziali del account di servizio Cloud Tasks Enqueuer, identificato dal suo indirizzo email. Il account di servizio utilizzato per l'autenticazione deve far parte dello stesso progetto in cui si trova la coda Cloud Tasks. La richiesta, con il token di intestazione, viene inviata dalla coda al gestore tramite HTTPS. Puoi utilizzare un token ID o un token di accesso.
I token ID devono essere generalmente utilizzati per qualsiasi gestore in esecuzione su Google Cloud,
ad esempio su Cloud Run Functions o Cloud Run. L'eccezione principale riguarda le API di Google ospitate su *.googleapis.com: queste API prevedono un token di accesso.
Puoi configurare l'autenticazione a livello di coda o di attività. Per configurare l'autenticazione a livello di coda, vedi Limitare l'accesso a singole code. Se l'autenticazione è configurata a livello di coda, questa configurazione esegue l'override della configurazione a livello di attività. Per configurare l'autenticazione a livello di attività, specifica un token ID (OIDC) o un token di accesso (OAuth) nell'attività stessa.
Metodo CreateTask
Gli esempi seguenti utilizzano il metodo CreateTask con le librerie client di Cloud Tasks per creare un'attività che includa anche la creazione di un token di intestazione. Negli esempi vengono utilizzati token ID.
Per utilizzare un token di accesso, sostituisci il parametro OIDC con il parametro OAuth
appropriato per la lingua durante la creazione della richiesta.
Vai
Java
Prendi nota del file pom.xml: