Esegui il richiamo delle funzioni Cloud Run o di Cloud Run

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"
            }
          }
        }
      }
    ]
      
Il parametro 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