Membuat pemicu dari peristiwa Cloud Storage

Di Cloud Run, Anda dapat memicu layanan dari Cloud Storage menggunakan Eventarc sebagai respons terhadap perubahan dalam Cloud Storage.

Saat menentukan pemicu Cloud Storage untuk layanan, Anda memilih jenis peristiwa dan menentukan bucket Cloud Storage. Sebagai hasil dari pemicu ini, layanan Anda akan dipanggil setiap kali terjadi perubahan pada objek (file) di dalam bucket yang ditentukan.

Agar layanan Anda dipicu oleh peristiwa di bucket Cloud Storage, layanan dan bucket harus berada di project Google Cloud yang sama.

Untuk mengetahui petunjuk mendetail dan contoh kode tentang cara membuat pemicu dari peristiwa Cloud Storage, lihat tutorial berikut:

Jenis peristiwa Cloud Storage yang didukung

Cloud Run mendukung jenis peristiwa Cloud Storage berikut:

Acara Jenis peristiwa Deskripsi
Objek diselesaikan
  • google.cloud.storage.object.v1.finalized (melalui Eventarc)
Terjadi saat Anda membuat objek baru, atau menimpa objek yang ada, dan Cloud Storage membuat generasi baru objek tersebut.
Objek dihapus
  • google.cloud.storage.object.v1.deleted (melalui Eventarc)
Terjadi saat objek dihapus untuk sementara. Untuk mengetahui informasi selengkapnya, lihat Penghapusan untuk sementara.
Objek diarsipkan
  • google.cloud.storage.object.v1.archived (melalui Eventarc)
Terjadi saat versi aktif sebuah objek menjadi versi lama. Untuk mengetahui informasi selengkapnya, lihat Pembuatan Versi Objek.
Metadata objek diperbarui
  • google.cloud.storage.object.v1.metadataUpdated (melalui Eventarc)
Terjadi saat Anda mengubah metadata objek yang ada.

Repositori Google Events berisi resource tambahan untuk menangani data peristiwa.

Sebelum memulai

  1. Pastikan Anda telah menyiapkan project baru untuk Cloud Run seperti yang dijelaskan di halaman setup.

  2. Aktifkan Artifact Registry API, Cloud Build API, Cloud Run Admin API, Eventarc API, Cloud Logging API, Pub/Sub API, dan Cloud Storage API:

    Aktifkan API

  3. Berikan peran dan izin IAM yang diperlukan.

Peran yang diperlukan untuk akun deployer

Untuk mendapatkan izin yang Anda perlukan guna memicu dari peristiwa Cloud Storage, minta administrator Anda untuk memberi Anda peran IAM berikut di project Anda:

Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.

Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.

Perhatikan bahwa secara default, izin Cloud Build mencakup izin untuk mengupload dan mendownload artefak Artifact Registry.

Membuat pemicu untuk layanan

Setelah men-deploy layanan, Anda dapat mengonfigurasi pemicu menggunakan konsol Google Cloud , Google Cloud CLI, atau Terraform.

