使用node.js在AWS Lamda函数上使用第三方Api

使用node.js在AWS Lamda函数上使用第三方Api,node.js,amazon-web-services,aws-lambda,Node.js,Amazon Web Services,Aws Lambda,我不熟悉node.js,也不熟悉AWS lambda。最初,我安装了node.js并在其中运行了一些基本脚本。我试图使用第三方API,如Google、Youtube和IMDb等。我已经在本地机器上编写了我的逻辑脚本,它在本地机器上运行良好,正如我在exports.handler中所做的一样。该方法不起作用并引发错误 以下是处理程序函数的逻辑: var https = require('https'); exports.handler = async(event) => { ret

我不熟悉node.js,也不熟悉AWS lambda。最初,我安装了node.js并在其中运行了一些基本脚本。我试图使用第三方API,如Google、Youtube和IMDb等。我已经在本地机器上编写了我的逻辑脚本,它在本地机器上运行良好,正如我在
exports.handler中所做的一样。该方法不起作用并引发错误

以下是处理程序函数的逻辑:

var https = require('https');

exports.handler = async(event) => {
    return sendRes(200, 'Hello');
};

const sendRes = (status, body) => {
    const options = {
        hostname: 'api.themoviedb.org',
        path: '3/search/movie?query=avengers&page=1&api_key=MY-API-KEY',
        method: 'GET',
        agent: false
    };
    console.log(options);
    const req = https.request(options, (res) => {
        console.log("statusCode: ", res.statusCode);
        res.on('data', (d) => {
            console.log('here in request');
        });
    });
};
基本上,在触发特定事件时,Lamda将使用API并返回JSON响应。 最初,当我使用Test触发此函数时,它会抛出以下错误:

Task timed out after 3.00 seconds
在浏览互联网后,我尝试了以下解决方案:

  • 增加记忆
  • 增加执行时间
有人能帮我吗

参考资料:


  • AWS使用特定的网络权限来使用外部世界的API。尽管您可以使用自己的aws端点,因为它位于同一VPC上。我曾在互联网上搜索过这个问题,但最终发现如下:

    AWS Lambda使用您提供的专有网络信息设置 允许您的Lambda功能访问VPC资源。每个埃尼集团 从中的IP地址范围分配了专用IP地址 指定但未分配任何公用IP地址的子网。 因此,如果您的Lambda功能需要Internet访问(例如 例如,访问没有VPC端点的AWS服务,例如 Amazon Kinesis),您可以在VPC或 您可以使用Amazon VPC NAT网关。有关更多信息,请参阅NAT 亚马逊专有网络用户指南中的网关。你不能使用互联网 连接到VPC的网关,因为这需要ENI具有 公共IP地址

    您可以查看我在下面提到的链接,了解详细信息和配置

    参考资料:

    解决方案:
    我不擅长VPC和NAT网关,最初我删除了所有的VPC规则,应用于我的Lamda,现在没有选择VPC。不建议这样做,因为我们必须附加我们的VPC和NAT规则

    您基本上需要一个可以访问internet的公共子网,这样您就可以与外部世界通话。默认情况下,您只能访问vpc内的内容。

    转到aws控制台,选择lambda服务,在其中选择lambda,然后在基本设置中根据需要将超时更新为