雲端計算之路-出海記:命令列下的 AWS

部落格園團隊發表於2020-11-11

俗話說“三百六十行,行行出狀元”,自從有了電腦之後,三百六十行又多了一行 —— 命令列。GUI 的誕生開創了繁榮的 PC “視窗”(windows)時代,網際網路的誕生給 GUI 家族增添新成員 Web UI,移動互相網的誕生又幫 GUI 家族生下了二胎 Mobile UI,但用情專一的程式設計師念念不忘的依然是命令列,於是這一行出了個網紅狀元 —— Linux。

程式設計師的執念,成為任何一個技術平臺廠商都不敢忽略的牽連,於是 CLI 成為技術平臺或者底層技術產品的標配,各大雲廠商都推出了自己的 CLI,就連靠 GUI 打天下的微軟後來也不得不為 .NET 推出了 CLI —— dotnet。

一番廢話之後,今天我們來體驗一下雲端計算廠商的代表 Amazon Web Services (AWS) 的命令列 AWS CLI。

The AWS Command Line Interface (CLI) is a unified tool to manage your AWS services.

首先準備好發號施令的指揮台,我們這裡用的是一臺阿里雲 ubuntu 雲伺服器。

接著在指揮台上安裝指揮棒 AWS CLI

$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

安裝好之後看一下版本號

$ aws --version
aws-cli/2.0.62 Python/3.7.3 Linux/4.15.0-42-generic exe/x86_64.ubuntu.18

接下來配置 AWS CLI

配置之前先到AWS官網控制檯拿到訪問金鑰(Access Key),在右上角使用者名稱處點選“我的安全憑證” -> “訪問金鑰” -> “建立新的訪問金鑰”,得到“訪問金鑰ID(Access Key ID)”與“私有訪問金鑰(Secret Access Key)”。

執行 aws configure 命令進行配置:

aws configure
AWS Access Key ID [None]: *****
AWS Secret Access Key [None]: ******
Default region name [None]: us-west-1
Default output format [None]: 

(注:預設輸出格式是json)
配置完成後就可以用 aws 命令操作 AWS 雲資源。

為了更養眼地顯示 AWS CLI 在控制檯輸出的 json 結果,我們先安裝一下jq

apt install jq

先用一個很簡單的獲取當前使用者資訊的命令(aws iam get-user)體驗一下:

雲端計算之路-出海記:命令列下的 AWS

接下來我們重點體驗一下用 AWS CLI 啟動與關閉 EC2 例項。

啟動 EC2 例項的命令是 aws ec2 run-instances ,為了執行這個命令,我們需要先準備它需要的4個食材:image-id, key-name, security-group-ids, subnet-id。

第1個食材 image-id 就是 Amazon 系統映像 (AMI) ID,這裡我們選擇支援免費套餐(free tier)的 ubuntu 20.04 映象,但目前 aws ec2 describe-images 命令不支援根據免費套餐篩選映象,只能通過 AWS 官網控制檯查詢到,對應的 image-id 是 ami-00831fc7c1e3ddc60。

Ubuntu Server 20.04 LTS (HVM), SSD Volume Type - ami-00831fc7c1e3ddc60 (64 位 (x86)) / ami-017b2c64d333ddbf6 (64 位 ARM)

第2個食材是 key-name(金鑰對名稱),可以通過 aws ec2 describe-key-pairs 命令拿到,key-name 是 cnblogs。

雲端計算之路-出海記:命令列下的 AWS

第3個食材是 security-group-ids(安全組ID),可以通過 aws ec2 describe-security-groups 命令拿到,這裡選擇第一個只開放了22埠的安全組,GroupId 是 sg-08222bcdeaaaf100f。

雲端計算之路-出海記:命令列下的 AWS

第4個食材是 subnet-id(VPC子網ID),可以通過 aws ec2 describe-subnets 命令拿到,這裡選擇第一個子網,subnet-id 是 subnet-01d11e5b。

雲端計算之路-出海記:命令列下的 AWS

4個食材都準備好了,準備下鍋,炒個小份(instance-type 選擇 t2.micro,免費套餐中的例項型別)

一起下鍋爆炒啦

aws ec2 run-instances \
    --image-id ami-017b2c64d333ddbf60 \
    --count 1 \
    --instance-type t2.micro \
    --key-name cnblogs \
    --security-group-ids sg-08222bcdeaaaf100f \
    --subnet-id subnet-01d11e5b

瞬間就炒好了(秒啟的感覺),例項ID是 i-0499ec0c6d43d6d9d

雲端計算之路-出海記:命令列下的 AWS

aws ec2 describe-instance-status 命令確認伺服器是否正常啟動:

雲端計算之路-出海記:命令列下的 AWS

處於 running 狀態,啟動成功。

去 AWS 官網 EC2 控制檯進一步確認:

雲端計算之路-出海記:命令列下的 AWS

的確啟動成功!

最後用2行命令關閉(stop)並釋放(terminate)剛剛啟動的伺服器,收官這次 AWS 命令列體驗之旅。

aws ec2 stop-instances --instance-id i-0499ec0c6d43d6d9d
aws ec2 terminate-instances --i-0499ec0c6d43d6d9d

相關文章