用AWS CLI統一管理AWS各種服務
AWS CLI是什麼?
AWS 命令列界面 Command Line Interface (AWS CLI) 是開放原始碼工具,可透過指令碼操作 AWS 的各種服務,在命令列 shell 中使用命令來執行 AWS Management Console 所提供的各種功能命令。能夠直接存取AWS的API。也能開發 shell 指令碼來管理雲端資源。部分 AWS 服務提供CLI 自訂功能,能簡化具有複雜 API 的服務使用。
我們在Linux和MacOS上能從Linux shell(bash, zsh, tcsh)執行命令;Windows上能用命令提示或PowerShell;也能透過遠端程式(PuTTY或SSH)在EC2等服務中進行設定或執行命令。
更多關於AWS CLI,可以參考官方文件:AWS 命令列界面。
下載並在MaxOS上安裝AWS CLI #
第一步,到官方文件:Installing or updating the latest version of the AWS CLI下載最新版的GUI安裝程式。最新MacOS版本支援64-bit,因為AWS不支援第三方的repo,所以未來若需要進行版本更新,需要回到這個頁面,按步就班重新安裝最新版本的AWS CLI。
因為預設的使用者權限問題,完成上述的安裝之後,我們需要打開Terminal手動設定文件符號連結(symlink file)來指向到 aws
。將預設的符號連結 /usr/local/bin/
指向到 /usr/local/bin/aws
。
sudo ln -s /folder/installed/aws-cli/aws /usr/local/bin/aws
sudo ln -s /folder/installed/aws-cli/aws_completer /usr/local/bin/aws_completer
打開Terminal輸入bash
- 若我們在GUI安裝時若選擇安裝給所有使用者,可以在
/usr/local/aws-cli
查看AWS CLI安裝完成的檔案。 - 設定文件符號連結
sudo ln -s /folder/installed/aws-cli/aws /usr/local/bin/aws
,這個時候我們需要輸入密碼來做確認。(如果已經安裝過AWS CLI,會出現File exists) - 完成上述步驟後,需要測試是否能跑AWS的指令來確認AWS CLI安裝完成
- 確認文件符號連結
which aws
,為/usr/local/bin/aws
沒有問題。 - 確認AWS CLI版本
aws --version
- 確認文件符號連結
雖然說我們完成AWS CLI的安裝,但為何依舊無法對雲端服務進行設定呢?
因為我們需要擁有程序接續權限的IAM帳號和Access Key鑰匙來進行認證、登入AWS雲端服務。
建立擁有權限的IAM帳戶和Access Key #
使用AWS時有兩種帳戶,一開始創建帳號、需要使用email登入的root user和透過IAM console新增的IAM使用者。除了初期創建帳號時是使用root user之外,使用AWS和在進行資源設定的時候都會使用IAM使用者。
為了使用AWS CLI,我們需要建立一個擁有Programmatic Access的IAM使用者,獲得該使用者的存取金鑰,同時賦予相對應的權限來對AWS資源進行設定和設計。最好的作法是使用臨時安全憑證 (IAM 角色role)而非存取金鑰,並停用任何 AWS 帳戶 根使用者存取金鑰,但這個操作裡暫時忽略。詳細請參考AWS文件:管理 AWS 存取金鑰的最佳實務。
存取金鑰包含兩個部分:存取金鑰 ID(Access key ID) 和私密存取金鑰 (Secret access key)。等同登入AWS console的使用者名稱和密碼、是我們從CLI登入時使用的使用者名稱ID和密碼。另外,私密存取金鑰(Secret access key)只會在建立帳號的時候顯示一次,如果遺失了私密金鑰會需要刪除原有的存取金鑰並重新設定一個。千萬不要跟任何人分享存取金鑰,記得將他們保存在安全的地方。
設定帳號和權限到AWS CLI上 #
當我們完成AWS CLI的安裝,也獲得帳戶的存取金鑰後,終於可以著手設定權限、開始使用AWS CLI。如果需要參考最新的官方設定文件:Configuring the AWS CLI。
回到Terminal,使用 aws configure
指令來設定存取金鑰和私密存取金鑰,我們會需要設定下列幾個資訊:
AWS Access Key ID [None]:
AXXXXXXXXXXXXE
剛剛獲得的存取金鑰 ID(Access key ID) 。
AWS Secret Access Key [None]:
wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
剛剛獲得的私密存取金鑰 (Secret access key)。
Default region name [None]:
ap-northeast-1
這是Asia Pacific (Tokyo),可以自己選擇你偏奧的地區,一般來說會選擇地理位置最接近的區域。
Default output format [None]:
json
預設的格式為json,但也可以選擇如yaml, yaml-stream, text或較容易閱讀的table表格格式。
完成上述設定後,系統會在 .aws
資料夾內建立 config 和 credential 兩個檔案,每次我們需要登入的時候,aws會從這兩個檔案來存取我們的金鑰和預設地區和格式。
確認是否成功運作 #
因為之前有設置S3 bucket,所以使用 aws s3 ls
來查看我們現有的bucket,如果你沒有任何S3 bucket則不會出現任何結果。如此我們便完成了AWS CLI的設定,現在可以免去在AWS console找尋各種服務和功能的時間,用指令來建立、設定、刪除S3 Bucket和其他各種服務等。最開始可以用S3的指令來嘗試各種操作,參考:Using high-level (s3) commands with the AWS CLI。
關於AWS CLI指令的架構可以參考官方文件:Command structure in the AWS CLI。