[英]Can't access Amazon SQS - InvalidClientTokenId
我在 AWS 中設置了一個 SQS 隊列。 我可以使用 AWS CLI 和我設置的 IAM 憑證完美地發送和接收消息。
我想做的是使用通過 Spring 配置的 Camel 從隊列中消費消息。 我嘗試了這個例子,因為它非常明確並且切中要點:
https://github.com/christian-posta/camel-sqs-example
但是,我得到以下異常:
com.amazonaws.AmazonServiceException: Status Code: 403, AWS Service: AmazonSQS,
AWS Request ID: 115057f8-3c4f-5ec6-8fe9-18ea097b2730, AWS Error Code:
InvalidClientTokenId, AWS Error Message: The security token included in the
request is invalid.
Amazon 提供了最無用的文檔:
無效的 ClientTokenId
我們的記錄中不存在所提供的 X.509 證書或 AWS 訪問密鑰 ID。
HTTP 狀態代碼:403
我仔細檢查過我使用的 IAM 憑證與我通過 CLI 使用的憑證完全相同,並且 IAM 用戶具有允許對隊列進行讀/寫訪問的策略。 我還嘗試發送附加的 URL 參數accessKey 、 secretKey 、 amazonSQSEndpoint和region ,如Camel 所記錄的那樣。
為什么亞馬遜說訪問密鑰無效或在他們的記錄中不存在,我該如何解決我的請求?
面對這樣的情況,有兩種方法可以解決這個問題。
選項 1 :檢查 ~/.aws/credentials 文件中的憑據,其中訪問密鑰和機密可能存在錯誤。 犯這個錯誤的可能性很小,但它可能會發生。
選項 2 :為 IAM 用戶提供必要的權限,並檢查問題是否重現。 如果它是您自己的 AWS 帳戶,請提供AmazonSQSFullAccess
並執行您的工作。 從這個意義上說,您不會輕易遇到任何權限問題。 另請檢查此鏈接,其中提到用戶使用 AWS SQS 所需的最低權限集。
由於響應的狀態碼是 403(禁止訪問),這肯定與授權有關。 我知道我的答案會在兩年后出現,但我曾經遇到過類似的問題,而且這個方法奏效了。
我對這個問題的解決方案是正確配置 ~/.aws/credentials 文件
打開一個 bash 腳本並運行
sudo nano ~/.aws/credentials
在 [default] 下插入您的 IAM 訪問密鑰 ID 和秘密訪問密鑰 ID。 確保您的 IAM 角色具有使用 SQS 的權限。
對於AWS Educate 賬戶,您還必須在此文件中配置 aws_session_token。 登錄 vocareum,在“您的 AWS 賬戶狀態”下,您會發現兩個按鈕:賬戶詳細信息和 AWS 控制台。 單擊帳戶詳細信息,然后在 AWS CLI 附近單擊顯示。 在“默認”下的憑據文件中復制訪問權限、密鑰 ID 和 aws 會話令牌,您就完成了。
附加說明:請務必正確配置您的本地時區。 在 Debian 上:
sudo apt-get install ntp
sudo systemctl enable ntp
sudo systemctl start ntp
如果您的時間和日期仍然不正確,請嘗試:
dpkg-reconfigure tzdata
然后重新啟動你的機器
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.