簡體   English   中英

無法訪問 Amazon SQS - InvalidClientTokenId

[英]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 參數accessKeysecretKeyamazonSQSEndpointregion ,如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.

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