how to upload files to yandex cloud using aws cli Привет! Я уже начинал писать про yandex cloud (Далее YC), если интересно - почитайте Yandex Cloud - сервисные аккаунты и установка yc cli (1)

Нам обязательно потребуется сервисный аккаунт, я подробно описал процесс его создания в посте выше!

В этом посте я расскажу про то, как можно загружать статику (различные файлы - js / css / шрифты / картинки / видео) используя aws cli. Это позволит программно (а не руками) загружать нужные вам файлы в облако (по расписанию, или как вы сами захотите), организовывать резервное копирование, выгружать какие-нибудь отчеты и все такое)

Бакет

Для того, чтобы загружать файлы, у вас должен быть Яндекс Аккаунт, Облако и директория в нем. Уже внутри этой директории нужно создать бакет (то место, куда будем грузить данные, публичный - если хотим, чтобы к файлам имели доступ рандомные люди из интернета).

Итак, считаем, что бакет создан, переходим к установке aws CLI

Установка и настройка AWS CLI

Объектное хранилище Яндекса имеет aws совместимое API - поэтому мы можем использовать aws cli от Amazon чтобы работать с объектами в бакете.

Процесс установки подробно описан в документации AWS, я приведу пример установки на Mac OS.

curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"

sudo installer -pkg AWSCLIV2.pkg -target /

Это все, теперь в терминале доступна aws cli, можно проверить с помощью which aws и aws --version

Чтобы продолжить, нам обязательно потребуется создать:

Я опишу процесс, ожидая что вы уже разобрались с созданием сервисного аккаунта и установкой yc cli

  1. Копирую имя сервисного аккаунта (в моем случае cloud-manager)
yc iam service-account list

# +----------------------+---------------+
# |          ID          |     NAME      |
# +----------------------+---------------+
# | .................... | cloud-manager |
# +----------------------+---------------+
  1. Создаем статический ключ
yc iam access-key create --service-account-name cloud-manager
access_key:
  id: aje1r**********
  service_account_id: aje***************
  created_at: "2024-02-18T18:26:53.297208898Z"
  key_id: YCAJE*****************
secret: YCNN****************************
  1. Сохраните key_id и secret в надежное место, повторно вы их не получите. Они нам потребуются в следующем пункте
  2. Конфигурируем aws с помощью aws configure
AWS Access Key ID [None]: <Значение key_id которое мы сохранили>
AWS Secret Access Key [None]: <Значение secret которое мы сохранили>
Default region name [None]: ru-central1
Default output format [None]:

Проверяем, что credentials сохранились в файл конфигурации aws cat ~/.aws/credentials

Получаем список бакетов

aws s3 --endpoint-url=https://storage.yandexcloud.net ls - Команда выведет список бакетов, с которыми вы можете работать, используя aws cli.

эту команду можно сохранить в алиасы или просто использовать автодополнения (если они у вас подключены, я писал об этом в заметке Как включить автодополнения в терминале на Mac OS)

Загружаем файлы

Я буду грузить статику, которая остается после сборки моего блога (это в основном js/css файлы и картинки)

aws cli files example

Сделать это можно с помощью команды

aws s3 cp --endpoint-url=https://storage.yandexcloud.net --recursive ./<local-folder-to-upload>/ s3://<bucket-name>/<folder-name>/

Спустя примерно минуту загрузка окончена и файлы оказались в облаке - их можно наблюдать, как в веб интерфейсе, так и с использованием aws cli

Пример загруженных в yandex cloud object storage файлов

Про особенности хранения и другие операции можно почитать в документации yandex cloud - очень советую к прочтению

Вместо заключения

Надеюсь, тебе помогла эта статья и ты настроишь все немного быстрей, чем это сделал я )