arrow_back

Практичне заняття підвищеного рівня складності "Налаштування середовища для розробки додатка в Google Cloud"

Test and share your knowledge with our community!

Практичне заняття підвищеного рівня складності "Налаштування середовища для розробки додатка в Google Cloud"

Lab 1 година universal_currency_alt 1 кредит show_chart Початковий
info This lab may incorporate AI tools to support your learning.
Test and share your knowledge with our community!

GSP315

Вступ

Практична робота підвищеного рівня складності передбачає сценарій і кілька завдань. Покрокових інструкцій немає. Натомість ви маєте застосувати навички, які здобули під час практичних робіт курсу, і самостійно з’ясувати, як виконувати завдання. Автоматична система оцінювання (показана на цій сторінці) згенерує відгук щодо того, чи правильно виконано завдання.

Під час практичної роботи підвищеного рівня складності ви не вивчаєте нові поняття Google Cloud, а розвиваєте опановані навички (наприклад, змінюєте значення за умовчанням і переглядаєте повідомлення про помилки для їх виправлення).

Щоб набрати 100%, слід правильно виконати всі завдання за визначений період часу.

Це практичне заняття рекомендовано для слухачів, які зареєструвалися на кваліфікаційний курс Налаштування середовища для розробки додатка в Google Cloud. Готові почати?

Налаштування

Перш ніж натиснути кнопку Start Lab (Почати практичну роботу)

Ознайомтеся з наведеними нижче вказівками. На виконання практичного заняття відводиться обмежений час, і його не можна призупинити. Щойно ви натиснете Почати заняття, з’явиться таймер, який показуватиме, скільки часу для роботи з ресурсами Google Cloud у вас залишилося.

Ви зможете виконати практичне заняття в дійсному робочому хмарному середовищі (не в симуляції або демонстраційному середовищі). Для цього на час практичного заняття вам надаються тимчасові облікові дані для реєстрації і входу в Google Cloud.

Для цього практичного заняття потрібно мати:

  • стандартний вебпереглядач, наприклад Chrome (рекомендовано);
Примітка. Виконуйте практичне заняття в анонімному вікні вебпереглядача (рекомендовано). Так ви уникнете додаткової плати, що може стягуватися з вашого особистого облікового запису внаслідок його помилкового використання замість облікового запису для навчання.
  • достатню кількість часу, оскільки почавши практичне заняття, ви не зможете призупинити його.
Примітка. Для виконання цього практичного заняття використовуйте лише обліковий запис для навчання, оскільки з іншого облікового запису Google Cloud може стягуватися плата.

Сценарій

Ви починаєте працювати на посаді молодшого розробника хмарних рішень у компанії Jooli Inc і вже допомагали команді розробників створювати й налаштовувати ресурси Google Cloud.

Очікується, що ви вже маєте знання й навички для виконання таких завдань, тому покрокові інструкції не надаються.

Ваше завдання

Вам потрібно допомогти нещодавно створеній команді розробників із новим проєктом для зберігання й упорядкування фотографій, який називається Спогади. Разом із цією командою створіть конфігурацію середовища для розробки їхнього додатка.

Для цього буде необхідно виконати наведені нижче завдання.

  • Створити сегмент для зберігання фотографій.
  • Створити тему Pub/Sub, яку використовуватиме ваша функція Cloud Run Functions.
  • Створити функцію Cloud Run Functions.
  • Вилучити облікові дані розробника хмарних рішень, який раніше працював над цим проєктом.

Слід дотримуватися кількох стандартів Jooli Inc., описаних нижче.

  • Створювати всі ресурси в регіоні і зоні , якщо немає інших вказівок.
  • Використовувати VPC, призначені для цього проєкту.
  • Давати назви у форматі команда-ресурс (приклад назви екземпляра: kraken-webserver1).
  • Економно використовувати розміри ресурсів. Проєкти відстежуються, і в разі використання надлишкових ресурсів відповідний проєкт може бути припинено (так само, як вашу участь), тому ретельно плануйте навантаження. Звертайте увагу на інструкції команди з відстеження: якщо немає інших вказівок, для невеликих віртуальних машин Linux слід використовувати e2-micro, а для Windows і інших додатків, як-от вузлів Kubernetes, – e2-medium.

