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 beban kerja 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 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 untuk memberi Anda peran IAM berikut di project Anda:
-
Editor Cloud Build (
roles/cloudbuild.builds.editor
) -
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.
Selesaikan langkah-langkah berikut menggunakan konsol Google Cloud atau gcloud CLI:
Konsol
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure 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.
- Untuk mengonfigurasi akses data yang dicatat dalam log audit,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 Google Cloud Console.
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 Anda 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 untuk diberikan pada project ke akun layanan yang terkait dengan pemicu Eventarc Anda.
Untuk tujuan pengujian, tindakan ini akan memberikan peran Cloud Run Invoker di semua layanan dan tugas Cloud Run dalam project; namun, Anda dapat memberikan peran tersebut 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
- 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.
-
Enable the Artifact Registry, Cloud Build, Logging, Pub/Sub, Cloud Run, Cloud Storage, and Eventarc APIs:
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 - 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.
-
Enable the Artifact Registry, Cloud Build, Logging, Pub/Sub, Cloud Run, Cloud Storage, and Eventarc APIs:
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, aktifkan jenis log
ADMIN_READ
,DATA_READ
, danDATA_WRITE
untuk 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
, dengan menambahkan atau mengubah 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, ulangi langkah-langkah ini, dimulai 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 membuat akun layanan, perlu waktu hingga tujuh menit sebelum Anda dapat menggunakan akun layanan. Jika Anda mencoba menggunakan akun layanan segera setelah membuatnya, dan Anda menerima error, tunggu minimal 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-account
telah dibuat, jalankan: Outputnya 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_ID
dengan project ID Google Cloud Anda.Untuk tujuan pengujian, tindakan ini akan memberikan peran Cloud Run Invoker di semua layanan dan tugas Cloud Run dalam project; tetapi, Anda dapat memberikan peran tersebut di layanan. Untuk 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 Create repository.
- Konfigurasi repositori Anda:
- Masukkan Nama yang unik.
- Untuk Format, pilih Docker.
- Untuk Mode, pilih Standar.
- Untuk Jenis lokasi, pilih Region.
- Di daftar Region, pilih us-central1 (Iowa).
- Setujui setelan 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 Bucket.
- Klik Create bucket.
- Masukkan informasi bucket Anda, lalu klik Continue untuk menyelesaikan setiap langkah:
- Masukkan Nama yang unik. Contoh,
eventarcbucket
. - Pilih Region sebagai Location Type.
- Pilih us-central1 (Iowa) sebagai Lokasi.
- Pilih Standard untuk default storage class.
- Pilih Seragam untuk Kontrol akses.
- Masukkan Nama yang unik. Contoh,
- Klik Buat.
gcloud
gsutil mb -l $REGION gs://events-tutorial-PROJECT_ID/
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 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 melakukan fork repositori.
- Di GitHub, buka GoogleCloudPlatform/java-docs-samples.
- Klik Fork.
- Jika diminta, pilih lokasi tempat Anda ingin melakukan fork repositori.
- Di GitHub, buka GoogleCloudPlatform/dotnet-docs-samples.
- Klik Fork.
- Jika diminta, pilih lokasi tempat Anda ingin melakukan fork repositori.
- Di GitHub, buka GoogleCloudPlatform/nodejs-docs-samples.
- Klik Fork.
- Jika diminta, pilih lokasi tempat Anda ingin melakukan fork repositori.
- Di GitHub, buka GoogleCloudPlatform/python-docs-samples.
- Klik Fork.
- Jika diminta, pilih lokasi tempat Anda ingin melakukan 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 Siapkan dengan Cloud Build untuk membuka formulir Siapkan dengan Cloud Build.
- Jika diminta, aktifkan Cloud Build API dan Artifact Analysis API.
- Pilih GitHub sebagai Penyedia Repositori.
- Jika diminta, klik Instal 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/Dockerfile
atau
eventarc/audit_storage/Dockerfile
(Go)
- Klik Simpan.
- Di formulir Buat layanan, masukkan nama layanan.
Contoh,
helloworld-events
. - Pilih us-central1(Iowa) sebagai Region tempat Anda ingin layanan berada.
- Pilih salah satu opsi Ingress berdasarkan traffic masuk yang ingin Anda izinkan di layanan Cloud Run.
- Pilih Wajibkan autentikasi
- Klik Buat.
Go

Java

.NET

Node.js

Python

gcloud
- 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:v1
Pada 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 mengirim peristiwa dari
bucket Cloud Storage ke layanan Cloud Run helloworld-events
.
Konsol
- Di konsol Google Cloud, buka halaman Pemicu.
- Klik Create trigger.
- Ketik Nama pemicu.
Ini adalah ID pemicu dan harus diawali dengan huruf. Nama dapat berisi hingga 63 huruf kecil, angka, atau tanda hubung.
- Pilih Jenis pemicu:
- Pihak pertama: Memfilter peristiwa yang dikirim dari penyedia Google Cloud(langsung atau melalui entri Cloud Audit Logs) atau penyedia yang menggunakan pesan Pub/Sub.
- Pihak ketiga: Memfilter peristiwa yang dikirim dari penyedia pihak ketiga.
- Dalam daftar Penyedia peristiwa, pilih Cloud Storage sebagai sumber peristiwa.
- Di daftar Jenis peristiwa, pilih storage.objects.create.
- Dalam daftar Region, pilih us-central1 sebagai region yang akan menerima peristiwa.
- Pilih Service account yang Anda buat. Misalnya,
SERVICE_ACCOUNT_ID@PROJECT_ID
.iam.gserviceaccount.com. - Dalam daftar Tujuan peristiwa, pilih Cloud Run.
- Dalam daftar Select a Cloud Run service, pilih helloworld-events.
- Klik Buat. Perhatikan bahwa Anda juga dapat membuat pemicu Eventarc menggunakan halaman konsol Cloud Run.
gcloud
- Buat pemicu yang memfilter peristiwa Cloud Storage dan 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.com
PROJECT_ID
dengan project ID Google Cloud.Dengan keterangan:
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-trigger
berhasil dibuat, jalankan:gcloud eventarc triggers list --location=$REGION
Pemicu,
events-tutorial-trigger
, tercantum dengan target helloworld-events
.
Membuat dan melihat peristiwa
- Untuk membuat peristiwa:
Konsol
- Buat file teks dengan nama file
random.txt
dan teks "Hello World". - Di konsol Google Cloud, buka halaman Bucket.
- 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 gsutil 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 Detail layanan.
- 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_NAME
adalah 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_NAME
adalah 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 ditagih 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 Anda akan menghentikan penagihan untuk semua resource yang digunakan dalam project tersebut.
Delete a Google Cloud project:
gcloud projects delete PROJECT_ID