AWS lambda 函数如何通过私有 IP 地址调用 EC2 实例?

AWS lambda 函数如何通过私有 IP 地址调用 EC2 实例?

如何让 lambda 通过其私有 IP 地址调用 ec2 实例?

长话短说,为我的 minecraft 服务器伙伴制作一个 discord 机器人来启动和停止 AWS 实例,并在服务器上无人时处理自动关机。

Lambda 函数将处理启动、停止、获取当前自动分配的公共 IP 地址,并通过 Minecraft 的查询协议(UDP 端口 25565)确认服务器正在运行

我正在尝试尽可能节省成本,并想看看我是否可以在不分配弹性 IP 地址的情况下做到这一点。因为我将需要启动多个 minecraft 服务器。如果该服务器使用弹性 IP 地址离线,或者您使用超过 1 个弹性 IP,则需要付费。

当同一台服务器使用弹性 IP 地址时,我测试了相同的功能,并且它按预期工作。现在,我想知道我是否可以对私有 IP 地址执行相同的操作。

答案1

如果您还没有这样做,则需要将 Lambda 连接到 EC2 实例正在运行的 VPC。 https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html

默认情况下,Lambda 函数只能与公共互联网上的资源通信,因此 EC2 实例的公共 IP、AWS API 等。

从这里开始,您需要确保分配给 EC2 实例的安全组 (SG) 可以从分配给 Lambda 函数的 SG 接收 (入站) 流量。这可能是 UDP 端口 25565 或您需要的任何端口。

您还需要确保分配给 Lambda 函数的 SG 可以与分配给 EC2 实例的 SG 建立出站连接,同样在 UDP 端口 2265 或您需要的任何端口上。这稍微容易一些,因为出站策略通常是完全开放的。

为了测试,您可以将 Lambda 函数的 SG 分配给不同的 EC2 实例,将扮演 Lambda 函数角色的实例放在同一个子网中将有助于进一步验证设置。

相关内容