javascript - 发出 Node https 请求的 AWS lambda 错误

标签 javascript node.js aws-lambda superagent

我编写了一个 AWS lambda,它向触发重设密码电子邮件的端点发出 https 请求。当我在本地运行我的 lambda 时,一切都按预期运行并且我在收件箱中收到了电子邮件,但是,当我上传我的 Node 代码并在 AWS 控制台中运行 lambda 时,我在发出发布请求时收到以下错误:

Error: getaddrinfo ENOTFOUND myfakedomain.com myfakedomain.com:443

我的 lambda 中发出 https 请求(使用 superagent Node 模块)的函数如下所示:

function resetPassword(intentRequest, callback) {
    const emailAddress = intentRequest.currentIntent.slots.EmailAddress;
    console.log(`emailAddress is: ${emailAddress}`);
        request
        .post('https://myfakedomain.com:443/passwordreset', emailAddress)
        .set({ 'Content-Type': 'text/plain' })
        .end((resp) => {
          console.log('response was: ' + resp);
        });

    callback(close(intentRequest.sessionAttributes, 'Fulfilled',
    { contentType: 'PlainText', content: `Thanks, a reset password link has been sent to ${emailAddress}.` }));
}

通过 AWS 运行我的 lambda 时是否有任何特殊原因导致此错误?重置密码端点是开放的,因此任何人都可以访问它。我也试过从发帖请求的开头删除 https://,但没有成功。我想这也无济于事,错误记录也很少!

任何帮助都会很棒,谢谢。

最佳答案

默认情况下,AWS VPC 资源,无论是 EC2(服务器)实例还是您的 Lambda 函数,都无法访问 Internet。因此,如果您的 Lambda 函数是基于 VPC 的,则它需要与配置了 Internet 访问的 VPC 相关联。

如果您还没有这样做,那几乎可以肯定是您的问题。

下面有几个指向相关 AWS 文档的链接: http://docs.aws.amazon.com/lambda/latest/dg/vpc.html https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/

关于javascript - 发出 Node https 请求的 AWS lambda 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47927213/

相关文章:

python-3.x - 如何使用 AWS Lambda 在 AWS Sagemaker 中远程启动 Jupyter Notebook

javascript - 我们如何更改 v2 div 中存在的 p 标签的值?

javascript - Vue.js:动态获取注册组件

javascript - Node js从函数返回值

javascript - Node.js - Handlebars 引用变量

python - AWS Lambda、Python 和 Plotly : Generating SVG via plotly. offline.plot() 似乎不起作用

python-3.x - 如何从 AWS Lambda 运行 Scrapy 蜘蛛?

javascript - typescript 并将对象转换为字符串

javascript - jquery mobile,从事件调用转换

node.js - 无法基于 Node :8. 1 镜像为 Node 应用程序构建 Docker 容器