Wie kann ich ein Lambda dazu bringen, eine EC2-Instanz über ihre private IP-Adresse aufzurufen?
Kurz gesagt, ich erstelle einen Discord-Bot für meine Minecraft-Server-Kollegen, um die AWS-Instanz zu starten und zu stoppen und das automatische Herunterfahren zu handhaben, wenn niemand auf dem Server ist.
Die Lambda-Funktion übernimmt das Starten, Stoppen, Abrufen der aktuellen automatisch zugewiesenen öffentlichen IP-Adresse und die Bestätigung, dass der Server über das Abfrageprotokoll von Minecraft (UDP-Port 25565) ausgeführt wird.
Ich versuche, dies so kosteneffizient wie möglich zu machen, und möchte sehen, ob ich dies ohne die Zuweisung einer elastischen IP-Adresse tun kann. Da ich mehr als einen Minecraft-Server haben werde, der gestartet werden muss. Und es wird eine Gebühr erhoben, wenn dieser Server mit einer elastischen IP-Adresse offline ist oder Sie mehr als eine elastische IP verwenden.
Ich habe dieselbe Funktion getestet, als derselbe Server eine elastische IP-Adresse verwendete, und sie funktionierte wie erwartet. Jetzt möchte ich wissen, ob ich dasselbe mit der privaten IP-Adresse tun kann.
Antwort1
Sofern Sie dies noch nicht getan haben, müssen Sie Lambda mit der VPC verbinden, in der die EC2-Instance ausgeführt wird. https://docs.aws.amazon.com/lambda/latest/dg/configuration-vpc.html
Standardmäßig können Lambda-Funktionen nur mit Ressourcen im öffentlichen Internet kommunizieren, also der öffentlichen IP der EC2-Instanz, den AWS-APIs usw.
Von dort aus müssen Sie sicherstellen, dass die der EC2-Instanz zugewiesene Sicherheitsgruppe (SG) (eingehenden) Datenverkehr von der der Lambda-Funktion zugewiesenen SG empfangen kann. Dies wäre UDP-Port 25565 oder was auch immer Sie benötigen.
Sie müssen auch sicherstellen, dass die der Lambda-Funktion zugewiesene SG ausgehende Verbindungen zur der EC2-Instanz zugewiesenen SG herstellen kann, wiederum über UDP-Port 2265 oder was auch immer Sie benötigen. Dies ist etwas einfacher, da die Outbound-Richtlinie normalerweise weit offen ist.
Zum Testen können Sie die SG für die Lambda-Funktion einer anderen EC2-Instanz zuweisen. Wenn Sie die Instanz, die die Rolle der Lambda-Funktion spielt, in dieselben Subnetze legen, können Sie das Setup weiter validieren.