本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用主控台登入資料登入 AWS 進行本機開發
您可以使用現有的 AWS 管理主控台登入憑證,以程式設計方式存取 AWS 服務。在瀏覽器型身分驗證流程之後, AWS 會產生臨時登入資料,可用於 CLI、 AWS Tools for PowerShell AWS 和 AWS SDKs等本機開發工具。此功能可簡化設定和管理 AWS CLI 登入資料的程序,尤其是如果您偏好互動式身分驗證,而不是管理長期存取金鑰。
透過此程序,您可以使用在初始帳戶設定期間建立的根登入資料、IAM 使用者或身分提供者的聯合身分進行身分驗證,而 AWS CLI 會自動為您管理臨時登入資料。這種方法無需在本機存放長期登入資料,可增強安全性。
當您執行 aws login命令時,您可以從作用中主控台工作階段中選取 ,或透過瀏覽器型身分驗證流程登入,這會自動產生臨時登入資料。CLI 最多會自動重新整理這些登入資料 12 小時。
設定完成後,您的工作階段就可以在 AWS CLI 和其他 AWS SDKs和工具中使用。
先決條件
-
安裝 AWS CLI。如需詳細資訊,請參閱安裝或更新至 AWS CLI 的最新版本。使用
aws login命令需要 2.32.0 的最低版本。 -
以根使用者、IAM 使用者或透過 IAM 聯合身分登入 AWS 管理主控台的存取權。如果您使用 IAM Identity Center,請使用 AWS CLI 設定 IAM Identity Center 身分驗證改為前往 。
-
確保 IAM 身分具有適當的許可。將 SignInLocalDevelopmentAccess 受管政策連接至您的 IAM 使用者、角色或群組。如果您以根使用者身分登入,則不需要額外的許可。
使用 AWSaws login命令登入 CLI。
執行 aws login命令,以使用您現有的 AWS 管理主控台登入資料進行身分驗證。如果您先前尚未設定設定檔,系統會提示您提供其他資訊。若要登入或設定設定檔,請遵循下列步驟。
-
在您偏好的終端機中執行
aws login命令。$ aws login若要登入具名設定檔或建立新的設定檔,請使用
--profile選項。$ aws login --profile my-dev-profile-
如果這是新的設定檔或未指定 AWS 區域,CLI AWS 會提示您提供區域。
No AWS region has been configured. The AWS region is the geographic location of your AWS resources. If you've used AWS before and already have resources in your account, tell us which region they were created in. If you haven't created resources in your account before, you can pick the region closest to you: https://docs.aws.amazon.com/global-infrastructure/latest/regions/aws-regions.html. You are able to change the region in the CLI at any time with the command `aws configure set region NEW_REGION`. AWS Region [us-east-1]: -
如果使用 CLI AWS 的裝置沒有瀏覽器,您可以使用
--remote選項提供 URL,供您在已啟用瀏覽器的裝置上開啟。$ aws login --remote
-
-
CLI AWS 會嘗試開啟您 AWS 帳戶登入程序的預設瀏覽器。
Attempting to open the login page for `us-east-1` in your default browser. If the browser does not open, use the following URL to complete your login: https://signin.us-east-1.amazonaws.com/authorize?<abbreviated> If you cannot connect to this URL, make sure that you have specified a valid region.-
如果您使用
--remote選項,系統會根據您使用的授權類型,顯示手動啟動登入程序的指示。顯示的 URL 是從 https://us-east-1.signin.amazonaws.com/authorize 開始的唯一 URL。完成瀏覽器登入後,您需要將產生的授權碼複製並貼回 CLI。Browser will not be automatically opened. Please visit the following URL: https://region.signin.amazonaws.com/authorize?<abbreviated> Please enter the authorization code displayed in the browser:
-
-
在瀏覽器中,從顯示的清單中選取要使用的登入資料,然後返回您的終端機。
-
如果您要設定的設定檔具有先前設定的登入工作階段,其不符合您的新工作階段,CLI AWS 會提示您確認您正在切換對應至現有設定檔的工作階段。
Profile signin is already configured to use session arn:aws:iam::0123456789012:user/ReadOnly. Do you want to overwrite it to use arn:aws:iam::0123456789012:user/Admininstead? (y/n):.
-
-
最後一則訊息說明完成的設定檔組態。您現在可以使用此設定檔來請求憑證。使用
aws login命令來請求和擷取執行命令所需的憑證。身分驗證字符會快取至
.aws/login/cache目錄下的磁碟,並以已解析設定檔為基礎的檔案名稱。
產生的組態檔案
這些步驟會在 config 檔案中建立如下所示的default設定檔:
[default] login_session = arn:aws:iam::0123456789012:user/usernameregion = us-east-1
使用您的設定檔執行命令
登入後,您可以使用 登入資料來呼叫具有相關聯設定檔的 AWS CLI 命令。下列範例使用 default設定檔呼叫 get-caller-identity命令:
$ aws sts get-caller-identity
若要登入特定工作階段,請使用 --profile選項。
$ aws sts get-caller-identity --profilemy-dev-profile
CLI AWS 和 SDKs 會視需要每 15 分鐘自動重新整理快取的登入資料。整體工作階段的有效期最長為 IAM 主體的設定工作階段持續時間 (最長 12 小時),之後您必須aws login再次執行。
使用 aws 登出命令登出您的工作階段
使用工作階段完成後,您可以讓登入資料過期,或執行 aws logout命令來刪除快取的登入資料。如果命令列或AWS_PROFILE環境變數中未指定設定檔,命令會將您登出預設設定檔。下列範例會將您登出預設設定檔。
$ aws logout
若要登出特定工作階段,請使用 --profile選項。
$ aws logout --profilemy-dev-profile
若要登出使用登入憑證的所有設定檔,請使用 --all選項。
$ aws logout --all
快取的登入資料
根據預設,臨時快取憑證以及重新整理憑證所需的中繼資料會存放在 ~/.aws/login/cache Linux 和 macOS 或 Windows %USERPROFILE%\.aws\login\cache上的 。
若要將短期 Credentails 快取存放在替代位置,請設定 AWS_LOGIN_CACHE_DIRECTORY環境變數。
共用登入登入憑證做為程序登入資料
舊版的 AWS SDKs或其他開發工具可能尚不支援主控台登入資料。做為解決方法,您可以設定 AWS CLI 做為程序登入資料提供者。CLI 會視需要繼續重新整理登入資料,同時與設定為使用 Credential_process 描述檔的工具共用登入資料。
在此範例中,使用 AWS CLI 先登入設定檔登入:
$ aws login --profile signin
然後,使用 Credential_process 選項手動設定設定檔,該選項會指向登入設定檔。現在,您可以設定 SDKs或工具來使用程序描述檔,這會叫用 CLI 從登入描述檔共用登入資料。
[profile signin] login_session = arn:aws:iam::0123456789012:user/usernameregion = us-east-1 [profile process] credential_process = aws configure export-credentials --profile signin --format process region = us-east-1
疑難排解
此頁面包含針對使用 CLI AWS 主控台登入資料進行 AWS 本機開發的登入問題進行疑難排解的建議。
注意
若要疑難排解使用 CLI AWS 可能遇到的其他問題,請參閱 故障診斷 的錯誤 AWS CLI。
使用「aws 登入」後發生 ExpiredToken 或 AccessDeniedException 錯誤
在aws login為指定設定檔執行 之後執行 AWS CLI 命令時,您可能會遇到過期或無效的登入資料錯誤。
$ aws s3 ls An error occurred (ExpiredToken) when calling the ListBuckets operation: The provided token has expired.
可能原因:您在該設定檔中混合了現有的登入資料和新的登入資料
執行 aws configure list或 aws configure list --profile <profile name>以列印 CLI 從 解析預設或指定設定檔憑證的位置。
如果 TYPE 資料欄不是登入,這表示目標設定檔中仍設定了不同類型的登入資料。
在此範例中,系統會從主目錄中的共用登入資料檔案解析登入資料,其優先順序高於登入資料。
$ aws configure list NAME : VALUE : TYPE : LOCATION profile : <not set> : None : None access_key : ****************MPLE : shared-credentials-file : secret_key : ****************EKEY : shared-credentials-file : region : us-east-1 : config-file : ~/.aws/config
若要解決此問題,請從您的組態和目標設定檔的登入資料檔案手動移除任何現有的登入資料。執行後,您應該會在aws configure list再次執行時看到登入憑證。
$ aws configure list NAME : VALUE : TYPE : LOCATION profile : <not set> : None : None access_key : ****************MPLE : login : secret_key : ****************EKEY : login : region : us-east-1 : config-file : ~/.aws/config
或者,使用 --debug選項會顯示 CLI 從何處解析登入資料。
執行「aws login」時封鎖網路存取的防火牆
執行時aws login,您可能會遇到來自防火牆軟體的快顯或訊息,阻止 CLI AWS 存取您的網路
可能原因:您的防火牆或安全軟體阻止 AWS CLI 開啟用於處理 OAuth 回呼的連接埠。
若要避免此問題,請改用 --remote選項。這將提示您複製並貼上授權碼,而不是使用 OAuth 回呼。
$ aws login --remote
相關資源
其他資源如下所示。