Skip to main content

Робота з 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

  • Не публікуйте ключі у публічних скриптах

  • Видаляйте тимчасові файли після резервного копіювання