Skip to content

volcengine/volcengine-cli

Repository files navigation

Volcengine Command Line Tools

中文 | English

特别说明

为了便于用户使用,从v1.0.20版本开始,火山引擎CLI工具命令前缀由“volcengine-cli” 更新为“ve”。低版本不受影响,请升级到v1.0.20及以后版本的用户及时更新指令前缀(可参考alias命令统一设置)。

概述

  1. 火山引擎-命令行工具
  2. Go版本最低1.5+ 推荐是用1.12+

安装 火山引擎CLI

通过release获取客户端

  1. https://github.com/volcengine/volcengine-cli/releases 获取最新版本
  2. 下载对应操作系统的版本 解压使用

自行编译获取客户端

  1. 使用build.sh编译客户端
    # 如果是mac 
    sh build.sh darwin
    mv ve-darwin ve
    # 如果是windows
    sh build.sh windows
    mv ve-windows ve
    # 如果是linux
    sh build.sh linux
    mv ve-linux ve

配置 火山引擎CLI

将 火山引擎CLI 配置进环境变量

  1. 检查一下 $PATH 系统变量是否存在 /usr/local/bin,若没有则请您根据实际情况为 火山引擎CLI 设置可用的环境变量

  2. 执行下面的命令,将 ve 拷贝至 /usr/local/bin 目录下即可使用

    sudo cp ve /usr/local/bin

配置凭证

调用服务需要用到 AK,SK,region,可以通过以下两种方式进行配置

  1. 通过 ve configure set 设置,示例

    ve configure set --profile test --region cn-beijing --access-key ak --secret-key sk

    支持参数及相关说明

    profile: 配置名称,如果 profile 已存在,则该命令会修改已有配置;否则就会新建配置,并将当前使用的profile指定为新配置
    access-key: 您的 AK
    secret-key: 您的 SK
    region: 地域,如 cn-beijing
    session-token: 如果使用角色扮演,需要提供
    disable-ssl: 是否禁用 ssl,默认为 false
    endpoint: 可以不填,默认值为 open.volcengineapi.com;当 endpoint-resolver 为 standard 时该值会被忽略
    endpoint-resolver: 可选;指定 endpoint 解析器。设置为 standard(不区分大小写)时使用标准解析器;否则当 endpoint 非空时使用 endpoint
    use-dual-stack: 可选;是否启用双栈,默认为 false
  2. 若配置文件中无配置,则会尝试从 export 的环境变量中读取配置

    export VOLCENGINE_ACCESS_KEY=AK
    export VOLCENGINE_SECRET_KEY=SK
    export VOLCENGINE_REGION=cn-bejing
    
    # 可选:自定义 endpoint;当 VOLCENGINE_ENDPOINT_RESOLVER=standard 时会忽略
    export VOLCENGINE_ENDPOINT=open.volcengineapi.com
    
    # 可选:endpoint 解析器;设置为 standard(不区分大小写)使用标准解析器
    export VOLCENGINE_ENDPOINT_RESOLVER=standard
    
    # 可选:是否启用双栈,true/false
    export VOLCENGINE_USE_DUALSTACK=false
    
    # 是否禁用SSL, 不设置的话默认为false
    export VOLCENGINE_DISABLE_SSL=false
    
    # 如果使用角色扮演,需要提供
    export VOLCENGINE_SESSION_TOKEN=sessionToken

configure命令的其他操作

  1. 火山引擎CLI使用configure配置profile之后,会优先使用profile中的鉴权信息进行接口签名访问
  2. 使用 ve configure set 新增或者修改普通 AK profile 后,当前 configure 中的默认使用 profile 会被切换到新增或者修改的 profile 上;ve configure sso 不会自动切换当前 profile,配置完成后如需默认使用该 SSO profile,请执行 ve configure profile --profile [配置名]
  3. 如果存在多个profile,请在调用接口前,使用ve configure profile --profile [配置名] 进行切换,以保证正确的使用
