我有一个简单的Lambda函数,其目的是接收事件数据并将消息发送到SNS主题。
运行时为Node.js 8.10。
以下是我的完整Lambda代码:
const AWS = require("aws-sdk");
exports.handler = async (event) => {
const sns = new AWS.SNS();
const emailBody =
`
New Message
From: ${event.name}
Contact: ${event.contact}
Message: ${event.message}
`;
const snsMessageParams = {
TopicArn: process.env.snsTopicArn,
Message: emailBody
};
sns.publish(snsMessageParams, (err, data) => {
if(err) {
return err;
} else {
return data;
}
});
};
每次运行函数时,我总是得到一个空响应。没有错误返回,但我从SNS从来没有收到邮件消息,所以这里肯定有问题。我只是想不出到底是什么问题。我能够成功地从SNS控制台和我的本地计算机上的Node SDK向我的SNS主题发布消息。这些都工作得很好。我已经检查了我的环境变量中snsTopicArn是否正确,通过直接从成功的本地代码和SNS控制台复制和粘贴它来完成。
我在Lambda函数上有一个执行角色,允许我发布到我的帐户中任何主题的SNS。我只是选择默认的“SNSPublish”选项来配置Lambda的角色以测试一切是否正常。但供参考,这是我的执行角色策略:
{
"roleName": <MyRoleName>,
"policies": [
{
"document": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sns:Publish"
],
"Resource": "arn:aws:sns:*:*:*"
}
]
}
...
}
这里出了什么问题?非常感谢任何帮助。