Merutekan peristiwa Cloud Storage ke Alur Kerja

Pemicu Eventarc menyatakan minat Anda pada peristiwa atau rangkaian peristiwa tertentu. Anda dapat mengonfigurasi perutean peristiwa dengan menentukan filter untuk pemicu, termasuk sumber peristiwa, dan alur kerja target.

Peristiwa dikirimkan dalam format CloudEvents melalui permintaan HTTP. Layanan Workflows mengonversi peristiwa menjadi objek JSON (mengikuti spesifikasi CloudEvents) dan meneruskan peristiwa ke eksekusi alur kerja sebagai argumen runtime alur kerja. Pastikan ukuran peristiwa tidak melebihi 512 KB. Peristiwa yang lebih besar dari ukuran argumen Workflows maksimum tidak akan memicu eksekusi alur kerja.

Petunjuk ini menunjukkan cara mengonfigurasi perutean peristiwa sehingga eksekusi alur kerja Anda dipicu sebagai respons terhadap peristiwaCloud Storage langsung. Hal ini berlaku untuk penyedia peristiwa Cloud Storage. Untuk mengetahui detail selengkapnya, lihat daftar peristiwa langsung yang didukung.

Bersiap untuk membuat pemicu

Sebelum membuat pemicu Eventarc untuk alur kerja target, selesaikan tugas berikut.

Konsol

  1. Di Google Cloud konsol, pada halaman pemilih project, pilih atau buat Google Cloud project.

    Buka pemilih project

  2. Aktifkan Eventarc, Eventarc Publishing, Workflows, dan Workflow Executions API.

    Mengaktifkan API

  3. Jika berlaku, aktifkan API yang terkait dengan peristiwa langsung. Misalnya, untuk peristiwa Cloud Storage , aktifkan APICloud Storage .

  4. Jika Anda belum memilikinya, buat akun layanan yang dikelola pengguna, lalu berikan peran dan izin yang diperlukan agar Eventarc dapat mengelola peristiwa untuk alur kerja target.

    1. Di konsol Google Cloud , buka halaman Service Accounts.

      Buka Akun Layanan

    2. Pilih project Anda.

    3. Di kolom Nama akun layanan, masukkan nama. Konsol Google Cloud akan mengisi kolom Service account ID berdasarkan nama ini.

      Di kolom Deskripsi akun layanan, masukkan sebuah deskripsi. Contoh, Service account for event trigger.

    4. Klik Buat dan lanjutkan.

    5. Untuk memberikan akses yang sesuai, di daftar Select a role, pilih peran Identity and Access Management (IAM) yang diperlukan untuk diberikan ke akun layanan Anda. Untuk mengetahui informasi selengkapnya, lihat Peran dan izin untuk target Workflows.

      Untuk peran tambahan, klik Tambahkan peran lain, lalu tambahkan setiap peran tambahan.

    6. Klik Lanjutkan.

    7. Untuk menyelesaikan pembuatan akun, klik Selesai.

  5. Berikan peran Pub/Sub Publisher ke agen layanan Cloud Storage. Biasanya, ini adalah service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com. Anda dapat mengambil alamat email agen layanan Cloud Storage.

    1. Di konsol Google Cloud , buka halaman IAM.

      Buka IAM

    2. Di baris untuk agen layanan Cloud Storage, klik Edit principal. (Jika agen layanan tidak tercantum, lanjutkan ke langkah berikutnya.) Panel Edit akses akan terbuka.

      1. Klik Tambahkan peran lain, lalu cari peran Pub/Sub Publisher.
      2. Pilih peran.
      3. Klik Simpan.
    3. Jika agen layanan tidak tercantum, klik Berikan akses. Panel Berikan akses akan terbuka.

      1. Di kolom New principals, masukkan alamat email untuk agen layanan.
      2. Di daftar Select a role, telusuri peran Pub/Sub Publisher.
      3. Pilih peran.
      4. Klik Simpan.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Aktifkan Eventarc API, Eventarc Publishing API, Workflows API, dan Workflow Executions API:

    gcloud services enable eventarc.googleapis.com \
        eventarcpublishing.googleapis.com \
        workflows.googleapis.com \
        workflowexecutions.googleapis.com

  3. Jika berlaku, aktifkan API yang terkait dengan peristiwa langsung. Misalnya, untuk Cloud Storage acara, aktifkan storage.googleapis.com.

  4. Jika Anda belum memilikinya, buat akun layanan yang dikelola pengguna, lalu berikan peran dan izin yang diperlukan agar Eventarc dapat mengelola peristiwa untuk alur kerja target.

    1. Buat akun layanan:

      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

      Ganti SERVICE_ACCOUNT_NAME dengan nama akun layanan. Panjangnya harus antara 6 dan 30 karakter, serta dapat berisi karakter alfanumerik huruf kecil dan tanda pisah. Setelah membuat akun layanan, Anda tidak dapat mengubah namanya.

    2. Berikan peran atau izin Identity and Access Management (IAM) yang diperlukan. Untuk mengetahui informasi selengkapnya, lihat Peran dan izin untuk target Workflows.

  5. Jika Anda membuat pemicu untuk peristiwa Cloud Storage langsung, berikan peran pubsub.publisher ke akun 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"
    