Нижче детально описано кожне завдання. Бажаємо успіху!

Завдання 1. Створіть сегмент

Потрібно створити сегмент для зберігання фотографій під назвою . Переконайтеся, що ресурс створено в регіоні і зоні .

Щоб підтвердити виконання завдання, натисніть Підтвердити виконання. Створіть сегмент під назвою

Завдання 2. Створіть тему Pub/Sub

Створіть тему Pub/Sub під назвою , щоб дозволити функції Cloud Run Functions надсилати повідомлення.

Щоб підтвердити виконання завдання, натисніть Підтвердити виконання. Створіть тему Pub/Sub під назвою

Завдання 3. Створіть функцію Cloud Run Functions для генерування зменшених зображень

Створіть функцію

Створіть функцію Cloud Run Functions , яка генеруватиме зменшене зображення для кожного об’єкта, доданого до сегмента .

Ця функція має використовувати середовище Cloud Run Functions 2-го покоління. Переконайтеся, що ресурс створено в регіоні і зоні .

  1. За допомогою Node.js 22 створіть функцію Cloud Run Functions 2-го покоління під назвою .
Примітка. Функція Cloud Run Functions повинна виконуватися щоразу, коли у створений у Завданні 1 сегмент додається об’єкт. Під час цього процесу функція Cloud Run Functions може запитувати дозвіл увімкнути певні API або призначити ролі сервісним обліковим записам, тож надайте їй усі необхідні дозволи й ролі.
  1. Укажіть для параметра Entry point (Точка входу) (функція, яку потрібно виконати) значення , а для Trigger (Тригер)Cloud Storage.

  2. Додайте наведений нижче код у файл index.js.

