我在AWS中设置了SQS队列。我可以使用AWS CLI和我设置的IAM凭据完美地发送和接收消息。
我想要做的是使用Camel从队列中消息,通过Spring配置。我尝试了这个例子,因为它非常明确并且重点:
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.
亚马逊提供了最无用的文档:
InvalidClientTokenId
我们的记录中不存在提供的X.509证书或AWS访问密钥ID。
HTTP状态代码:403
我已经仔细检查过我使用了与通过CLI使用的完全相同的IAM凭据,并且IAM用户具有允许对队列进行读/写访问的策略。我还玩弄了额外的URL params accessKey , secretKey , amazonSQSEndpoint 和 region 作为{{3 }}
为什么亚马逊说访问密钥无效或记录中不存在以及如何修复我的请求?
答案 0 :(得分:1)
遇到这种情况时,有两种方法可以解决这个问题。
选项1 :检查〜/ .aws / credentials文件中的凭据,其中可能存在访问密钥和机密中的错误。犯这种错误的可能性非常小,但可能会发生。
选项2 :为IAM用户提供必要的权限,并检查是否重新创建了问题。如果它是您自己的AWS账户,请提供AmazonSQSFullAccess
并执行您的工作。从这个意义上讲,您不会轻易遇到任何权限问题。另请检查此link,其中提到了用户使用AWS SQS所需的最小权限集。
由于响应的状态代码是403(禁止),因此必须与授权相关。我知道我的答案将在两年后出现,但我曾经遇到类似的问题,这很有效。
答案 1 :(得分:0)
我对此问题的解决方案是正确配置〜/ .aws / credentials文件
打开bash脚本并运行
sudo nano ~/.aws/credentials
在[默认]下,插入您的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
然后重新启动计算机