亚马逊aws-shell-AWS CLI的交互式shell
Aws cli 是AWS(亚马逊云服务)的统一管理工具,其基于python开发,是在boto基础上的增强和封装。其提供了我们一种类似于操作linux命令一样的方式操作aws的全系统产品资源。而本文介绍的aws-shell,则是Aws cli的shell交互版本,给用户提供了更多的便利。
安装
安装aws-shell需要python环境和pip,你可以使用如下方式,借pip进行安装:
$ pip install aws-shell
权限不够可以:
$ sudo pip install aws-shell
Mac OS X下在安装时,可能会存在python依赖包的问题,事见:
https://github.com/pypa/pip/issues/3165
暂时你可以这样做:
sudo pip install aws-shell --upgrade --ignore-installed six
安装好aws-shell,你可以运行:
$ aws-shell
退出shell,请按Ctrl-D。
升级aws-shell
如果你要将aws-shell升级到最新版本,你可以运行:
$ pip install --upgrade aws-shell
你还可以在需要升级AWS-CLI(包含新服务和API)时,使用这条upgrade命令,然后你就可以在aws-shell里施用这些新的服务和升级后的API。
支持的python版本
与AWS CLI相同,aws-shell支持以下python版本:
2.6.5+
2.7.x
3.3.x
3.4.x
配置
Aws-shell使用了与AWS CLI相同的配置,如果你以前不曾用过AWS CLI,最简单的法子就是运行configure命令:
$ aws-shell
aws> configure
AWS Access Key ID [None]: your-access-key-id
AWS Secret Access Key [None]: your-secret-access-key
Default region name [None]: region-to-use (e.g us-west-2, us-west-1, etc).
Default output format [None]:
aws>
详细信息请看这里:
http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html
基本用法
aws-shell与AWS CLI命令相同,但是你不需要加上aws前缀。下面就有一些命令案例:
$ aws-shell
aws> ec2 describe-regions
{
"Regions": [
{
"Endpoint": "ec2.eu-west-1.amazonaws.com",
"RegionName": "eu-west-1"
},
...
aws> s3 ls
2015-12-07 15:03:34 bucket1
2015-12-07 15:03:34 bucket2
aws> dynamodb list-tables --output text
TABLENAMES First
TABLENAMES Second
TABLENAMES Third
特性
自动化补全命令和选项:
aws-shell会根据你的输入,自动化补全命令和选项:
简写补全:
aws-shell还会为AWS CLI的选项,进行简写示例展示:
服务端自动补全:
aws-shell也有使用boto3,这是python的AWS SDK。boto3被用来补全服务端资源,如Amazon EC2 instance Ids,Amazon Dynamodb表名,AWS IAM用户名,Amazon S3 bucket名字等等。该功能正在积极开发,支持资源的列表会继续添加:
Fuzzy搜索
每个自动化补全的值,支持fuzzy搜索。所以你可以不用敲那么多字符,就能自定义命令、选项和值,比如:
每个联合词的第一个字母:ec2 describe-reserved-instances-offerings -> ec2 drio
每个词输入一小段:ec2 describe-instances -> ec2 descinst
输入命令的一小段:dynamodb table -> 会给你提供所有可能
内置文档
aws-shell会在你输入命令时,自动化弹出介绍。它会给你展示CLI选项的内置文档。同时,还有个单独的文档界面会显示当前你输入的命令或者选项。
Fish-Style自动建议
aws-shell支持Fish-style自动化建议,使用右方向键可以补全建议:
命令历史
aws-shell记录了你运行的命令,并把它们写入了~/.aws/shell/history。你可以使用上下方向键,去搜索回滚你的历史记录:
工具栏(toolbar)选项
aws-shell有个底部工具栏,可以给你提供部分选项:
F2:切换fuzzy和字符串匹配
F3:切换VI和Emacs的键绑定
F4:切换单复列的自动补全
F5:显示隐藏帮助文档
F10或者Ctrl-D:退出aws-shell
在你切换工具栏选项时,你的喜好被存在~/.aws/shell/awsshellrc文件里,所以下次你运行aws-shell时,可以很方便地进行恢复:
点命令
aws-shell提供了额外的命令,可以在命令加前“.”,效果相同。
用.edit创建shell脚本
当然,有时候你需要在aws-shell使用一系列命令,可以直接写一个脚本。此外,历史命令文件里,aws-shell可以跟踪所有你aws-shell里使用过的命令。
你可以使用.edit命令在编辑器里浏览这些命令,使用的是默认编辑器环境:
aws> ec2 describe-instances
aws> dynamodb list-tables
aws> .edit
执行shell命令
aws-shell在某些方面集成了一些其他命令。首先,你可以将AWS CLI命令管道传递给其他进程,同时把输出写进文件里:
aws> dynamodb list-tables --output text | head -n 1
TABLENAMES First
aws> dynamodb list-tables --output text > /tmp/foo.txt
然后,如果你想要运行shell命令,而不是AWS CLI命令,你可以在命令里加上!前缀:
aws> !ls /tmp/
foo.txt bar.txt
aws-shell尚在开发期,可能还存在不兼容的问题。期待大家的反馈,我们将继续对aws-shell的代码进行迭代。
相关阅读
软件官网:github