Робота з S3 сховищем
Ось повна інструкція для клієнтів з використання 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
Якщо бачите список бакетів — доступ налаштований правильно.
🧯 Типові помилки
Помилка | Причина | Рішення |
---|---|---|
InvalidAccessKeyId |
Неправильний ключ | Перевірити Access/Secret Key |
NoSuchBucket |
Бакет не існує | Створити бакет вручну |
403 Forbidden |
Немає прав або неправильні ключі | Перевірити права та endpoint |
EndpointConnectionError |
Endpoint недоступний | Перевірити адресу, протокол, DNS |
📌 Поради з безпеки
-
Зберігайте ключі в
.aws/credentials
з правами600
-
Не публікуйте ключі у публічних скриптах
-
Видаляйте тимчасові файли після резервного копіювання