Halaman ini menjelaskan cara menjalankan tugas Cloud Run sesuai jadwal menggunakan crontab.
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk operasi yang dijelaskan di halaman ini, minta administrator Anda untuk memberi Anda salah satu peran IAM berikut di tugas Cloud Run Anda:
- Untuk menjalankan tugas menggunakan Google Cloud CLI: Cloud Run Invoker (
roles/run.invoker) pada tugas Cloud Run. - Untuk mengeksekusi tugas menggunakan konsol Cloud de Confiance , mengganti konfigurasi tugas, atau membatalkan eksekusi tugas: Developer Cloud Run (
roles/run.developer) di tugas Cloud Run.
Untuk mengetahui daftar peran dan izin IAM yang terkait dengan Cloud Run, lihat Peran IAM Cloud Run dan Izin IAM Cloud Run. Jika tugas Cloud Run Anda berinteraksi dengan Cloud de Confiance API, seperti Library Klien Cloud, lihat panduan konfigurasi identitas layanan. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat izin deployment dan mengelola akses.
Memberi akun layanan akses ke project Anda
Jika Anda belum membuat akun layanan untuk tugas Cloud Run, buat akun layanan. Contoh:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Ganti SERVICE_ACCOUNT_NAME dengan nama akun layanan Anda, misalnya, job-scheduler.
Untuk mendapatkan izin yang diperlukan akun layanan Anda untuk menjalankan tugas, minta
administrator Anda untuk memberikan peran
Jobs Executor
(roles/run.jobsExecutor) ke akun layanan Anda di project Anda. Contoh:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:job-scheduler@PROJECT_ID.s3ns.iam.gserviceaccount.com \ --role roles/run.jobsExecutor
Ganti PROJECT_ID dengan nama project ID Anda.
Sebelum memulai
- Buat tugas Cloud Run jika Anda belum membuatnya.
Aktifkan Cloud Scheduler API untuk project Anda:
gcloud services enable cloudscheduler.googleapis.com
Mengonfigurasi tugas Cloud Run untuk dijalankan sesuai jadwal
Untuk menjalankan tugas Cloud Run sesuai jadwal, ikuti langkah-langkah berikut:
Buatlah direktori bernama baru
cloud-run-jobs-scheddan ubahlah direktori tersebut kedalamnya:mkdir cloud-run-jobs-sched cd cloud-run-jobs-sched
Buat file
Dockerfiledan tempelkan baris berikut ke dalamnya: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
Buat file
entrypoint.sh, lalu tempelkan baris berikut ke dalamnya:gcloud config set project $PROJECT gcloud config set run/region $REGION cron gunicorn --bind :$PORT --workers 1 --threads 8 --timeout 0 main:app
Buat file
main.pydan tempelkan kode Python berikut ke dalamnya: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)))
Buat file
requirements.txtdan tempelkan dependensi berikut ke dalamnya:Flask==3.0.3 gunicorn==23.0.0 Werkzeug==3.0.3
Buat file
crondi direktori Anda dan tambahkan jadwal cron untuk menjalankan tugas. Contoh:0 2 * * * gcloud run jobs execute --async test-job > /proc/1/fd/1 2>&1
Perintah ini menjalankan tugas bernama
test-jobsetiap hari pada pukul 02.00. Setiap error saat memulai eksekusi tugas akan ditampilkan di log layanan.Untuk membuat beberapa jadwal untuk beberapa tugas, perbarui file
crondengan tugas yang ingin Anda jalankan, beserta jadwal terkaitnya. Contoh:${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 ...
Deploy layanan penjadwal tugas:
gcloud run deploy JOB \ --source . \ --region REGION \ --set-env-vars PROJECT=PROJECT_ID,REGION=REGION \ --service-account SERVICE_ACCOUNT \ --no-allow-unauthenticated \ --min-instances=1 \ --no-cpu-throttling
Ganti kode berikut:
JOB: nama tugas Cloud Run Anda.REGION: region untuk tugas Cloud Run Anda, misalnya,europe-west1.PROJECT_ID: project ID Anda.SERVICE_ACCOUNT: akun layanan Anda.
Langkah berikutnya
Setelah menggunakan fitur ini, Anda dapat melakukan hal berikut: