如何讓 lambda 透過其私有 IP 位址呼叫 ec2 實例?
長話短說,為我的 Minecraft 伺服器夥伴製作一個 Discord 機器人來啟動和停止 AWS 實例,並在伺服器上無人時處理自動關閉。
Lambda 函數將處理啟動、停止、取得目前自動分配的公用 IP 位址,並透過 Minecraft 的查詢協定(UDP 連接埠 25565)確認伺服器正在執行
我正在嘗試以盡可能經濟高效的方式執行此操作,並且想看看是否可以在不分配彈性 IP 位址的情況下執行此操作。因為我將有多個需要啟動的《我的世界》伺服器。如果該伺服器使用彈性 IP 位址離線,或者您使用超過 1 個彈性 IP,則會產生費用。
當同一台伺服器使用彈性 IP 位址時,我測試了相同的功能,並且它按預期工作。現在,我想知道是否可以對私人 IP 位址執行相同的操作。
答案1
如果您尚未這樣做,則需要將 Lambda 連接到 EC2 執行個體在其中執行的 VPC。 https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html
預設情況下,Lambda 函數只能與公共 Internet 上的資源進行通信,因此 EC2 執行個體的公共 IP、AWS API 等都可以與公共 Internet 上的資源進行通訊。
從那裡,您需要確保指派給 EC2 執行個體的安全性群組 (SG) 可以從指派給 Lambda 函數的 SG 接收(入站)流量。這將是 UDP 連接埠 25565 或您需要的任何連接埠。
您還需要確保指派給 Lambda 函數的 SG 可以再次透過 UDP 連接埠 2265 或您需要的任何連接埠與指派給 EC2 執行個體的 SG 建立出站連線。這要容易一些,因為出境政策通常是開放的。
為了進行測試,您可以將 Lambda 函數的 SG 指派給不同的 EC2 實例,並將充當 Lambda 函數部分的實例放在同一子網路中將有助於進一步驗證設定。