1

我正在努力让 AWS lambda 将 HTTPS POST 请求发送到 AWS 弹性 beanstalk 服务。弹性 beanstalk 提供 web 和 web 服务并且运行良好。lambda 正在使用 AWS elasticache(运行良好)进行一些计算,然后决定是否将 HTTPS POST 发送到 beanstalk URL。

lambda 用node.js. POST 尝试后大约 2 分钟,我收到此超时:

[Error: connect ETIMEDOUT X.Y.Z.W:443] code: 'ETIMEDOUT', errno: 'ETIMEDOUT', syscall: 'connect', address: 'X.Y.Z.W', port: 443 

我在弹性 bean nginx 访问日志中看不到任何请求的迹象。

所以我的理解是安全组设置不正确。

我排除了弹性 beanstalk 阻止此类连接的选项 - lambda 正在使用带有外部域名的 url,该域名可以从任何浏览器中使用,并且工作正常。

所以我得出的结论是 lambda 安全性阻止了这种连接。所以 - 我将 lambda 安全组完全开放给来自任何地方的“所有流量” - 我仍然遇到这个问题。

有任何想法吗?

4

1 回答 1

6

您正在 VPC 中运行 Lambda 函数,这是访问 ElastiCache 服务器所必需的。但是,一旦您将 Lambda 函数放入 VPC,它就无法再访问 VPC 之外的任何内容。您正在尝试通过 Lambda 函数无权访问的公共(互联网)地址访问 Elastic Beanstalk 服务器。因此,您将获得网络连接超时。

您需要配置您的 Lambda 函数以通过内部 VPC 地址访问该服务。并且您需要配置您的 Elastic Beanstalk 安全组以允许来自 Lambda 安全组的访问(如果您还没有)。

或者,您可以将 NAT 网关添加到您的 VPC,这将使您的 Lambda 函数能够访问 VPC 之外的资源。

于 2016-09-11T15:29:18.840 回答