Робота з S3 сховищем
Що таке S3-сумісне сховище
ОсьS3-сумісне повнасховище інструкція— це об'єктне хмарне сховище, що підтримує протокол Amazon S3 (Simple Storage Service). Воно призначене для клієнтівзберігання будь-яких типів даних: файлів, архівів, резервних копій, логів, статичних об’єктів тощо.
Підключення до такого сховища здійснюється через стандартний API, тому воно сумісне з використаннябагатьма AWSсистемами CLIрезервного длякопіювання, роботипанелями зкерування, S3-сумісним стороннім сховищем, у якому бакети потрібно створювати вручну.
📘 Інструкція: Робота з S3-сумісним сховищем через AWS CLI
Ця інструкція допоможе вам:
Встановитискриптами таналаштуватихмарнимиAWS CLIклієнтами.- поняття
СтворитибакетЗавантажувати та завантажувати файлиПеревіряти вмістАвтоматизувати резервне копіювання🔧 Що вам потрібноAccess Key IDтаSecret Access KeyS3 endpoint, наприклад:https://s3.example.comНазва бакету, яку ви самі виберетеВстановленийawscli(інструкція нижче)
1. 📥 Встановлення AWS CLIUbuntu/Debian:sudo apt update sudo apt install awscli -ymacOS (через Homebrew):brew install awscliWindows:Завантажити інсталятор:https://aws.amazon.com/cli/2. 🛠️ Налаштування AWS CLIРекомендується створити окреме середовище (venv), щоб уникнути конфліктів з urllib3.Команда налаштування:aws configureВведіть:AWS Access Key ID [None]: <ваш Access Key> AWS Secret Access Key [None]: <ваш Secret Key> Default region name [None]: us-east-1 Default output format [None]: json⚠️ Region обирається довільно, бо в сторонніх сховищах він зазвичай ігнорується.3. 🌐 Робота з нестандартним S3 endpointОскільки ви використовуєте не Amazon S3, потрібно в кожній команді вказувати--endpoint-url:--endpoint-url https://s3.example.com4. 📁 Створення бакетуaws --endpoint-url https://s3.example.com s3 mb s3://my-bucket🔐 Назваmy-bucketмає бути унікальною в межах цього сховища.5. 📤 Завантаження файлів у бакетaws --endpoint-url https://s3.example.com s3 cp ./file.txt s3://my-bucket/Завантажить файлfile.txtу корінь бакетуmy-bucket.6. 📥 Завантаження файлів із бакетуaws --endpoint-url https://s3.example.com s3 cp s3://my-bucket/file.txt ./Завантажить файл із бакету у поточну папку.7. 📋 Перегляд вмісту бакетуaws --endpoint-url https://s3.example.com s3 ls s3://my-bucket/8. 📂 Завантаження папкиaws --endpoint-url https://s3.example.com s3 cp ./myfolder s3://my-bucket/ --recursive9. ❌ Видалення файлівaws --endpoint-url https://s3.example.com s3 rm s3://my-bucket/file.txt10. 🧹 Видалення бакету (має бути порожнім)aws --endpoint-url https://s3.example.com s3 rb s3://my-bucket11. 💾 Приклад резервного копіювання (bash-скрипт)#!/bin/bash DATE=$(date +%F) ARCHIVE="/tmp/backup-$DATE.tar.gz" tar -czf "$ARCHIVE" /var/www/html aws --endpoint-url https://s3.example.com s3 cp "$ARCHIVE" s3://my-bucket/backups/ rm "$ARCHIVE"12. 🧪 Перевіркаaws --endpoint-url https://s3.example.com s3 lsЯкщо бачите список бакетів — доступ налаштований правильно.🧯 Типові помилкиПомилкаТермінПричинаРішенняОпис
BucketInvalidAccessKeyId дляНеправильнийКонтейнерключПеревіритизберіганняAccess/SecretфайлівKey(аналог папки верхнього рівня)
ObjectNoSuchBucket зберігаєтьсяБакетФайл,нещоіснуєСтворитиубакет вручнусховищі
Endpoint403 Forbidden сховищаНемаєURL-адресаправточкиабодоступунеправильнідоключіПеревірити(наприклад,права та endpointhttps://s3.example.com
)
Access Key / Secret KeyEndpointConnectionErrorEndpointОбліковінедоступнийдані для авторизації через APIRegion ПеревіритиЛогічнаадресу,зонапротокол,розміщенняDNSданих (не завжди вимагається)📌ПорадиСценарії використання
Сценарій Опис Резервне копіювання Автоматичне збереження копій сайтів, баз даних, конфігурацій Централізоване зберігання логів Завантаження лог-файлів з безпекирізних серверівЗберігання артефактів CI/CD Передача результатів збирання у хмару Хостинг статичних файлів Зберігання зображень, відео, HTML/JS/CSS файлів Обмін великими файлами Передача даних без використання FTP або поштових вкладень Дані для підключення
Для підключення до сховища вам необхідно знати:
-
Зберігайте ключі вEndpoint:.aws/credentialsз правами600https://gmhost.space -
НеAccessпублікуйтеKeyключіID:увпублічнихінструкціїскриптахдо послуги -
ВидаляйтеSecretтимчасовіAccessфайлиKey:післяврезервногоінструкціїкопіюваннядо послуги
Як знайти дані для підключення
Створення бакету
Бакети не створюються автоматично. Для створення використовуйте один із клієнтів, наприклад
rclone
,mc
абоs3cmd
.Приклад створення бакету через
mc
(MinIO Client):mc alias set mys3 https://gmhost.space ACCESS_KEY SECRET_KEY mc mb mys3/назва-бакету