Checkpoint
Build simple a REST API
/ 20
Create a Revision for Cloud Run
/ 20
Create two cloud storage buckets
/ 10
Create a Pub/Sub topic for receiving notification from storage bucket
/ 10
Create a Pub/Sub subscription
/ 10
Create another build for REST API
/ 15
Create a new Revision
/ 15
Membangun Aplikasi Serverless dengan Cloud Run yang Membuat File PDF
- GSP644
- Ringkasan
- Tujuan
- Penyiapan dan persyaratan
- Tugas 1. Memahami tugas
- Tugas 2. Mengaktifkan Cloud Run API
- Tugas 3. Men-deploy layanan Cloud Run sederhana
- Tugas 4. Memicu layanan Cloud Run saat file baru diupload
- Tugas 5. Melihat apakah layanan Cloud Run dipicu saat file diupload ke Cloud Storage
- Tugas 6. Container
- Tugas 7. Menguji layanan pdf-conversion
- Selamat!
GSP644
Ringkasan
Dua belas tahun lalu, Lily memulai jaringan klinik hewan Pet Theory. Saat ini, Pet Theory mengirimkan invoice dalam format DOCX kepada klien, tetapi banyak dari mereka yang mengeluh tidak bisa membuka file tersebut. Untuk meningkatkan kepuasan pelanggan, Lily meminta Patrick dari bagian IT untuk mencari alternatif guna mengatasi keluhan tersebut.
Pet Theory hanya memiliki satu staf operasional yang menangani bermacam tugas. Karena itulah, mereka ingin berinvestasi dalam solusi hemat biaya yang tidak memerlukan banyak pemeliharaan berkelanjutan. Setelah menganalisis berbagai opsi pemrosesan, Patrick memutuskan untuk menggunakan Cloud Run.
Cloud Run bersifat serverless sehingga dapat mengabstraksi semua pengelolaan infrastruktur dan memungkinkan Anda berfokus pada membangun aplikasi, bukan memikirkan overhead. Sebagai produk serverless Google, Cloud Run dapat melakukan penskalaan hingga nol, yang berarti layanan ini tidak akan menimbulkan biaya jika tidak digunakan. Cloud Run juga memungkinkan Anda menggunakan paket biner kustom berbasis container, yang berarti sekarang Anda dapat membangun artefak yang terisolasi dan konsisten.
Dalam lab ini, Anda akan membangun aplikasi web pengonversi PDF di Cloud Run yang otomatis mengonversi file yang disimpan di Cloud Storage menjadi PDF yang disimpan di folder terpisah.
Arsitektur
Diagram ini memberikan ringkasan terkait layanan yang akan Anda gunakan dan bagaimana layanan tersebut terhubung dengan satu sama lain:
Tujuan
Dalam lab ini, Anda akan mempelajari cara:
- Mengonversi aplikasi Node JS menjadi container.
- Membangun container dengan Google Cloud Build.
- Membuat layanan Cloud Run yang mengonversi file menjadi file PDF di cloud.
- Menggunakan pemrosesan peristiwa dengan Cloud Storage
Prasyarat
Ini adalah lab tingkat menengah. Anda dianggap sudah familier dengan Konsol Cloud dan lingkungan shell. Pengalaman dalam menggunakan Firebase akan bermanfaat, tetapi tidak wajib. Sebelum mengikuti lab ini, sebaiknya Anda telah menyelesaikan lab Google Cloud Skills Boost berikut:
Setelah Anda siap, scroll ke bawah dan ikuti langkah berikut ini untuk menyiapkan lingkungan lab Anda.
Penyiapan dan persyaratan
Sebelum mengklik tombol Mulai Lab
Baca petunjuk ini. Lab memiliki timer dan Anda tidak dapat menjedanya. Timer, yang dimulai saat Anda mengklik Start Lab, akan menampilkan durasi ketersediaan resource Google Cloud untuk Anda.
Lab praktik ini dapat Anda gunakan untuk melakukan sendiri aktivitas lab di lingkungan cloud sungguhan, bukan di lingkungan demo atau simulasi. Untuk mengakses lab ini, Anda akan diberi kredensial baru yang bersifat sementara dan dapat digunakan untuk login serta mengakses Google Cloud selama durasi lab.
Untuk menyelesaikan lab ini, Anda memerlukan:
- Akses ke browser internet standar (disarankan browser Chrome).
- Waktu untuk menyelesaikan lab. Ingat, setelah dimulai, lab tidak dapat dijeda.
Cara memulai lab dan login ke Google Cloud Console
-
Klik tombol Start Lab. Jika Anda perlu membayar lab, jendela pop-up akan terbuka untuk memilih metode pembayaran. Di sebelah kiri adalah panel Lab Details dengan info berikut:
- Tombol Open Google Cloud console
- Waktu tersisa
- Kredensial sementara yang harus Anda gunakan untuk lab ini
- Informasi lain, jika diperlukan, untuk menyelesaikan lab ini
-
Klik Open Google Cloud console (atau klik kanan dan pilih Open Link in Incognito Window jika Anda menjalankan browser Chrome).
Lab akan menjalankan resource, lalu membuka tab lain yang menampilkan halaman Sign in.
Tips: Atur tab di jendela terpisah secara berdampingan.
Catatan: Jika Anda melihat dialog Choose an account, klik Use Another Account. -
Jika perlu, salin Username di bawah dan tempel ke dialog Sign in.
{{{user_0.username | "Username"}}} Anda juga dapat menemukan Username di panel Lab Details.
-
Klik Next.
-
Salin Password di bawah dan tempel ke dialog Welcome.
{{{user_0.password | "Password"}}} Anda juga dapat menemukan Password di panel Lab Details.
-
Klik Next.
Penting: Anda harus menggunakan kredensial yang diberikan lab. Jangan menggunakan kredensial akun Google Cloud Anda. Catatan: Menggunakan akun Google Cloud sendiri untuk lab ini dapat dikenai biaya tambahan. -
Klik halaman berikutnya:
- Setujui persyaratan dan ketentuan.
- Jangan tambahkan opsi pemulihan atau autentikasi 2 langkah (karena ini akun sementara).
- Jangan mendaftar uji coba gratis.
Setelah beberapa saat, Konsol Google Cloud akan terbuka di tab ini.
Mengaktifkan Cloud Shell
Cloud Shell adalah mesin virtual yang dilengkapi dengan berbagai alat pengembangan. Mesin virtual ini menawarkan direktori beranda persisten berkapasitas 5 GB dan berjalan di Google Cloud. Cloud Shell menyediakan akses command-line untuk resource Google Cloud Anda.
- Klik Activate Cloud Shell di bagian atas konsol Google Cloud.
Setelah terhubung, Anda sudah diautentikasi, dan project ditetapkan ke PROJECT_ID Anda. Output berisi baris yang mendeklarasikan PROJECT_ID untuk sesi ini:
gcloud
adalah alat command line untuk Google Cloud. Alat ini sudah terinstal di Cloud Shell dan mendukung pelengkapan command line.
- (Opsional) Anda dapat menampilkan daftar nama akun yang aktif dengan perintah ini:
-
Klik Authorize.
-
Output Anda sekarang akan terlihat seperti ini:
Output:
- (Opsional) Anda dapat menampilkan daftar project ID dengan perintah ini:
Output:
Contoh output:
gcloud
yang lengkap di Google Cloud, baca panduan ringkasan gcloud CLI.
Tugas 1. Memahami tugas
Pet Theory ingin mengonversi invoice mereka menjadi PDF agar dapat dibuka pelanggan dengan mudah. Tim ingin konversi tersebut berjalan otomatis untuk mengurangi beban kerja Lisa, manajer kantor mereka.
Ruby, konsultan komputer Pet Theory, menerima pesan dari Patrick di IT...
Patrick, Admin IT |
Halo Ruby, Setelah saya pelajari, tampaknya LibreOffice bagus untuk mengonversi banyak format file menjadi PDF. Bisakah kita menjalankan LibreOffice di cloud tanpa harus mengelola server? Patrick |
Ruby, Konsultan Software |
Halo Patrick, Saya sudah menemukan solusi untuk situasi ini. Saya baru saja menonton video menarik di YouTube dari Next 19 tentang Cloud Run. Sepertinya kita bisa menjalankan LibreOffice di lingkungan serverless dengan Cloud Run. Kita tidak perlu memelihara server. Saya akan mengirimkan beberapa referensi untuk membantu Anda memulai. Ruby |
Bantu Patrick menyiapkan dan men-deploy Cloud Run.
Tugas 2. Mengaktifkan Cloud Run API
-
Buka Navigation menu () dan klik APIs & Services > Library. Di kotak penelusuran, ketik "Cloud Run" dan pilih Cloud Run Admin API dari daftar hasil.
-
Klik Enable, lalu tekan tombol kembali di browser dua kali. Konsol Anda akan terlihat seperti berikut:
Tugas 3. Men-deploy layanan Cloud Run sederhana
Ruby telah mengembangkan prototipe Cloud Run dan ingin Patrick men-deploy-nya di Google Cloud. Sekarang, bantu Patrick membuat layanan Cloud Run PDF untuk Pet Theory.
-
Buka sesi Cloud Shell baru dan jalankan perintah berikut untuk meng-clone repositori Pet Theory:
git clone https://github.com/rosera/pet-theory.git -
Kemudian, ubah direktori kerja saat ini menjadi lab03:
cd pet-theory/lab03 -
Edit
package.json
dengan Editor Kode Cloud Shell atau editor teks pilihan Anda. Di bagian "scripts", tambahkan"start": "node index.js",
seperti terlihat di bawah ini:... "scripts": { "start": "node index.js", "test": "echo \"Error: no test specified\" && exit 1" }, ... -
Sekarang, jalankan perintah berikut di Cloud Shell untuk menginstal paket yang akan digunakan skrip konversi Anda:
npm install express npm install body-parser npm install child_process npm install @google-cloud/storage -
Selanjutnya, buka file
lab03/index.js
dan tinjau kodenya.Aplikasi akan di-deploy sebagai layanan Cloud Run yang menerima POST HTTP. Jika permintaan POST adalah notifikasi Pub/Sub tentang file yang diupload, layanan akan menuliskan detail file ke log. Jika tidak, layanan akan menampilkan string "OK".
-
Periksa file
lab03/Dockerfile
.File di atas disebut manifes dan berisi urutan langkah perintah Docker untuk membangun image. Setiap baris dimulai dengan perintah yang memberi tahu Docker cara memproses informasi berikut:
- Baris pertama menunjukkan bahwa image dasar harus menggunakan node sebagai template untuk image yang akan dibuat.
- Baris terakhir menunjukkan perintah yang harus dijalankan, yang dalam contoh ini disebut "npm start".
-
Untuk membangun dan men-deploy REST API, gunakan Google Cloud Build. Jalankan proses ini untuk memulai proses build:
gcloud builds submit \ --tag gcr.io/$GOOGLE_CLOUD_PROJECT/pdf-converter Perintah ini akan membangun container dengan kode Anda dan menempatkannya di Artifact Registry project Anda.
-
Kembali ke Konsol Cloud, buka Navigation menu, dan pilih Artifact Registry > Images. Anda akan melihat container Anda telah dihosting:
Uji tugas yang sudah selesai
Klik Check my progress untuk memastikan Anda telah melakukan tugas di atas.
-
Kembali ke tab editor kode Anda dan jalankan perintah berikut di Cloud Shell untuk men-deploy aplikasi Anda:
gcloud run deploy pdf-converter \ --image gcr.io/$GOOGLE_CLOUD_PROJECT/pdf-converter \ --platform managed \ --region {{{ project_0.default_region | Region }}} \ --no-allow-unauthenticated \ --max-instances=1 -
Setelah deployment selesai, Anda akan melihat pesan seperti ini:
Service [pdf-converter] revision [pdf-converter-00001] has been deployed and is serving 100 percent of traffic at https://pdf-converter-[hash].a.run.app -
Buat variabel lingkungan
$SERVICE_URL
untuk aplikasi ini agar Anda dapat mengaksesnya dengan mudah:SERVICE_URL=$(gcloud beta run services describe pdf-converter --platform managed --region {{{ project_0.default_region | Lab Region }}} --format="value(status.url)") echo $SERVICE_URL
Uji tugas yang sudah selesai
Klik Check my progress untuk memastikan Anda telah melakukan tugas di atas.
-
Buat permintaan POST anonim ke layanan baru Anda:
curl -X POST $SERVICE_URL CATATAN:
Perintah ini akan menghasilkan pesan error `"Your client does not have permission to get the URL".` Tidak apa-apa; Anda tidak menginginkan layanan tersebut dapat dipanggil oleh pengguna anonim. -
Sekarang, cobalah memanggil layanan tersebut sebagai pengguna yang berwenang:
curl -X POST -H "Authorization: Bearer $(gcloud auth print-identity-token)" $SERVICE_URL Jika mendapatkan respons
"OK"
, Anda telah berhasil men-deploy layanan Cloud Run. Selamat!
Tugas 4. Memicu layanan Cloud Run saat file baru diupload
Setelah layanan Cloud Run tersebut berhasil di-deploy, Ruby ingin Patrick membuat area staging untuk data yang akan dikonversi. Bucket Cloud Storage akan menggunakan pemicu peristiwa untuk memberi tahu aplikasi saat ada file yang diupload dan perlu diproses.
-
Jalankan perintah berikut untuk membuat bucket di Cloud Storage untuk dokumen yang diupload:
gsutil mb gs://$GOOGLE_CLOUD_PROJECT-upload -
Dan bucket lainnya untuk PDF hasil proses:
gsutil mb gs://$GOOGLE_CLOUD_PROJECT-processed -
Sekarang, kembali ke tab Konsol Cloud, buka Navigation menu, dan pilih Cloud Storage. Verifikasi bahwa bucket telah dibuat (akan ada bucket lain di sana, selain bucket yang digunakan oleh platform.)
Uji tugas yang sudah selesai
Klik Check my progress untuk memastikan Anda telah melakukan tugas di atas.
-
Di Cloud Shell, jalankan perintah berikut untuk memberi tahu Cloud Storage agar mengirim notifikasi Pub/Sub setiap kali ada file baru yang selesai diupload ke bucket dokumen:
gsutil notification create -t new-doc -f json -e OBJECT_FINALIZE gs://$GOOGLE_CLOUD_PROJECT-upload Notifikasi ini akan diberi label dengan topik "new-doc".
Uji tugas yang sudah selesai
Klik Check my progress untuk memastikan Anda telah melakukan tugas di atas.
-
Kemudian, buat akun layanan baru yang akan digunakan Pub/Sub untuk memicu layanan Cloud Run:
gcloud iam service-accounts create pubsub-cloud-run-invoker --display-name "PubSub Cloud Run Invoker" -
Beri akun layanan ini izin untuk memanggil layanan pengonversi PDF:
gcloud beta run services add-iam-policy-binding pdf-converter \ --member=serviceAccount:pubsub-cloud-run-invoker@$GOOGLE_CLOUD_PROJECT.iam.gserviceaccount.com \ --role=roles/run.invoker \ --platform managed \ --region {{{ project_0.default_region | Lab Region }}} -
Temukan nomor project Anda dengan menjalankan perintah berikut:
gcloud projects list --filter="PROJECT_ID={{{ project_0.project_id | PROJECT_ID }}}" Anda akan menggunakan nilai Project Number di perintah berikutnya.
PROJECT_ID: {{{ project_0.project_id | PROJECT_ID }}} NAME: {{{ project_0.project_id | PROJECT_ID }}} PROJECT_NUMBER: 103480415252 -
Buat variabel lingkungan
PROJECT_NUMBER
PROJECT_NUMBER=$(gcloud projects list --filter="PROJECT_ID={{{ project_0.project_id | PROJECT_ID }}}" --format=json | jq -r .[0].projectNumber) -
Terakhir, buat langganan Pub/Sub sehingga pengonversi PDF dapat berjalan setiap kali ada pesan yang dipublikasikan di topik "new-doc".
gcloud beta pubsub subscriptions create pdf-conv-sub \ --topic new-doc \ --push-endpoint=$SERVICE_URL \ --push-auth-service-account=pubsub-cloud-run-invoker@$GOOGLE_CLOUD_PROJECT.iam.gserviceaccount.com
Uji tugas yang sudah selesai
Klik Check my progress untuk memastikan Anda telah melakukan tugas di atas.
Tugas 5. Melihat apakah layanan Cloud Run dipicu saat file diupload ke Cloud Storage
Untuk memverifikasi bahwa aplikasi mereka berfungsi sesuai harapan, Ruby meminta Patrick mengupload beberapa data percobaan ke bucket penyimpanan yang dimaksud dan kemudian memeriksa Cloud Logging.
-
Salin beberapa file pengujian ke bucket upload:
gsutil -m cp gs://spls/gsp644/* gs://$GOOGLE_CLOUD_PROJECT-upload -
Setelah proses upload selesai, kembali ke tab Konsol Cloud, Buka Navigation menu, dan pilih Logging dari bagian Operations.
-
Di dropdown Resource, filter hasil ke Cloud Run Revision dan klik Apply. Kemudian, klik Run Query.
-
Di Query results, temukan entri log yang diawali dengan
file:
dan klik entri tersebut. Kumpulan data file yang dikirim Pub/Sub ke layanan Cloud Run saat file baru diupload akan ditampilkan. -
Dapatkah Anda menemukan nama file yang Anda upload di objek ini?
Catatan:
Jika entri log yang diawali dengan "file" tidak terlihat, coba klik tombol "load newer logs" di dekat bagian bawah halaman. -
Sekarang, kembali ke tab editor kode dan jalankan perintah berikut di Cloud Shell untuk membersihkan direktori
upload
dengan menghapus file yang ada di dalamnya:gsutil -m rm gs://$GOOGLE_CLOUD_PROJECT-upload/*
Tugas 6. Container
Patrick perlu mengonversi tumpukan invoice menjadi PDF agar pelanggan dapat membukanya. Ia mengirim email kepada Ruby untuk meminta bantuan...
Patrick, Admin IT |
Halo Ruby Sesuai temuan Anda, saya rasa kita bisa mengotomatiskan proses ini, sekaligus beralih ke penggunaan PDF sebagai format invoice. Kemarin saya sempat meluangkan waktu menulis kode dan membuat skrip Node.js untuk keperluan tersebut. Bisakah Anda memeriksanya? Patrick |
Patrick mengirimi Ruby fragmen kode yang ia tulis untuk menghasilkan PDF dari file:
Ruby membalas pesan Patrick...
Ruby, Konsultan Software |
Halo Patrick Cloud Run menggunakan container, jadi kita perlu menyediakan aplikasi dalam format ini. Untuk langkah selanjutnya, kita perlu membuat manifes Dockerfile untuk aplikasi itu. Kode Anda menggunakan LibreOffice. Bisakah Anda mengirimi saya perintah untuk menginstal software tersebut? Saya perlu menyertakannya dalam container. Ruby |
Patrick, Admin IT |
Halo Ruby Bagus. Biasanya saya menginstal LibreOffice pada server di kantor dengan perintah ini:
Beri tahu saya jika perlu informasi lainnya. Patrick |
Untuk membangun container, sejumlah komponen harus berintegrasi:
Mengupdate Manifes
Setelah semua file diidentifikasi, manifes dapat dibuat. Bantu Ruby menyiapkan dan men-deploy container.
Paket untuk LibreOffice sebelumnya tidak disertakan dalam container, yang berarti paket tersebut sekarang harus ditambahkan.
Ruby sudah menerima perintah yang digunakan Patrick untuk membangun aplikasi dan akan menambahkannya sebagai perintah RUN
dalam Dockerfile.
-
Buka manifes
Dockerfile
dan tambahkan baris perintahRUN apt-get update -y && apt-get install -y libreoffice && apt-get clean
seperti ditunjukkan di bawah:FROM {{{ project_0.startup_script.node_version | NODE_VERSION }}} RUN apt-get update -y \ && apt-get install -y libreoffice \ && apt-get clean WORKDIR /usr/src/app COPY package.json package*.json ./ RUN npm install --only=production COPY . . CMD [ "npm", "start" ]
Men-deploy layanan pdf-conversion versi baru
-
Buka file
index.js
dan tambahkan persyaratan paket berikut di bagian atas file:const {promisify} = require('util'); const {Storage} = require('@google-cloud/storage'); const exec = promisify(require('child_process').exec); const storage = new Storage(); -
Ganti
app.post('/', async (req, res)
dengan kode berikut:app.post('/', async (req, res) => { try { const file = decodeBase64Json(req.body.message.data); await downloadFile(file.bucket, file.name); const pdfFileName = await convertFile(file.name); await uploadFile(process.env.PDF_BUCKET, pdfFileName); await deleteFile(file.bucket, file.name); } catch (ex) { console.log(`Error: ${ex}`); } res.set('Content-Type', 'text/plain'); res.send('\n\nOK\n\n'); }) -
Sekarang, tambahkan kode berikut, yang akan memproses dokumen LibreOffice, ke bagian bawah file:
async function downloadFile(bucketName, fileName) { const options = {destination: `/tmp/${fileName}`}; await storage.bucket(bucketName).file(fileName).download(options); } async function convertFile(fileName) { const cmd = 'libreoffice --headless --convert-to pdf --outdir /tmp ' + `"/tmp/${fileName}"`; console.log(cmd); const { stdout, stderr } = await exec(cmd); if (stderr) { throw stderr; } console.log(stdout); pdfFileName = fileName.replace(/\.\w+$/, '.pdf'); return pdfFileName; } async function deleteFile(bucketName, fileName) { await storage.bucket(bucketName).file(fileName).delete(); } async function uploadFile(bucketName, fileName) { await storage.bucket(bucketName).upload(`/tmp/${fileName}`); } -
Pastikan file
index.js
Anda terlihat seperti berikut ini:Catatan:
Untuk menghindari error format, sebaiknya ganti semua kode dalam fileindex.js
Anda dengan kode contoh ini.const {promisify} = require('util'); const {Storage} = require('@google-cloud/storage'); const exec = promisify(require('child_process').exec); const storage = new Storage(); const express = require('express'); const bodyParser = require('body-parser'); const app = express(); app.use(bodyParser.json()); const port = process.env.PORT || 8080; app.listen(port, () => { console.log('Listening on port', port); }); app.post('/', async (req, res) => { try { const file = decodeBase64Json(req.body.message.data); await downloadFile(file.bucket, file.name); const pdfFileName = await convertFile(file.name); await uploadFile(process.env.PDF_BUCKET, pdfFileName); await deleteFile(file.bucket, file.name); } catch (ex) { console.log(`Error: ${ex}`); } res.set('Content-Type', 'text/plain'); res.send('\n\nOK\n\n'); }) function decodeBase64Json(data) { return JSON.parse(Buffer.from(data, 'base64').toString()); } async function downloadFile(bucketName, fileName) { const options = {destination: `/tmp/${fileName}`}; await storage.bucket(bucketName).file(fileName).download(options); } async function convertFile(fileName) { const cmd = 'libreoffice --headless --convert-to pdf --outdir /tmp ' + `"/tmp/${fileName}"`; console.log(cmd); const { stdout, stderr } = await exec(cmd); if (stderr) { throw stderr; } console.log(stdout); pdfFileName = fileName.replace(/\.\w+$/, '.pdf'); return pdfFileName; } async function deleteFile(bucketName, fileName) { await storage.bucket(bucketName).file(fileName).delete(); } async function uploadFile(bucketName, fileName) { await storage.bucket(bucketName).upload(`/tmp/${fileName}`); }
- Logika utamanya ditampung dalam fungsi berikut:
Setiap kali ada file yang diupload, layanan ini akan dipicu. Layanan menjalankan tugas berikut, satu tugas per baris perintah di atas:
- Mengekstrak detail file dari notifikasi Pub/Sub.
- Mendownload file dari Cloud Storage ke hard drive lokal. Ini sebenarnya bukan disk fisik, melainkan bagian dari memori virtual yang berperilaku seperti disk.
- Mengonversi file yang sudah didownload menjadi PDF.
- Mengupload file PDF ke Cloud Storage. Variabel lingkungan
process.env.PDF_BUCKET
berisi nama bucket Cloud Storage tempat menuliskan PDF. Anda akan menetapkan nilai ke variabel ini saat men-deploy layanan di bawah. - Menghapus file asli dari Cloud Storage.
Isi file index.js
sisanya mengimplementasikan fungsi yang dipanggil oleh kode tingkat atas ini.
Sekarang, saatnya men-deploy layanan dan menetapkan variabel lingkungan PDF_BUCKET
. Ada baiknya juga Anda mengalokasi 2 GB RAM untuk digunakan LibreOffice (lihat baris dengan opsi --memory
).
-
Jalankan perintah berikut untuk membangun container:
gcloud builds submit \ --tag gcr.io/$GOOGLE_CLOUD_PROJECT/pdf-converter
Ketik
Y
jika Anda menerima pop-up untuk mengaktifkan Cloud Build APIUji tugas yang sudah selesai
Klik Check my progress untuk memastikan Anda telah melakukan tugas di atas.
-
Sekarang, deploy versi terakhir aplikasi Anda:
gcloud run deploy pdf-converter \ --image gcr.io/$GOOGLE_CLOUD_PROJECT/pdf-converter \ --platform managed \ --region {{{ project_0.default_region | Lab Region }}} \ --memory=2Gi \ --no-allow-unauthenticated \ --max-instances=1 \ --set-env-vars PDF_BUCKET=$GOOGLE_CLOUD_PROJECT-processed
Setelah LibreOffice menjadi bagian container, deployment build ini akan memerlukan waktu lebih lama daripada build sebelumnya. Manfaatkan untuk berdiri dan meregangkan otot selama beberapa menit.
Klik Check my progress untuk memverifikasi tujuan.
Tugas 7. Menguji layanan pdf-conversion
-
Begitu perintah deployment selesai, pastikan layanan di-deploy dengan benar dengan menjalankan:
curl -X POST -H "Authorization: Bearer $(gcloud auth print-identity-token)" $SERVICE_URL -
Jika mendapatkan respons
"OK"
, Anda berhasil men-deploy layanan Cloud Run yang telah diupdate. LibreOffice dapat mengonversi banyak jenis file menjadi PDF: DOCX, XLSX, JPG, PNG, GIF, dll. -
Jalankan perintah berikut untuk mengupload beberapa file contoh:
gsutil -m cp gs://spls/gsp644/* gs://$GOOGLE_CLOUD_PROJECT-upload -
Kembali ke Konsol Cloud, buka Navigation menu dan pilih Cloud Storage. Buka bucket
-upload
dan klik tombol Refresh beberapa kali untuk melihat bagaimana file dihapus, satu per satu, saat dikonversi menjadi PDF. -
Kemudian, klik Buckets dari menu kiri dan klik bucket yang namanya diakhiri dengan "-processed". Bucket tersebut akan menampung versi PDF dari semua file. Silakan buka file-file PDF tersebut untuk memastikan konversinya diproses dengan benar:
Catatan:
Jalankan kembali perintah jika Anda tidak melihat semua file PDF hasil konversi di bucket-processed
.
Selamat!
Pet Theory sekarang memiliki sistem untuk mengonversi arsip file lama mereka menjadi PDF. Cukup dengan mengupload file lama ke bucket "upload", layanan pengonversi pdf akan mengonversi file tersebut dan menuliskannya ke bucket "processed" sebagai PDF.
Lanjutkan perjalanan Serverless Anda dalam kursus Serverless Cloud Run Development. Anda akan membaca skenario bisnis fiktif dan membantu para karakter menerapkan rencana migrasi serverless mereka.
Sertifikasi dan pelatihan Google Cloud
...membantu Anda mengoptimalkan teknologi Google Cloud. Kelas kami mencakup keterampilan teknis dan praktik terbaik untuk membantu Anda memahami dengan cepat dan melanjutkan proses pembelajaran. Kami menawarkan pelatihan tingkat dasar hingga lanjutan dengan opsi on demand, live, dan virtual untuk menyesuaikan dengan jadwal Anda yang sibuk. Sertifikasi membantu Anda memvalidasi dan membuktikan keterampilan serta keahlian Anda dalam teknologi Google Cloud.
Manual Terakhir Diperbarui 28 Mei 2024
Lab Terakhir Diuji 28 Mei 2024
Hak cipta 2024 Google LLC Semua hak dilindungi undang-undang. Google dan logo Google adalah merek dagang dari Google LLC. Semua nama perusahaan dan produk lain mungkin adalah merek dagang masing-masing perusahaan yang bersangkutan.