Konsol

  1. Deploy layanan Cloud Run Anda menggunakan container atau dari sumber.

  2. Di konsol Google Cloud , buka Cloud Run:

    Buka Cloud Run

  3. Dari daftar layanan, klik layanan yang ada.

  4. Di halaman detail Service, buka tab Triggers.

  5. Klik Tambahkan pemicu, lalu pilih Pemicu Cloud Storage.

  6. Di panel Eventarc trigger, ubah detail pemicu sebagai berikut:

    1. Di kolom Nama pemicu, masukkan nama pemicu, atau gunakan nama default.

    2. Pilih Jenis pemicu dari daftar untuk menentukan salah satu jenis pemicu berikut:

      • Sumber Google untuk menentukan pemicu bagi Pub/Sub, Cloud Storage, Firestore, dan penyedia peristiwa Google lainnya.

      • Pihak ketiga untuk berintegrasi dengan penyedia non-Google yang menawarkan sumber Eventarc. Untuk mengetahui informasi selengkapnya, lihat Peristiwa pihak ketiga di Eventarc.

    3. Pilih Cloud Storage dari daftar Penyedia peristiwa, untuk memilih produk yang menyediakan jenis peristiwa untuk memicu layanan Anda. Untuk mengetahui daftar penyedia peristiwa, lihat Penyedia dan tujuan peristiwa.

    4. Pilih google.cloud.storage.object.v1.finalized dari daftar Jenis peristiwa. Konfigurasi pemicu Anda bervariasi, bergantung pada jenis peristiwa yang didukung. Untuk mengetahui informasi selengkapnya, lihat Jenis peristiwa.

    5. Di kolom Bucket, klik Browse untuk memilih bucket Cloud Storage yang akan dipantau oleh pemicu. Perubahan pada objek dalam bucket ini akan memicu panggilan ke fungsi Anda.

    6. Jika kolom Region diaktifkan, pilih lokasi untuk pemicu Eventarc. Secara umum, lokasi pemicu Eventarc harus cocok dengan lokasi resource Google Cloud yang ingin Anda pantau peristiwanya. Dalam sebagian besar skenario, Anda juga harus men-deploy layanan di region yang sama. Lihat Memahami lokasi Eventarc untuk mengetahui detail selengkapnya tentang lokasi pemicu Eventarc.

    7. Di kolom Service account, pilih akun layanan. Pemicu Eventarc ditautkan ke akun layanan untuk digunakan sebagai identitas saat memanggil layanan Anda. Akun layanan pemicu Eventarc Anda harus memiliki izin untuk memanggil layanan Anda. Secara default, Cloud Run menggunakan akun layanan default Compute Engine.

    8. Secara opsional, tentukan jalur URL Layanan untuk mengirim permintaan masuk ke. Ini adalah jalur relatif di layanan tujuan tempat peristiwa untuk pemicu harus dikirim. Misalnya: /, /route, route, dan route/subroute.

    9. Secara opsional, untuk mengaktifkan percobaan ulang jika upaya pengiriman gagal, centang kotak Enable retry on failure; jika tidak, perilaku default adalah satu upaya pengiriman tanpa percobaan ulang. Untuk mengetahui informasi selengkapnya, lihat Coba lagi peristiwa.

    10. Setelah Anda melengkapi kolom yang wajib diisi, klik Simpan pemicu.

  7. Setelah membuat pemicu, verifikasi kondisinya dengan memastikan bahwa ada tanda centang di tab Pemicu.

gcloud

  1. Deploy layanan Cloud Run Anda menggunakan container atau dari sumber.

  2. Jalankan perintah berikut untuk membuat pemicu yang memfilter dan merutekan peristiwa:

    gcloud eventarc triggers create TRIGGER_NAME  \
        --location=LOCATION \
        --destination-run-service=DESTINATION_RUN_SERVICE  \
        --destination-run-region=DESTINATION_RUN_REGION \
        --event-filters="type=EVENT_FILTER_TYPE" \
        --event-filters="bucket=BUCKET" \
        --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
    

    Ganti kode berikut:

    • TRIGGER_NAME: ID pemicu atau ID yang memenuhi syarat sepenuhnya.
    • LOCATION: lokasi pemicu Eventarc. Atau, Anda dapat menetapkan properti eventarc/location ; misalnya, gcloud config set eventarc/location us-central1.

      Untuk menghindari masalah performa dan residensi data, lokasi harus cocok dengan lokasi layanan Google Cloud yang menghasilkan peristiwa. Untuk mengetahui informasi selengkapnya, lihat Lokasi Eventarc.

    • DESTINATION_RUN_SERVICE: nama layanan Cloud Run yang menerima peristiwa untuk pemicu. Layanan dapat berada di salah satu lokasi yang didukung Cloud Run dan tidak perlu berada di lokasi yang sama dengan pemicu. Namun, layanan harus berada dalam project yang sama dengan pemicu dan akan menerima peristiwa sebagai permintaan POST HTTP yang dikirim ke jalur URL root-nya (/), setiap kali peristiwa dibuat.
    • DESTINATION_RUN_REGION: (opsional) lokasi Cloud Run tempat layanan Cloud Run tujuan dapat ditemukan. Jika tidak ditentukan, diasumsikan bahwa layanan berada di region yang sama dengan pemicu.
    • EVENT_FILTER_TYPE: ID peristiwa. Peristiwa dibuat saat panggilan API untuk metode berhasil. Untuk operasi yang berjalan lama, peristiwa hanya dibuat di akhir operasi, dan hanya jika tindakan berhasil dilakukan. Untuk mengetahui daftar jenis peristiwa yang didukung, lihat Jenis peristiwa Google yang didukung oleh Eventarc.
    • BUCKET: ID unik global bucket Cloud Storage.
    • SERVICE_ACCOUNT_NAME: nama akun layanan yang dikelola pengguna Anda.
    • PROJECT_ID: Google Cloud Project ID Anda.

    Catatan:

    • Flag --event-filters="type=EVENT_FILTER_TYPE" wajib diisi. Jika tidak ada filter peristiwa lain yang ditetapkan, peristiwa untuk semua resource akan dicocokkan.
    • EVENT_FILTER_TYPE tidak dapat diubah setelah dibuat. Untuk mengubah EVENT_FILTER_TYPE, buat pemicu baru dan hapus pemicu lama.
    • Setiap pemicu dapat memiliki beberapa filter peristiwa, yang dipisahkan dengan koma dalam satu --event-filters=[ATTRIBUTE=VALUE,...] flag, atau Anda dapat mengulangi flag untuk menambahkan lebih banyak filter. Hanya peristiwa yang cocok dengan semua filter yang dikirim ke tujuan. Karakter pengganti dan ekspresi reguler tidak didukung; namun, saat menggunakan flag --event-filters-path-pattern, Anda dapat menentukan pola jalur resource.
    • Atau, untuk menentukan satu upaya pengiriman peristiwa tanpa percobaan ulang, gunakan flag --max-retry-attempts. Satu-satunya nilai yang valid adalah 1. Jika Anda menghilangkan flag, perilaku percobaan ulang standar akan berlaku. Untuk mengetahui informasi selengkapnya, lihat Coba lagi peristiwa.
    • Tersedia flag lainnya. Untuk informasi selengkapnya, lihat gcloud eventarc triggers create.

