AWS SNS只能在本地发布,而不能从lambda发布

时间:2018-10-30 17:03:46

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

这是在本地成功发送短信的代码

Agent

但是,这不会从我部署的lambda中触发。

我的serverless.yml包含必要的iamRoleStatements

const snsParams = {
  Message: "Hello World",
  PhoneNumber: normalizedPhoneNumber,
};

const sms = messager.publish(snsParams).promise();

sms.then(data => {
  console.log('Success!', data);
}).catch(err => {
  console.log('Error!', err);
});

我还从IAM管理控制台中检查了我的lambda角色中是否包含SNS

enter image description here

我该如何进行这项工作?我想念什么?

1 个答案:

答案 0 :(得分:0)

我认为问题可能在于承诺,因为 messager.publish(snsParams).promise();仅创建一个承诺,执行承诺时没有等待。

您可以更改代码,以便:

exports.handler = async function(event) {
  ...
  const snsParams = {
    Message: "Hello World",
    PhoneNumber: normalizedPhoneNumber,
  };
  try {
    const sms = await messager.publish(snsParams).promise();
    console.log('Success!', sms);
  } catch (err) {
    console.log('Error!', err);
  }
}