[英]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
export AWS_PROFILE=profile_name
這些將設置您每次執行 aws 命令時將使用的 aws 配置文件。 但是,如果您只想為一個 aws 命令臨時切換配置文件。
aws [command] [sub-command] --profile [profile-name]
AWS cli 有 3 級讀取變量的方式
請參閱: 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`
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.