Menerima peristiwa langsung dari Cloud Storage (gcloud CLI)
Panduan memulai ini menunjukkan cara menerima peristiwa langsung dari Cloud Storage (tanpa menggunakan Cloud Audit Logs) di layanan Cloud Run yang tidak diautentikasi menggunakan Eventarc.
Anda dapat mengonfigurasi pemicuan notifikasi sebagai respons terhadap berbagai peristiwa di dalam bucket Cloud Storage—pembuatan, penghapusan, pengarsipan, dan pembaruan metadata objek. Untuk mengetahui informasi selengkapnya, lihat Membuat pemicu untuk merutekan peristiwa Cloud Storage ke Cloud Run.
Dalam panduan memulai ini, Anda akan:
Membuat bucket Cloud Storage untuk menjadi sumber peristiwa.
Men-deploy layanan penerima peristiwa ke Cloud Run.
Buat pemicu Eventarc.
Buat peristiwa dengan mengupload file ke bucket Cloud Storage, dan lihat di log Cloud Run.
Sebelum memulai
Batasan keamanan yang ditentukan oleh organisasi mungkin mencegah Anda menyelesaikan langkah-langkah berikut. Untuk mengetahui informasi pemecahan masalah, lihat Mengembangkan aplikasi di lingkungan Google Cloud yang terbatas.
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Make sure that billing is enabled for your Google Cloud project.
Aktifkan Cloud Run, Cloud Storage, Eventarc, dan Pub/Sub API.
gcloud services enable \ eventarc.googleapis.com \ pubsub.googleapis.com \ run.googleapis.com \ storage.googleapis.com
- Perbarui komponen
gcloud
:gcloud components update
- Login menggunakan akun Anda:
gcloud auth login
- Tetapkan variabel konfigurasi yang digunakan dalam panduan memulai ini:
gcloud config set run/region us-central1 gcloud config set run/platform managed gcloud config set eventarc/location us-central1
-
Jika Anda adalah project creator, Anda diberi peran Pemilik dasar (
roles/owner
). Secara default, peran Identity and Access Management (IAM) ini mencakup izin yang diperlukan untuk akses penuh ke sebagian besar resource Google Cloud dan Anda dapat melewati langkah ini.Jika Anda bukan project creator, izin yang diperlukan harus diberikan pada project kepada akun utama yang sesuai. Misalnya, akun utama dapat berupa Akun Google (untuk pengguna akhir) atau akun layanan (untuk aplikasi dan workload komputasi). Untuk mengetahui informasi selengkapnya, lihat halaman eran dan izin untuk tujuan peristiwa Anda.
Izin yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk menyelesaikan tutorial ini, minta administrator untuk memberi Anda peran IAM berikut di project Anda:
-
Cloud Run Admin (
roles/run.admin
) -
Eventarc Admin (
roles/eventarc.admin
) -
Logs View Accessor (
roles/logging.viewAccessor
) -
Project IAM Admin (
roles/resourcemanager.projectIamAdmin
) -
Service Account Admin (
roles/iam.serviceAccountAdmin
) -
Service Account User (
roles/iam.serviceAccountUser
) -
Service Usage Admin (
roles/serviceusage.serviceUsageAdmin
) -
Storage Admin (
roles/storage.admin
)
Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
-
Cloud Run Admin (
Catat akun layanan default Compute Engine karena Anda akan melampirkan akun tersebut ke pemicu Eventarc untuk merepresentasikan identitas pemicu untuk tujuan pengujian. Akun layanan ini dibuat secara otomatis setelah mengaktifkan atau menggunakan Google Cloud layanan yang menggunakan Compute Engine, dan dengan format email berikut:
PROJECT_NUMBER-compute@developer.gserviceaccount.com
Ganti
PROJECT_NUMBER
dengan Google Cloudnomor project Anda. Anda dapat menemukan nomor project di halaman Selamat Datang pada Konsol Google Cloud atau dengan menjalankan perintah berikut:gcloud projects describe PROJECT_ID --format='value(projectNumber)'
Untuk lingkungan produksi, sebaiknya buat akun layanan baru dan berikan satu atau beberapa peran IAM yang berisi izin minimum yang diperlukan dan ikuti prinsip hak istimewa terendah.
- Berikan
Peran
Eventarc Event Receiver (
roles/eventarc.eventReceiver
) pada project ke akun layanan default Compute Engine agar pemicu Eventarc dapat menerima peristiwa dari penyedia peristiwa.gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/eventarc.eventReceiver
- Sebelum membuat pemicu untuk peristiwa langsung dari Cloud Storage,
berikan peran Pub/Sub
Publisher (
roles/pubsub.publisher
) ke agen layanan Cloud Storage:SERVICE_ACCOUNT="$(gcloud storage service-agent --project=PROJECT_ID)" gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:${SERVICE_ACCOUNT}" \ --role='roles/pubsub.publisher'
- Jika Anda mengaktifkan agen layanan Cloud Pub/Sub pada atau sebelum
8 April 2021, untuk mendukung permintaan push Pub/Sub yang diautentikasi, berikan
peran
Service Account Token Creator (
roles/iam.serviceAccountTokenCreator
) ke agen layanan. Jika tidak, peran ini akan diberikan secara default:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator
Membuat bucket Cloud Storage
Membuat bucket Cloud Storage untuk digunakan sebagai sumber peristiwa:gsutil mb -l us-central1 gs://PROJECT_ID-bucket/
Setelah sumber peristiwa dibuat, Anda dapat men-deploy layanan penerima peristiwa di Cloud Run.
Men-deploy layanan penerima peristiwa ke Cloud Run
Deploy layanan Cloud Run yang akan menerima dan mencatat peristiwa ke dalam log menggunakan
image bawaan, us-docker.pkg.dev/cloudrun/container/hello
:
gcloud run deploy helloworld-events \
--image=us-docker.pkg.dev/cloudrun/container/hello \
--allow-unauthenticated
Jika deployment berhasil, command line akan menampilkan URL layanan.
Setelah men-deploy layanan penerima peristiwa yang disebut helloworld-events
ke Cloud Run, Anda dapat menyiapkan pemicu.
Membuat pemicu Eventarc
Pemicu Eventarc mengirimkan peristiwa dari
bucket Cloud Storage ke helloworld-events
di layanan Cloud Run.
Buat pemicu yang memfilter peristiwa Cloud Storage dan menggunakan akun layanan default Compute Engine.
gcloud eventarc triggers create storage-events-trigger \ --destination-run-service=helloworld-events \ --destination-run-region=us-central1 \ --event-filters="type=google.cloud.storage.object.v1.finalized" \ --event-filters="bucket=PROJECT_ID-bucket" \ --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com
Tindakan ini akan membuat pemicu yang disebut
storage-events-trigger
.Perhatikan bahwa saat membuat pemicu Eventarc untuk pertama kalinya dalam project Google Cloud , mungkin akan ada penundaan dalam penyediaan agen layanan Eventarc. Masalah ini biasanya dapat diatasi dengan mencoba membuat ulang pemicu. Untuk informasi selengkapnya, lihat Error izin ditolak.
Untuk mengonfirmasi bahwa
storage-events-trigger
berhasil dibuat, jalankan:gcloud eventarc triggers list --location=us-central1
Outputnya mirip dengan hal berikut ini:
NAME TYPE DESTINATION_RUN_SERVICE DESTINATION_RUN_PATH ACTIVE storage-events-trigger google.cloud.storage.object.v1.finalized helloworld-events Yes
Membuat dan melihat peristiwa
Untuk membuat peristiwa, upload file teks ke Cloud Storage:
echo "Hello World" > random.txt gsutil cp random.txt gs://PROJECT_ID-bucket/random.txt
Hasil upload ini akan membuat peristiwa dan layanan Cloud Run akan mencatat pesan peristiwa tersebut ke dalam log.
Untuk melihat entri log, filter entri log, dan tampilkan output dalam format JSON:
gcloud logging read 'jsonPayload.message: "Received event of type google.cloud.storage.object.v1.finalized."'
Cari entri log yang mirip dengan berikut ini:
jsonPayload: event: ... eventType: google.cloud.storage.object.v1.finalized message: | Received event of type google.cloud.storage.object.v1.finalized. Event data: { "kind": "storage#object", "id": "PROJECT_ID-bucket/random.txt/1713970683868432", "selfLink": "https://www.googleapis.com/storage/v1/b/PROJECT_ID-bucket/o/random.txt", "name": "random.txt", "bucket": "PROJECT_ID-bucket", ... }
Selamat! Anda telah berhasil men-deploy layanan penerima peristiwa ke Cloud Run, membuat pemicu Eventarc, membuat peristiwa dari Cloud Storage, dan menampilkannya di log Cloud Run.
Pembersihan
Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat.
Anda dapat:
Atau, Anda dapat menghapus project Google Cloud untuk menghindari tagihan. Menghapus project Google Cloud Anda akan menghentikan penagihan untuk semua resource yang digunakan dalam project tersebut.
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID
Jika Anda berencana mempelajari beberapa tutorial dan panduan memulai, menggunakan kembali project dapat help you avoid exceeding project quota limits.