0

我很努力使AWS lambda可以将HTTPS POST请求发送到AWS弹性beanstalk服务。 弹性beanstalk提供web和web服务,并且很好地工作。 lambda正在使用AWS elasticache进行一些计算(效果很好),然后决定是否将HTTPS POST发送到beanstalk URL。将https从AWS lambda发送到AWS弹性beanstalk服务器

该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 

我看不出在弹性豆nginx的访问日志的请求的指示。

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

我排除了弹性beanstalk阻止这种连接的选项--Lambda使用的URL具有可以从任何浏览器使用的外部域名,并且工作正常。

所以我只剩下lambda安全防止这种连接的结论。所以 - 我从任何地方将lambda安全组完全打开为“所有流量” - 我仍然遇到这个问题。

任何想法?

回答

4

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

您需要配置Lambda函数以通过内部VPC地址访问服务。而且您需要配置您的Elastic Beanstalk安全组以允许从Lambda安全组访问(如果尚未)。

或者,您可以添加一个NAT网关到您的VPC,这会让您的Lambda功能访问VPC外的资源。

+0

NAT的伎俩。非常感谢。 – drorsun