Tutorial ini menunjukkan cara men-deploy layanan Cloud Run terautentikasi yang menerima peristiwa dari Cloud Storage menggunakan Cloud Audit Logs. Gunakan tutorial ini untuk men-deploy workload produksi. Pemicu Eventarc memfilter peristiwa berdasarkan entri Cloud Audit Logs. Untuk mengetahui informasi selengkapnya, lihat Menentukan filter peristiwa untuk Cloud Audit Logs.
Anda dapat menyelesaikan tutorial ini menggunakan konsol Google Cloud atau Google Cloud CLI.
Tujuan
Dalam tutorial 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 peristiwa tersebut di log Cloud Run.
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen Google Cloudyang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
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.
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.
Perhatikan bahwa secara default, izin Cloud Build mencakup izin untuk mengupload dan mendownload artefak Artifact Registry.
Izin yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk menyelesaikan tutorial ini, minta administrator Anda untuk memberi Anda peran IAM berikut di project Anda:
-
Editor Cloud Build (
roles/cloudbuild.builds.editor) -
Admin Cloud Run (
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 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.
Selesaikan langkah-langkah berikut menggunakan konsol Google Cloud atau gcloud CLI:
Konsol
- Login ke akun Google Cloud Anda. 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Artifact Registry, Cloud Build, Logging, Pub/Sub, Cloud Run, Cloud Storage, and Eventarc APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Artifact Registry, Cloud Build, Logging, Pub/Sub, Cloud Run, Cloud Storage, and Eventarc APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.- Untuk mengonfigurasi akses data yang dicatat dalam log audit Anda, aktifkan jenis log Admin Read, Data Read, dan Data Write untuk Google Cloud Storage:
-
Di konsol Google Cloud , buka halaman Service accounts.
- Klik Create service account.
-
Masukkan nama akun layanan untuk ditampilkan di konsol Google Cloud .
Konsol Google Cloud membuat ID akun layanan berdasarkan nama ini. Edit ID jika diperlukan. Anda tidak dapat mengubah ID nanti.
- Opsional: Masukkan deskripsi akun layanan.
-
Jika tidak ingin menetapkan kontrol akses sekarang, klik Selesai untuk menyelesaikan pembuatan akun layanan.
Untuk menetapkan kontrol akses sekarang, klik Buat dan lanjutkan, lalu lanjutkan ke langkah berikutnya.
- Pilih peran Cloud Run
Invoker dan
Eventarc Event Receiver yang akan diberikan pada
project ke akun layanan yang terkait dengan pemicu Eventarc
Anda.
Untuk tujuan pengujian, perintah ini memberikan peran Cloud Run Invoker di semua layanan dan tugas Cloud Run dalam project; namun, Anda dapat memberikan peran di layanan. Untuk mengetahui informasi selengkapnya, lihat Memberikan izin layanan Cloud Run.
Perhatikan bahwa pemicu akan berhasil dibuat dan diaktifkan jika Anda membuat pemicu untuk layanan Cloud Run yang diautentikasi tanpa memberikan peran Cloud Run Invoker. Namun, pemicu tidak akan berfungsi seperti yang diharapkan dan pesan yang mirip dengan berikut ini akan muncul di log:
The request was not authenticated. Either allow unauthenticated invocations or set the proper Authorization header. - Setelah selesai menambahkan peran, klik Lanjutkan dan Selesai untuk menyelesaikan pembuatan akun layanan.
gcloud
- Login ke akun Google Cloud Anda. 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.
-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init -
Buat atau pilih Google Cloud project.
Peran yang diperlukan untuk memilih atau membuat project
- Pilih 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 Pembuat Project
(
roles/resourcemanager.projectCreator), yang berisi izinresourcemanager.projects.create. Pelajari cara memberikan peran.
-
Buat Google Cloud project:
gcloud projects create PROJECT_ID
Ganti
PROJECT_IDdengan nama untuk Google Cloud project yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_IDdengan nama project Google Cloud Anda.
-
Verifikasi bahwa penagihan diaktifkan untuk project Google Cloud Anda.
Aktifkan Artifact Registry, Cloud Build, Logging, Pub/Sub, Cloud Run, Cloud Storage, dan Eventarc API:
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan peran IAM Service Usage Admin (
roles/serviceusage.serviceUsageAdmin), yang berisi izinserviceusage.services.enable. Pelajari cara memberikan peran.gcloud services enable artifactregistry.googleapis.com
cloudbuild.googleapis.com logging.googleapis.com pubsub.googleapis.com run.googleapis.com storage.googleapis.com and eventarc.googleapis.com -
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init -
Buat atau pilih Google Cloud project.
Peran yang diperlukan untuk memilih atau membuat project
- Pilih 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 Pembuat Project
(
roles/resourcemanager.projectCreator), yang berisi izinresourcemanager.projects.create. Pelajari cara memberikan peran.
-
Buat Google Cloud project:
gcloud projects create PROJECT_ID
Ganti
PROJECT_IDdengan nama untuk Google Cloud project yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_IDdengan nama project Google Cloud Anda.
-
Verifikasi bahwa penagihan diaktifkan untuk project Google Cloud Anda.
Aktifkan Artifact Registry, Cloud Build, Logging, Pub/Sub, Cloud Run, Cloud Storage, dan Eventarc API:
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan peran IAM Service Usage Admin (
roles/serviceusage.serviceUsageAdmin), yang berisi izinserviceusage.services.enable. Pelajari cara memberikan peran.gcloud services enable artifactregistry.googleapis.com
cloudbuild.googleapis.com logging.googleapis.com pubsub.googleapis.com run.googleapis.com storage.googleapis.com and eventarc.googleapis.com - Perbarui komponen
gcloud:gcloud components update
- Login menggunakan akun Anda:
gcloud auth login
- Tetapkan variabel konfigurasi yang digunakan dalam tutorial ini:
export REGION=us-central1 gcloud config set run/region ${REGION} gcloud config set run/platform managed gcloud config set eventarc/location ${REGION} export SERVICE_NAME=helloworld-events
- Untuk mengonfigurasi akses data yang dicatat dalam log audit Anda, aktifkan jenis log
ADMIN_READ,DATA_READ, danDATA_WRITEuntuk layananstorage.googleapis.com:- Baca kebijakan IAM project Anda dan simpan dalam file:
gcloud projects get-iam-policy PROJECT_ID > /tmp/policy.yaml
- Edit kebijakan Anda di
/tmp/policy.yaml, tambahkan atau ubah hanya konfigurasi log audit Akses Data.auditConfigs: - auditLogConfigs: - logType: ADMIN_READ - logType: DATA_WRITE - logType: DATA_READ service: storage.googleapis.com
- Tulis kebijakan IAM baru Anda:
Jika perintah sebelumnya melaporkan konflik dengan perubahan lain, maka ulangi langkah-langkah ini, mulai dengan membaca kebijakan IAM project.gcloud projects set-iam-policy PROJECT_ID /tmp/policy.yaml
- Baca kebijakan IAM project Anda dan simpan dalam file:
- Buat akun layanan untuk project:
Setelah Anda membuat akun layanan, perlu waktu hingga tujuh menit sebelum Anda dapat menggunakan akun layanan tersebut. Jika Anda mencoba menggunakan akun layanan segera setelah membuatnya, dan Anda menerima error, tunggu setidaknya 60 detik dan coba lagi.gcloud iam service-accounts create sample-service-account \ --description="A sample service account" \ --display-name="Sample service account" - Untuk mengonfirmasi bahwa
sample-service-accounttelah dibuat, jalankan: Output-nya akan mirip dengan berikut ini:gcloud iam service-accounts list
DISPLAY NAME EMAIL DISABLED Default compute service account PROJECT_NUMBER-compute@developer.gserviceaccount.com False Sample service account sample-service-account@PROJECT_ID.iam.gserviceaccount.com False
- Berikan peran
Cloud Run
Invoker (
run.invoker) dan Eventarc Event Receiver (roles/eventarc.eventReceiver) di project ke akun layanan yang terkait dengan pemicu Eventarc Anda:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:sample-service-account@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/run.invoker"
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:sample-service-account@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/eventarc.eventReceiver"
Ganti
PROJECT_IDdengan project ID Google Cloud Anda.Untuk tujuan pengujian, perintah ini memberikan peran Cloud Run Invoker di semua layanan dan tugas Cloud Run dalam project; namun, Anda dapat memberikan peran di layanan. Untuk mengetahui informasi selengkapnya, lihat Memberikan izin layanan Cloud Run.
Perhatikan bahwa pemicu akan berhasil dibuat dan diaktifkan jika Anda membuat pemicu untuk layanan Cloud Run yang diautentikasi tanpa memberikan peran Cloud Run Invoker. Namun, pemicu tidak akan berfungsi seperti yang diharapkan dan pesan yang mirip dengan berikut ini akan muncul di log:
The request was not authenticated. Either allow unauthenticated invocations or set the proper Authorization header.
Membuat repositori standar Artifact Registry
Buat repositori standar Artifact Registry untuk menyimpan image container Anda.Konsol
- Di konsol Google Cloud , buka halaman Repositories.
- Klik Buat repositori.
- Konfigurasi repositori Anda:
- Masukkan Nama yang unik.
- Untuk Format, pilih Docker.
- Untuk Mode, pilih Standard.
- Untuk Jenis lokasi, pilih Region.
- Di daftar Region, pilih us-central1 (Iowa).
- Setujui nilai default lainnya, lalu klik Create.
gcloud
gcloud artifacts repositories create REPOSITORY \ --repository-format=docker \ --location=$REGION
Ganti REPOSITORY dengan nama unik untuk repositori Artifact Registry.
Membuat bucket Cloud Storage
Tutorial ini menggunakan Cloud Storage sebagai sumber peristiwa. Untuk membuat bucket penyimpanan:
Konsol
- Di konsol Google Cloud , buka halaman Buckets.
- Klik Buat bucket.
- Masukkan informasi bucket Anda, lalu klik Lanjutkan untuk menyelesaikan setiap langkah:
- Masukkan Nama yang unik. Contoh,
eventarcbucket. - Pilih Region sebagai Jenis Lokasi.
- Pilih us-central1 (Iowa) sebagai Location.
- Pilih Standard untuk default storage class.
- Pilih Uniform untuk Access control.
- Masukkan Nama yang unik. Contoh,
- Klik Create.
gcloud
gcloud storage buckets create gs://events-tutorial-PROJECT_ID/ --location=$REGION
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 menerima dan mencatat peristiwa ke dalam log. Untuk men-deploy layanan penerima peristiwa sampel:
Konsol
- Clone repositori contoh ke akun GitHub Anda:
- Di GitHub, buka GoogleCloudPlatform/golang-samples
- Klik Fork.
- Jika diminta, pilih lokasi tempat Anda ingin membuat fork repositori.
- Di GitHub, buka GoogleCloudPlatform/java-docs-samples.
- Klik Fork.
- Jika diminta, pilih lokasi tempat Anda ingin membuat fork repositori.
- Di GitHub, buka GoogleCloudPlatform/dotnet-docs-samples.
- Klik Fork.
- Jika diminta, pilih lokasi tempat Anda ingin membuat fork repositori.
- Di GitHub, buka GoogleCloudPlatform/nodejs-docs-samples.
- Klik Fork.
- Jika diminta, pilih lokasi tempat Anda ingin membuat fork repositori.
- Di GitHub, buka GoogleCloudPlatform/python-docs-samples.
- Klik Fork.
- Jika diminta, pilih lokasi tempat Anda ingin membuat fork repositori.
- Di konsol Google Cloud , buka halaman Services.
- Klik Buat layanan untuk menampilkan formulir Buat layanan.
- Pilih Deploy berkelanjutan dari repositori.
Perubahan pada repositori GitHub Anda secara otomatis dicakup ke dalam image container di Artifact Registry dan di-deploy ke Cloud Run.
- Klik Set up with Cloud Build untuk membuka formulir Set up with Cloud Build.
- Jika diminta, aktifkan Cloud Build API dan Artifact Analysis API.
- Pilih GitHub sebagai Penyedia Repositori.
- Jika diminta, klik Install Google Cloud Build.
- Pilih repositori GitHub yang Anda fork sebagai Repositori.
- Klik Berikutnya.
- Di kolom Cabang, masukkan
^main$. - Pilih Dockerfile sebagai Build Type dan berikan lokasi sumber
Dockerfile:
eventarc/audit-storage/Dockerfileatau
eventarc/audit_storage/Dockerfile(Mulai)
- Klik Simpan.
- Di formulir Create service, masukkan nama layanan.
Contoh,
helloworld-events. - Pilih us-central1(Iowa) sebagai Region tempat Anda ingin layanan Anda berada.
- Pilih salah satu opsi Ingress berdasarkan traffic masuk yang ingin Anda izinkan di layanan Cloud Run.
- Pilih Wajibkan autentikasi
- Klik Create.
Go
Java
.NET
Node.js
Python
gcloud
- Buat clone repositori GitHub:
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git cd golang-samples/eventarc/audit_storage
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git cd java-docs-samples/eventarc/audit-storage
.NET
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git cd dotnet-docs-samples/eventarc/audit-storage
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git cd nodejs-docs-samples/eventarc/audit-storage
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git cd python-docs-samples/eventarc/audit-storage
- Build container dan upload ke Cloud Build:
gcloud builds submit --tag $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/$SERVICE_NAME:v1
- Men-deploy image container ke Cloud Run
gcloud run deploy $SERVICE_NAME \ --image $REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY/$SERVICE_NAME:v1Pada perintah untuk mengizinkan pemanggilan yang tidak diautentikasi, masukkan
n.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 akan mengirimkan peristiwa dari
bucket Cloud Storage ke layanan Cloud Run helloworld-events.
Konsol
- Di konsol Google Cloud , buka halaman Pemicu.
- Klik Create trigger.
- Ketik Trigger name.
Ini adalah ID pemicu dan harus diawali dengan huruf. Nama ini dapat berisi hingga 63 huruf kecil, angka, atau tanda hubung.
- Pilih Jenis pemicu:
- Pihak pertama: Memfilter peristiwa yang dikirim dari Google Cloud penyedia (secara langsung atau melalui entri Cloud Audit Logs) atau penyedia menggunakan pesan Pub/Sub.
- Pihak ketiga: Memfilter peristiwa yang dikirim dari penyedia pihak ketiga.
- Dalam daftar Event provider, pilih Cloud Storage sebagai sumber peristiwa.
- Di daftar Jenis peristiwa, pilih storage.objects.create.
- Dalam daftar Region, pilih us-central1 sebagai region untuk menerima peristiwa dari.
- Pilih Service account yang Anda buat. Misalnya,
SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com. - Dalam daftar Event destination, pilih Cloud Run.
- Dalam daftar Select a Cloud Run service, pilih helloworld-events.
- Klik Create. Perhatikan bahwa Anda juga dapat membuat pemicu Eventarc menggunakan halaman konsol Cloud Run.
gcloud
- Buat pemicu yang memfilter peristiwa Cloud Storage dan yang
menggunakan akun layanan yang Anda buat:
Gantigcloud eventarc triggers create events-tutorial-trigger \ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.audit.log.v1.written" \ --event-filters="serviceName=storage.googleapis.com" \ --event-filters="methodName=storage.objects.create" \ --service-account=sample-service-account@PROJECT_ID.iam.gserviceaccount.comPROJECT_IDdengan Google Cloud project ID.Dengan:
type: menentukan bahwa log audit dibuat saat kriteria filter pemicu terpenuhi.serviceName: layanan yang menulis log audit, yaitu Cloud Storage.methodName: operasi yang sedang diaudit, yaitustorage.objects.create.
events-tutorial-trigger. - Untuk mengonfirmasi bahwa
events-tutorial-triggerberhasil dibuat, jalankan:gcloud eventarc triggers list --location=$REGION
Pemicu,
events-tutorial-trigger, tercantum dengan
target helloworld-events.
Membuat dan melihat peristiwa
- Untuk membuat acara:
Konsol
- Buat file teks dengan nama file
random.txtdan teks "Hello World". - Di konsol Google Cloud , buka halaman Buckets.
- Pilih bucket penyimpanan yang Anda buat.
- Di tab Objects, klik Upload files, lalu upload file
random.txt.
gcloud
Upload file teks ke Cloud Storage:
echo "Hello World" > random.txt gcloud storage cp random.txt gs://events-tutorial-PROJECT_ID/random.txt
- Buat file teks dengan nama file
- Untuk melihat entri log:
- Di konsol Google Cloud , buka halaman Services.
- Dari daftar layanan, klik nama layanan yang Anda buat untuk membuka halaman Service details.
- Klik tab Logs untuk mendapatkan log permintaan dan container untuk semua revisi layanan ini. Pemfilteran dapat dilakukan berdasarkan tingkat keparahan log.
- Cari entri log yang mirip dengan:
denganDetected change in Cloud Storage bucket: storage.googleapis.com/projects/_/buckets/BUCKET_NAME/objects/random.txt
BUCKET_NAMEadalah nama bucket Cloud Storage. -
gcloud logging read "resource.labels.service_name=helloworld-events AND textPayload:random.txt" --format=json
- Cari entri log yang mirip dengan:
denganDetected change in Cloud Storage bucket: storage.googleapis.com/projects/_/buckets/BUCKET_NAME/objects/random.txt
BUCKET_NAMEadalah nama bucket Cloud Storage.
Konsol
gcloud
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
Meskipun Cloud Run tidak mengenakan biaya saat layanannya tidak digunakan, Anda mungkin tetap dikenai biaya atas penyimpanan image container di Artifact Registry, penyimpanan file di bucket Cloud Storage, dan resource Eventarc.Anda dapat:
Atau, Anda dapat menghapus project Google Cloud untuk menghindari tagihan. Menghapus project Google Cloud akan menghentikan penagihan untuk semua resource yang digunakan dalam project tersebut.
Menghapus Google Cloud project:
gcloud projects delete PROJECT_ID