Javascript 为什么可以';我不能从aws Lambda函数中看到这个aws sdk函数吗?

Javascript 为什么可以';我不能从aws Lambda函数中看到这个aws sdk函数吗?,javascript,aws-lambda,aws-sdk,amazon-cloudwatchlogs,Javascript,Aws Lambda,Aws Sdk,Amazon Cloudwatchlogs,我的目标是能够从AWS Lambda的处理函数中使用AWSCloudWatchLogs.startQuery函数。当我通过nodejs在本地运行该方法时,它就存在了,但当我在处理程序中运行时,它是未定义的。我想我在这两个地方做了同样的事情,但是我得到了不同的结果。为了进行比较,我可以在这两个地方看到filterLogEvents方法,正如我所期望的那样。这两种方法都记录在文档中。为什么我不能在lambda中看到这个函数 我的nodejs代码: var AWS = require('aws-sdk

我的目标是能够从AWS Lambda的处理函数中使用AWS
CloudWatchLogs.startQuery
函数。当我通过nodejs在本地运行该方法时,它就存在了,但当我在处理程序中运行时,它是未定义的。我想我在这两个地方做了同样的事情,但是我得到了不同的结果。为了进行比较,我可以在这两个地方看到
filterLogEvents
方法,正如我所期望的那样。这两种方法都记录在文档中。为什么我不能在lambda中看到这个函数

我的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
从我的lambda的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;
};

在连接时,Lambda在运行时包含AWS SDK的一部分,它来自。然而,StartQuery已经出现在SDK的最新版本中。解决方法是自己打包SDK的最新版本,而不是依赖附带的库。

Ah,感谢您的洞察力和解决方法!仅在API文档中,不清楚哪些函数在哪些版本中可用。