Blog

So binden Sie Elastic IP-Adressen dynamisch an eine Auto-Scaling-Gruppe

Mark van Holsteijn

Mark van Holsteijn

Aktualisiert Oktober 21, 2025
3 Minuten

Was ist, wenn Sie einen Pool von elastischen IP-Adressen mit einer automatisch skalierenden Gruppe verknüpfen möchten, ohne einen Load Balancer zu verwenden? Oder
die Berechtigungen für die Bindung der elastischen IP in einem Startskript erteilen? Hier kommt der
elastic IP manager ins Spiel, der die Zuweisung eines Pools von Elastic IP-Adressen an Instanzen verwaltet!

Wie funktioniert das?

Der elastische IP-Manager ist eine Lambda-Funktion, die bei EC2-Zustandsänderungen ausgelöst wird und Tags verwendet, um
einen Pool von Adressen mit EC2-Instanzen zu verknüpfen. Wenn die Instanz gestoppt oder beendet wird, wird die elastische IP-Adresse entfernt. Wenn eine neue Instanz
gestartet wird, wird ihr eine elastische IP zugewiesen. Der Manager für elastische IPs synchronisiert den Status außerdem alle 5 Minuten, um sicherzustellen, dass wir bei Fehlern schließlich
konsistent sind. Der Manager für elastische IPs arbeitet nur auf EC2-Instanzen mit dem Tag elastic-ip-manager-pool. Wenn eine Instanz mit diesem Tag
den Status running erreicht, weist sie eine freie elastische IP-Adresse mit demselben Tag und Tag-Wert zu. Wenn eine Instanz mit diesem Tag
gestoppt oder beendet wird, wird die Verknüpfung mit der elastischen IP-Adresse aufgehoben.

Wie verwende ich es?

Sie können den Elastic IP Manager in drei einfachen Schritten nutzen:

  1. den elastic-ip-manager einsetzen
  2. einen Pool von getaggten elastischen IP-Adressen erstellen
  3. eine automatisch skalierende Gruppe von getaggten Instanzen erstellen

den elastic-ip-manager einsetzen

Um den Provider einzusetzen, geben Sie ein:

git clone https://github.com/binxio/ec2-elastic-ip-manager.git
cd ec2-elastic-ip-manager
aws cloudformation create-stack 
        --capabilities CAPABILITY_IAM 
        --stack-name elastic-ip-manager 
        --template-body file://./cloudformation/elastic-ip-manager.yaml

aws cloudformation wait stack-create-complete  --stack-name elastic-ip-manager

Erstellen Sie einen Pool von Elastic IP-Adressen

Erstellen Sie einen Pool von elastischen IP-Adressen und versehen Sie diese mit einem elastic-ip-manager-pool Wert:

  EIPBastionPoolTags:
    Type: Custom::Tag
    Properties:
      ResourceARN:
        - !Sub 'arn:aws:ec2:${AWS::Region}:${AWS::AccountId}:eip/${EIP1.AllocationId}'
        - !Sub 'arn:aws:ec2:${AWS::Region}:${AWS::AccountId}:eip/${EIP2.AllocationId}'
      Tags:
        elastic-ip-manager-pool: bastion

      ServiceToken: !Sub 'arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:cfn-tag-provider'

In diesem Beispiel verwenden wir den benutzerdefinierten Tag-Anbieter,
, da AWS::EC2::EIP (noch) keine Tags unterstützt.

Eine Gruppe mit automatischer Skalierung erstellen

Erstellen Sie eine Gruppe zur automatischen Skalierung und wenden Sie das Tag elastic-ip-manager-pool auf alle Instanzen an:

  AutoScalingGroup:
    Type: AWS::AutoScaling::AutoScalingGroup
    Properties:
      ...
      Tags:
        - Key: elastic-ip-manager-pool
          Value: bastion
          PropagateAtLaunch: true

Der Manager wird automatisch elastische IP-Adressen mit Instanzen verknüpfen, die mit dem Tag elastic-ip-manager-pool gekennzeichnet sind.
Bei Instanzen ohne das Tag elastic-ip-manager-pool wird nichts unternommen. Das ist alles. Wenn Sie das Ganze in Aktion sehen möchten, installieren Sie die Demo.

Bereitstellen der Demo

Um die Demo zu installieren, geben Sie ein:

read -p "vpc id: " VPC_ID
read -p "subnet ids: " SUBNET_IDS
aws cloudformation create-stack 
        --capabilities CAPABILITY_NAMED_IAM 
        --stack-name elastic-ip-manager-demo 
        --template-body file://./cloudformation/demo-stack.yaml 
        --parameter Name=VPC,Value=$VPC_ID Name=Subnets,Value=$SUBNET_IDS

aws cloudformation wait stack-create-complete  --stack-name elastic-ip-manager-demo

Alternativen

Es gibt zwei alternative Lösungen, um dieselbe Funktionalität zu erreichen: * Verwenden Sie einen Netzwerk-Load-Balancer * oder verknüpfen Sie eine Adresse beim Start der Instanz In meinem Anwendungsfall wollte ich weder Geld dafür ausgeben, einen NLB am Laufen zu halten, noch der Instanz die Erlaubnis geben, sich selbst eine EIP zuzuordnen.

Fazit

Mit dem Elastic IP Manager und dem CloudFormation Tag Provider können Sie EIP-Adressen dynamisch mit Instanzen der Auto-Scaling-Group verknüpfen.
Wenn Sie statische private IP-Adressen binden möchten, können Sie den EC2 Network Interface Manager verwenden.

Verfasst von

Mark van Holsteijn

Mark van Holsteijn is a senior software systems architect at Xebia Cloud-native solutions. He is passionate about removing waste in the software delivery process and keeping things clear and simple.

Contact

Let’s discuss how we can support your journey.