Pianifica una funzione Cloud Run HTTP

Questo tutorial mostra come pianificare una funzione Cloud Run HTTP prendendo di mira un endpoint HTTP in Cloud Scheduler. Utilizza una funzione HTTP quando vuoi che la tua funzione abbia un endpoint URL e risponda alle richieste HTTP, ad esempio per i webhook.

In alternativa, se crei una funzione basata su eventi basata su CloudEvents, utilizza i trigger Eventarc per pianificare la risposta della funzione agli eventi all'interno del progetto. Eventarc può attivare messaggi su un argomento Pub/Sub, modifiche in un bucket Cloud Storage e altro ancora. Per saperne di più, consulta Scrivere funzioni Cloud Run.

La pianificazione dell'esecuzione di una funzione Cloud Run è un caso d'uso comune per Cloud Scheduler. In questo tutorial, imparerai a:

  1. Creare una funzione Cloud Run HTTP.
  2. Creare un job Cloud Scheduler.
  3. Eseguire il job Cloud Scheduler.
  4. Verificare i risultati in Cloud Run Functions.

Costi

In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:

Per generare una stima dei costi in base all'utilizzo previsto, utilizza il calcolatore prezzi.

I nuovi Google Cloud utenti potrebbero avere diritto a una prova senza costi.

Prima di iniziare

  1. Accedi al tuo Google Cloud account. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei workload.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.

  4. Verify that billing is enabled for your Google Cloud project.

  5. Enable the Cloud Build, Cloud Run Admin, Cloud Scheduler APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  6. Create a service account:

    1. Ensure that you have the Create Service Accounts IAM role (roles/iam.serviceAccountCreator) and the Project IAM Admin role (roles/resourcemanager.projectIamAdmin). Learn how to grant roles.
    2. In the Google Cloud console, go to the Create service account page.

      Go to Create service account
    3. Select your project.
    4. In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.

      In the Service account description field, enter a description. For example, Service account for quickstart.

    5. Click Create and continue.
    6. Grant the following roles to the service account: Cloud Run > Cloud Run Invoker, Cloud Run > Cloud Run Builder.

      To grant a role, find the Select a role list, then select the role.

      To grant additional roles, click Add another role and add each additional role.

    7. Click Continue.
    8. Click Done to finish creating the service account.

  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  8. If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.

  9. Verify that billing is enabled for your Google Cloud project.

  10. Enable the Cloud Build, Cloud Run Admin, Cloud Scheduler APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  11. Create a service account:

    1. Ensure that you have the Create Service Accounts IAM role (roles/iam.serviceAccountCreator) and the Project IAM Admin role (roles/resourcemanager.projectIamAdmin). Learn how to grant roles.
    2. In the Google Cloud console, go to the Create service account page.

      Go to Create service account
    3. Select your project.
    4. In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.

      In the Service account description field, enter a description. For example, Service account for quickstart.

    5. Click Create and continue.
    6. Grant the following roles to the service account: Cloud Run > Cloud Run Invoker, Cloud Run > Cloud Run Builder.

      To grant a role, find the Select a role list, then select the role.

      To grant additional roles, click Add another role and add each additional role.

    7. Click Continue.
    8. Click Done to finish creating the service account.

Tieni presente che devi concedere il ruolo Invoker di Cloud Run perché in Cloud Run Functions, le autorizzazioni di chiamata sono disponibili gestendo il servizio Cloud Run sottostante.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per completare il tutorial, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:

Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.

Concedi i ruoli

Console

  1. Nella Google Cloud console vai alla pagina IAM.

    Vai a IAM
  2. Seleziona il progetto.
  3. Fai clic su Concedi l'accesso.
  4. Nel campo Nuove entità, inserisci il tuo identificatore dell'utente. In genere si tratta dell'indirizzo email utilizzato per eseguire il deployment del servizio Cloud Run.

  5. Nell'elenco Seleziona un ruolo, seleziona un ruolo.
  6. Per concedere altri ruoli, fai clic su Aggiungi un altro ruolo e aggiungi ogni ruolo aggiuntivo.
  7. Fai clic su Salva.

gcloud

Per concedere i ruoli IAM richiesti al tuo account nel tuo progetto:

     gcloud projects add-iam-policy-binding PROJECT_ID \
         --member=PRINCIPAL \
         --role=ROLE
     

Sostituisci:

  • PROJECT_NUMBER con iltuo Google Cloud progetto numero.
  • PROJECT_ID con l'ID del tuo Google Cloud progetto.
  • PRINCIPAL con l'account a cui stai aggiungendo l' associazione. In genere si tratta dell'indirizzo email che è utilizzato per eseguire il deployment del servizio Cloud Run.
  • ROLE con il ruolo che stai aggiungendo all'account del deployer.

