06. S3 — дім для наших файлів¶
Work in progress
У попередньому розділі ми визначилися, де житимуть наші дані: на власному сервері чи у хмарі провайдера. Тепер час підготувати для них місце.
Припустімо, у вас є 8 ТБ вихідних матеріалів, рендерів і проєктів. Зазвичай ми уявляємо сховище як великий диск із папками. S3 працює інакше: він зберігає об’єкти, а не звичну файлову систему. І це саме те, що потрібно StudioFS.
Що ми насправді кладемо в S3?¶
Amazon S3 — це сервіс об’єктного зберігання даних, а S3 API — інтерфейс для роботи з таким сховищем. Цей API підтримують також інші сервіси. Тому «S3-сумісне сховище» не обов’язково означає Amazon.
У S3 є bucket — умовний контейнер для об’єктів. У нашому випадку це місце, куди StudioFS завантажуватиме вміст файлів. Самі назви файлів, структуру папок та інформацію про зміни координуватиме PostgreSQL, який ми підготуємо в наступному розділі.
Не дивуйтеся, якщо після копіювання відео у StudioFS ви не знайдете в bucket об’єкт із назвою interview.mov. StudioFS зберігає дані частинами під власними технічними іменами та шифрує їх перед завантаженням. Bucket — не резервна копія звичайної структури папок і не місце для ручного редагування файлів.
Це також означає, що без відповідних метаданих PostgreSQL сам набір об’єктів у S3 не перетвориться назад на ваш диск. Для збереження проєктів надалі знадобляться резервні копії обох компонентів.
Створюємо bucket¶
У кожного провайдера свої назви кнопок, але послідовність майже однакова.
- Відкрийте панель керування вашим S3-сервісом і знайдіть пункт створення bucket.
- Задайте назву, наприклад
studiofs-projects-demo. Використовуйте малі латинські літери, цифри та дефіси. Назва має відповідати правилам і вимогам унікальності вашого провайдера. - Оберіть регіон, якщо сервіс дозволяє це зробити. Бажано, щоб він був географічно близьким до основних робочих місць, але враховуйте також розташування команди й вартість передачі даних.
- Залиште bucket приватним. Для роботи StudioFS не потрібен публічний доступ до об’єктів.
- Створіть bucket і запишіть його назву та S3 endpoint. У Backblaze адресу зазвичай показують у параметрах bucket, в AWS вона визначається регіоном.
Поки що не вмикайте правила автоматичного видалення об’єктів (lifecycle expiration), якщо не розумієте їхніх наслідків. StudioFS сам керує тим, які об’єкти належать файловій системі. Якщо провайдер видалить потрібний об’єкт за власним розкладом, PostgreSQL не зможе повернути його вміст магічним чином.
Чи обов’язково створювати bucket вручну? Ні. studiofs init може спробувати створити bucket автоматично, якщо перевірка його доступності не пройшла. Для цього потрібні відповідні права. Але краще створити bucket заздалегідь: так ви контролюєте його налаштування й не мусите надавати StudioFS зайві дозволи.
Створюємо окремі ключі¶
Тепер сховище існує. Залишилося пояснити йому, хто має право з ним працювати.
Для підключення StudioFS до S3 потрібна пара ключів:
- Access Key ID — ідентифікатор доступу.
- Secret Access Key — секрет, яким підписуються запити.
Створіть окремий ключ для StudioFS, а не використовуйте головні ключі адміністратора всього сховища.
Для звичайної роботи потрібні права на перегляд списку об’єктів у bucket, читання, завантаження й видалення об’єктів. У термінах AWS це, зокрема, s3:ListBucket для самого bucket та s3:GetObject, s3:PutObject, s3:DeleteObject для його об’єктів.
Не надавайте ключу доступ до всіх bucket у своєму акаунті, якщо в цьому немає потреби. І збережіть Secret Access Key у захищеному місці відразу після створення: деякі сервіси показують його лише один раз.
Важливо: секрети не варто вставляти в листування, скриншоти чи публічні звіти про помилки. Під час створення тома StudioFS використовує та зберігає параметри доступу в конфігурації тому; не вважайте локальну конфігурацію або PostgreSQL сховищем зашифрованих секретів. Якщо згодом відкликати ключ у провайдера, наявні клієнти втратять можливість звертатися до S3, доки їхній доступ не буде коректно оновлено.
П’ять значень, які знадобляться StudioFS¶
Коли bucket і ключі готові, зберіть п’ять параметрів:
- Endpoint — адреса S3 API. Для віддаленого сервісу використовуйте
https://. Це не URL сторінки керування й не посилання на окремий файл. - Bucket — точна назва створеного контейнера, наприклад
studiofs-projects-demo. - Region — регіон, який провайдер використовує для S3-запитів та їх підписування.
- Access Key ID — ідентифікатор створеного ключа.
- Secret Access Key — секретна частина цього ключа.
Приклади адрес і регіонів:
| Сервіс | Endpoint (приклад) | Region (приклад) |
|---|---|---|
| Amazon S3 | https://s3.eu-central-1.amazonaws.com |
eu-central-1 |
| Backblaze B2 | https://s3.us-west-004.backblazeb2.com |
us-west-004 |
| Локальний RustFS | http://127.0.0.1:9000 |
us-east-1 |
У поточному StudioFS ці значення передаються команді studiofs init через параметри --endpoint, --bucket, --region, --access-key та --secret-key. Якщо не вказати --region, StudioFS використовуватиме us-east-1 за замовчуванням. Для хмарного сховища обов’язково вкажіть регіон, наданий вашим провайдером.
Кілька правил, які збережуть нерви¶
Не робіть bucket публічним. Клієнти StudioFS використовують ключі для доступу, а не анонімні посилання. Для віддаленого S3 обирайте HTTPS; звичайний HTTP доречний лише там, де ви свідомо організували безпечне тестове або приватне підключення.
Не змінюйте об’єкти StudioFS вручну. Їхні технічні назви й вміст не призначені для ручного керування. Видалення «незрозумілого сміття» в bucket може виявитися видаленням частини потрібного медіафайлу.
Не плутайте шифрування зі збереженням. StudioFS автоматично шифрує дані перед відправленням у S3, але це не захист від випадкового видалення bucket, втрати метаданих або неправильної політики зберігання. Шифрування каналу HTTPS теж має інше призначення.
Пам’ятайте про географію. Якщо користувачі в Європі, а сховище на іншому континенті, запити можуть мати відчутно більшу затримку. Локальний кеш допомагає, але не скасовує фізику мережі.
Отже, ми підготували місце, де житимуть дані: приватний bucket, окремі ключі, endpoint і регіон. Наступний крок — PostgreSQL, який відповідатиме за спільну структуру файлів та зміни між комп’ютерами. Далі залишиться встановити StudioFS, об’єднати S3 та PostgreSQL в один том — і наш майбутній хмарний диск буде готовий до роботи.
Зміст · English · ← Попередня · Наступна →