无法从AWS Lambda函数触发AWS sqs

时间:2019-10-18 13:15:14

标签: node.js amazon-web-services aws-lambda amazon-sqs

我有一个aws lambda函数,需要触发aws sqs,但我总是收到以下消息:

Fail Send MessageAccessDenied: Access to the resource https://sqs.eu-west-1.amazonaws.com/ is denied

这是我的lambda:

var QUEUE_URL = 'https://sqs.eu-west-1.amazonaws.com/*****/*****'
var AWS = require('aws-sdk');
var sqs = new AWS.SQS({region : 'eu-west-1'});


exports.handler = function(event, context) {

  var params = {
    MessageBody: JSON.stringify(event),
    QueueUrl: QUEUE_URL
  };
  sqs.sendMessage(params, function(err,data){
    if(err) {
      console.log('error:',"Fail Send Message" + err);
      context.done('error', "ERROR Put SQS");  // ERROR with message
    } else{
      console.log('data:',data.MessageId);
      context.done(null,'');  // SUCCESS
    }
  });
}

有人知道问题可能是什么或aws.sqs的好资源吗?我是否需要传递凭据,以及如何在aws.sqs中设置队列URL?

1 个答案:

答案 0 :(得分:1)

您是否为Lambda函数分配了执行角色,以使其可以将消息发送到SQS队列? This article详细说明了操作方法,特别是“设置IAM角色”部分。