ARC102

Ringkasan
Dalam challenge lab, Anda diberi sebuah skenario dan serangkaian tugas. Tidak ada petunjuk langkah demi langkah. Anda akan menggunakan keahlian yang dipelajari dari lab dalam kursus untuk mencari cara menyelesaikan sendiri tugas-tugas tersebut. Sistem pemberian skor otomatis (ditampilkan pada halaman ini) akan memberikan masukan tentang apakah Anda telah menyelesaikan tugas dengan benar atau tidak.
Saat mengikuti challenge lab, Anda tidak akan diajari konsep-konsep baru Google Cloud. Anda diharapkan dapat memperluas keahlian yang dipelajari, seperti mengubah nilai default dan membaca serta mengkaji pesan error untuk memperbaiki kesalahan Anda sendiri.
Untuk meraih skor 100%, Anda harus berhasil menyelesaikan semua tugas dalam jangka waktu tertentu.
Penyiapan
Sebelum mengklik tombol Start 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 interaktif ini dapat Anda gunakan untuk melakukan 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).
Catatan: Gunakan jendela Samaran (direkomendasikan) atau browser pribadi untuk menjalankan lab ini. Hal ini akan mencegah konflik antara akun pribadi Anda dan akun siswa yang dapat menyebabkan tagihan ekstra pada akun pribadi Anda.
- Waktu untuk menyelesaikan lab. Ingat, setelah dimulai, lab tidak dapat dijeda.
Catatan: Hanya gunakan akun siswa untuk lab ini. Jika Anda menggunakan akun Google Cloud yang berbeda, Anda mungkin akan dikenai tagihan ke akun tersebut.
Skenario tantangan
Anda baru saja memulai peran sebagai cloud engineer junior. Sejauh ini, Anda telah membantu tim membuat dan mengelola resource Google Cloud.
Anda diharapkan memiliki keterampilan dan pengetahuan untuk tugas seperti ini.
Tantangan Anda
Anda diminta membantu tim pengembangan yang baru dibentuk untuk mengerjakan beberapa tugas awal dalam suatu project baru yang menangani penyimpanan dan pengaturan foto untuk organisasi satwa liar, Wild. Anda diminta membantu tim Wild melakukan konfigurasi awal untuk lingkungan pengembangan aplikasi mereka. Anda menerima permintaan untuk menyelesaikan tugas-tugas berikut:
- Menggunakan perintah untuk membuat bucket guna menyimpan foto.
- Menggunakan perintah untuk membuat topik Pub/Sub yang akan digunakan oleh Cloud Function yang Anda buat.
- Menggunakan perintah untuk membuat Cloud Function.
Beberapa standar yang harus Anda ikuti:
- Buat semua resource di zona , kecuali jika ada arahan lain.
- Gunakan VPC project.
- Pemberian nama mengikuti format team-resource. Misalnya, suatu instance dapat diberi nama kraken-webserver1
- Mengalokasikan ukuran resource yang hemat biaya. Perlu diperhatikan, semua project selalu dipantau dan penggunaan resource secara berlebihan akan mengakibatkan penghentian project yang terkait (dan kemungkinan project Anda). Ini adalah satu-satunya panduan dari tim pemantauan: jika tidak ada arahan lain, gunakan e2-micro untuk VM Linux kecil dan e2-medium untuk Windows atau aplikasi lainnya, seperti node Kubernetes.
Setiap tugas dijelaskan secara mendetail di bawah ini. Semoga berhasil!
Tugas 1. Membuat bucket
- Gunakan perintah (CLI/SDK) untuk membuat bucket bernama untuk penyimpanan foto.
Klik Periksa progres saya untuk memverifikasi tujuan.
Membuat bucket bernama
Tugas 2. Membuat topik Pub/Sub
- Gunakan command line untuk membuat topik Pub/Sub bernama untuk Cloud Function guna mengirim pesan.
Klik Periksa progres saya untuk memverifikasi tujuan.
Membuat topik Pub/Sub bernama
Tugas 3. Membuat Cloud Function untuk menghasilkan thumbnail
-
Gunakan command line untuk membuat Cloud Function bernama yang dieksekusi setiap kali objek dibuat dalam bucket yang telah Anda buat di tugas 1.
-
Pastikan Anda menetapkan Entry point (Fungsi yang akan dieksekusi) ke thumbnail dan Trigger ke Cloud Storage.
-
Di baris 15 index.js, ganti teks REPLACE_WITH_YOUR_TOPIC ID dengan yang telah Anda buat di tugas 2.
index.js:
/* globals exports, require */
//jshint strict: false
//jshint esversion: 6
"use strict";
const crc32 = require("fast-crc32c");
const { Storage } = require('@google-cloud/storage');
const gcs = new Storage();
const { PubSub } = require('@google-cloud/pubsub');
const imagemagick = require("imagemagick-stream");
exports.thumbnail = (event, context) => {
const fileName = event.name;
const bucketName = event.bucket;
const size = "64x64"
const bucket = gcs.bucket(bucketName);
const topicName = "REPLACE_WITH_YOUR_TOPIC ID";
const pubsub = new PubSub();
if ( fileName.search("64x64_thumbnail") == -1 ){
// doesn't have a thumbnail, get the filename extension
var filename_split = fileName.split('.');
var filename_ext = filename_split[filename_split.length - 1];
var filename_without_ext = fileName.substring(0, fileName.length - filename_ext.length );
if (filename_ext.toLowerCase() == 'png' || filename_ext.toLowerCase() == 'jpg'){
// only support png and jpg at this point
console.log(`Processing Original: gs://${bucketName}/${fileName}`);
const gcsObject = bucket.file(fileName);
let newFilename = filename_without_ext + size + '_thumbnail.' + filename_ext;
let gcsNewObject = bucket.file(newFilename);
let srcStream = gcsObject.createReadStream();
let dstStream = gcsNewObject.createWriteStream();
let resize = imagemagick().resize(size).quality(90);
srcStream.pipe(resize).pipe(dstStream);
return new Promise((resolve, reject) => {
dstStream
.on("error", (err) => {
console.log(`Error: ${err}`);
reject(err);
})
.on("finish", () => {
console.log(`Success: ${fileName} → ${newFilename}`);
// set the content-type
gcsNewObject.setMetadata(
{
contentType: 'image/'+ filename_ext.toLowerCase()
}, function(err, apiResponse) {});
pubsub
.topic(topicName)
.publisher()
.publish(Buffer.from(newFilename))
.then(messageId => {
console.log(`Message ${messageId} published.`);
})
.catch(err => {
console.error('ERROR:', err);
});
});
});
}
else {
console.log(`gs://${bucketName}/${fileName} is not an image I can handle`);
}
}
else {
console.log(`gs://${bucketName}/${fileName} already has a thumbnail`);
}
};
package.json:
{
"name": "thumbnails",
"version": "1.0.0",
"description": "Create Thumbnail of uploaded image",
"scripts": {
"start": "node index.js"
},
"dependencies": {
"@google-cloud/pubsub": "^2.0.0",
"@google-cloud/storage": "^5.0.0",
"fast-crc32c": "1.0.4",
"imagemagick-stream": "4.1.1"
},
"devDependencies": {},
"engines": {
"node": ">=4.3.2"
}
}
Catatan:
Anda harus mengupload satu gambar JPG atau PNG ke dalam bucket untuk memverifikasi bahwa thumbnail telah dibuat (setelah berhasil membuat fungsi). Gunakan gambar ini https://storage.googleapis.com/cloud-training/arc102/wildlife.jpg. Download gambar ke komputer Anda, lalu upload file tersebut ke bucket Anda. Setelah itu, gambar thumbnail akan segera ditampilkan (gunakan REFRESH di detail bucket).
Klik Periksa progres saya untuk memverifikasi tujuan.
Memastikan Cloud Function berfungsi
Selamat

Mendapatkan badge keahlian Anda berikutnya
Lab mandiri ini merupakan bagian dari kursus badge keahlian Menyimpan, Memproses, dan Mengelola Data di Google Cloud - Command Line. Dengan menyelesaikan kursus badge keahlian ini, Anda akan mendapatkan badge di atas sebagai pengakuan atas pencapaian Anda. Tampilkan badge di resume atau platform media sosial Anda, dan umumkan pencapaian Anda menggunakan hashtag #GoogleCloudBadge.
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: 03 Juni 2024
Lab Terakhir Diuji pada 03 Juni 2024
Hak cipta 2026 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.