簡體   English   中英

為什么我在 AWS Lambda 函數中看不到這個 aws-sdk 函數?

[英]Why can't I see this aws-sdk function from inside my AWS Lambda function?

我的目標是能夠在我的 AWS Lambda 的處理程序函數中使用 AWS CloudWatchLogs.startQuery函數。 當我通過 nodejs 在本地運行它時,這個方法存在,但是當我在我的處理程序中運行時它是未定義的。 我想我在兩個地方都在做同樣的事情,但我得到了不同的結果。 為了比較,我可以在兩個地方看到filterLogEvents方法,正如我所料。 這兩種方法都記錄在AWS javascript SDK 中 為什么我在 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 的2.290.0 版本,該版本2018 年 8 月的 但是,StartQuery 直到 2018 年 11 月才發布,並出現在 SDK 的2.364.0 版本中。 解決方法是自己打包最新版本的 SDK,而不是依賴包含的庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM