![](/img/trans.png)
[英]An error occurred (UnrecognizedClientException) when calling the GetSecretValue operation: The security token included in the request is invalid
[英]An error occurred (InvalidClientTokenId) when calling the AssumeRole operation: The security token included in the request is invalid
我不斷收到此錯誤:
An error occurred (InvalidClientTokenId) when calling the AssumeRole operation: The security token included in the request is invalid.
當我運行這個 Assume Role 命令時:
aws sts assume-role --role-arn <arn role i want to assume> --role-session-name dev --serial-number <my arn> --token-code <keyed in token code>
這以前是有效的,所以我不確定會發生什么變化。 並且不知道如何調試它。
有什么建議么?
我有同樣的問題。 在運行 sts 命令之前,您可能需要取消設置 AWS 環境變量:
unset AWS_SECRET_ACCESS_KEY
unset AWS_SECRET_KEY
unset AWS_SESSION_TOKEN
然后你的命令:
aws sts assume-role --role-arn <arn role i want to assume> --role-session-name dev --serial-number <my arn> --token-code <keyed in token code>
在這里,您將獲得新憑據。 然后再次運行導出:
export AWS_ACCESS_KEY_ID=<access key>
export AWS_SECRET_ACCESS_KEY=<secret access key>
export AWS_SESSION_TOKEN=<session token>
我希望它有幫助!
舊帖子,但可能仍然有用。
您可以嘗試在 env 中設置以下內容並重試:
export AWS_ACCESS_KEY_ID='your access key id here';
export AWS_SECRET_KEY='your secret key here'
在這里,您需要重置您的 aws 密鑰和 ID,例如 -
export AWS_ACCESS_KEY_ID='ACCESS_KEYID';
export AWS_SECRET_KEY='SECRET_KEY'
在我的情況下,我在終端中使用命令aws configure
進行cli
,它要求提供訪問密鑰 ID、密鑰、區域和輸出格式。
如果是第一次運行,則需要在運行 STS 命令的環境中執行aws configure
並設置 AWS 訪問密鑰和秘密密鑰。 STS 命令使用該數據驗證身份並檢查您是否有權執行 STS 代入角色。
如果您已經配置了現有的訪問密鑰和秘密密鑰,則它們也可能已過期。 因此,您可能需要在 IAM 中為用戶生成新密鑰並在您運行的環境中配置它。
我注意到當我不得不更改我的 AWS IAM 密碼時,我的訪問密鑰也被刪除了。
我必須生成一個新的訪問密鑰並替換存儲在~/.aws/credentials
(在 mac 上)文件中的aws_access_key_id
和aws_secret_access_key
。
這清除了錯誤
通過在您的用戶的 iam 用戶憑據部分重新激活我的訪問密鑰來解決此問題。 當我遇到這個問題時,它處於非活動狀態。
檢查~/.aws/credentials
文件中的aws_access_key_id
和aws_secret_access_key
是否正確。
如果是,則~/.aws/credentials
文件包含aws_session_token
僅刪除文件中的aws_session_token
行,保存更改並重新運行命令。
為我工作。
TLDR; IAM 用戶的密鑰/秘密密鑰是一組憑證。 會話令牌 + 會話的密鑰/秘密密鑰是一組不同的憑證,具有不同的值。
——
我不知道aws sts
命令創建了一個會話令牌,以及一個新的 AWS 密鑰/秘密密鑰。 這些鍵是不一樣的IAM用戶密鑰和秘密密鑰。
我生成了一個新的密鑰、秘密密鑰和令牌。 我更新了我的憑據文件以使用新值。 當我的令牌在第二天到期時,我重新運行了aws sts
命令。 但是,憑證文件中的密鑰和秘密密鑰現在是錯誤的。 我在我的憑證文件中替換了我的 IAM 用戶密鑰的密鑰和秘密密鑰值。 我還刪除了憑據文件中的會話令牌。
然后aws sts
命令起作用了。
我嘗試使用多配置文件動態創建 ~/.aws/config 文件,以提供我的代碼構建多帳戶訪問權限。 當我第一次使用空的默認配置文件創建文件 ~/.aws/config 然后嘗試擔任該角色時,我犯了一個錯誤。
當您將文件 ~/.aws/config 放在具有默認配置文件的位置時,確定身份的是配置文件,而不是 CodeBuild 附帶的配置文件。
確保目標 AWS 區域已啟用。 以下是啟用區域的方法。
讓我們不要忘記最簡單的事情。 當我沒有設置默認區域時,我收到了同樣的錯誤消息。 您可以通過運行 aws configure 來設置它。 或者,您可以像這樣在 sts 命令上傳遞區域。
aws sts 假設角色 --role-arn "your_role_arn" --role-session-name MySessionName --region us-gov-west-1
當我嘗試連接到我的 localstack 實例時出現此錯誤。
原因是aws
cli 缺少--endpoint-url http://localhost:4566
參數。
同樣的錯誤,但有一個非常具體的情況和解決方案。 在我的例子中,我有一個配置文件在我的.aws/credentials
中扮演如下角色:
[name]
role_arn = arn:aws:iam::ACCOUNT:role/ROLE_NAME
source_profile = default
我正在處理這個角色,同時刪除並重新創建了它。 AWS CLI 在使用此配置文件方法時緩存令牌。 緩存的令牌用於舊角色,而不是重新創建的角色。 這可以通過將--debug
添加到 CLI 命令來查看:
2023-01-27 16:22:03,055 - MainThread - botocore.credentials - DEBUG - Credentials for role retrieved from cache.
2023-01-27 16:22:03,055 - MainThread - botocore.credentials - DEBUG - Retrieved credentials will expire at: 2023-01-27 21:46:59+00:00
可以通過刪除~/.aws/cli/cache
目錄或在該目錄中找到的此 session 的特定 JSON 文件來擦除緩存。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.