亞馬遜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的交互式shell

簡寫補全:

aws-shell還會為AWS CLI的選項,進行簡寫示例展示:

亞馬遜aws-shell:AWS CLI的交互式shell

服務端自動補全:

aws-shell也有使用boto3,這是python的AWS SDK。boto3被用來補全服務端資源,如Amazon EC2 instance Ids,Amazon Dynamodb表名,AWS IAM用戶名,Amazon S3 bucket名字等等。該功能正在積極開發,支持資源的列表會繼續添加:

亞馬遜aws-shell:AWS CLI的交互式shell

Fuzzy搜索

每個自動化補全的值,支持fuzzy搜索。所以你可以不用敲那麼多字符,就能自定義命令、選項和值,比如:

每個聯合詞的第一個字母:ec2 describe-reserved-instances-offerings -> ec2 drio
每個詞輸入一小段:ec2 describe-instances -> ec2 descinst
輸入命令的一小段:dynamodb table -> 會給你提供所有可能
亞馬遜aws-shell:AWS CLI的交互式shell

內置文檔

aws-shell會在你輸入命令時,自動化彈出介紹。它會給你展示CLI選項的內置文檔。同時,還有個單獨的文檔界面會顯示當前你輸入的命令或者選項。

Fish-Style自動建議

aws-shell支持Fish-style自動化建議,使用右方向鍵可以補全建議:

亞馬遜aws-shell:AWS CLI的交互式shell

命令歷史

aws-shell記錄了你運行的命令,並把它們寫入了~/.aws/shell/history。你可以使用上下方向鍵,去搜索回滾你的歷史記錄:

亞馬遜aws-shell:AWS CLI的交互式shell

工具欄(toolbar)選項

aws-shell有個底部工具欄,可以給你提供部分選項:

F2:切換fuzzy和字符串匹配
F3:切換VI和Emacs的鍵綁定
F4:切換單複列的自動補全
F5:顯示隱藏幫助文檔
F10或者Ctrl-D:退出aws-shell

在你切換工具欄選項時,你的喜好被存在~/.aws/shell/awsshellrc文件裡,所以下次你運行aws-shell時,可以很方便地進行恢復:

亞馬遜aws-shell:AWS CLI的交互式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

轉自FreeBuf黑客與極客(FreeBuf.COM)


分享到:


相關文章: