我的目标是能够使用AWS CloudWatchLogs.startQuery
功能从我的AWS LAMBDA的处理函数中。当我通过当地的NodeJS运行它,这种方法存在的,但是当我在我的处理程序中运行它的定义。我觉得我在做同样的事情,在这两个地方,但我得到不同的结果。为了便于比较,我可以看到在这两个地方的filterLogEvents
方法,如我所料。这两种方法都记录在AWS javascript SDK。为什么我不能看到我的拉姆达里面这个功能呢?
我的代码的NodeJS:
var AWS = require('aws-sdk');
AWS.config.loadFromPath('./aws_credentials.json');
AWS.config.update({
region: 'us-east-1',
apiVersion: '2014-03-28'
});
var cloudwatchlogs = new AWS.CloudWatchLogs();
var filterlogevents_type = typeof cloudwatchlogs.filterLogEvents;
var startquery_type = typeof cloudwatchlogs.startQuery;
console.log(startquery_type); // function
console.log(filterlogevents_type); // function
从我拉姆达的index.js文件中:
var AWS = require('aws-sdk');
AWS.config.update({
region: 'us-east-1',
apiVersion: '2014-03-28'
});
exports.handler = async (event) => {
var cloudwatchlogs = new AWS.CloudWatchLogs();
var filterlogevents_type = typeof cloudwatchlogs.filterLogEvents;
var startquery_type = typeof cloudwatchlogs.startQuery;
const response = {
body: JSON.stringify({
startQuery: startquery_type, // undefined
filterLogEvents: filterlogevents_type // function
}),
};
return response;
};
在布线时,λ-包括在运行时,这是从所述version 2.290.0 AWS SDK的August 2018。然而,StartQuery是only released in November 2018并出现在SDK的version 2.364.0。解决方法是封装的最新版本的SDK自己而不是依赖于包括图书馆。