Tutorial ini menunjukkan penggunaan fungsi Cloud Run, Cloud Vision API, dan ImageMagick untuk mendeteksi dan memburamkan gambar menyinggung yang diupload ke bucket Cloud Storage.
Tujuan
- Men-deploy fungsi Cloud Run Latar Belakang yang dipicu penyimpanan.
- Menggunakan Vision API untuk mendeteksi konten kekerasan atau khusus dewasa.
- Menggunakan ImageMagick untuk memburamkan gambar yang menyinggung.
- Menguji fungsi dengan mengupload gambar zombie pemakan daging.
Biaya
Di dokumen ini, Anda akan menggunakan komponen Google Cloudyang dapat ditagih berikut:
- Cloud Run functions
- Cloud Storage
- Cloud Vision
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.
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
(
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 Cloud Functions, Cloud Build, Cloud Storage, and Cloud Vision 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. -
Install the 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 -
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
(
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 Cloud Functions, Cloud Build, Cloud Storage, and Cloud Vision 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. -
Install the 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 - Siapkan lingkungan pengembangan Anda.
- Sebuah gambar diupload ke bucket Cloud Storage.
- Fungsi menganalisis gambar menggunakan Vision API.
- Jika konten kekerasan atau khusus dewasa terdeteksi, fungsi akan menggunakan ImageMagick untuk memburamkan gambar.
- Gambar yang diburamkan diupload ke bucket Cloud Storage lain untuk digunakan.
Buat bucket Cloud Storage untuk mengupload gambar, dengan
YOUR_INPUT_BUCKET_NAMEadalah nama bucket yang unik secara global:gcloud storage buckets create gs://YOUR_INPUT_BUCKET_NAME
Buat bucket Cloud Storage untuk menerima gambar yang diburamkan, dengan
YOUR_OUTPUT_BUCKET_NAMEadalah nama bucket yang unik secara global:gcloud storage buckets create gs://YOUR_OUTPUT_BUCKET_NAME
Buat 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 sebagai file ZIP dan mengekstraknya.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
Atau, Anda dapat mendownload contoh sebagai file ZIP dan mengekstraknya.
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
Atau, Anda dapat mendownload contoh sebagai file ZIP dan mengekstraknya.
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
Atau, Anda dapat mendownload contoh sebagai file ZIP dan mengekstraknya.
Ruby
git clone https://github.com/GoogleCloudPlatform/ruby-docs-samples.git
Atau, Anda dapat mendownload contoh sebagai file ZIP dan mengekstraknya.
Ubah ke direktori yang memuat kode contoh fungsi Cloud Run:
Node.js
cd nodejs-docs-samples/functions/imagemagick/
Python
cd python-docs-samples/functions/imagemagick/
Go
cd golang-samples/functions/imagemagick/
Java
cd java-docs-samples/functions/imagemagick/
Ruby
cd ruby-docs-samples/functions/imagemagick/
RUNTIME: runtime yang berdasarkan Ubuntu 18.04 (runtime yang lebih baru tidak menyertakan dukungan untuk ImageMagick).YOUR_INPUT_BUCKET_NAME: nama bucket Cloud Storage untuk mengupload gambar.YOUR_OUTPUT_BUCKET_NAME: nama bucket tempat menyimpan gambar yang diburamkan.Upload gambar yang menyinggung, seperti gambar zombie pemakan daging ini:
gcloud storage cp zombie.jpg gs://YOUR_INPUT_BUCKET_NAME
dengan
YOUR_INPUT_BUCKET_NAMEadalah bucket Cloud Storage yang Anda buat sebelumnya untuk mengupload gambar.Perhatikan log untuk memastikan eksekusi telah selesai:
gcloud functions logs read --limit 100
Anda dapat melihat gambar yang diburamkan di bucket Cloud Storage
YOUR_OUTPUT_BUCKET_NAMEyang Anda buat sebelumnya.- 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.
Jika Anda sudah menginstal gcloud CLI, update dengan menjalankan perintah berikut:
gcloud components update
Memvisualisasikan alur data
Alur data dalam aplikasi tutorial ImageMagick melibatkan beberapa langkah:
Menyiapkan aplikasi
Memahami kode
Mengimpor dependensi
Aplikasi harus mengimpor beberapa dependensi untuk berinteraksi dengan layananGoogle Cloud , ImageMagick, dan sistem file:
Node.js
Python
Go
Java
Ruby
Menganalisis gambar
Fungsi berikut dipanggil saat gambar diupload ke bucket Cloud Storage yang Anda buat untuk menyimpan gambar. Fungsi ini menggunakan Vision API untuk mendeteksi konten kekerasan atau khusus dewasa dalam gambar yang diupload.
Node.js
Python
Go
Java
Ruby
Pemburaman gambar
Fungsi berikut dipanggil ketika konten kekerasan atau khusus dewasa terdeteksi dalam gambar yang diupload. Fungsi ini akan mendownload gambar yang menyinggung, menggunakan ImageMagick untuk memburamkan gambar, lalu mengupload gambar yang diburamkan di atas gambar asli.
Node.js
Python
Go
Java
Ruby
Men-deploy fungsi
Untuk men-deploy fungsi Anda dengan pemicu penyimpanan, jalankan perintah
berikut di direktori yang berisi kode contoh (atau untuk
Java, file pom.xml):
Node.js
gcloud functions deploy blurOffensiveImages \ --no-gen2 \ --runtime=RUNTIME \ --trigger-bucket=YOUR_INPUT_BUCKET_NAME \ --set-env-vars=BLURRED_BUCKET_NAME=YOUR_OUTPUT_BUCKET_NAME
Python
gcloud functions deploy blur_offensive_images \ --no-gen2 \ --runtime=RUNTIME \ --trigger-bucket=YOUR_INPUT_BUCKET_NAME \ --set-env-vars=BLURRED_BUCKET_NAME=YOUR_OUTPUT_BUCKET_NAME
Go
gcloud functions deploy BlurOffensiveImages \ --no-gen2 \ --runtime=RUNTIME \ --trigger-bucket=YOUR_INPUT_BUCKET_NAME \ --set-env-vars=BLURRED_BUCKET_NAME=YOUR_OUTPUT_BUCKET_NAME
Java
gcloud functions deploy java-blur-function \ --no-gen2 \ --entry-point=functions.ImageMagick \ --runtime=RUNTIME \ --memory 512MB \ --trigger-bucket=YOUR_INPUT_BUCKET_NAME \ --set-env-vars=BLURRED_BUCKET_NAME=YOUR_OUTPUT_BUCKET_NAME
C#
gcloud functions deploy csharp-blur-function \ --no-gen2 \ --entry-point=ImageMagick.Function \ --runtime=RUNTIME \ --trigger-bucket=YOUR_INPUT_BUCKET_NAME \ --set-env-vars=BLURRED_BUCKET_NAME=YOUR_OUTPUT_BUCKET_NAME
Ruby
gcloud functions deploy blur_offensive_images \ --no-gen2 \ --runtime=RUNTIME \ --trigger-bucket=YOUR_INPUT_BUCKET_NAME \ --set-env-vars=BLURRED_BUCKET_NAME=YOUR_OUTPUT_BUCKET_NAME
Ganti kode berikut:
Khusus untuk contoh ini, jangan sertakan gs:// sebagai bagian dari nama bucket
dalam perintah deploy.
Mengupload gambar
Pembersihan
Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus masing-masing resource.
Menghapus project
Cara termudah untuk menghilangkan penagihan adalah dengan menghapus project yang Anda buat untuk tutorial.
Untuk menghapus project:
Menghapus fungsi
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 blurOffensiveImages
Python
gcloud functions delete blur_offensive_images
Go
gcloud functions delete BlurOffensiveImages
Java
gcloud functions delete java-blur-function
Ruby
gcloud functions delete blur_offensive_images
Anda juga dapat menghapus fungsi Cloud Run dari konsolGoogle Cloud .