【发布时间】:2019-03-01 03:36:50
【问题描述】:
下面是我的代码的简化。
const AWS = require('aws-sdk');
exports.handler = async (event, context, callback) => {
context.callbackWaitsForEmptyEventLoop = true;
AWS.config.update({region: 'cn-north-1'});
// Create CloudWatch service object
var cw = new AWS.CloudWatch({apiVersion: '2010-08-01'});
var params = {
MetricData: [
{
MetricName: 'PAGES_VISITED',
Dimensions: [
{
Name: 'UNIQUE_PAGES',
Value: 'URLS'
},
],
Unit: 'None',
Value: 1.0
},
],
Namespace: 'MyNewNameSpace'
};
cw.putMetricData(params, function(err, data) {
if (err) {
console.log("Error", err);
} else {
console.log("Success", JSON.stringify(data));
}
});
callback(null, "the result");
};
似乎一旦我设置了 callbackWaitsForEmptyEventLoop = false 然后指标就不能放在那里了。我不明白这个冲突。
【问题讨论】:
-
两个问题:(1)当你的处理程序是一个异步函数并且不应该使用回调模型时,你为什么要设置
context.callbackWaitsForEmptyEventLoop(它应该返回一个promise或await并返回响应) 和 (2) 为什么你的处理程序是异步函数exports.handler = async (event,...?也许在这种情况下你应该删除async?
标签: node.js amazon-web-services aws-lambda metrics