【问题标题】:Lambda function does not publish to SNS or update dynamodbLambda 函数不会发布到 SNS 或更新 dynamodb
【发布时间】:2018-05-07 00:11:30
【问题描述】:

我正在尝试使用以下代码更新 dynamodb 并从 Lambda 函数发送 SNS 通知。即使函数成功执行 SNS 通知也不会发生。 SNS 日志也不显示任何条目。从控制台到同一个 ARN 的 SNS 有效。检查以更新也不起作用的 dynamodb。为 Dynamodb 和 SNS 发布创建所需的 IAM 角色策略。任何调试指针或方法都会有所帮助。

'use strict';
console.log('Loading function');

var AWS = require("aws-sdk");
var sns = new AWS.SNS();
AWS.config.update({
region: "us-east-1"
});
var docClient = new AWS.DynamoDB.DocumentClient();

exports.handler = (event, context, callback) => {
context.callbackWaitsForEmptyEventLoop = false;
console.log('Received event: ', JSON.stringify(event, null, 2));
console.log('Received context: ', JSON.stringify(context, null, 2));
// console.log('Cognito id: ', context.identity.cognitoIdentityId);
+console.log("Start .................." + new Date().toString());+
console.log("Notifying....:");
sns.publish({
TargetArn: "arn:aws:sns:us-east-1:796915632304:endpoint/GCM/JaybMe/b65794ea-d30d-38a8-8450-e0ff3b877bfc",
Message: "Simple notification message "
}, function(err, data) {
if(err) {
console.error('error publishing to SNS');
context.callbackWaitsForEmptyEventLoop = false;
callback(err);
//context.fail(err);
} else {
console.info('Message published to SNS');
context.callbackWaitsForEmptyEventLoop = false;
callback(null, "SUCCESS");
}
});

console.log('Finished function');
context.callbackWaitsForEmptyEventLoop = false;
callback(null, "SUCCESS");
}

使用运行时 4.3 和 6.10 进行测试,但行为相同

谢谢 萨吉夫

【问题讨论】:

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


    【解决方案1】:

    这让我想起了两种可能的情况;

    首先,也许 lambda 函数在 sns 客户端完成发送消息之前自行终止。你最好使用 javascript 的 await 或 promise() 属性。

    其次,也许您已将 lambda 放入 VPC。看一个类似的案例here

    【讨论】:

      猜你喜欢
      • 2019-01-28
      • 2015-11-16
      • 2018-11-14
      • 2021-06-13
      • 2018-10-29
      • 1970-01-01
      • 1970-01-01
      • 2019-01-23
      • 2020-06-14
      相关资源
      最近更新 更多