Buat pemicu

Anda dapat membuat pemicu Eventarc dengan alur kerja yang di-deploy sebagai penerima peristiwa menggunakan Google Cloud CLI (gcloud atau Terraform), atau melalui konsol Google Cloud .

Konsol

  1. Di konsol Google Cloud , buka halaman Pemicu Eventarc.

    Buka Pemicu

  2. Klik Create trigger.
  3. Ketik Trigger name.

    Ini adalah ID pemicu dan harus dimulai dengan huruf. Nama ini dapat berisi hingga 63 huruf kecil, angka, atau tanda hubung.

  4. Untuk Jenis pemicu, pilih Sumber Google.
  5. Dalam daftar Penyedia peristiwa, pilih Cloud Storage.

    Perhatikan bahwa nama penyedia peristiwa yang digunakan dalam Google Cloud dokumentasi terkait mungkin tidak memiliki awalan Cloud atau Google Cloud. Misalnya, di konsol, Memorystore for Redis disebut sebagai Google Cloud Memorystore for Redis.

  6. Di daftar Jenis peristiwa, dari peristiwa Langsung, pilih jenis peristiwa:
    • google.cloud.storage.object.v1.archived: peristiwa dikirim saat versi aktif objek diarsipkan atau dihapus. Peristiwa ini hanya dikirim untuk bucket pembuatan versi.
    • google.cloud.storage.object.v1.delete: peristiwa dikirim saat objek dihapus secara permanen. Bergantung pada setelan pembuatan versi objek untuk bucket, artinya:
      • Untuk bucket yang mendukung pembuatan versi, peristiwa ini hanya dikirim saat versi dihapus secara permanen (tetapi tidak saat objek diarsipkan).
      • Untuk bucket non-versi, peristiwa ini dikirim saat objek dihapus atau ditimpa.
    • google.cloud.storage.object.v1.finalized: peristiwa dikirim saat objek baru dibuat (atau objek yang ada ditimpa, dan pembuatan baru objek tersebut dibuat) dalam bucket.
    • google.cloud.storage.object.v1.metadataUpdated: event dikirim saat [metadata](/storage/docs/metadata) objek yang ada berubah.
  7. Di daftar Jenis konten data peristiwa, pilih encoding payload peristiwa.

    Untuk peristiwa langsung dari Cloud Storage, nilai ini harus berupa application/json.

  8. Tentukan atau jelajahi ID unik global dari Bucket Cloud Storage.

    Bucket Cloud Storage harus berada di Google Cloud project dan region atau multi-region yang sama dengan pemicu Eventarc.

  9. Pilih Region.

    Pemicu Cloud Storage untuk Eventarc tersedia di lokasi single-region, dual-region, dan multi-region]. Perhatikan bahwa bucket Cloud Storage harus berada di project dan region atau multi-region Google Cloud yang sama dengan pemicu Eventarc.

    Peristiwa dikirim menggunakan notifikasi Pub/Sub dari Cloud Storage. Menyiapkan terlalu banyak notifikasi yang terdaftar untuk bucket yang sama dapat menghabiskan batas notifikasi untuk bucket seperti yang ditunjukkan oleh error Cloud Storage bucket ...: Pub/Sub notification limit reached. Bucket dapat memiliki hingga 10 konfigurasi notifikasi yang ditetapkan untuk memicu peristiwa tertentu. Lihat kuota dan batasan lainnya di halaman kuota dan batas Cloud Storage.

  10. Pilih Service account yang akan memanggil layanan atau alur kerja Anda.

    Atau, Anda dapat membuat akun layanan baru.

    Ini menentukan email akun layanan Identity and Access Management (IAM) yang terkait dengan pemicu dan yang sebelumnya Anda beri peran tertentu yang diperlukan oleh Eventarc.

  11. Dalam daftar Tujuan peristiwa, pilih Workflows.
  12. Pilih alur kerja.

    Ini adalah nama alur kerja untuk meneruskan peristiwa. Peristiwa untuk eksekusi alur kerja diubah dan diteruskan ke alur kerja sebagai argumen runtime.

    Untuk mengetahui informasi selengkapnya, lihat Membuat pemicu untuk Workflows.

  13. Secara opsional, untuk menambahkan label, Anda dapat mengklik Tambahkan label. Label adalah pasangan nilai kunci yang membantu Anda mengaturGoogle Cloud resource. Untuk mengetahui informasi selengkapnya, lihat Apa yang dimaksud dengan label?
  14. Klik Buat.
  15. Setelah pemicu dibuat, filter sumber peristiwa tidak dapat diubah. Sebagai gantinya, buat pemicu baru dan hapus pemicu lama. Untuk mengetahui informasi selengkapnya, lihat Mengelola pemicu.

