【问题标题】:Node.js aws Lambda SQS functions are not firingNode.js aws Lambda SQS 函数未触发
【发布时间】:2020-10-15 06:19:11
【问题描述】:

我有一个 lambda 函数,它尝试从 aws-sdk 调用 SQS 函数,但它们没有触发。对于我的函数,我有两个权限策略 AmazonSQSFullAccess 和 AWSLambdaFullAccess。该函数可以被 SQS 消息调用,但是当我调用 sqs.listQueues、sqs.createQueue 或 sqs.sendMessage 时,它​​什么也不做。

const AWS = require('aws-sdk')
const sqs = new AWS.SQS();

exports.handler = async (event) => {
  console.log(event);
  
  sqs.listQueues({}, function(err, data) {
    if (err) {
      console.log("Error", err);
    } else {
      console.log("Success", data.QueueUrls);
    }
  });
  
  var params = {
    QueueName: 'Test Queue',
    Attributes: {
      'DelaySeconds': '60',
      'MessageRetentionPeriod': '86400'
    }
  };

  sqs.createQueue(params, function(err, data) {
    if (err) {
      console.log("Error", err);
    } else {
      console.log("Success", data.QueueUrl);
    }
  });
};

这是日志输出:

START RequestId: 0e345c02-b5f2-4816-8e58-c9a8cfbc4069 Version: $LATEST<br/>
2020-06-24T21:26:40.697Z    0e345c02-b5f2-4816-8e58-c9a8cfbc4069    INFO    { key1: 'value1', key2: 'value2', key3: 'value3' }<br/>
END RequestId: 0e345c02-b5f2-4816-8e58-c9a8cfbc4069<br/>
REPORT RequestId: 0e345c02-b5f2-4816-8e58-c9a8cfbc4069  Duration: 521.92 ms Billed Duration: 600 ms Memory Size: 128 MB Max Memory Used: 83 MB  Init Duration: 370.65 ms

我已经创建了两个未记录的队列,并且没有出现新的“测试队列”。 这是权限问题还是配置问题或完全是其他问题?

【问题讨论】:

  • 您可能需要使用 await 或将您的代码包装在一个 Promise 中。

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


【解决方案1】:

以下代码有效(针对列出和创建进行了测试)。也检查了在 SQS 页面上创建的一个。我用await 和promise。

还要注意队列名称,检查restrictions

队列名称最多可包含 80 个字符。可接受以下字符:字母数字字符、连字符 (-) 和下划线 (_)。

const AWS = require('aws-sdk')
const sqs = new AWS.SQS();

exports.handler = async (event) => {
  console.log(event);
  
  let queues = await sqs.listQueues().promise();
  
  // return queues
  
  var params = {
    QueueName: 'TestQueue', // name doesnt contain space
    Attributes: {
      'DelaySeconds': '60',
      'MessageRetentionPeriod': '86400'
    }
  };

  await sqs.createQueue(params).promise();
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-15
    • 2020-05-17
    • 2020-07-28
    • 2021-03-28
    • 2018-03-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-25
    相关资源
    最近更新 更多