第 3 單元:設定 AWS CLI
教學課程
設定 AWS CLI
在本單元中,您將設定 AWS Command Line Interface (CLI)
您會完成的目標
- 為您的作業系統安裝 AWS Command Line Interface (AWS CLI)
- 設定憑證以存取您的 AWS 帳戶
- 設定多個描述檔以存取不同的 AWS 帳戶
實作
AWS CLI 是管理 AWS 服務的統一工具。只要一個工具來下載和設定,就可以從命令列控制多個 AWS 服務,並透過指令碼將服務自動化。
若要使用 CLI 與 AWS 互動,我們需要設定憑證以供其在進行 API 呼叫時使用。我們還將展示如何設定多個描述檔以存取多個 AWS 帳戶,使用附加憑證或透過 IAM 角色切換。
安裝 AWS CLI
安裝 AWS CLI 有多種方法,具體取決於您的作業系統或使用容器的偏好。若要安裝 AWS CLI v2,請參閱安裝或更新最新版本的 AWS CLI 。
安裝 AWS CLI 後,您可以在命令列中執行 aws --version 並查看以下輸出 (版本可能不同):
aws --version
例如,在 Windows 10 上安裝 AW CLI 時的回應如下:
現在已安裝 AWS CLI,您可隨時設定您的憑證。
設定 AWS CLI 憑證
若要設定憑證,請使用命令 <aws configure sso>,然後包含在本教學課程的前一個單元中建立的使用者憑證。
在 CLI 中,執行 <aws configure sso> 命令,將要求您提供以下資訊:
- SSO 工作階段名稱:提供此工作階段關聯項目的 AWS CloudTrail 日誌中所包含的工作階段名稱。如果您未輸入名稱,則會自動產生名稱。在本教學課程中,請使用 <Test1>。
- SSO 開始 URL:設定 IAM Identity Center 時為您提供的 AWS 存取入口網站 URL。
- SSO 區域:在本教學課程中,範例使用 <us-east-1>。在您自行執行命令時,指定啟用 IAM Identity Center 的區域。您可以在 IAM Identity Center 儀表板的「設定摘要」上的 AWS 管理主控台中找到此資訊。
- SSO 註冊範圍:範圍會授權對不同端點的存取。在本教學課程中,我們將使用 <sso:account:access> 的最小範圍,從 IAM Identity Center 服務中取得重新整理權杖。
輸入 <aws configure sso> 命令之後,系統會提示您在終端輸入這些項目中的每個項目。
aws configure sso
注意:如果您不知道帳戶的開始 URL 或區域,請以根使用者身分登入主控台,然後前往 IAM Identity Center 儀表板。區域和 AWS Access 入口網站 URL 會在設定摘要中顯示。
下列範例程式碼會顯示此階段的 CLI 內容:
$ aws configure sso
SSO 工作階段名稱 (建議):Test1
SSO 開始 URL [無]:https://my-sso-portal.awsapps.com/start
SSO 區域 [無]:us-east-1
SSO 註冊範圍 [無]:sso:account:access
CLI 會嘗試在預設瀏覽器中自動開啟 SSO 授權頁面,並開始您的 IAM Identity Center 帳戶的登入程序。
提供密碼之後 (及 MFA 憑證,如果啟用),系統會要求您允許存取您的資料。這樣可授予 AWS CLI 許可,以擷取並顯示您已授權使用 IAM Identity Center 的 AWS 帳戶和角色。
由於 AWS CLI 在 SDK for Python 之上建置,因此許可訊息可能包含 botocore 名稱的變化,例如 botocore-client-Test1。選取允許。驗證之後,會告知您可以關閉視窗。
CLI 將更新並向您顯示可用的 AWS 帳戶和角色。因為您目前僅設定一個具有 AdministratorAccess role 的 AWS 帳戶,即您登入的帳戶和角色。您的 CLI 視窗現在應顯示以下命令列:
您唯一可用的 AWS 帳戶是:111122223333
使用帳戶 ID 111122223333
您唯一可用的角色是:AdministratorAccess
使用角色名稱 "AdministratorAccess"
接著,系統會要求您指定預設輸出格式、要傳送命令的預設 AWS 區域,以及為設定檔提供名稱,以便在 CLI 中執行命令時參考此設定檔。
建議的設定檔名稱為帳戶 ID 編號,後面加上底線,然後是角色名稱,但在本教學課程中,我們將使用較短的設定檔名稱 admin-1。您的 CLI 視窗現在應顯示以下命令列:
若要使用此設定檔,請使用 --profile 指定如下所示設定檔名稱:
aws s3 ls --profile admin-1
現在,執行 <aws ec2 describe-vpcs> 命令來檢查設定是否正確。每個新的 AWS 帳戶都設定了預設 VPC,因此您可以執行此命令,而無需在 AWS 帳戶上設定任何其他服務。
aws ec2 describe-vpcs
您的 CLI 視窗現在應顯示以下資訊。
這將確認您的 AWS CLI 現已正確設定。
透過執行此程序,您已使用 sso-session 區段和命名設定檔來更新 AWS 組態檔案。
組態檔案位置:若是執行 Linux 或 macOS 的電腦,則位於 ~/.aws/config,若是執行 Windows 的電腦,則位於 C:\Users\ USERNAME \.aws\config。如果您開啟設定檔,您會看到以下兩個部分:
aws ec2 describe-vpcs --profile admin-1
{
"Vpcs": [
{
"CidrBlock": "10.0.0.0/16",
"DhcpOptionsId": "dopt-d12345",
"State": "available",
"VpcId": "vpc-0123456789abcdef",
"OwnerId": "111122223333",
"InstanceTenancy": "default",
............"CidrBlockAssociationSet": [
................{
....................."AssociationId": "vpc-cidr-assoc-38b060a751a39af8e",
....................."CidrBlock": "10.24.34.0/23",
....................."CidrBlockState": {
........................."State": "associated"
......................}
................}
............],
............"IsDefault": true
.........}
]
}
[profile admin-1]
sso_session = Test1
sso_account_id = 111122223333
sso_role_name = AdministratorAccess
region = us-east-1
output = json
[sso-session Test1]
sso_region = us-east-1
sso_start_url = https://my-sso-portal.awsapps.com/start
sso_registration_scopes = sso:account:access
您現在可以藉助此 sso-session 和設定檔,使用 <aws sso login> 命令來請求憑證。
aws sso login
您的 CLI 視窗現在應顯示以下資訊:
aws sso login -–profile admin-1
嘗試在預設瀏覽器中自動開啟 SSO 授權頁面。
如果瀏覽器未開啟或您希望使用不同裝置來授權此請求,請開啟下列 URL:
https://device.sso.us-east1.amazonaws.com/
然後輸入代碼:
XXXX-XXXX
導覽至瀏覽器視窗,並允許存取您的資料。當您返回 CLI 視窗時,會顯示下列訊息行:
已成功登入開始 URL:https://my-sso-portal.awsapps.com/start
設定多個描述檔 (選用)
您將角色新增至 AWS 帳戶並新增其他 AWS 帳戶至您的組織時,請重複上述程序,為這些角色和帳戶建立設定檔。
在您增加複雜性時,建議使用關聯 AWS 帳戶 ID 和角色名稱的設定檔命名策略,以便可以區分設定檔。