获取指定配置(profile)信息
ve configure get --profile [配置名]

其中 profile 为可选字段,若不指定 profile 字段则会展示当前配置;若指定了 profile 则 火山引擎CLI 会尝试获取指定配置并展示

若配置不存在,则返回的配置字段全为默认值

显示当前所有配置(profile)信息
ve configure list
切换当前使用的配置(profile)信息 请确保版本大于或者等于>=1.0.16
ve configure profile --profile [配置名]

其中 profile 为必选字段,指定了 profile 则 火山引擎CLI 会尝试获切换当前的配值

若配置不存在,当前的配置不会发生切换,并且会给出错误的提示

新建/修改配置(profile)
ve configure set --profile [配置名] --region [地区] --access-key [用户的AK] --secret-key [用户的SK] --endpoint [地区对应的endpoint]

新建或者修改配置后,当前的使用配置会切换到修改的配置上

新建配置时必须指定 profile 字段和 region 字段,修改已有配置必须指定 profile 字段

其余可指定的字段:

  • access-key
  • secret-key
  • region
  • session-token
  • disable-ssl
  • endpoint
  • endpoint-resolver
  • use-dual-stack

各个字段的作用您可以参考上节中 "支持参数及相关说明" 部分

删除配置(profile)
ve configure delete --profile [配置名]

删除配置时必须指定 profile 字段以指示需要删除的配置名

若待删除的是当前正在使用的配置,则删除成功后 火山引擎CLI 会尝试从剩余的配置中随机挑选一个作为当前配置

SSO 快速上手

SSO 配置分两层:sso-session 保存企业 SSO 入口(Start URL、Region、Scopes),SSO profile 保存某个账号和角色的绑定信息。首次使用建议按下面顺序执行:

# 1. 创建 SSO 会话。registration-scopes 可省略,按提示回车即可使用默认值
ve configure sso-session --name my-sso --start-url https://{custom}.volccloudidentity.com/userportal --region cn-beijing

# 2. 创建 SSO 类型 profile,完成设备码授权,并在交互列表中选择 account 和 role
ve configure sso --profile my-dev --sso-session my-sso

# 3. 将当前默认 profile 切换到刚创建的 SSO profile
ve configure profile --profile my-dev

# 4. 后续直接执行业务命令;STS 过期时 CLI 会按需静默刷新
ve [service] [action] [params]

注意:ve configure sso 会写入 SSO profile,但不会自动修改当前默认 profile。若跳过第 3 步,业务命令仍会使用原来的 current profile。

SSO 命令关系

命令 什么时候用 主要作用 是否切换当前 profile
ve configure sso-session 每个 SSO 入口通常配置一次 保存 Start URL、Region、Scopes,可被多个 SSO profile 复用
ve configure sso 每个 account + role 组合配置一次 关联 SSO 会话,执行首次授权,选择账号和角色,写入 SSO profile
ve configure profile --profile [配置名] 需要让业务命令默认使用某个 profile 时 切换当前默认 profile
ve sso login 被提示重新登录,或希望主动刷新 SSO 登录态时 重新执行设备码授权并缓存 access token
ve sso logout 需要退出某个或全部 SSO 会话时 撤销缓存令牌,删除 token cache,清理 STS 临时凭证

配置 SSO 会话 (configure sso-session)

ve configure sso-session --name [会话名] --start-url [SSO Start URL] --region [地区] --registration-scopes [scope1,scope2]

该命令用于新增或修改 SSO 会话,后续可被 ve configure sso 复用。参数说明:

name: SSO 会话名称;未提供时进入交互式选择/创建模式
start-url: SSO Start URL;必填。格式为“用户登录链接 + /userportal”后缀,例如 https://{custom}.volccloudidentity.com/userportal;编辑已有会话时回车可沿用默认值
region: SSO 区域;默认 cn-beijing;编辑已有会话时回车可沿用默认值
registration-scopes: SSO scope 列表(逗号分隔);可省略,默认 cloudidentity:account:access,offline_access;允许值仅 cloudidentity:account:access 和 offline_access

