Интерфейс командной строки Yandex Cloud (CLI)
Yandex Cloud CLI — скачиваемое программное обеспечение для управления вашими облачными ресурсами через командную строку.
Установите Yandex Cloud CLI
-
Выполните команду:
curl -sSL https://storage.yandexcloud.net/yandexcloud-yc/install.sh | bashСкрипт установит CLI и добавит путь до исполняемого файла в переменную окружения
PATH.Примечание
Скрипт дополнит переменную
PATHтолько если его запустить в командных оболочкахbashилиzsh.Если вы запустили скрипт в другой оболочке, добавьте путь до CLI в переменную
PATHсамостоятельно.Важно
Для корректной работы автодополнения при использовании
zshтребуется версия оболочки не ниже 5.1, а при использованииbashна CentOS и производных дистрибутивах необходимо установить пакетbash-completion. -
После завершения установки перезапустите командную оболочку.
-
Выполните команду:
curl -sSL https://storage.yandexcloud.net/yandexcloud-yc/install.sh | bashСкрипт установит CLI и добавит путь до исполняемого файла в переменную окружения
PATH. -
Перезапустите командную оболочку, чтобы перезагрузить переменные окружения.
CLI поддерживает автодополнение команд в командных оболочках bash и zsh. Чтобы включить автодополнение:
-
Установите менеджер пакетов Homebrew
. -
Установите пакет
zsh-completion:Важно
Если вы установили bash вместо zsh либо используете macOS 10.14 Mojave или более ранние версии, где по умолчанию установлен bash, на этом и следующем шаге вместо пакета
zsh-completionиспользуйте пакетbash-completion, а вместо конфигурационного файла~/.zshrc—~/.bash_profile.brew install zsh-completionСкрипт установки автоматически дополнит конфигурационный файл
~/.zshrc:# The next line updates PATH for Yandex Cloud CLI. if [ -f '/Users/<username>/yandex-cloud/path.bash.inc' ]; then source '/Users/<username>/yandex-cloud/path.bash.inc'; fi # The next line enables shell command completion for yc. if [ -f '/Users/<username>/yandex-cloud/completion.zsh.inc' ]; then source '/Users/<username>/yandex-cloud/completion.zsh.inc'; fi -
После завершения установки добавьте в конфигурационный файл
~/.zshrcследующие строки. Расположите их выше строк, автоматически добавленных скриптом установки.if [ -f $(brew --prefix)/etc/zsh_completion ]; then . $(brew --prefix)/etc/zsh_completion fi -
Перезапустите командную оболочку.
Для Windows CLI можно установить с помощью PowerShell или командной строки:
-
Для установки с помощью PowerShell:
-
Выполните команду:
iex (New-Object System.Net.WebClient).DownloadString('https://storage.yandexcloud.net/yandexcloud-yc/install.ps1') -
Скрипт установки спросит, нужно ли добавить путь до
ycв переменную PATH:Add yc installation dir to your PATH? [Y/n] -
Введите
Y. После этого Yandex Cloud CLI можно пользоваться, командную оболочку перезапускать не нужно.
-
-
Для установки с помощью командной строки:
-
Выполните команду:
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://storage.yandexcloud.net/yandexcloud-yc/install.ps1'))" && SET "PATH=%PATH%;%USERPROFILE%\yandex-cloud\bin" -
Скрипт установки спросит, нужно ли добавить путь до
ycв переменную PATH:Add yc installation dir to your PATH? [Y/n] -
Введите
Y. -
Перезапустите командную оболочку, чтобы перезагрузить переменные окружения.
-
Если в процессе установки CLI возникла ошибка, см. раздел Решение проблем CLI.
Аутентифицируйтесь в Yandex Cloud CLI
Для доступа к Yandex Cloud CLI выполните аутентификацию, выбрав один из следующих методов:
Чтобы аутентифицироваться с помощью аккаунта на Яндексе:
-
Получите OAuth-токен в сервисе Яндекс ID
:-
Перейдите по ссылке
. Если приложение запрашивает доступ к данным, разрешите. Это нужно для получения токена. -
Скопируйте в буфер обмена или сохраните полученный токен.
-
-
Если вы аутентифицируетесь впервые, перейдите в консоль облака
. Примите условия лицензионного соглашения и политики конфиденциальности. -
Чтобы начать настройку профиля CLI, выполните команду:
yc init --region=kz -
Выберите профиль, для которого вы хотите настроить аутентификацию, или создайте новый. Если вы выполняете команду
yc initвпервые, этот шаг будет отсутствовать.Pick desired action: [1] Re-initialize this profile 'default' with new settings [2] Create a new profile Please enter your numeric choice: 1 -
По запросу команды введите OAuth-токен, полученный ранее:
Please go to https://oauth.yandex.ru/authorize?response_type=token&client_id=1a6990aa636648e9b2ef855fa7bec2fb in order to obtain OAuth token. Please enter OAuth token: y0_AgA ... wvs7N4 -
Выберите одно из предложенных облаков, к которым у вас есть доступ:
Please select cloud to use: [1] cloud1 (id = aoe2bmdcvata********) [2] cloud2 (id = dcvatao4faoe********) Please enter your numeric choice: 2Если вам доступно только одно облако, оно будет выбрано автоматически.
-
Выберите каталог по умолчанию:
Please choose a folder to use: [1] folder1 (id = cvatao4faoe2********) [2] folder2 (id = tao4faoe2cva********) [3] Create a new folder Please enter your numeric choice: 1 -
Чтобы выбрать зону доступности по умолчанию для сервиса Compute Cloud, введите
Y. Чтобы пропустить настройку, введитеn.Do you want to configure a default Yandex Compute Cloud availability zone? [Y/n] YЕсли вы ввели
Y, выберите зону доступности:Which zone do you want to use as a profile default? [1] kz1-a [2] Do not set default zone Please enter your numeric choice: 1Примечание
В регионе Казахстан доступна только зона доступности
kz1-a. -
Проверьте настройки вашего профиля CLI:
yc config listРезультат:
token: y0_AgA...wvs7N4 cloud-id: b1g159pa15cd******** folder-id: b1g8o9jbt58******** compute-default-zone: kz1-a
Чтобы аутентифицироваться с помощью SAML-совместимой федерации удостоверений:
-
Узнайте идентификатор федерации у вашего администратора.
-
Запустите интерактивное создание профиля:
yc init \ --federation-id=<идентификатор_федерации> \ --region=kz -
Выберите профиль, для которого вы хотите настроить аутентификацию, или создайте новый.
Welcome! This command will take you through the configuration process. Pick desired action: [1] Re-initialize this profile 'default' with new settings [2] Create a new profile -
CLI выведет сообщение о продолжении аутентификации в браузере. Для продолжения нажмите клавишу Enter.
You are going to be authenticated via federation-id 'aje1f0hsgds3a********'. Your federation authentication web site will be opened. After your successful authentication, you will be redirected to 'https://kz.console.yandex.cloud'. Press 'enter' to continue...После успешной аутентификации в профиле сохранится IAM-токен. При каждой операции аутентификация будет происходить с помощью этого IAM-токена, пока не истечет время его жизни. После этого CLI снова выведет сообщение о необходимости пройти аутентификацию в браузере.
-
Вернитесь в интерфейс командной строки, чтобы завершить создание профиля.
-
Выберите одно из предложенных облаков, в которых у вас есть права доступа:
Please select cloud to use: [1] cloud1 (id = aoe2bmdcvata********) [2] cloud2 (id = dcvatao4faoe********) Please enter your numeric choice: 2Если вам доступно только одно облако, оно будет выбрано автоматически.
-
Выберите каталог по умолчанию:
Please choose a folder to use: [1] folder1 (id = cvatao4faoe2********) [2] folder2 (id = tao4faoe2cva********) [3] Create a new folder Please enter your numeric choice: 1 -
Чтобы выбрать зону доступности по умолчанию для сервиса Compute Cloud, введите
Y. Чтобы пропустить настройку, введитеn.Do you want to configure a default Yandex Compute Cloud availability zone? [Y/n] YЕсли вы ввели
Y, выберите зону доступности:Which zone do you want to use as a profile default? [1] kz1-a [2] Do not set default zone Please enter your numeric choice: 1Примечание
В регионе Казахстан доступна только зона доступности
kz1-a. -
Проверьте настройки вашего профиля CLI:
yc config listРезультат:
federation-id: aje1f0hs6oja******** cloud-id: b1g159pa15cd******** folder-id: b1g8o9jbt58******** compute-default-zone: kz1-a
Чтобы аутентифицироваться от имени сервисного аккаунта:
-
Получите список сервисных аккаунтов, которые существуют в вашем облаке:
yc iam service-account --folder-id <идентификатор_каталога> listРезультат:
+----------------------+------------+--------+---------------------+-----------------------+ | ID | NAME | LABELS | CREATED AT | LAST AUTHENTICATED AT | +----------------------+------------+--------+---------------------+-----------------------+ | ajeg2b2et02f******** | my-robot | | 2024-09-08 18:59:45 | 2025-08-21 06:40:00 | | ajegtlf2q28a******** | default-sa | | 2023-06-27 16:18:18 | 2025-08-21 06:30:00 | +----------------------+------------+--------+---------------------+-----------------------+ -
Создайте авторизованный ключ для сервисного аккаунта и сохраните его в файл
key.json:yc iam key create \ --service-account-name default-sa \ --output key.json \ --folder-id <идентификатор_каталога>Результат:
id: aje83v701b1u******** service_account_id: aje3932acd0c******** created_at: "2019-08-26T12:31:25Z" key_algorithm: RSA_2048 -
Добавьте авторизованный ключ сервисного аккаунта в профиль CLI.
-
Создайте новый профиль CLI:
yc config profile create sa-profile -
Добавьте авторизованный ключ:
yc config set service-account-key key.json
-
-
Убедитесь, что параметры для сервисного аккаунта добавлены верно:
yc config listРезультат:
service-account-key: id: aje83v701b1u******** service_account_id: aje3932acd0c******** created_at: "2019-08-26T12:31:25Z" key_algorithm: RSA_2048 public_key: | -----BEGIN PUBLIC KEY----- MIIBIjANBg... -----END PUBLIC KEY----- private_key: | -----BEGIN PRIVATE KEY----- MIIEvwIBAD... -----END PRIVATE KEY----- -
Настройте профиль для запуска команд.
Для некоторых команд требуется указание уникального идентификатора облака и каталога. Вы можете указать информацию о них в профиле или запускать такие команды с соответствующим флагом.
-
Укажите облако в профиле:
yc config set cloud-id <идентификатор_облака>Или запускайте команды с параметром
--cloud-id. -
Укажите каталог в профиле:
yc config set folder-id <идентификатор_каталога>Или запускайте команды с параметром
--folder-id.
Все операции в этом профиле будут выполняться от имени привязанного сервисного аккаунта. Вы можете изменить параметры профиля или сменить его.
-
Проверьте работу Yandex Cloud CLI с Object Storage
Примечание
Для включения отладочного вывода в консоли используйте флаг --debug.
Создайте бакет
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
-
Посмотрите описание команды CLI для создания бакета:
yc storage bucket create --help -
Создайте бакет в каталоге по умолчанию:
yc storage bucket create --name <имя_бакета>Где
--name— имя бакета. Обязательный параметр. Подробнее см. Правила именования бакетов.По умолчанию бакет с точкой в имени доступен только по протоколу HTTP. Чтобы поддержать для бакета протокол HTTPS, загрузите собственный сертификат безопасности в Object Storage.
Результат:
name: example folder_id: b1gmit33ngp6******** anonymous_access_flags: read: false list: false default_storage_class: STANDARD versioning: VERSIONING_DISABLED max_size: "53687091200" acl: {} created_at: "2022-12-16T14:05:12.196007Z"Опциональные параметры
--default-storage-class— класс хранилища. Доступные значения:standard— стандартное хранилище. Устанавливается по умолчанию.cold— холодное хранилище.ice— ледяное хранилище.
Более
холодные
классы предназначены для длительного хранения объектов, работать с которыми планируется реже. Чемхолоднее
хранилище, тем дешевле хранить в нем данные, но тем дороже их читать и записывать.--max-size— максимальный размер бакета в байтах. Значение по умолчанию —0(без ограничений).- Параметры для включения публичного доступа к бакету:
--public-read— включить публичный доступ на чтение объектов в бакете.--public-list— включить публичный доступ на просмотр списка объектов в бакете.--public-config-read— включить публичный доступ на чтение настроек в бакете.
По умолчанию публичный доступ к бакету выключен.
Важно
Публичный доступ предоставляется неограниченному кругу анонимных пользователей. Используйте его только в случае, когда нет возможности применить другие механизмы предоставления доступа.
-
Параметры для настройки ACL бакета:
-
--acl— предопределенный ACL. Список возможных значений см. в разделе Предопределенные ACL. Нельзя использовать одновременно с параметром--grants. -
--grants— настройки разрешений для отдельных пользователей, сервисных аккаунтов, групп пользователей и публичных групп (группа всех пользователей интернета, группа всех аутентифицированных пользователей Yandex Cloud). Нельзя использовать одновременно с параметром--acl. Значение параметра указывается в формате:grant-type=<тип_получателя_разрешения>,grantee-id=<идентификатор_получателя>,permission=<тип_разрешения>, где:grant-type— тип получателя разрешения. Возможные значения:grant-type-account— пользователь, сервисный аккаунт или группа пользователей;grant-type-all-authenticated-users— публичная группа всех аутентифицированных пользователей Yandex Cloud;grant-type-all-users— публичная группа всех пользователей интернета.grantee-id— идентификатор пользователя, сервисного аккаунта или группы пользователей, которым нужно дать разрешение. Указывается, только еслиgrant-type=grant-type-account.permission— тип разрешения ACL. Возможные значения:permission-full-control,permission-write,permission-read. Подробнее о разрешениях см. в разделе Виды разрешений.
Чтобы настроить несколько разрешений, укажите параметр
--grantsнесколько раз.
По умолчанию для каждого нового бакета создается пустой ACL.
Подробнее о команде
yc storage bucket createсм. в Справочнике YC CLI.
Загрузите объект в бакет
-
Посмотрите описание команды CLI для загрузки файла в бакет:
yc storage s3api put-object --help -
Получите список бакетов в каталоге по умолчанию:
yc storage bucket listРезультат:
+------------------+----------------------+-------------+-----------------------+---------------------+ | NAME | FOLDER ID | MAX SIZE | DEFAULT STORAGE CLASS | CREATED AT | +------------------+----------------------+-------------+-----------------------+---------------------+ | first-bucket | b1gmit33ngp6******** | 53687091200 | STANDARD | 2022-12-16 13:58:18 | +------------------+----------------------+-------------+-----------------------+---------------------+ -
Выполните команду:
yc storage s3api put-object \ --body <путь_к_локальному_файлу> \ --bucket <имя_бакета> \ --key <путь_к_объекту>Где:
--body— путь к файлу, который нужно загрузить в бакет.--bucket— имя вашего бакета.--key— ключ, по которому объект будет храниться в бакете.
Результат:
etag: '"d41d8cd98f00b204e980099********"' request_id: 3f2705f********Альтернативная команда:
yc storage s3 cp \ <путь_к_локальному_файлу> \ s3://<имя_бакета>/<путь_к_объекту>Результат:
upload: object.txt to s3://my-bucket/object.txtНастройка параметров для команды
yc storage s3 cpВы можете настроить следующие параметры для команды
yc storage s3 cp:s3.max-queue-size— максимальное количество задач в очереди. Значение по умолчанию —1000.s3.max-concurrent-requests— максимальное количество одновременных запросов. Значение по умолчанию —10.s3.multipart-threshold— пороговый размер объекта, при превышении которого будет использоваться составная (multipart) загрузка. Значение по умолчанию —8MB.s3.multipart-chunksize— размер частей, на которые будет делиться объект при составной (multipart) загрузке. Значение по умолчанию —8MB.
Чтобы задать эти параметры, используйте команду
yc config set <параметр> <значение>.
Скачайте объект из бакета
-
Посмотрите описание команды CLI для скачивания объекта из бакета:
yc storage s3api get-object --help -
Получите список бакетов в каталоге по умолчанию:
yc storage bucket listРезультат:
+------------------+----------------------+-------------+-----------------------+---------------------+ | NAME | FOLDER ID | MAX SIZE | DEFAULT STORAGE CLASS | CREATED AT | +------------------+----------------------+-------------+-----------------------+---------------------+ | first-bucket | b1gmit33ngp6******** | 53687091200 | STANDARD | 2022-12-16 13:58:18 | +------------------+----------------------+-------------+-----------------------+---------------------+ -
Выполните команду:
yc storage s3api get-object \ --bucket <имя_бакета> \ --key <ключ_объекта> \ <путь_для_скачивания>Где:
--bucket— имя вашего бакета.--key— ключ объекта.<путь_для_скачивания>— локальный путь для скачивания.
Результат:
etag: '"d41d8cd98f00b204e9800998********"' request_id: af194b83******** accept_ranges: bytes content_type: application/octet-stream last_modified_at: "2024-10-08T12:36:36Z" server_side_encryption: aws:kms sse_kms_key_id: abj497vtg3h0********Альтернативная команда:
yc storage s3 cp \ s3://<имя_бакета>/<ключ_объекта> \ <путь_для_скачивания>Результат:
download: s3://my-bucket/object.txt to object.txtНастройка параметров для команды
yc storage s3 cpВы можете настроить следующие параметры для команды
yc storage s3 cp:s3.max-queue-size— максимальное количество задач в очереди. Значение по умолчанию —1000.s3.max-concurrent-requests— максимальное количество одновременных запросов. Значение по умолчанию —10.s3.multipart-threshold— пороговый размер объекта, при превышении которого будет использоваться составная (multipart) загрузка. Значение по умолчанию —8MB.s3.multipart-chunksize— размер частей, на которые будет делиться объект при составной (multipart) загрузке. Значение по умолчанию —8MB.
Чтобы задать эти параметры, используйте команду
yc config set <параметр> <значение>.