Tutorial ini menunjukkan penggunaan Cloud Functions, Google Cloud Vision API, dan ImageMagick untuk mendeteksi dan memburamkan gambar menyinggung yang diupload ke bucket Cloud Storage.
Tujuan
- Mendeploy fungsi CloudEvent yang dipicu penyimpanan.
- Gunakan Cloud 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 menggunakan komponen Google Cloud yang dapat ditagih berikut:
- Cloud Functions
- Cloud Storage
- Cloud Vision
- Cloud Build
- Pub/Sub
- Artifact Registry
- Eventarc
- Cloud Logging
Untuk detailnya, lihat Harga Cloud Functions.
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Sebelum memulai
- 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.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Cloud Functions, Cloud Build, Artifact Registry, Eventarc, Cloud Storage, Cloud Vision, Logging, and Pub/Sub.
- Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
gcloud init
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Cloud Functions, Cloud Build, Artifact Registry, Eventarc, Cloud Storage, Cloud Vision, Logging, and Pub/Sub.
- Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
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.
- Cloud Function menganalisis gambar menggunakan Cloud Vision API.
- Jika konten kekerasan atau khusus dewasa terdeteksi, Cloud Function 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:gsutil mb -l REGION gs://YOUR_INPUT_BUCKET_NAME
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:gsutil mb -l REGION gs://YOUR_OUTPUT_BUCKET_NAME
Clone repositori aplikasi contoh ke komputer lokal Anda:
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
Atau, Anda dapat mendownload sampel sebagai file ZIP dan mengekstraknya.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
Atau, Anda dapat mendownload sampel sebagai file ZIP dan mengekstraknya.
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
Atau, Anda dapat mendownload sampel sebagai file ZIP dan mengekstraknya.
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
Atau, Anda dapat mendownload sampel sebagai file ZIP dan mengekstraknya.
Ubah ke direktori yang memuat kode contoh Cloud Functions:
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 Cloud Functions untuk sebagian besar runtime. Untuk PHP, Anda mungkin perlu melakukan beberapa konfigurasi manual.
Perlu diperhatikan bahwa Cloud Functions 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 Cloud 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
Menerapkan fungsi
Untuk men-deploy Cloud Function 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 tinggi
- 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 generasi ke-2, 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:
gsutil 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:
- Di konsol Google Cloud, buka halaman Manage resource.
- Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
Menghapus Cloud Function
Menghapus Cloud Functions 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 Cloud Functions dari Konsol Google Cloud.