静态弹性公网EIP可以通过NAT网关获取,也可以通过NAT实例获取,但在此特定需求中,不允许使用这两种方式。有没有其他方法可以做到这一点?
发布于 2020-07-23 00:07:27
不幸的是,AFAIK是不可能的。如果您在私有网络中运行,则需要NAT (网关或实例)将流量路由到私有网络外部,因为无法将弹性公网in直接附加到lambda函数。我假设他们不允许这样做,因为弹性公网I一次只能连接到一个网络接口。由于可以同时运行同一Lambda函数的多个实例,因此它们不可能共享单个EIP。
https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/
如果您不是在私有网络中运行,那么您将获得一个外部IP,但该IP将在每次创建新的lambda上下文(实例)时更改。你可以通过保持函数温暖来减少这种情况的发生,比如每隔5分钟左右调用一次,这样函数上下文就不会经常被移除。但是,这并不能完全阻止上下文被重新创建(或从同时运行的多个实例),因此这不会解决您的问题。
https://docs.aws.amazon.com/lambda/latest/dg/runtimes-context.html
https://www.serverless.com/blog/keep-your-lambdas-warm
编辑:一些较大的公司不允许NAT,因为它们通过自己的防火墙路由所有流量,以便能够监控流量。如果是这种情况,那么您可能不必执行任何操作,这取决于路由是如何设置的。如果VPC/子网通过公司防火墙路由外部流量,那么它可能会正常工作,或者您可能需要与公司的网络组进行交谈。确保您的lambda函数在将0.0.0.0/0流量路由到网关的子网中运行。
发布于 2020-07-27 07:20:34
在EC2上实现HAProxy,lambda调用HAProxy实例调用外部系统,解决了这一问题。
https://stackoverflow.com/questions/63034926
复制相似问题