gcloud

gcloud eventarc triggers create TRIGGER \
    --location=LOCATION \
    --destination-workflow=DESTINATION_WORKFLOW  \
    --destination-workflow-location=DESTINATION_WORKFLOW_LOCATION \
    --event-filters="type=EVENT_FILTER_TYPE" \
    --event-filters="bucket=BUCKET" \
    --service-account="MY_SERVICE_ACCOUNT@PROJECT_ID.iam.gserviceaccount.com"

Ganti kode berikut:

  • TRIGGER: ID pemicu atau ID yang memenuhi syarat sepenuhnya.
  • LOCATION: lokasi pemicu Eventarc dan tersedia di lokasi satu region, dual-region, dan multi-region; Anda tidak dapat membuat pemicu Eventarc global. Perhatikan bahwa bucket Cloud Storage harus berada di Google Cloud project dan region yang sama dengan pemicu Eventarc. Untuk mengetahui informasi selengkapnya, lihat Lokasi Eventarc.
  • DESTINATION_WORKFLOW: ID alur kerja yang di-deploy yang menerima peristiwa dari pemicu. Alur kerja dapat berada di salah satu lokasi yang didukung Workflows dan tidak perlu berada di lokasi yang sama dengan pemicu. Namun, alur kerja harus berada dalam project yang sama dengan pemicu.
  • DESTINATION_WORKFLOW_LOCATION (opsional): lokasi tempat alur kerja tujuan di-deploy. Jika tidak ditentukan, diasumsikan bahwa alur kerja berada di lokasi yang sama dengan pemicu.
  • EVENT_FILTER_TYPE: ID peristiwa Cloud Storage dan dapat berupa salah satu dari berikut ini:
    • google.cloud.storage.object.v1.finalized: Peristiwa dikirim saat objek baru dibuat (atau objek yang ada ditimpa, dan pembuatan baru objek tersebut dibuat) dalam bucket
    • google.cloud.storage.object.v1.archived: Peristiwa dikirim saat versi live objek diarsipkan atau dihapus. Peristiwa ini hanya dikirim untuk bucket pembuatan versi.
    • google.cloud.storage.object.v1.deleted: Peristiwa dikirim saat objek dihapus secara permanen. Bergantung pada setelan pembuatan versi objek untuk bucket ini berarti:
      • Untuk bucket pembuatan versi, peristiwa ini hanya dikirim saat versi dihapus secara permanen (tetapi tidak saat objek diarsipkan).
      • Untuk bucket non-versi, peristiwa ini dikirim saat objek dihapus atau ditimpa.
    • google.cloud.storage.object.v1.metadataUpdated: Peristiwa dikirim saat metadata objek yang ada berubah.
  • BUCKET: ID unik global bucket Cloud Storage.
  • SERVICE_ACCOUNT_NAME: nama akun layanan IAM yang Anda buat dan diberi peran tertentu yang diperlukan oleh Workflows.
  • PROJECT_ID: Google Cloud project ID Anda