Terraform

Untuk membuat pemicu Eventarc bagi layanan Cloud Run, lihat Membuat pemicu menggunakan Terraform.

Membuat pemicu untuk fungsi

Setelah men-deploy fungsi, Anda dapat mengonfigurasi pemicu menggunakan konsol Google Cloud , Google Cloud CLI, atau Terraform.

Konsol

Saat menggunakan konsol Google Cloud untuk membuat fungsi, Anda juga dapat menambahkan pemicu ke fungsi. Ikuti langkah-langkah berikut untuk membuat pemicu bagi fungsi Anda:

  1. Di konsol Google Cloud , buka Cloud Run:

    Buka Cloud Run

  2. Klik Write a function, lalu masukkan detail fungsi. Untuk informasi selengkapnya tentang cara mengonfigurasi fungsi selama deployment, lihat Men-deploy fungsi.

  3. Di bagian Pemicu, klik Tambahkan pemicu.

  4. Pilih Pemicu Cloud Storage.

  5. Di panel Eventarc trigger, ubah detail pemicu sebagai berikut:

    1. Masukkan nama pemicu di kolom Nama pemicu, atau gunakan nama default.

    2. Pilih Jenis pemicu dari daftar:

      • Sumber Google untuk menentukan pemicu bagi Pub/Sub, Cloud Storage, Firestore, dan penyedia peristiwa Google lainnya.

      • Pihak ketiga untuk berintegrasi dengan penyedia non-Google yang menawarkan sumber Eventarc. Untuk mengetahui informasi selengkapnya, lihat Peristiwa pihak ketiga di Eventarc.

    3. Pilih Cloud Storage dari daftar Event provider, untuk memilih produk yang menyediakan jenis peristiwa untuk memicu fungsi Anda. Untuk mengetahui daftar penyedia peristiwa, lihat Penyedia dan tujuan peristiwa.

    4. Pilih google.cloud.storage.object.v1.finalized dari daftar Jenis peristiwa. Konfigurasi pemicu Anda bervariasi, bergantung pada jenis peristiwa yang didukung. Untuk mengetahui informasi selengkapnya, lihat Jenis peristiwa.

    5. Biarkan kolom Jenis konten data peristiwa apa adanya.

    6. Di kolom Bucket, klik Browse untuk memilih bucket Cloud Storage yang akan dipantau oleh pemicu. Perubahan pada objek dalam bucket ini akan memicu panggilan ke fungsi Anda.

    7. Jika kolom Region diaktifkan, pilih lokasi untuk pemicu Eventarc. Secara umum, lokasi pemicu Eventarc harus cocok dengan lokasi resourceGoogle Cloud yang ingin Anda pantau peristiwanya. Dalam sebagian besar skenario, Anda juga harus men-deploy fungsi di region yang sama. Lihat Memahami lokasi Eventarc untuk mengetahui detail selengkapnya tentang lokasi pemicu Eventarc.

    8. Di kolom Service account, pilih akun layanan. Pemicu Eventarc ditautkan ke akun layanan untuk digunakan sebagai identitas saat memanggil fungsi Anda. Akun layanan pemicu Eventarc Anda harus memiliki izin untuk memanggil fungsi Anda. Secara default, Cloud Run menggunakan akun layanan default Compute Engine.

    9. Secara opsional, tentukan jalur URL Layanan untuk mengirim permintaan masuk ke. Ini adalah jalur relatif di layanan tujuan tempat peristiwa untuk pemicu harus dikirim. Misalnya: /, /route, route, dan route/subroute.

    10. Secara opsional, untuk mengaktifkan percobaan ulang jika upaya pengiriman gagal, centang kotak Enable retry on failure; jika tidak, perilaku default adalah satu upaya pengiriman tanpa percobaan ulang. Untuk mengetahui informasi selengkapnya, lihat Coba lagi peristiwa.

  6. Setelah Anda melengkapi kolom yang wajib diisi, klik Simpan pemicu.

  7. Klik Create.

  8. Di tab Source, edit kode sumber jika diperlukan, lalu pilih Save and redeploy.

