Интерфейс командной строки 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
. После этого CLI Yandex Cloud можно пользоваться, командную оболочку перезапускать не нужно.
-
-
Для установки с помощью командной строки:
-
Выполните команду:
@"%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-токен. При каждой операции аутентификация будет происходить с помощью этого токена, пока не истечет время жизни токена. После этого 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 <ID_каталога> list
Результат:
+----------------------+------------+ | ID | NAME | +----------------------+------------+ | aje3932acd0c5ur7dagp | default-sa | +----------------------+------------+
-
Создайте авторизованный ключ для сервисного аккаунта и сохраните его в файл
key.json
:yc iam key create --service-account-name default-sa --output key.json --folder-id <ID_каталога>
Результат:
id: aje83v701b1un777sh40 service_account_id: aje3932acd0c5ur7dagp 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: aje83v701b1un777sh40 service_account_id: aje3932acd0c5ur7dagp 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. Вы можете указать другой каталог с помощью параметра --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********
Скачайте объект из бакета
-
Посмотрите описание команды 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********