Crea una funzione Cloud Run HTTP

Crea una funzione HTTP che viene attivata da Cloud Scheduler.

  1. Nella Google Cloud console, vai alla pagina Cloud Run > Servizi.

    Vai a Servizi

  2. Fai clic su Scrivi una funzione.

  3. Nella sezione Configura, procedi nel seguente modo:

    1. Nel campo Nome servizio, inserisci un nome per la funzione.
    2. Nell'elenco Regione, seleziona una regione.
    3. Non modificare la lingua di runtime predefinita.
    4. Per l'autenticazione, seleziona Richiedi autenticazione.

      Se è in vigore un criterio dell'organizzazione di limitazione del dominio che limita le chiamate non autenticate per il tuo progetto, dovrai accedere al servizio di cui hai eseguito il deployment come descritto in Testare i servizi privati.

      Per saperne di più, consulta Panoramica dell'autenticazione.

  4. Accetta gli altri valori predefiniti e fai clic su Crea.

  5. Copia l'URL HTTP della funzione.

Per saperne di più, incluso come eseguire il deployment di una funzione Cloud Run utilizzando Terraform, consulta Esegui il deployment di una funzione Cloud Run.

Crea un job Cloud Scheduler

Crea un job Cloud Scheduler che attiva un'azione utilizzando HTTP.

  1. Nella Google Cloud console, vai alla pagina Cloud Scheduler > Job.

    Vai a Job

  2. Fai clic su Crea job.

  3. Inserisci un nome per il job.

  4. Nell'elenco Regione, seleziona una regione.

  5. Specifica la frequenza del job utilizzando un formato unix-cron:

    30 16 * * 7
    

    Per saperne di più, consulta Formato e fuso orario dei cron job.

  6. Nell'elenco Fuso orario, seleziona un fuso orario.

  7. Fai clic su Continua.

  8. Nell'elenco Tipo target, seleziona HTTP.

  9. Nel campo URL, inserisci l'URL HTTP della funzione che hai copiato in precedenza.

  10. Nell'elenco Intestazione Auth, seleziona Aggiungi token OIDC.

  11. Nell'elenco Service account, seleziona il account di servizio che hai creato in precedenza.

  12. Nel campo Pubblico, inserisci l'URL HTTP della funzione che hai copiato in precedenza.

  13. Fai clic su Crea.

Hai creato un cron job che esegue la funzione Cloud Run alle 16:30 di domenica.

Esegui il job Cloud Scheduler

Ora puoi eseguire il job che hai creato.

  1. Nella Google Cloud console, vai alla pagina Cloud Scheduler > Job.

    Vai a Job

  2. Seleziona la casella di controllo per il job che hai creato.

  3. Fai clic su Forza esecuzione.

    Quando viene chiamato inizialmente, la configurazione e l'esecuzione del primo job creato in un progetto possono richiedere alcuni minuti.

    Dopo l'esecuzione del job, lo Stato dell'ultima esecuzione dovrebbe indicare Success.

Verifica i risultati in Cloud Run Functions

Puoi verificare che la funzione Cloud Run venga attivata ed eseguita correttamente dal cron job.

  1. Nella console Google Cloud , vai alla pagina Cloud Run > Servizi.

    Vai a Servizi

  2. Per filtrare l'elenco dei servizi per le funzioni, seleziona filter_list Filtra > Tipo di deployment > Funzione.

  3. Fai clic sul nome della funzione.

    Viene visualizzata la pagina Dettagli servizio e vengono mostrate le metriche del servizio.

  4. Fai clic sulla scheda Log.

    Dovresti visualizzare una voce di log simile a POST 200 146 B 5 ms Google-Cloud-Scheduler https://FUNCTION_NAME

Libera spazio

Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.

Elimina progetto

  1. Nella Google Cloud console, vai alla pagina Gestisci risorse.

    Vai a Gestisci risorse

  2. Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
  3. Nella finestra di dialogo, digita l'ID progetto e fai clic su Chiudi per eliminare il progetto.

Elimina le risorse del tutorial

  1. Nella Google Cloud console, vai alla pagina Cloud Scheduler > Job.

    Vai a Job

  2. Seleziona la casella di controllo accanto al job.

  3. Fai clic su Elimina e conferma l' eliminazione.

  4. Nella console Google Cloud , vai alla pagina Cloud Run > Servizi.

    Vai a Servizi

  5. Seleziona la casella di controllo accanto al servizio.

  6. Fai clic su Elimina e conferma l' eliminazione.

  7. Nella Google Cloud console, vai alla pagina Service account.

    Vai a Service account

  8. Seleziona la casella di controllo accanto al account di servizio che hai creato.

  9. Fai clic su Elimina e conferma l' eliminazione.

Passaggi successivi