Questa pagina descrive come eseguire job Cloud Run in base a una pianificazione utilizzando crontab.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per le operazioni descritte in questa pagina, chiedi all'amministratore di concederti uno dei seguenti ruoli IAM sul tuo job Cloud Run:
- Per eseguire job utilizzando Google Cloud CLI: Cloud Run Invoker (
roles/run.invoker) sul job Cloud Run. - Per eseguire job utilizzando la Cloud de Confiance console, per sostituire le configurazioni dei job o per annullare le esecuzioni dei job: Cloud Run Developer (
roles/run.developer) sul job Cloud Run.
Per un elenco di ruoli e autorizzazioni IAM associati a Cloud Run, consulta Ruoli IAM di Cloud Run e Autorizzazioni IAM di Cloud Run. Se il tuo job Cloud Run interagisce con Cloud de Confiance API, come le librerie client Cloud, consulta la guida alla configurazione dell'identità del servizio. Per saperne di più sulla concessione dei ruoli, consulta Autorizzazioni di deployment e Gestisci l'accesso.
Concedi al account di servizio l'accesso al tuo progetto
Se non hai creato un account di servizio per il tuo job Cloud Run, creane uno. Ad esempio:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Sostituisci SERVICE_ACCOUNT_NAME con il nome del tuo account di servizio,
ad esempio job-scheduler.
Per ottenere le autorizzazioni necessarie al tuo account di servizio per eseguire i job, chiedi all'amministratore di concedere al tuo account di servizio il
ruolo Esecutore job
(roles/run.jobsExecutor) nel tuo progetto. Ad esempio:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:job-scheduler@PROJECT_ID.s3ns.iam.gserviceaccount.com \ --role roles/run.jobsExecutor
Sostituisci PROJECT_ID con il nome del tuo ID progetto.
Prima di iniziare
Crea un job Cloud Run se non l'hai ancora creato.
Configura un job Cloud Run da eseguire in base a una pianificazione
Per eseguire un job Cloud Run in base a una pianificazione:
Crea una nuova directory denominata
cloud-run-jobs-schede passa a questa directory:mkdir cloud-run-jobs-sched cd cloud-run-jobs-sched
Crea un file
Dockerfilee incolla le seguenti righe:FROM gcr.io/google.com/cloudsdktool/google-cloud-cli:536.0.1 RUN apt-get update -y && \ apt-get install -y python3-dev python3-pip python3-venv && \ apt-get install -y cron ENV APP_HOME /app WORKDIR $APP_HOME COPY . ./ ENV VIRTUAL_ENV=/opt/venv RUN python3 -m venv $VIRTUAL_ENV ENV PATH="$VIRTUAL_ENV/bin:$PATH" RUN pip install --no-cache-dir -r requirements.txt # Set up the cron schedule. RUN crontab /app/cron CMD /app/entrypoint.sh
Crea un file
entrypoint.she incolla le seguenti righe:gcloud config set project $PROJECT gcloud config set run/region $REGION cron gunicorn --bind :$PORT --workers 1 --threads 8 --timeout 0 main:app
Crea un file
main.pye incolla il seguente codice Python:import os from flask import Flask app = Flask(__name__) @app.route("/") def hello_world(): return "Hello World!" if __name__ == "__main__": app.run(debug=True, host="0.0.0.0", port=int(os.environ.get("PORT", 8080)))
Crea un file
requirements.txte incolla le seguenti dipendenze:Flask==3.0.3 gunicorn==23.0.0 Werkzeug==3.0.3
Crea un file
cronnella directory e aggiungi una pianificazione cron per eseguire il job. Ad esempio:0 2 * * * gcloud run jobs execute --async test-job > /proc/1/fd/1 2>&1
Questo comando esegue un job denominato
test-jobogni giorno alle 2:00. Eventuali errori durante l'avvio dell'esecuzione del job verranno visualizzati nei log del servizio.Per creare più pianificazioni per più job, aggiorna il file
croncon tutti i job che vuoi eseguire, insieme alla pianificazione associata. Ad esempio:${cron_schedule} gcloud run jobs execute --async ${job_1} > /proc/1/fd/1 2>&1 ${cron_schedule} gcloud run jobs execute --async ${job_2} > /proc/1/fd/1 2>&1 ...
Esegui il deployment del servizio di pianificazione dei job:
gcloud run deploy JOB_NAME \ --source . \ --region REGION \ --set-env-vars PROJECT=PROJECT_ID,REGION=REGION \ --service-account SERVICE_ACCOUNT \ --no-allow-unauthenticated \ --min-instances=1 \ --no-cpu-throttling
Sostituisci quanto segue:
- JOB-NAME: il nome del tuo job Cloud Run.
- PROJECT_ID: il tuo ID progetto.
- REGION: la regione del tuo job Cloud Run, ad
esempio
europe-west1.
Passaggi successivi
Dopo aver utilizzato questa funzionalità, puoi: