Node.js aws sqs获得';配置'中缺少凭据;错误消息
我正在使用一个具有IAM角色的ec2实例,该角色赋予我对sqs的所有权限Node.js aws sqs获得';配置'中缺少凭据;错误消息,node.js,amazon-web-services,amazon-ec2,amazon-sqs,Node.js,Amazon Web Services,Amazon Ec2,Amazon Sqs,我正在使用一个具有IAM角色的ec2实例,该角色赋予我对sqs的所有权限 { "Version": "2012-10-17", "Statement": [ { "Action": [ "sqs:*" ], "Effect": "Allow", "Resource": "*" } ] } IAM角色具有“ec2”作为信任关系 在这个实例上,我有一个node.js应用程序在运行aws sdk。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"sqs:*"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
IAM角色具有“ec2”作为信任关系
在这个实例上,我有一个node.js应用程序在运行aws sdk。我正在使用sqs消费者库访问队列
这是我的初始化代码:
const consumer = require('sqs-consumer');
const AWS = require('aws-sdk');
let options = {apiVersion: '2012-11-05', region:'eu-central-1'};
let sqsClient = new AWS.SQS(options);
const app = consumer.create({
queueUrl: 'my_sqs_url',
region:'eu-central-1',
handleMessage: handleMessage,
sqs: sqsIncoming,
messageAttributeNames:['All']
});
app.on('error', (err) => {
console.log(err);
});
我得到的确切错误消息是:“SQS接收消息失败:配置中缺少凭据”。这是正确的,因为IAM角色应该提供凭据,根据文档,这应该自动工作()。我还将此设置用于几个ecs自动伸缩实例,虽然我在那里使用的是旧版本的sdk(2.324.0),但它可以正常工作
我使用的是aws sdk版本2.4.19(目前最新版本)
--编辑--我忘了提到,我使用的是windows服务器ami
我尝试过的事情:
- 定义硬编码凭证,然后它就可以工作了
- 创建更广泛的sqs配置文件(如上所示)
- 尝试了来自的第二个答案
# In ~/.aws/config
[profile default]
role_arn=arn:aws:iam:...
credential_source=Ec2InstanceMetadata
您是否尝试过从计算机上的CLI手动执行此操作?例如,使用AWS访问SQS队列?我已安装cli并收到不同的错误消息,请参阅我的第二次编辑以了解更多信息。您不需要配置凭据源或角色,我将同时删除它们。相反,请在AWS控制台中再次检查是否为EC2实例配置了正确的IAM角色。感谢您继续关注此问题。我已经仔细检查了这个角色,但它仍然不起作用。我现在使用一种变通方法,我已经创建了一个新用户,并为此用户定义了一个策略,这样我就可以在默认配置文件中使用此用户的访问密钥。这比必要的步骤多了一步,但至少它起作用了。