Skip to main content

Робота з S3 сховищем

Що таке S3-сумісне сховище

ОсьS3-сумісне повнасховище інструкція— це об'єктне хмарне сховище, що підтримує протокол Amazon S3 (Simple Storage Service). Воно призначене для клієнтівзберігання будь-яких типів даних: файлів, архівів, резервних копій, логів, статичних об’єктів тощо.

Підключення до такого сховища здійснюється через стандартний API, тому воно сумісне з використаннябагатьма AWSсистемами CLIрезервного длякопіювання, роботипанелями зкерування, S3-сумісним стороннім сховищем, у якому бакети потрібно створювати вручну.


📘 Інструкція: Робота з S3-сумісним сховищем через AWS CLI

Ця інструкція допоможе вам:

  • Встановитискриптами та налаштуватихмарними AWS CLIклієнтами.

  • Основні
  • поняття
  • Створити

    бакет

  • Завантажувати та завантажувати файли

  • Перевіряти вміст

  • Автоматизувати резервне копіювання


🔧 Що вам потрібно

  • Access Key ID та Secret Access Key

  • S3 endpoint, наприклад: https://s3.example.com

  • Назва бакету, яку ви самі виберете

  • Встановлений awscli (інструкція нижче)


1. 📥 Встановлення AWS CLI

Ubuntu/Debian:

sudo apt update
sudo apt install awscli -y

macOS (через Homebrew):

brew install awscli

Windows:

Завантажити інсталятор: 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.com

4. 📁 Створення бакету

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/ --recursive

9. ❌ Видалення файлів

aws --endpoint-url https://s3.example.com s3 rm s3://my-bucket/file.txt

10. 🧹 Видалення бакету (має бути порожнім)

aws --endpoint-url https://s3.example.com s3 rb s3://my-bucket

11. 💾 Приклад резервного копіювання (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

Якщо бачите список бакетів — доступ налаштований правильно.


🧯 Типові помилки

длязберігаєтьсясховища
ПомилкаТермін ПричинаРішенняОпис
InvalidAccessKeyIdBucket НеправильнийКонтейнер ключ Перевіритизберігання Access/Secretфайлів Key(аналог папки верхнього рівня)
NoSuchBucketObject БакетФайл, нещо існує Створитиу бакет вручнусховищі
403 ForbiddenEndpoint НемаєURL-адреса правточки абодоступу неправильнідо ключі Перевірити(наприклад, права та endpointhttps://s3.example.com)
EndpointConnectionErrorAccess Key / Secret Key EndpointОблікові недоступнийдані для авторизації через API
Region ПеревіритиЛогічна адресу,зона протокол,розміщення DNSданих (не завжди вимагається)

📌

Поради
Сценарії використання
СценарійОпис
Резервне копіюванняАвтоматичне збереження копій сайтів, баз даних, конфігурацій
Централізоване зберігання логівЗавантаження лог-файлів з безпекирізних серверів
Зберігання артефактів CI/CDПередача результатів збирання у хмару
Хостинг статичних файлівЗберігання зображень, відео, HTML/JS/CSS файлів
Обмін великими файламиПередача даних без використання FTP або поштових вкладень
Дані для підключення

Для підключення до сховища вам необхідно знати:

Як знайти дані для підключення


chrome_GEA8otCmV2.pngchrome_uj8svDtIoX.png

Створення бакету

Бакети не створюються автоматично. Для створення використовуйте один із клієнтів, наприклад rclone, mc або s3cmd.

Приклад створення бакету через mc (MinIO Client):

mc alias set mys3 https://gmhost.space ACCESS_KEY SECRET_KEY
mc mb mys3/назва-бакету