Tutorial ini menunjukkan penggunaan fungsi Cloud Run, Vision API, dan ImageMagick untuk mendeteksi dan memburamkan gambar menyinggung yang diupload ke bucket Cloud Storage.
Tujuan
- Mendeploy fungsi CloudEvent yang dipicu penyimpanan.
- Gunakan Vision API untuk mendeteksi konten kekerasan atau khusus dewasa.
- Gunakan ImageMagick untuk memburamkan gambar yang menyinggung.
- Uji fungsi dengan mengupload gambar zombie pemakan daging.
Biaya
Dalam dokumen ini, Anda akan menggunakan komponen Google Cloud yang dapat ditagih berikut:
- Cloud Run functions
- Cloud Storage
- Cloud Vision
- Cloud Build
- Pub/Sub
- Artifact Registry
- Eventarc
- Cloud Logging
For details, see Cloud Run functions pricing.
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Sebelum memulai
- 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 Cloud Functions, Cloud Build, Artifact Registry, Eventarc, Cloud Storage, Cloud Vision, Logging, and Pub/Sub APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
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 Cloud Functions, Cloud Build, Artifact Registry, Eventarc, Cloud Storage, Cloud Vision, Logging, and Pub/Sub APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- Siapkan lingkungan pengembangan Anda.
Jika Anda sudah menginstal gcloud CLI, update dengan menjalankan perintah berikut:
gcloud components update
Memvisualisasikan aliran data
Alur data dalam aplikasi tutorial ImageMagick melibatkan beberapa langkah:
- Gambar diupload ke bucket Cloud Storage.
- Fungsi Cloud Run menganalisis gambar menggunakan Cloud Vision API.
- Jika konten kekerasan atau khusus dewasa terdeteksi, fungsi Cloud Run akan menggunakan ImageMagick untuk memburamkan gambar.
- Gambar yang diburamkan diupload ke bucket Cloud Storage lain untuk digunakan.
Menyiapkan aplikasi
Buat bucket Cloud Storage regional untuk mengupload gambar, dengan
YOUR_INPUT_BUCKET_NAME
adalah nama bucket yang unik secara global, danREGION
adalah region tempat Anda berencana men-deploy fungsi:gcloud storage buckets create gs://YOUR_INPUT_BUCKET_NAME --location=REGION
Buat bucket Cloud Storage regional untuk menerima gambar yang diburamkan, dengan
YOUR_OUTPUT_BUCKET_NAME
sebagai nama bucket yang unik secara global, danREGION
adalah region tempat Anda berencana men-deploy fungsi:gcloud storage buckets create gs://YOUR_OUTPUT_BUCKET_NAME --location=REGION
Clone repositori aplikasi contoh ke komputer lokal Anda:
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
Atau, Anda dapat mendownload contoh dalam file ZIP dan mengekstraknya.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
Atau, Anda dapat mendownload contoh dalam file ZIP dan mengekstraknya.
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
Atau, Anda dapat mendownload contoh dalam file ZIP dan mengekstraknya.
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
Atau, Anda dapat mendownload contoh dalam file ZIP dan mengekstraknya.
Ubah ke direktori yang berisi kode contoh fungsi Cloud Run:
Node.js
cd nodejs-docs-samples/functions/v2/imagemagick/
Python
cd python-docs-samples/functions/v2/imagemagick/
Go
cd golang-samples/functions/functionsv2/imagemagick/
Java
cd java-docs-samples/functions/v2/imagemagick/
Memahami kode
Contoh ImageMagick mencakup dependensi dan dua fungsi berbeda. Fungsi pertama menganalisis gambar, dan fungsi kedua memburamkannya jika berisi konten kekerasan atau khusus dewasa.
Mengimpor dependensi
Aplikasi harus mengimpor beberapa dependensi untuk berinteraksi dengan layanan Google Cloud, ImageMagick, dan sistem file:
ImageMagick dan alat command line convert
disertakan secara default dalam lingkungan eksekusi fungsi Cloud Run untuk sebagian besar runtime. Untuk PHP, Anda mungkin perlu melakukan beberapa konfigurasi manual.
Perlu diperhatikan bahwa fungsi Cloud Run tidak mendukung penginstalan paket kustom level sistem.
Node.js
Python
Go
Java
Menganalisis gambar
Fungsi berikut dipanggil saat gambar diupload ke bucket Cloud Storage yang Anda buat untuk input gambar. Fungsi ini menggunakan Vision API untuk mendeteksi konten kekerasan atau khusus dewasa dalam gambar yang diupload.
Node.js
Python
Go
Java
Memburamkan gambar
Fungsi berikut dipanggil ketika terdeteksi konten kekerasan atau khusus dewasa dalam gambar yang diupload. Fungsi ini akan mendownload gambar yang menyinggung, menggunakan ImageMagick untuk memburamkan gambar, lalu mengupload gambar yang diburamkan ke bucket output.
Node.js
Python
Go
Java
Men-deploy cloud function
Untuk men-deploy fungsi Cloud Run dengan pemicu penyimpanan, jalankan perintah berikut di direktori yang berisi kode contoh (atau untuk Java, file pom.xml
):
Node.js
gcloud functions deploy nodejs-blur-function \ --gen2 \ --runtime=RUNTIME \ --region=REGION \ --source=. \ --entry-point=blurOffensiveImages \ --trigger-bucket=YOUR_INPUT_BUCKET_NAME \ --set-env-vars=BLURRED_BUCKET_NAME=YOUR_OUTPUT_BUCKET_NAME
Python
gcloud functions deploy python-blur-function \ --gen2 \ --runtime=RUNTIME \ --region=REGION \ --source=. \ --entry-point=blur_offensive_images \ --trigger-bucket=YOUR_INPUT_BUCKET_NAME \ --set-env-vars=BLURRED_BUCKET_NAME=YOUR_OUTPUT_BUCKET_NAME
Go
gcloud functions deploy go-blur-function \ --gen2 \ --runtime=RUNTIME \ --region=REGION \ --source=. \ --entry-point=blur-offensive-images \ --trigger-bucket=YOUR_INPUT_BUCKET_NAME \ --set-env-vars=BLURRED_BUCKET_NAME=YOUR_OUTPUT_BUCKET_NAME
Java
gcloud functions deploy java-blur-function \ --gen2 \ --runtime=RUNTIME \ --region=REGION \ --source=. \ --entry-point=functions.ImageMagick \ --trigger-bucket=YOUR_INPUT_BUCKET_NAME \ --set-env-vars=BLURRED_BUCKET_NAME=YOUR_OUTPUT_BUCKET_NAME
Ganti kode berikut:
- RUNTIME: runtime yang didasarkan pada Ubuntu 18.04 atau yang lebih baru
- REGION: Nama region Google Cloud tempat Anda ingin men-deploy fungsi (misalnya,
us-west1
). - YOUR_INPUT_BUCKET_NAME: Nama bucket Cloud Storage untuk mengupload gambar.
- YOUR_OUTPUT_BUCKET_NAME: Nama bucket tempat menyimpan gambar yang diburamkan.
Saat men-deploy fungsi Cloud Run, tentukan nama bucket saja tanpa awalan gs://
; misalnya, --trigger-event-filters="bucket=my-bucket"
.
Upload gambar
Upload gambar yang menyinggung, seperti gambar zombie pemakan daging ini:
gcloud storage cp zombie.jpg gs://YOUR_INPUT_BUCKET_NAME
pada
YOUR_INPUT_BUCKET_NAME
bucket Cloud Storage yang Anda buat sebelumnya untuk mengupload gambar.Anda akan melihat analisis gambar di log:
gcloud beta functions logs read YOUR_FUNCTION_NAME --gen2 --limit=100
Anda dapat melihat gambar yang diburamkan di bucket Cloud Storage
YOUR_OUTPUT_BUCKET_NAME
yang dibuat sebelumnya.
Pembersihan
Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.
Menghapus project
Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.
Untuk menghapus project:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Menghapus fungsi Cloud Run
Menghapus fungsi Cloud Run tidak akan menghapus resource apa pun yang tersimpan di Cloud Storage.
Untuk menghapus fungsi yang Anda deploy dalam tutorial ini, jalankan perintah berikut:
Node.js
gcloud functions delete nodejs-blur-function --gen2 --region REGION
Python
gcloud functions delete python-blur-function --gen2 --region REGION
Go
gcloud functions delete go-blur-function --gen2 --region REGION
Java
gcloud functions delete java-blur-function --gen2 --region REGION
Anda juga dapat menghapus fungsi Cloud Run dari Konsol Google Cloud.