Catatan:

  • Untuk peristiwa langsung dari Cloud Storage, encoding payload peristiwa adalah application/json.
  • Flag ini wajib diisi:
    • --event-filters="type=EVENT_FILTER_TYPE"
    • --event-filters="bucket=BUCKET"
  • Setelah pemicu dibuat, EVENT_FILTER_TYPE tidak dapat diubah. Untuk jenis peristiwa yang berbeda, Anda harus membuat pemicu baru.
  • --service-account: Email akun layanan IAM yang akan digunakan pemicu Eventarc Anda untuk memanggil eksekusi alur kerja. Sebaiknya gunakan akun layanan dengan hak istimewa terendah yang diperlukan untuk mengakses resource yang diperlukan. Untuk mempelajari lebih lanjut akun layanan, lihat Membuat dan mengelola akun layanan.
  • Peristiwa dikirim menggunakan notifikasi Pub/Sub dari Cloud Storage. Menyiapkan terlalu banyak notifikasi yang terdaftar untuk bucket yang sama dapat menghabiskan batas notifikasi untuk bucket seperti yang ditunjukkan oleh error Cloud Storage bucket ...: Pub/Sub notification limit reached. Bucket dapat memiliki hingga 10 konfigurasi notifikasi yang ditetapkan untuk dipicu untuk peristiwa tertentu. Lihat kuota dan batasan lainnya di halaman kuota dan batas Cloud Storage.
  • 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.
  • Bucket Cloud Storage harus berada di Google Cloud project dan region atau multi-region yang sama dengan pemicu Eventarc.
  • Secara default, langganan Pub/Sub yang dibuat untuk Eventarc bertahan terlepas dari aktivitasnya dan tidak akan habis masa berlakunya. Untuk mengubah durasi ketidakaktifan, lihat Properti langganan.

Contoh:

gcloud eventarc triggers create helloworld-trigger \
    --location=us-central1 \
    --destination-workflow=my-workflow \
    --destination-workflow-location=europe-west4 \
    --event-filters="type=google.cloud.storage.object.v1.finalized" \
    --event-filters="bucket=my-project-bucket" \
    --service-account="${SERVICE_ACCOUNT_NAME}@${PROJECT_ID}.iam.gserviceaccount.com"

Perintah ini membuat pemicu bernama helloworld-trigger untuk bucket Cloud Storage my-project-bucket dan peristiwa yang diidentifikasi sebagai google.cloud.storage.object.v1.finalized.

Terraform

Anda dapat membuat pemicu untuk alur kerja menggunakan Terraform. Untuk mengetahui detailnya, lihat Memicu alur kerja menggunakan Eventarc dan Terraform.

Mencantumkan pemicu

Anda dapat mengonfirmasi pembuatan pemicu dengan mencantumkan pemicu Eventarc menggunakan Google Cloud CLI atau melalui konsol Google Cloud .

Konsol

  1. Di konsol Google Cloud , buka halaman Pemicu Eventarc.

    Buka Pemicu

    Halaman ini mencantumkan pemicu Anda di semua lokasi, dan menyertakan detail seperti nama, wilayah, penyedia peristiwa, tujuan, dan lainnya.

  2. Untuk memfilter pemicu stres Anda:

    1. Klik Filter atau kolom Pemicu filter.
    2. Di daftar Properti, pilih opsi untuk memfilter pemicu.

    Anda dapat memilih satu properti atau menggunakan operator logika OR untuk menambahkan lebih banyak properti.

  3. Untuk mengurutkan pemicu, di samping judul kolom yang didukung, klik Urutkan.

gcloud

Jalankan perintah berikut untuk mencantumkan pemicu Anda:

gcloud eventarc triggers list --location=-

Perintah ini mencantumkan pemicu Anda di semua lokasi, dan menyertakan detail seperti nama, jenis, tujuan, dan status.

Langkah berikutnya