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
轉自FreeBuf黑客與極客(FreeBuf.COM)
閱讀更多 白帽星球 的文章