簡體   English   中英

如何臨時切換 AWS CLI 的配置文件?

[英]How to temporarily switch profiles for AWS CLI?

更新的答案 (7/10/2021):對於 AWS CLI v1,請執行以下操作:

export AWS_DEFAULT_PROFILE=user2

對於 AWS CLI v2,以下內容將起作用:

export AWS_PROFILE=user2

完整的問題如下:


(1.) 在為 AWS CLI 成功配置第二個配置文件后,我嘗試使用以下命令在我的 bash 會話中將配置文件設置為 user2 失敗:

export AWS_PROFILE=user2

...根據這里的建議: https : //docs.aws.amazon.com/cli/latest/userguide/cli-multiple-profiles.html

(2.) 以下命令有效:

aws s3 ls --profile user2

所以我知道 AWS CLI 和 user2 配置文件都在我的計算機上運行。

(3.) 但是,當我隨后(即在輸入“export AWS_PROFILE=user2”之后)嘗試以下操作時:

aws s3 ls

... AWS 的響應假設我想以默認用戶(而不是 user2)的身份查詢它

(4.) 因此,我可以從命令行使用 user2 配置文件的唯一方法是繼續將“--profile user2”附加到每個命令,這很乏味。

(5.)

echo $AWS_PROFILE

產量:

>> user2

,正如預期的那樣。

知道這里發生了什么嗎? 我確定我在某個地方犯了一些愚蠢的錯誤。

對於 AWS CLI v1,最干凈的解決方案是:

export AWS_DEFAULT_PROFILE=user2

之后,命令如下:

aws s3 ls

...從適當的帳戶處理。

對於 AWS CLI v2,以下內容將起作用:

export AWS_PROFILE=user2

你可以看到它是如何工作的

$ export AWS_PROFILE=myprofile
$ aws s3 ls --debug 2>&1 | grep profile
2018-04-08 19:19:17,990 - MainThread - botocore.session - DEBUG - Loading variable profile from environment with value 'myprofile'.

我懷疑這對你的工作方式不同。

您還可以驗證

$ AWS_PROFILE=myprofile aws s3 ls --debug 2>&1 | grep profile

$ aws s3 ls --profile myprofile --debug 2>&1 | grep profile

都給出相同的結果。

接受的答案假定您使用的是 Linux 或 Mac 終端。 我為兩個操作系統添加了命令。

視窗

set AWS_PROFILE=profile_name

Linux 或 Mac

export AWS_PROFILE=profile_name

這些將設置您每次執行 aws 命令時將使用的 aws 配置文件。 但是,如果您只想為一個 aws 命令臨時切換配置文件。

aws [command] [sub-command] --profile [profile-name]

AWS cli 有 3 級讀取變量的方式

  • key_id / key_secret 的環境變量
  • 通過 cred/config 配置文件(通常在 ~/.aws/cre...)
  • 內聯提供手動值

請參閱: https : //docs.aws.amazon.com/cli/latest/topic/config-vars.html#credentials

一種方式將被另一種方式覆蓋。 基於 OP,雖然 DEFAULT_PROFILE 設置為 userX,但 AWS_ACCESS_KEY_ID 和/或 AWS_SECRET_ACCESS_KEY 環境變量設置為其他內容。

您可以為 shell 函數做一個別名,通過使用將憑據加載到當前環境

"export AWS_ACCESS_KEY_ID=XXXXXXX;"... and more

或者通過秘密管理器更安全地加載

"export AWS_ACCESS_KEY_ID=$(aws configure get aws_access_key_id --profile XXXX)"... and more

導出所有訪問密鑰/機密等,然后檢查是否通過內存加載了正確的憑據

aws configure list

最后.. 將變量重置為“默認”.. 作為一個好習慣,以確保您作為 AWS 角色執行您需要的操作; 尤其是在使用多個配置文件時。 希望這可以幫助。

user@machine:~/.aws$ aws --version
aws-cli/2.1.2 Python/3.7.3 Linux/5.4.0-53-generic exe/x86_64.linuxmint.20

如果我有很多命名配置文件,我會向我的.bashrc添加別名。

例如:

alias harry-tuttle='export AWS_PROFILE=harry-tuttle'

然后切換配置文件成為一個命令,輸入更少。

要查看您的所有個人資料:

aws configure list-profiles`

您可以添加profile標志

aws s3 ls --profile marketingadmin

對於窗戶使用

set AWS_DEFAULT_PROFILE=user2

創建或編輯此文件:

% vim ~/.aws/credentials

列出任意數量的密鑰對:

[default]
aws_access_key_id=AKIAIOSFODNN7EXAMPLE
aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

[user1]
aws_access_key_id=AKIAI44QH8DHBEXAMPLE
aws_secret_access_key=je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY

包括--profile user1來選擇一個配置文件並做你喜歡做的事情:

aws s3api list-buckets --profile user1
# any aws cli command now using user1 pair of keys

更多詳情: https : //docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM