使用node.js在AWS Lamda函数上使用第三方Api
我不熟悉node.js,也不熟悉AWS lambda。最初,我安装了node.js并在其中运行了一些基本脚本。我试图使用第三方API,如Google、Youtube和IMDb等。我已经在本地机器上编写了我的逻辑脚本,它在本地机器上运行良好,正如我在使用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
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,然后在基本设置中根据需要将超时更新为