从AWS Lambda发送https到AWS Elastic beantalk服务器

dro*_*sun 1 amazon-elastic-beanstalk aws-lambda aws-security-group

我正在努力使AWS lambda能够将HTTPS POST请求发送到AWS Elastic beantalk服务。弹性beantalk提供Web和Web服务,并且运行良好。lambda正在使用AWS elasticache进行一些计算(效果很好),然后决定是否将HTTPS POST发送到beantalk 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 
Run Code Online (Sandbox Code Playgroud)

我在弹性bean nginx访问日志中没有看到请求的指示。

因此,我的理解是安全组设置不正确。

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

因此,我得出的结论是,lambda安全性阻止了这种连接。因此-我完全打开了lambda安全组,可以从任何地方进行“所有流量”操作-我仍然遇到此问题。

有任何想法吗?

Mar*_*k B 5

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

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

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