交互式流程说明:

  • 若当前无任何 SSO 会话,会提示输入会话名,不能为空
  • 若已有会话,会进入可搜索的列表选择,可选 “” 创建新会话
  • 编辑已有会话时,Start URL、Region、Scopes 会回填默认值,回车可沿用
  • Scopes 会进行 trim、去重与校验;未输入时使用默认值

配置 SSO 类型 profile (configure sso)

ve configure sso --profile [配置名] --sso-session [会话名] [--no-browser]

该命令用于创建或更新 SSO 类型 profile。执行时会关联一个 SSO 会话,走设备码授权流程,拉取账号列表和角色列表供用户选择,最后把 mode=ssosso-session-nameaccount-idrole-nameregion 写入 ~/.volcengine/config.json

参数说明:

profile: profile 名称;未输入时可回车,默认使用 {sso-role-name}-{sso-account-id}
sso-session: SSO 会话名称;未输入时进入交互式选择/创建模式
no-browser: 添加 --no-browser 表示禁止自动打开浏览器,适合无图形界面的服务器环境

注意事项:

  • 若指定的 profile 已存在且不是 SSO 类型,将拒绝覆盖并返回错误
  • 若指定的 SSO 会话不存在,将引导创建,并要求输入 Start URL、Region 与 Scopes
  • configure sso 会完成首次授权和账号/角色选择,但不会切换当前默认 profile;请按需执行 ve configure profile --profile [配置名]
  • 若要切换账号或角色,请重新执行 ve configure sso --profile [配置名] --sso-session [会话名]

日常登录、自动刷新与登出

业务命令的自动刷新

当前默认 profile 为 SSO 类型时,业务命令会自动检查并刷新 STS 临时凭证:

  • 如果 profile 中的 session-token 未过期,直接复用
  • 如果 STS 缺失或已过期,CLI 会使用缓存的 SSO access token 和 profile 中的 account-id / role-name 换取新的 STS,并写回 profile
  • 如果 SSO access token 已过期或接近过期,CLI 只会尝试使用 refresh_token 静默刷新,不会在业务命令中自动打开浏览器
  • 如果没有缓存 access token、refresh_token 缺失、客户端注册过期或刷新失败,业务命令会提示重新执行 ve sso login
SSO 登录 (sso login)
ve sso login --profile [配置名]
#
ve sso login --sso-session [会话名]
# 或不传参数,按已配置的 sso-session 自动选择/交互选择
ve sso login

ve sso login 用于显式重新登录 SSO,会重新走设备码授权并缓存新的 access token。与 AWS SSO login 语义一致,每次执行都会重新认证当前 SSO 会话,不会使用已有 refresh_token 静默换取 access token。

参数说明:

profile: 指定要使用的 SSO profile;必须存在且类型为 sso,且已配置 sso-session
sso-session: 指定要使用的 SSO 会话;会话必须存在且有效
no-browser: 添加 --no-browser 表示禁止自动打开浏览器

登录行为说明:

  • 未指定 profile 和 sso-session 时:未配置任何会话会返回错误,仅有一个会话时直接使用该会话登录,有多个会话时进入交互式选择(可搜索筛选)
  • sso login 不会重新选择 account/role;账号和角色来自 ve configure sso 写入的 account-id / role-name
  • 当前仅支持设备码授权流程,--no-browser 用于关闭自动打开浏览器
SSO 登出 (sso logout)
ve sso logout --sso-session [会话名]
# 或不传参数,按已配置的 sso-session 自动选择/交互选择
ve sso logout

ve sso logout 用于退出 SSO 登录态。指定 --sso-session 时退出该会话;不指定时,未配置任何会话会返回错误,仅有一个会话时直接登出该会话,有多个会话时进入交互式选择,并支持选择 “All SSO sessions” 批量登出。