gcloud

Saat membuat fungsi menggunakan gcloud CLI, Anda harus men-deploy fungsi terlebih dahulu, lalu membuat pemicu. Ikuti langkah-langkah berikut untuk membuat pemicu bagi fungsi Anda:

  1. Jalankan perintah berikut di direktori yang berisi kode contoh untuk men-deploy fungsi Anda:

    gcloud run deploy FUNCTION \
        --source . \
        --function FUNCTION_ENTRYPOINT \
        --base-image BASE_IMAGE_ID \
        --region REGION
    

    Ganti kode berikut:

    • FUNCTION: nama fungsi yang Anda deploy. Anda dapat menghilangkan parameter ini sepenuhnya, tetapi Anda akan diminta untuk memasukkan nama jika menghilangkannya.

    • FUNCTION_ENTRYPOINT: titik entri ke fungsi Anda dalam kode sumber. Ini adalah kode yang dijalankan Cloud Run saat fungsi Anda berjalan. Nilai flag ini harus berupa nama fungsi atau nama class yang sepenuhnya memenuhi syarat yang ada dalam kode sumber Anda.

    • BASE_IMAGE_ID: lingkungan image dasar untuk fungsi Anda. Untuk mengetahui detail selengkapnya tentang image dasar dan paket yang disertakan dalam setiap image, lihat Image dasar runtime.

    • REGION: Google Cloud region tempat Anda ingin men-deploy fungsi Anda. Contoh, europe-west1.

  2. Jalankan perintah berikut untuk membuat pemicu yang memfilter dan merutekan peristiwa:

    gcloud eventarc triggers create TRIGGER_NAME  \
        --location=LOCATION \
        --destination-run-service=FUNCTION  \
        --destination-run-region=DESTINATION_RUN_REGION \
        --event-filters="type=EVENT_FILTER_TYPE" \
        --event-filters="bucket=BUCKET" \
        --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
    

    Ganti kode berikut:

    • TRIGGER_NAME: ID pemicu atau ID yang memenuhi syarat sepenuhnya.
    • LOCATION: lokasi pemicu Eventarc. Atau, Anda dapat menetapkan properti eventarc/location ; misalnya, gcloud config set eventarc/location us-central1.

      Untuk menghindari masalah performa dan residensi data, lokasi harus cocok dengan lokasi layanan Google Cloud yang menghasilkan peristiwa. Untuk mengetahui informasi selengkapnya, lihat Lokasi Eventarc.

    • FUNCTION: nama fungsi Cloud Run yang di-deploy yang menerima peristiwa untuk pemicu.
    • DESTINATION_RUN_REGION: (opsional) lokasi Cloud Run tempat fungsi Cloud Run tujuan dapat ditemukan. Jika tidak ditentukan, diasumsikan bahwa fungsi berada di region yang sama dengan pemicu.
    • EVENT_FILTER_TYPE: ID peristiwa. Peristiwa dibuat saat panggilan API untuk metode berhasil. Untuk operasi yang berjalan lama, peristiwa hanya dibuat di akhir operasi, dan hanya jika tindakan berhasil dilakukan. Untuk mengetahui daftar jenis peristiwa yang didukung, lihat Jenis peristiwa Google yang didukung oleh Eventarc.
    • BUCKET: ID unik global bucket Cloud Storage.
    • SERVICE_ACCOUNT_NAME: nama akun layanan yang dikelola pengguna Anda.
    • PROJECT_ID: Google Cloud Project ID Anda.

    Catatan:

    • Flag --event-filters="type=EVENT_FILTER_TYPE" wajib diisi. Jika tidak ada filter peristiwa lain yang ditetapkan, peristiwa untuk semua resource akan dicocokkan.
    • EVENT_FILTER_TYPE tidak dapat diubah setelah dibuat. Untuk mengubah EVENT_FILTER_TYPE, buat pemicu baru dan hapus pemicu lama.
    • Setiap pemicu dapat memiliki beberapa filter peristiwa, yang dipisahkan dengan koma dalam satu --event-filters=[ATTRIBUTE=VALUE,...] flag, atau Anda dapat mengulangi flag untuk menambahkan lebih banyak filter. Hanya peristiwa yang cocok dengan semua filter yang dikirim ke tujuan. Karakter pengganti dan ekspresi reguler tidak didukung; namun, saat menggunakan flag --event-filters-path-pattern, Anda dapat menentukan pola jalur resource.
    • Atau, untuk menentukan satu upaya pengiriman peristiwa tanpa percobaan ulang, gunakan flag --max-retry-attempts. Satu-satunya nilai yang valid adalah 1. Jika Anda menghilangkan flag, perilaku percobaan ulang standar akan berlaku. Untuk mengetahui informasi selengkapnya, lihat Coba lagi peristiwa.
    • Tersedia flag lainnya. Untuk informasi selengkapnya, lihat gcloud eventarc triggers create.

