阿里云CLI
阿里云命令行工具 CLI(Alibaba Cloud CLI)是使用 Go 语言编写,基于阿里云开放 API 建立的管理工具。借助此工具,您可以通过调用阿里云开放 API 来管理阿里云产品。该命令行工具与阿里云开放 API 一一对应,灵活性高且易于扩展。您可基于该命令行工具对阿里云原生 API 进行封装,扩展出您想要的功能。
文档:阿里云CLI
安装
下载安装包 (推荐)
阿里云CLI工具下载、解压后即可使用,支持Mac, Linux, Windows平台(x64版本)。您可以将解压的
aliyun
可执行文件移至/usr/local/bin
目录下,或添加到$PATH
中。下载链接如下 (3.0.73):
使用brew
如果你的电脑上安装了
brew
, 你可以使用它来安装阿里云命令行工具:brew install aliyun-cli
如果需要详细安装步骤或者编译安装步骤请访问官网文档 安装 CLI
配置
详细配置指引请访问官网 配置 CLI
在使用阿里云CLI之前,您需要配置调用阿里云资源所需的凭证信息、地域、语言等。
你可以运行aliyun configure
命令进行快速配置
$ aliyun configure
Configuring profile 'default' in '' authenticate mode...
Access Key Id []: AccessKey ID
Access Key Secret []: AccessKey Secret
Default Region Id []: cn-hangzhou
Default Output Format [json]: json (Only support json))
Default Language [zh|en] en:
Saving profile[akProfile] ...Done.
其中,
Access ID:RAM子账号的ID
Access Secret:RAM子账号的Secret
Region ID:阿里云账号中镜像仓库的区位(如,cn-hangzhou)
Language:zh
启用zsh/bash自动补全
使用
aliyun auto-completion
命令开启自动补全,目前支持zsh/bash使用
aliyun auto-completion --uninstall
命令关闭自动补全
多账号环境
如果你需要让不同的命令执行到不同的账号上,或者频繁切换账号,则最好使用profile来配置账号。
格式如下:
aliyun configure --profile 账号
其中profile后面的参数只是一个描述字段,为了规范,建议配置为账号名。
配置好以后,之后每次执行命令需要带一个 --profile 参数,来指定账号。
可以输入如下命令查看某个账号的信息:
aliyun configure list --profile 账号
使用阿里云CLI
这里是基础使用指引,如需要详细使用手册,请访问 这里。
阿里云云产品的 OpenAPI 有 RPC 和 RESTful 两种风格,大部分产品使用的是RPC风格。不同风格的API的调用方法也不同。
您可以通过以下特点判断API风格:
API参数中包含
Action
字段的是RPC风格,需要PathPattern
参数的是Restful风格。一般情况下,每个产品内,所有API的调用风格是统一的。
每个API仅支持特定的一种风格,传入错误的标识,可能会调用到其他API,或收到“ApiNotFound”的错误信息。
调用RPC风格的API
阿里云CLI中RPC风格的API调用的基本结构如下:
aliyun <product> <operation> [--parameter1 value1 --parameter2 value2 ...]
代码示例:
aliyun rds DescribeDBInstances --PageSize 50
aliyun ecs DescribeRegions
aliyun rds DescribeDBInstanceAttribute --DBInstanceId xxxxxx
调用RESTful风格的API
部分阿里云产品如容器服务的OpenAPI为Restful风格,调用Restful风格的接口与调用RPC风格的接口方式不同。参考以下代码示例,调用RESTful API。
GET请求示例:
aliyun cs GET /clusters
POST请求示例:
aliyun cs POST /clusters --body "$(cat input.json)"
DELETE请求示例:
aliyun cs DELETE /clusters/ce2cdc26227e09c864d0ca0b2d5671a07
获取帮助信息
阿里云CLI集成了一部分产品的API和参数列表信息, 您可以使用如下命令来获取帮助:
$ aliyun help
: 获取产品列表$ aliyun help <product>
: 获取产品的API信息如获取ECS的API信息:
$ aliyun help ecs
$ aliyun help <product> <apiName>
: 获取API的调用信息如获取ECS的CreateInstance的信息:
aliyun help ecs CreateInstance
使用--force
参数
阿里云CLI集成了一部分云产品的元数据,在调用时会对参数的合法性进行检查。如果使用了一个元数据中未包含的API或参数会导致unknown api
或unknown parameter
错误。可以使用--force
参数跳过API和参数检查,强制调用元数据列表外的API和参数,如:
aliyun newproduct --version 2018-01-01 --endpoint newproduct.aliyuncs.com --param1 ... --force
在使用--force
参数时,必须指定以下两个参数:
--version
: 指定API的版本,你可以在API文档中找到版本号,如ECS的版本号是2014-05-26
。--endpoint
: 指定产品的接入地址。请参考各产品的API文档。
使用--output
参数
阿里云产品的查询接口会返回json结构化数据,不方便阅读。例如:
aliyun ecs DescribeInstances
执行以上命令将得到以下json结果:
{
"PageNumber": 1,
"TotalCount": 2,
"PageSize": 10,
"RequestId": "2B76ECBD-A296-407E-BE17-7E668A609DDA",
"Instances": {
"Instance": [
{
"ImageId": "ubuntu_16_0402_64_20G_alibase_20171227.vhd",
"InstanceTypeFamily": "ecs.xn4",
"VlanId": "",
"InstanceId": "i-12345678912345678123",
"Status": "Stopped",
//omit some fields
},
Instance": [
{
"ImageId": "ubuntu_16_0402_64_20G_alibase_20171227.vhd",
"InstanceTypeFamily": "ecs.xn4",
"VlanId": "",
"InstanceId": "i-abcdefghijklmnopqrst",
"Status": "Running",
//omit some fields
},
]
}
}
可以使用--output
参数提取结果中感兴趣的字段,并进行表格化输出。例如:
aliyun ecs DescribeInstances --output cols=InstanceId,Status rows=Instances.Instance[]
执行以上命令将得到以下形式的结果:
InstanceId | Status
-----------------------|--------
i-12345678912345678123 | Stopped
i-abcdefghijklmnopqrst | Running
在使用--output
参数时,必须指定以下子参数:
cols
: 表格的列名,需要与json数据中的字段相对应。如ECS DescribeInstances 接口返回结果中的字段InstanceId
以及Status
。
可选子参数:
rows
: 通过 jmespath 查询语句来指定表格行在json结果中的数据来源。
使用效果
# 根据实例名查实例相关信息
$ ecsn(){echo;aliyun ecs DescribeInstances --RegionId cn-beijing --InstanceName "$@" -o cols=InstanceName,InstanceId,VpcAttributes.PrivateIpAddress.IpAddress,ImageId,InstanceType,Cpu,GPUSpec,Memory,KeyPairName,Status rows=Instances.Instance;};ecsn alibjh-chegva-000001-vm
InstanceName | InstanceId | VpcAttributes.PrivateIpAddress.IpAddress | ImageId | InstanceType | Cpu | GPUSpec | Memory | KeyPairName | Status
------------ | ---------- | ---------------------------------------- | ------- | ------------ | --- | ------- | ------ | ----------- | ------
alibjh-chegva-000001-vm | i-2zec3mp4hrseaabc9fbx | [10.13.11.110] | m-2zei7oryfhjchegvf4zu | ecs.gn6e-c12g1.3xlarge | 12 | NVIDIA V100 | 94208 | f99 | Running
参考: