Модуль 2.4: GCP Cloud Storage (GCS)
Складність: [QUICK] | Час на виконання: 1.5 год | Передумови: Модуль 2.1 (IAM та ієрархія ресурсів)
Чому цей модуль важливий
Розділ «Чому цей модуль важливий»У 2019 році компанія з медичної аналітики виявила, що їхній бакет GCS із даними пацієнтів був відкритий для всього інтернету протягом чотирьох місяців. Причиною стала одна помилка в IAM: групі allUsers випадково надали роль storage.objectViewer. Це коштувало компанії $2 мільйони штрафів та судових витрат.
Google Cloud Storage (GCS) — це фундамент майже кожної архітектури в GCP. Тут зберігаються артефакти додатків, бекапи баз даних, логи, дані для навчання нейромереж та статичні файли веб-сайтів. Якщо ви не розумієте класи зберігання, правила життєвого циклу та версійність, ви або витратите забагато грошей, або випадково опублікуєте приватні дані на весь світ.
У цьому модулі ви навчитеся організовувати дані, обирати економні класи зберігання, налаштовувати автоматичне видалення старих файлів та створювати тимчасові посилання для безпечного обміну даними.
Основи GCS: Бакети та Об’єкти
Розділ «Основи GCS: Бакети та Об’єкти»Хоча GCS виглядає як звичайна файлова система з папками, насправді це пласке сховище. Назва logs/2024/01/app.log — це просто один довгий рядок тексту (ключ).
- Бакети (Buckets): Контейнери для ваших файлів. Імена бакетів мають бути унікальними у всьому світі (як доменні імена).
- Об’єкти (Objects): Самі файли. Максимальний розмір одного файлу — 5 ТБ.
Класи зберігання: Економія на масштабі
Розділ «Класи зберігання: Економія на масштабі»Головне правило: що менше ви звертаєтеся до даних, то дешевше коштує їх зберігання, але дорожче — їх читання.
| Клас зберігання | Коли використовувати |
|---|---|
| Standard | Дані, до яких звертаються постійно (сайти, активні БД) |
| Nearline | Доступ раз на місяць (свіжі бекапи) |
| Coldline | Доступ раз на квартал (архіви) |
| Archive | Доступ раз на рік (дані для аудиту/комплаєнсу) |
Autoclass: Функція, яка сама переміщує файли між класами залежно від того, як часто ви їх відкриваєте.
Управління життєвим циклом (Lifecycle)
Розділ «Управління життєвим циклом (Lifecycle)»Lifecycle-правила дозволяють автоматизувати рутину. Наприклад:
- Видаляти логи, яким більше 90 днів.
- Переносити файли в Archive через рік після створення.
- Видаляти старі версії файлів, якщо з’явилися нові.
Версійність (Versioning)
Розділ «Версійність (Versioning)»Якщо увімкнути версійність, GCS зберігатиме історію змін кожного файлу. Якщо ви випадково видалили або перезаписали важливий документ, ви зможете його відновити з попередньої версії. Це найкращий захист від “людського фактору”.
Підписані посилання (Signed URLs)
Розділ «Підписані посилання (Signed URLs)»Як дати клієнту завантажити звіт, не роблячи бакет публічним? Підписане посилання — це тимчасова URL-адреса, яка працює, наприклад, лише 15 хвилин. Ви генеруєте її своїм додатком і віддаєте користувачу. Після закінчення часу посилання перетворюється на “гарбуз” (403 Access Denied).
Типові помилки
Розділ «Типові помилки»| Помилка | Чому це стається | Як виправити |
|---|---|---|
allUsers для швидкої перевірки | Найпростіший спосіб дати доступ | Використовуйте Signed URLs для тимчасового доступу |
| Все в класі Standard | Інженери не думають про ціну | Налаштуйте Lifecycle для перенесення в Nearline/Coldline |
| Вимкнена версійність | default налаштування | Вмикайте версійність на бакетах із критичними даними |
| ACL замість Uniform IAM | Старі інструкції вчать ACL | Завжди вмикайте Uniform Bucket-Level Access для зручного аудиту |
Тест
Розділ «Тест»1. Що станеться, якщо ви завантажите файл у клас Archive і видалите його через 5 днів?
Ви заплатите за зберігання цього файлу за 365 днів. Archive має мінімальний термін оплати в один рік.
2. Чи можна змінити ім'я бакета після його створення?
Ні. Якщо ви помилилися в назві, доведеться створити новий бакет, перенести дані і видалити старий.
Практична вправа: Створення бакета
Розділ «Практична вправа: Створення бакета»- Створіть унікальний бакет:
Terminal window gcloud storage buckets create gs://my-unique-bucket-name --location=europe-central2 - Увімкніть версійність:
Terminal window gcloud storage buckets update gs://my-unique-bucket-name --versioning - Завантажте файл та перевірте його статус.
- Згенеруйте підписане посилання на 10 хвилин.
Наступний модуль
Розділ «Наступний модуль»Переходьте до Модуля 2.5: Cloud DNS — ви навчитеся керувати доменними іменами, налаштовувати приватні зони для ваших серверів та з’єднувати DNS різних мереж.