登出会执行:

  • 撤销该 SSO 会话缓存的 refresh token(如果存在)
  • 删除该 SSO 会话的 token cache
  • 清理关联 SSO profile 中的 STS 临时凭证字段:access-keysecret-keysession-tokensts-expiration

登出不会执行:

  • 不删除 SSO profile
  • 不删除 sso-session 配置
  • 不清除 profile 中的 account-id / role-name

因此,登出后如需继续使用原账号和角色,重新执行 ve sso login 即可;如需切换账号或角色,请重新执行 ve configure sso

SSO 常见问题

  • 执行完 ve configure sso 后业务命令还在使用旧账号怎么办? 请执行 ve configure profile --profile [配置名] 切换当前默认 profile。configure sso 只写入 profile,不会自动切换 current profile。

  • 什么时候需要执行 ve sso login? 首次 ve configure sso 已完成授权。日常业务命令会自动复用或静默刷新凭证;只有当 CLI 提示重新登录,或者你想主动刷新 SSO 登录态时,再执行 ve sso login

  • 为什么 ve sso login 每次都会重新打开授权流程? 这是显式登录语义:每次都会重新走设备码授权,不会用已有 refresh_token 静默完成登录。

  • 想换账号或角色怎么办? 重新执行 ve configure sso --profile [配置名] --sso-session [会话名],在交互列表中重新选择 account 和 role。

  • 没有图形界面的机器怎么登录? 在 ve configure ssove sso login 后加 --no-browser,按命令行输出的授权地址在浏览器中完成授权。

  • Scopes 应该怎么填? 通常可以省略,默认使用 cloudidentity:account:access,offline_access。如果手动填写,只允许 cloudidentity:account:accessoffline_access,CLI 会自动去重并校验。

Console 登录 (login)

# 使用默认 profile 登录,未指定 region 时会提示输入
ve login

# 推荐:指定 profile 和地域,profile/region 支持 -p/-r 简写
ve login -p dev -r cn-beijing

# 无浏览器、远程服务器或容器环境使用跨设备登录
ve login -p dev -r cn-beijing --remote

该命令通过火山引擎控制台完成 OAuth 2.0 + PKCE 登录,并将临时 STS 凭证缓存到本地,后续业务命令可复用该 profile 的临时凭证。

参数说明:

  • --profile, -p:配置名称,默认 default
  • --region, -r:地域;未指定时会提示输入,直接回车使用 cn-beijing
  • --remote:跨设备登录;按终端输出的 URL 在浏览器完成登录,并将浏览器展示的授权码完整粘贴回终端
  • --endpoint-url:登录服务地址,默认 https://signin.volcengine.com,通常无需修改

注意事项:

  • 登录成功后,profile 会被写为 console-login 模式,并记录 login-session
  • 使用非 default profile 登录后,业务命令不会自动切换 profile;需要先执行 ve configure profile --profile dev
  • 本机浏览器无法回跳 CLI 所在机器时,使用 --remote

完整使用流程示例:

# 1. 登录并写入 dev profile
ve login --profile dev --region cn-beijing

# 2. 如果 dev 不是当前默认 profile,先切换当前使用的配置
ve configure profile --profile dev

# 3. 执行业务命令时会使用当前 profile 中的 console-login 临时凭证
ve ecs DescribeInstances

# 4. 使用结束后清理本地登录状态
ve logout --profile dev

Console 登出 (logout)

# 登出 default profile
ve logout

# 登出指定 profile
ve logout -p dev

# 登出当前配置中的所有 Console Login profile
ve logout --all

该命令用于清理 ve login 建立的本地登录状态。它只删除本地缓存凭证并清除 profile 中的 login-session,不会删除 profile,也不会向服务端发起请求。