Terraform

Untuk membuat pemicu Eventarc bagi fungsi Cloud Run, lihat Membuat pemicu menggunakan Terraform.

Pengiriman peristiwa

Pemicu Cloud Storage diimplementasikan dengan notifikasi Pub/Sub untuk Cloud Storage. Peristiwa tunduk pada jaminan pengiriman notifikasi Pub/Sub.

Bucket Cloud Storage dapat memiliki hingga 10 konfigurasi notifikasi yang ditetapkan untuk dipicu untuk peristiwa tertentu. Melebihi batas notifikasi bucket akan menyebabkan deployment fungsi lebih lanjut gagal dengan error seperti berikut:

Cloud Storage bucket ...: Pub/Sub notification limit reached

Anda dapat mengatasi batasan ini dengan mengelola topik Pub/Sub Anda sendiri dan mendaftarkannya untuk jenis notifikasi Cloud Storage yang ingin direspons oleh fungsi Anda. Misalnya, Anda dapat mengonfigurasi satu notifikasi untuk peristiwa yang Anda pilih (seperti pembuatan objek) ke topik Pub/Sub. Kemudian, miliki sebanyak mungkin pelanggan fungsi yang diperlukan untuk topik guna memproses peristiwa dan menyebarkannya ke beberapa tujuan. Contoh:

  1. Buat topik Pub/Sub Anda sendiri.
  2. Buat satu konfigurasi notifikasi di bucket Cloud Storage Anda yang dipicu pada peristiwa tertentu (seperti OBJECT_FINALIZE untuk pembuatan objek) dan mengirimkan peristiwa tersebut ke satu topik Pub/Sub Anda.
  3. Buat satu atau beberapa fungsi yang dipicu oleh topik Pub/Sub.

Hal ini menghasilkan satu konfigurasi notifikasi Cloud Storage, satu topik Pub/Sub, dan sebanyak fungsi yang Anda butuhkan (dalam batas pengiriman yang sangat tinggi yang diizinkan oleh Pub/Sub).

Lihat Kuota dan batas Cloud Storage untuk mempelajari lebih lanjut batasan Cloud Storage.

Langkah berikutnya