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 objek, dan pembaruan metadata. Untuk mengetahui informasi selengkapnya, lihat Membuat pemicu untuk merutekan peristiwa Cloud Storage ke Cloud Run.

Dalam panduan memulai ini, Anda akan:

  1. Membuat bucket Cloud Storage untuk menjadi sumber peristiwa.

  2. Men-deploy layanan penerima peristiwa ke Cloud Run.

  3. Membuat pemicu Eventarc.

  4. Membuat peristiwa dengan mengupload file ke bucket Cloud Storage, dan menampilkannya 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 yang terbatas. Google Cloud

  1. Login keakun Anda. Google Cloud Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. Instal Google Cloud CLI.

  3. Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

  4. Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:

    gcloud init
  5. Buat atau pilih Google Cloud project.

    Peran yang diperlukan untuk memilih atau membuat project

    • Memilih project: Memilih project tidak memerlukan peran IAM tertentu Anda dapat memilih project mana pun yang telah diberi peran.
    • Membuat project: Untuk membuat project, Anda memerlukan peran Project Creator (roles/resourcemanager.projectCreator), yang berisi izin resourcemanager.projects.create. Pelajari cara memberikan peran.
    • Buat Google Cloud project:

      gcloud projects create PROJECT_ID

      Ganti PROJECT_ID dengan nama untuk Google Cloud project yang Anda buat.

    • Pilih Google Cloud project yang Anda buat:

      gcloud config set project PROJECT_ID

      Ganti PROJECT_ID dengan nama Google Cloud project Anda.

  6. Pastikan penagihan diaktifkan untuk Google Cloud project Anda.

  7. Instal Google Cloud CLI.

  8. Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.

  9. Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:

    gcloud init
  10. Buat atau pilih Google Cloud project.

    Peran yang diperlukan untuk memilih atau membuat project

    • Memilih project: Memilih project tidak memerlukan peran IAM tertentu Anda dapat memilih project mana pun yang telah diberi peran.
    • Membuat project: Untuk membuat project, Anda memerlukan peran Project Creator (roles/resourcemanager.projectCreator), yang berisi izin resourcemanager.projects.create. Pelajari cara memberikan peran.
    • Buat Google Cloud project:

      gcloud projects create PROJECT_ID

      Ganti PROJECT_ID dengan nama untuk Google Cloud project yang Anda buat.

    • Pilih Google Cloud project yang Anda buat:

      gcloud config set project PROJECT_ID

      Ganti PROJECT_ID dengan nama Google Cloud project Anda.

  11. Pastikan penagihan diaktifkan untuk Google Cloud project Anda.

  12. 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
  13. Perbarui komponen gcloud:
    gcloud components update
  14. Login menggunakan akun Anda:
    gcloud auth login
  15. 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
  16. 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 Google Cloud resource 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:

    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.

  17. Catat akun layanan default Compute Engine karena Anda akan melampirkannya 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 nomor Google Cloud project Anda. Anda dapat menemukan nomor project di halaman Selamat Datang di Google Cloud konsol 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 berisi izin minimum yang diperlukan dan mengikuti prinsip hak istimewa terendah.

  18. 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
  19. 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'
  20. Jika Anda mengaktifkan agen layanan Cloud Pub/Sub pada atau sebelum April 8, 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:
gcloud storage buckets create gs://PROJECT_ID-bucket/ --location=us-central1

Setelah sumber peristiwa dibuat, Anda dapat men-deploy layanan penerima peristiwa di Cloud Run.

Men-deploy layanan penerima peristiwa ke Cloud Run

Men-deploy layanan Cloud Run yang akan menerima dan mencatat peristiwa 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 bernama helloworld-events ke Cloud Run, Anda dapat menyiapkan pemicu.

Membuat pemicu Eventarc

Pemicu Eventarc mengirimkan peristiwa dari bucket Cloud Storage ke layanan Cloud Run helloworld-events.

  1. 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 Google Cloud project, 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.

  2. 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

  1. Untuk membuat peristiwa, upload file teks ke Cloud Storage:

     echo "Hello World" > random.txt
     gcloud storage 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.

  2. 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."'
    
  3. Cari entri log yang mirip dengan hal 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:

  1. Menghapus bucket Cloud Storage.

  2. Menghapus layanan Cloud Run.

  3. Menghapus pemicu Eventarc.

Atau, Anda dapat menghapus Google Cloud project untuk menghindari tagihan. Menghapus Google Cloud project akan menghentikan penagihan untuk semua resource yang digunakan dalam project tersebut.

Hapus a Google Cloud project:

gcloud projects delete PROJECT_ID

Jika Anda berencana mempelajari beberapa tutorial dan panduan memulai, menggunakan kembali project dapat membantu Anda agar tidak melampaui batas kuota project.

Langkah berikutnya