参数说明:

  • --profile, -p:配置名称,默认 default
  • --all:清理当前配置中的所有 console-login profile;开启后忽略 --profile

注意事项:

  • ve logout 不带 --profile 时只处理 default profile,不会自动按 current 登出
  • 只有 console-login profile 可使用该命令;AK/SSO profile 不适用
  • 登出后若需继续使用,重新执行 ve login

配置自动补全

使用 ve completion --help 可以查看各种终端下配置自动补全的方式,用户可以根据提示信息自己选择是否配置自动补全功能


Bash

火山引擎CLI 的 Bash 补全脚本可以通过 ve completion bash 进行查看,在 shell 中导入该自动补全脚本,即可开启自动补全功能

1. 安装 bash-completion

火山引擎CLI 补全脚本依赖于工具 bash-completiom,所以你必须先安装并启用它(可以用命令 type _init_completion 检查 bash-completion 是否已安装)

  1. 安装:yum install bash-completion 或 apt-get install bash-completion

  2. 启用 bash-completion:source /usr/share/bash-completion/bash_completion

    建议将 source /usr/share/bash-completion/bash_completion 添加至 ~/.bashrc 中

  3. 检查 bash-completion 是否安装成功:执行 type _init_completion 验证 bash-completion 的安装状态

2. 配置自动补全

按以下步骤配置即可在 Bash 下开启自动补全功能:

  1. echo 'source <(ve completion bash)' >> ~/.bashrc
  2. ve completion bash > /etc/bash_completion.d/ve

之后重新加载 Shell (或者 source ~/.bashrc) 后即可生效

若出现 _get_comp_words_by_ref: command not found 的错误,请再次检查 bash-completion 是否安装配置成功


Zsh

火山引擎CLI 的 Zsh 补全脚本可以通过 ve completion zsh 进行查看,在 shell 中导入该自动补全脚本,即可开启自动补全功能

按以下步骤配置即可在 Zsh 下开启自动补全功能:

  1. Zsh 中启用 compinit: echo "autoload -U compinit; compinit" >> ~/.zshrc
  2. 配置自动补全 ve completion zsh > "${fpath[1]}/_ve"

之后重新加载 Shell (或者 source ~/.zshrc) 后即可生效

配置颜色

使用 ve enable-color 可以开启彩色显示功能

使用 ve disable-color 可以关闭彩色显示功能

使用 火山引擎CLI

查询支持的服务列表及服务下支持的接口列表

  1. 查询支持的服务列表
    ve [-h|--help]
  2. 查询服务下支持的接口列表
    ve ecs [-h|--help]

查看版本

ve version
ve -v

调用API

使用 火山引擎CLI 调用 API 时,基本命令结构如下:

ve <service name> <action> [--parameter1 value1 --parameter2 value2 ...]

您可以使用 ve <service name> <action> --help 查看想要调用的API的参数列表、返回结果等信息,例如:ve ecs DescribeInstances --help

若需要查看更详细的信息,您也可以在 https://www.volcengine.com/docs 进行查阅


以下提供一些代码示例:

  • 基本使用

    ve ecs DescribeInstances
    ve rds_mysql ListDBInstanceIPLists --InstanceId "xxxxxx"
  • 支持传入 JSON

    ve rds_mysql ModifyDBInstanceIPList --InstanceId "xxxxxx" --GroupName "xxxxxx" --IPList '["10.20.30.40", "50.60.70.80"]'
  • 对于 ContentType 为 application/json 的请求,火山引擎CLI 还支持直接将 body 作为 JSON 数据传入

    ve rds_mysql ModifyDBInstanceIPList --body '{"InstanceId":"xxxxxx", "GroupName": "xxxxxx", "IPList": ["10.20.30.40", "50.60.70.80"]}'

Security and privacy

This project takes security seriously. For vulnerability reporting and supported versions, see SECURITY.md

About

No description, website, or topics provided.

Resources

License

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors