Настройка awscli для передачи файлов в s3-хранилище

Давайте предположим, что у нас есть некий сервер, на котором хранится большое количество статических файлов - .png, .jpeg, .css и так далее. Нам нужно, например, чтобы доступ к этим файлам был из разных, географически распределенных мест.

Для такого сценария мы можем использовать S3 хранилище данных. Клиентом для взаимодействия может быть “чистый” клиент - awscli, а может быть S3-совместимый сервер Minio или аналог awscli - Minio Client - фактически мы можем хранить данные прямо на таком сервере.

Чтобы получить доступ, следует заблаговременно получить следующее:

  • access_key (аналог логина)
  • secret_key (аналог пароля)
  • endpoint_url (если не AWS, а S3-compatible — MinIO, Ceph, etc.)

Для взаимодействия с S3 можно использовать awscli. Настроим его:

Установка:

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
aws --version  # Проверка установки

Настройка удаленного хранилища:

aws configure

Не забыть прописать --endpoint-url, если это не S3 от AWS:

root@hhblipions:~# cat .aws/config
[default]
endpoint_url = https://s3.<host>/

Проверить текущие настройки можно командой:

aws configure list

Проверка файлов в удаленном хранилище:

aws s3 ls s3://<bucket_name>/

Проверить текущие бакеты:

aws s3 ls

Отправить файлы в s3:

aws s3 sync Downloads/ s3://<bucket_name>/