我有一个
node.js
。在 EC2
实例中运行的守护进程使用 sqs-consumer
库从 SQS
. 读取消息
我遇到的问题是消息被写入 SQS 但它们没有被我的守护进程使用。我没有收到任何错误消息。消息只是停留在
SQS
,我的守护进程似乎没有收到活动通知。
我在
IAM
中添加了一个EC2
角色,可以完全访问SQS
,我还在AWS_ACCESS_KEY_ID
上设置了AWS_SECRET_ACCESS_KEY
和EC2
。我知道这不是问题,因为我已经解决了那个问题(在此之前我在 SQS
凭据上遇到错误)。
这是我使用
SQS
的代码(当然它在 localhost 中就像一个魅力):
const consumer = Consumer.create({
region: config.sqs.region,
queueUrl: config.sqs.endpoint,
shouldDeleteMessages: true,
handleMessage: (message) => {
console.log('Processing message: ', message);
},
});
consumer.on('error', (err) => {
console.log(err.message);
});
consumer.start();
我错过了什么?
我错过了将以下权限策略分配给
EC2
实例:
AmazonSQSFullAccess
为此,您必须首先创建一个附加了该策略的角色,然后将创建的 IAM 角色分配给实例。如果实例已经在运行,那么重启它非常重要。如果没有,它不会选择新角色。