const functions = require('@google-cloud/functions-framework'); const { Storage } = require('@google-cloud/storage'); const { PubSub } = require('@google-cloud/pubsub'); const sharp = require('sharp'); functions.cloudEvent('{{{ project_0.startup_script.function }}}', async cloudEvent => { const event = cloudEvent.data; console.log(`Event: ${JSON.stringify(event)}`); console.log(`Hello ${event.bucket}`); const fileName = event.name; const bucketName = event.bucket; const size = "64x64"; const bucket = new Storage().bucket(bucketName); const topicName = "{{{ project_0.startup_script.topic }}}"; const pubsub = new PubSub(); if (fileName.search("64x64_thumbnail") === -1) { // doesn't have a thumbnail, get the filename extension const filename_split = fileName.split('.'); const filename_ext = filename_split[filename_split.length - 1].toLowerCase(); const filename_without_ext = fileName.substring(0, fileName.length - filename_ext.length - 1); // fix sub string to remove the dot if (filename_ext === 'png' || filename_ext === 'jpg' || filename_ext === 'jpeg') { // only support png and jpg at this point console.log(`Processing Original: gs://${bucketName}/${fileName}`); const gcsObject = bucket.file(fileName); const newFilename = `${filename_without_ext}_64x64_thumbnail.${filename_ext}`; const gcsNewObject = bucket.file(newFilename); try { const [buffer] = await gcsObject.download(); const resizedBuffer = await sharp(buffer) .resize(64, 64, { fit: 'inside', withoutEnlargement: true, }) .toFormat(filename_ext) .toBuffer(); await gcsNewObject.save(resizedBuffer, { metadata: { contentType: `image/${filename_ext}`, }, }); console.log(`Success: ${fileName} → ${newFilename}`); await pubsub .topic(topicName) .publishMessage({ data: Buffer.from(newFilename) }); console.log(`Message published to ${topicName}`); } 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`); } });
  1. Додайте наведений нижче код у файл package.json.
{ "name": "thumbnails", "version": "1.0.0", "description": "Create Thumbnail of uploaded image", "scripts": { "start": "node index.js" }, "dependencies": { "@google-cloud/functions-framework": "^3.0.0", "@google-cloud/pubsub": "^2.0.0", "@google-cloud/storage": "^6.11.0", "sharp": "^0.32.1" }, "devDependencies": {}, "engines": { "node": ">=4.3.2" } } Примітка. Якщо з’явиться повідомлення про помилку "У дозволі відмовлено" з інформацією про те, що для надання всіх необхідних дозволів сервісному агенту знадобиться кілька хвилин, зачекайте й повторіть спробу. Призначте відповідні ролі (сервісного агента Eventarc, отримувача подій Eventarc, сервісного облікового запису з правом створювати маркери й видавця Pub/Sub) потрібним сервісним обліковим записам.

Протестуйте функцію

  • Завантажте зображення у форматі PNG або JPG в сегмент .
Примітка. Ви можете скористатися зображенням за цим посиланням: https://storage.googleapis.com/cloud-training/gsp315/map.jpg. Завантажте зображення на свою машину, а потім додайте його в сегмент.

Зменшене зображення з’явиться незабаром (натисніть REFRESH (ОНОВИТИ) на сторінці з інформацією про сегмент).

Після завантаження файлу зображення, ви можете перевірити результат нижче. Вам не потрібно чекати, доки зменшене зображення буде створено.

Необов’язково. Якщо функція успішно розгорнулася, але зменшене зображення не відображається в сегменті, перевірте, чи містить вкладка Triggers (Тригери) інформацію про тригери, яку ви попередньо вказали для функції. Дані могли неправильно зберегтися, якщо ви раніше стикалися з помилками. Якщо тригер Cloud Storage не відображається на вкладці Triggers (Тригери) вашої функції, ви можете повторно створити тригер (щоб дізнатись, як це зробити, перегляньте цю статтю в документації), потім завантажити новий файл ще раз і перевірити його (після додавання нового файлу оновіть сторінку).

Щоб підтвердити виконання завдання, натисніть Підтвердити виконання. Перевірте роботу функції Cloud Run Functions

Завдання 4. Вилучіть облікові дані попереднього розробника хмарних рішень

У проєкті є два облікові записи користувачів:

  • один із них належить вам ( із роллю власника);
  • а інший – попередньому розробнику хмарних рішень ( із роллю користувача з правами перегляду).
  1. Вилучіть облікові дані розробника хмарних рішень, який раніше працював над цим проєктом.

Щоб підтвердити виконання завдання, натисніть Підтвердити виконання. Вилучіть облікові дані попереднього розробника хмарних рішень

Вітаємо!

Наступні кроки/Докладніше

Цей кваліфікаційний курс входить до планів навчання Google щодо Виконання завдань із продуктами для роботи з фундаментальною інфраструктурою в Google Cloud і для архітекторів хмарних рішень. Якщо ви вже виконали інші кваліфікаційні курси у своєму плані навчання, у каталозі Google Cloud Skills Boost є інші доступні курси.

Навчання й сертифікація Google Cloud

…допомагають ефективно використовувати технології Google Cloud. Наші курси передбачають опанування технічних навичок, а також ознайомлення з рекомендаціями, що допоможуть вам швидко зорієнтуватися й вивчити матеріал. Ми пропонуємо курси різних рівнів – від базового до високого. Ви можете вибрати формат навчання (за запитом, онлайн або офлайн) відповідно до власного розкладу. Пройшовши сертифікацію, ви перевірите й підтвердите свої навички та досвід роботи з технологіями Google Cloud.

Посібник востаннє оновлено 8 березня 2025 року

Практичне заняття востаннє протестовано 8 березня 2025 року

© Google LLC 2025. Усі права захищено. Назва та логотип Google є торговельними марками Google LLC. Усі інші назви компаній і продуктів можуть бути торговельними марками відповідних компаній, з якими вони пов’язані.

Before you begin

  1. Labs create a Google Cloud project and resources for a fixed time
  2. Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
  3. On the top left of your screen, click Start lab to begin

This content is not currently available

We will notify you via email when it becomes available

Great!

We will contact you via email if it becomes available

One lab at a time

Confirm to end all existing labs and start this one

Use private browsing to run the lab

Use an Incognito or private browser window to run this lab. This prevents any conflicts between your personal account and the Student account, which may cause extra charges incurred to your personal account.