La chiamata o l'invocazione di un servizio Google Cloud come le funzioni Cloud Run o Cloud Run da Workflows avviene tramite una richiesta HTTP. I metodi di richiesta HTTP più comuni hanno una scorciatoia di chiamata (come
http.get
e http.post), ma puoi creare
qualsiasi tipo di richiesta HTTP impostando il campo call
su http.request
e
specificando il tipo di richiesta utilizzando il campo method
. Per maggiori informazioni, consulta Eseguire una richiesta HTTP.
Per inviare richieste autenticate:
Il flusso di lavoro deve essere associato a un account di servizio a cui sono stati concessi uno o più ruoli Identity and Access Management (IAM) contenenti le autorizzazioni richieste.
Devi aggiungere esplicitamente le informazioni di autenticazione alla definizione del flusso di lavoro. Per impostazione predefinita, le richieste HTTP non contengono token di identità o di accesso per motivi di sicurezza.
Per ulteriori informazioni, vedi Concedi l'autorizzazione dei flussi di lavoro per l'accesso alle risorse Google Cloud.
Quando chiamare un servizio
Come fai a sapere quando creare passaggi in YAML o JSON utilizzando Workflows o quando creare un servizio, ad esempio un servizio Cloud Run o una funzione Cloud Run?
Utilizza Workflows per chiamare i servizi dal flusso di lavoro stesso e gestire i risultati, nonché per eseguire attività semplici come effettuare una chiamata HTTP. I flussi di lavoro possono richiamare servizi, analizzare le risposte e creare input per altri servizi collegati. La chiamata di un servizio ti consente di evitare le complicazioni di chiamate aggiuntive, dipendenze aggiuntive e servizi che chiamano servizi.
Crea servizi per svolgere qualsiasi attività troppo complessa per Workflows, ad esempio l'implementazione di logica di business riutilizzabile, calcoli complessi o trasformazioni non supportate dalle espressioni di Workflows e dalla relativa libreria standard. Un caso complicato di solito è più semplice da implementare nel codice, anziché utilizzare YAML o JSON e la sintassi di Workflows.
Richiama servizi limitati al traffico interno in entrata
Workflows possono richiamare le funzioni di Cloud Run o Cloud Run nello stesso progetto Google Cloud con traffico in entrata limitato al traffico interno. Con questa configurazione, i servizi non sono raggiungibili da internet, ma possono essere raggiunti da Workflows.
Per applicare queste restrizioni, devi modificare le impostazioni di traffico in entrata del tuo
un servizio o una funzione. Tieni presente che il servizio Cloud Run deve essere
raggiunto al relativo URL run.app
e non in un dominio personalizzato. Per ulteriori informazioni, consulta Limitazione del traffico in entrata (per Cloud Run) e Configurazione delle impostazioni di rete (per le funzioni Cloud Run). Non sono necessarie altre modifiche al flusso di lavoro.
Utilizza un account di servizio con le autorizzazioni richieste
Quando invii richieste ad altri servizi Google Cloud, il flusso di lavoro deve Essere associato a un account di servizio che dispone delle autorizzazioni corrette per l'accesso. le risorse richieste. Per sapere quale account di servizio è associato a un per un flusso di lavoro esistente, consulta Verificare l'account di servizio associato di un flusso di lavoro.
Quando imposti un account di servizio, associ l'identità richiedente all'account di servizio alla risorsa a cui vuoi concedere l'accesso, rendi l'identità richiedente un principal della risorsa, quindi assegnale il ruolo appropriato. Il ruolo definisce le autorizzazioni di cui dispone l'identità nel contesto della risorsa.
Ad esempio, per configurare una funzione Cloud Run ricevente in modo che accetti
da una funzione o un servizio di chiamata specifico, devi aggiungere
l'account di servizio del chiamante come entità della funzione ricevente e concedere che
l'entità Invoker delle funzioni Cloud Run (roles/cloudfunctions.invoker
)
ruolo. Analogamente, per configurare un account di servizio per Cloud Run,
concedere a quell'account di servizio l'Invoker di Cloud Run
(roles/run.invoker
). Per saperne di più, consulta
informazioni di autenticazione per le funzioni di Cloud Run
o la panoramica dell'autenticazione di Cloud Run.
Richiama le funzioni di Cloud Run (2ª generazione)
Nelle funzioni Cloud Run (2ª generazione.), sono disponibili le autorizzazioni di chiamata gestendo
dal servizio Cloud Run sottostante. Se il tuo flusso di lavoro richiama un servizio di funzioni Cloud Run (2ª gen.), non devi concedere all'account di servizio dell'autore della chiamata il ruolo Invoker (roles/cloudfunctions.invoker
) per le funzioni Cloud Run. Devi invece concedere
Ruolo Invoker di Cloud Run (roles/run.invoker
).
Per ulteriori informazioni, consulta Confronto delle versioni di Cloud Run Functions.
Aggiungere informazioni di autenticazione al flusso di lavoro
Quando si effettuano richieste alle funzioni Cloud Run o a Cloud Run, e usare OIDC per l'autenticazione.
Per effettuare una richiesta HTTP utilizzando OIDC, aggiungi una sezione auth
alla sezione args
della definizione del flusso di lavoro, dopo aver specificato l'URL. In questo esempio,
per richiamare una funzione Cloud Run:
YAML
- step_A: call: http.get args: url: https://us-central1-project.cloudfunctions.net/functionA query: firstNumber: 4 secondNumber: 6 operation: sum auth: type: OIDC audience: OIDC_AUDIENCE
JSON
[ { "step_A": { "call": "http.get", "args": { "url": "https://us-central1-project.cloudfunctions.net/functionA", "query": { "firstNumber": 4, "secondNumber": 6, "operation": "sum" }, "auth": { "type": "OIDC", "audience": "OIDC_AUDIENCE" } } } } ]
audience
può essere utilizzato per specificare il segmento di pubblico OIDC per il token.
Per impostazione predefinita, è impostato sullo stesso valore di url
. ma deve essere impostato su
all'URL principale del tuo servizio. Ad esempio: https://region-project.cloudfunctions.net/hello_world
.
Specifica il tipo di media per i dati di risposta
Se l'intestazione Content-Type
della risposta specifica un
application/json
, la risposta JSON archiviata in un
viene convertita automaticamente in una mappa a cui è possibile accedere.
Se necessario, modifica l'API chiamata per specificare un
application/json
tipo di media per l'Content-Type
intestazione di risposta. In caso contrario, puoi utilizzare le funzioni
json.decode
e text.encode
per
convertire il corpo della risposta in una mappa. Ad esempio:
json.decode(text.encode(RESPONSE_FROM_API))
Per ulteriori informazioni, vedi Accedi ai dati della risposta HTTP salvati in una variabile.
Esegui job Cloud Run
A differenza dei servizi Cloud Run, I job Cloud Run non restano in ascolto o per gestire le richieste HTTP. Per eseguire job Cloud Run da un flusso di lavoro, utilizza il connettore API Cloud Run Admin.
Per un esempio end-to-end dell'esecuzione di un job Cloud Run che elabora i dati passati come variabili di ambiente al job, vedi Eseguire un job Cloud Run utilizzando Workflows.
Per un esempio end-to-end dell'esecuzione di un job Cloud Run che elabora i dati archiviati in un bucket Cloud Storage, consentendoti criptare i dati utilizzando le chiavi di crittografia gestite dal cliente (CMEK), consulta Esegui un job Cloud Run che elabora i dati degli eventi in Cloud Storage.
Passaggi successivi
- Creare un endpoint HTTP per la funzione
- Attiva un servizio ospitato su Cloud Run
- Tutorial: usa Workflows con Cloud Run e Cloud Functions