阿里云命令行工具 (Aliyun Command Line Interface)

阿里云命令行工具是开源项目,Github地址

该版本的CLI为Go语言重构版本,目前处于BETA发布中,如果您还希望使用原有的Python版本,请切换到python分支

简介

  • 阿里云命令行工具是用Go语言编写的, 是基于阿里云OpenAPI打造的,用于管理阿里云资源的统一工具。通过下载和配置该工具,您可以在一个命令行方式下控制多个阿里云产品。
  • 欢迎通过提交Github Issue与我们沟通。
  • 同时更建议您加入阿里云官方SDK&CLI客户服务群,钉钉群号:11771185。

安装

下载及使用

CLI工具下载即可使用(0.50 Beta),支持Mac, Linux, Windows平台(x64版本)。

解压即可用,您可以将aliyun工具挪到/usr/local/bin目录下,或添加到$PATH中,以获得更便捷的访问。

下载源码后自行编译

当遇到不支持的平台,或其他需求时,请先安装并配置好golang环境,并按照如下步骤下载源码并编译。

$ mkdir -p $GOPATH/src/github.com/aliyun
$ cd $GOPATH/src/github.com/aliyun
$ git clone http://github.com/aliyun/aliyun-cli.git
$ git clone http://github.com/aliyun/aliyun-openapi-meta.git
$ cd aliyun-cli
$ make install

配置

  • 在使用aliyun命令行工具前,您需要运行aliuyun configure命令进行配置。
  • 要使用阿里云命令行工具,您需要一个云账号以及一对AccessKeyId和AccessKeySecret。 请在阿里云控制台中的AccessKey管理控制台上创建和查看您的AK,或者联系您的系统管理员。
  • 命令行工具使用OpenAPI方式访问云产品,您需要事先在阿里云开通这个产品并详细了解产品的OpenAPI。

基本配置

$ aliyun configure
Configuring profile 'default' ...
Aliyun Access Key ID [None]: <Your aliyun access key id>
Aliyun Access Key Secret [None]: <Your aliyun access key secret>
Default Region Id [None]: cn-hangzhou
Default output format [json]: json
Default Languate [zh]: zh

多用户

  • aliyun支持多用户配置, 使用$ aliyun configure --profile user1可以配置指定的用户。
  • $ aliyun configure list命令可以列出当前所有配置, 如下表, 其中在Profile列后面打*的为当前使用的默认配置。
  • 在后续的调用中,您可以使用--profile user1参数来指定调用时的用户。
Profile   | Credential         | Valid   | Region           | Language
--------- | ------------------ | ------- | ---------------- | --------
default * | AK:***ddc          | Valid   | cn-beijing       | zh
aaa       | AK:******          | Invalid |                  |
test      | AK:***412          | Valid   |                  | en
ecs       | EcsRamRole:EcsTest | Valid   | cn-beijing       | en

其他认证方式

  • aliyun命令行工具,可通过在configure命令后增加--mode ...的方式来使用不同的认证方式,目前支持的认证方式如下:
验证方式 说明
AK 使用AccessKeyId/Secret访问
StsToken 使用StsToken访问
RamRoleArn 使用Ram子账号的AssumeRole方式访问
EcsRamRole 在ECS实例上通过EcsRamRole实现免密验证
RsaKeyPair 使用Rsa公私钥方式(仅日本站支持)

使用自动补全功能

  • TODO

如何使用

基本使用方式

$ aliyun <product> <operation> --parameter1 value1 --parameter2 value2 ...

例如:

$ aliyun rds DescribeDBInstances --PageSize 50
$ aliyun ecs DescribeRegions
$ aliyun rds DescribeDBInstanceAttribute --DBInstanceId xxxxxx

获取帮助信息

aliyun集成了一部分产品的API和参数列表的信息, 您可以使用如下命令来获取帮助:

  • $ aliyun help: 打印产品列表
  • $ aliyun help ecs: 获取产品的API信息
  • $ aliyuh help ecs CreateInstance: 获取API的调用信息

Restful风格的调用

部分阿里云产品的OpenAPI为Restful风格,调用Restful风格的接口与调用RPC风格的接口方式不用,需要使用:

  • GET的例子:
$ aliyun cs GET /clusters
  • POST的例子:
$ aliyun cs POST /clusters --body "$(cat input.json)"
  • DELETE的例子
$ aliyun cs DELETE /clusters/ce2cdc26227e09c864d0ca0b2d5671a07

注:如何区分Rpc风格和Restful风格?

  • 简单来说,API参数中,包含Action字段的是RPC风格,需要PathPattern的是Restful风格。
  • 一般情况下,每个产品内,所有API的调用风格是统一的。
  • 每个API仅支持特定的一种风格调用,传入错误的标识,可能会调用到其他API,或收到“ApiNotFound”的错误信息。

使用--force参数

aliyun命令行工具集成了一部分云产品的元数据,在调用时会进行参数的合法性检查,使用一个元数据中未包含的API或参数会导致unknown apiunknown parameter的报错。可以使用--force参数来跳过API和参数检查,强制调用元数据列表外的API和参数,如:

$ aliyun newproduct --version 2018-01-01 --endpoint newproduct.aliyuncs.com --param1 ... --force

使用前请阅读阿里云各产品的OpenAPI文档,来了解OpenAPI的使用方式及参数列表,您可以在阿里云API平台获取产品API文档。在使用--force参数时,有两个参数是额外需要指定的:

  • --version: 指定OpenAPI的版本,你可以在API文档中找到这个版本号,如: ECS的版本号是2014-05-26
  • --endpoint: 指定产品的接入地址,一般产品接入地址是product.aliyuncs.com,或product.en-central-1.aliyuncs.com,请参照具体文档。