

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Erstellen einer VPC mit privaten Subnetzen und NAT-Gateways mit der AWS CLI
<a name="create-a-vpc-with-private-subnets-and-nat-gateways-using-aws-cli"></a>

In diesem Tutorial wird gezeigt, wie Sie über die AWS CLI eine VPC erstellen, die Sie für Server in einer Produktionsumgebung verwenden können. Um die Resilienz zu verbessern, stellen Sie Server in zwei Availability Zones bereit und verwenden dabei eine Auto-Scaling-Gruppe und einen Application Load Balancer. Für zusätzliche Sicherheit werden Sie die Datenbankserver in privaten Subnetzen bereitstellen. Die Server empfangen Anfragen über den Load Balancer und können über NAT-Gateways eine Verbindung zum Internet herstellen. Um die Resilienz zu verbessern, stellen Sie ein NAT-Gateway in jeder Availability Zone bereit.

Das folgende Diagramm bietet einen Überblick über die genutzten Ressourcen in diesem Tutorial. Die VPC hat öffentliche Subnetze und private Subnetze in zwei Availability Zones. Jedes öffentliche Subnetz enthält ein NAT-Gateway und einen Load-Balancer-Knoten. Die Server werden in den privaten Subnetzen ausgeführt, werden mithilfe einer Auto-Scaling-Gruppe gestartet und beendet und empfangen Datenverkehr vom Load Balancer. Die Server können über das NAT-Gateway eine Verbindung zum Internet herstellen. Die Server können über einen Gateway-VPC-Endpunkt eine Verbindung zu Amazon S3 herstellen.

![Eine VPC mit Subnetzen in mindestens zwei Availability Zones.](http://docs.aws.amazon.com/de_de/vpc/latest/userguide/images/vpc-example-private-subnets.png)


## Voraussetzungen
<a name="prerequisites"></a>

Bevor Sie mit diesem Tutorial beginnen, brauchen Sie Folgendes:
+ Die AWS CLI muss installiert und mit Berechtigungen zum Erstellen von VPC-Ressourcen, EC2-Instances, Load Balancern und Auto-Scaling-Gruppen konfiguriert sein. Informationen zur Installation von AWS CLI finden Sie unter [Installieren oder Aktualisieren der neuesten Version von AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).
+ Grundkenntnisse der VPC-Konzepte, einschließlich Subnetzen, Routing-Tabellen und Internet-Gateways.
+ Der JSON-Prozessor der `jq`-Befehlszeile muss installiert sein. Dies wird verwendet, um die Ausgabe von AWS CLI-Befehlen zu parsen. Informationen zum Installieren von jq finden Sie unter [jq herunterladen](https://stedolan.github.io/jq/download/).
+ Ausreichende Service Quotas für die zu erstellenden Ressourcen, einschließlich:
+ mindestens 2 verfügbare Elastic-IP-Adressen
+ mindestens 2 NAT-Gateways
+ mindestens 1 VPC
+ mindestens 4 Subnetze
+ mindestens 1 Application Load Balancer

**Geschätzte Kosten**: Für die in diesem Tutorial erstellten Ressourcen fallen Gebühren in Ihrem AWS-Konto an: *NAT-Gateways: \~0,045 $ pro Stunde, zuzüglich Datenverarbeitungsgebühren * Elastic-IP-Adressen: kostenlos, wenn sie mit laufenden Instances verknüpft sind, andernfalls \~0,005 $ pro Stunde * EC2-Instances: variiert je nach Instance-Typ (in diesem Tutorial: t3.micro) * Application Load Balancer: \~0,0225 $ pro Stunde zuzüglich Datenverarbeitungsgebühren

## Erstellen der VPC und der Subnetze
<a name="create-the-vpc-and-subnets"></a>

Als Erstes erstellen Sie eine VPC mit dem CIDR-Block 10.0.0.0/16, der bis zu 65 536 private IP-Adressen bereitstellt.

```
# Create a VPC with CIDR block 10.0.0.0/16
aws ec2 create-vpc --cidr-block 10.0.0.0/16 --tag-specifications 'ResourceType=vpc,Tags=[{Key=Name,Value=ProductionVPC}]'
```

Daraufhin erhalten Sie ein Ergebnis, das dem hier dargestellten entspricht:

```
{
    "Vpc": {
        "CidrBlock": "10.0.0.0/16",
        "DhcpOptionsId": "dopt-abcd1234",
        "State": "pending",
        "VpcId": "vpc-abcd1234",
        "OwnerId": "123456789012",
        "InstanceTenancy": "default",
        "Ipv6CidrBlockAssociationSet": [],
        "CidrBlockAssociationSet": [
            {
                "AssociationId": "vpc-cidr-assoc-abcd1234",
                "CidrBlock": "10.0.0.0/16",
                "CidrBlockState": {
                    "State": "associated"
                }
            }
        ],
        "IsDefault": false,
        "Tags": [
            {
                "Key": "Name",
                "Value": "ProductionVPC"
            }
        ]
    }
}
```

Notieren Sie sich die VPC-ID in der Ausgabe (z. B. `vpc-abcd1234`). Diese ID verwenden Sie in nachfolgenden Befehlen.

Als Nächstes identifizieren Sie zwei Availability Zones in Ihrer Region, um eine ausfallsichere Architektur zu erstellen.

```
# Get available Availability Zones
aws ec2 describe-availability-zones --query 'AvailabilityZones[0:2].ZoneName' --output text
```

Daraufhin erhalten Sie ein Ergebnis, das dem hier dargestellten entspricht:

```
us-east-1a us-east-1b
```

Jetzt erstellen Sie vier Subnetze: zwei öffentliche Subnetze für den Load Balancer und die NAT-Gateways sowie zwei private Subnetze für Ihre Anwendungsserver. Ersetzen Sie `vpc-abcd1234` durch Ihre tatsächliche VPC-ID und `us-east-1a` und `us-east-1b` durch Ihre tatsächlichen Availability Zones.

```
# Create public subnet in first AZ
aws ec2 create-subnet \
  --vpc-id vpc-abcd1234 \
  --cidr-block 10.0.0.0/24 \
  --availability-zone us-east-1a \
  --tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=PublicSubnet1}]'

# Create private subnet in first AZ
aws ec2 create-subnet \
  --vpc-id vpc-abcd1234 \
  --cidr-block 10.0.1.0/24 \
  --availability-zone us-east-1a \
  --tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=PrivateSubnet1}]'

# Create public subnet in second AZ
aws ec2 create-subnet \
  --vpc-id vpc-abcd1234 \
  --cidr-block 10.0.2.0/24 \
  --availability-zone us-east-1b \
  --tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=PublicSubnet2}]'

# Create private subnet in second AZ
aws ec2 create-subnet \
  --vpc-id vpc-abcd1234 \
  --cidr-block 10.0.3.0/24 \
  --availability-zone us-east-1b \
  --tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=PrivateSubnet2}]'
```

Jeder Befehl gibt eine Ausgabe zurück, die die Subnetz-ID enthält. Notieren Sie sich diese IDs zur Verwendung in nachfolgenden Befehlen:
+ Öffentliches Subnetz 1: `subnet-abcd1234`
+ Privates Subnetz 1: `subnet-abcd5678`
+ Öffentliches Subnetz 2: `subnet-efgh1234`
+ Privates Subnetz 2: `subnet-efgh5678`

## Erstellen und konfigurieren der Internetverbindung
<a name="create-and-configure-internet-connectivity"></a>

In diesem Abschnitt erstellen Sie ein Internet-Gateway, das die Kommunikation zwischen Ihrer VPC und dem Internet ermöglicht, und fügen es Ihrer VPC an.

```
# Create an Internet Gateway
aws ec2 create-internet-gateway --tag-specifications 'ResourceType=internet-gateway,Tags=[{Key=Name,Value=ProductionIGW}]'
```

Der Befehl gibt eine Ausgabe zurück, die die Internet-Gateway-ID enthält. Notieren Sie sich diese ID (zum Beispiel `igw-abcd1234`).

Fügen Sie den Internet-Gateway an Ihre VPC an. Ersetzen Sie `igw-abcd1234` durch Ihre tatsächliche Internet-Gateway-ID und `vpc-abcd1234` durch Ihre tatsächliche VPC-ID.

```
# Attach the Internet Gateway to the VPC
aws ec2 attach-internet-gateway --internet-gateway-id igw-abcd1234 --vpc-id vpc-abcd1234
```

Als Nächstes erstellen Sie Routing-Tabellen für Ihre öffentlichen und privaten Subnetze. Ersetzen Sie `vpc-abcd1234` durch Ihre tatsächliche VPC-ID.

```
# Create a route table for public subnets
aws ec2 create-route-table --vpc-id vpc-abcd1234 --tag-specifications 'ResourceType=route-table,Tags=[{Key=Name,Value=PublicRouteTable}]'

# Create route table for private subnet in first AZ
aws ec2 create-route-table --vpc-id vpc-abcd1234 --tag-specifications 'ResourceType=route-table,Tags=[{Key=Name,Value=PrivateRouteTable1}]'

# Create route table for private subnet in second AZ
aws ec2 create-route-table --vpc-id vpc-abcd1234 --tag-specifications 'ResourceType=route-table,Tags=[{Key=Name,Value=PrivateRouteTable2}]'
```

Jeder Befehl gibt eine Ausgabe zurück, die die ID der Routing-Tabelle enthält. Notieren Sie sich diese IDs:
+ Öffentliche Routing-Tabelle: `rtb-abcd1234`
+ Private Routing-Tabelle 1: `rtb-efgh1234`
+ Private Routing-Tabelle 2: `rtb-ijkl1234`

Fügen Sie dem Internet-Gateway in der öffentlichen Routing-Tabelle eine Route hinzu, um den Internetzugang zu aktivieren. Ersetzen Sie `rtb-abcd1234` durch Ihre tatsächliche Routing-Tabellen-ID und `igw-abcd1234` durch Ihre tatsächliche Internet-Gateway-ID.

```
# Add a route to the Internet Gateway
aws ec2 create-route --route-table-id rtb-abcd1234 --destination-cidr-block 0.0.0.0/0 --gateway-id igw-abcd1234
```

Ordnen Sie die Subnetze ihren jeweiligen Routing-Tabellen zu. Ersetzen Sie die Routing-Tabellen-IDs und die Subnetz-IDs durch Ihre tatsächlichen IDs.

```
# Associate public subnets with the public route table
aws ec2 associate-route-table --route-table-id rtb-abcd1234 --subnet-id subnet-abcd1234
aws ec2 associate-route-table --route-table-id rtb-abcd1234 --subnet-id subnet-efgh1234

# Associate private subnets with their respective route tables
aws ec2 associate-route-table --route-table-id rtb-efgh1234 --subnet-id subnet-abcd5678
aws ec2 associate-route-table --route-table-id rtb-ijkl1234 --subnet-id subnet-efgh5678
```

## Erstellen von NAT-Gateways
<a name="create-nat-gateways"></a>

Über NAT-Gateways können Instances in privaten Subnetzen eine Verbindung mit dem Internet oder anderen AWS-Services herstellen. Sie verhindern aber, dass das Internet eine Verbindung mit diesen Instances initiiert. Zuerst weisen Sie Ihren NAT-Gateways Elastic-IP-Adressen zu.

```
# Allocate Elastic IP for NAT Gateway in first AZ
aws ec2 allocate-address --domain vpc --tag-specifications 'ResourceType=elastic-ip,Tags=[{Key=Name,Value=NAT1-EIP}]'

# Allocate Elastic IP for NAT Gateway in second AZ
aws ec2 allocate-address --domain vpc --tag-specifications 'ResourceType=elastic-ip,Tags=[{Key=Name,Value=NAT2-EIP}]'
```

Jeder Befehl gibt eine Ausgabe zurück, die die Zuweisungs-ID enthält. Notieren Sie sich diese IDs:
+ EIP 1 Zuweisungs-ID: `eipalloc-abcd1234`
+ EIP 2 Zuweisungs-ID: `eipalloc-efgh1234`

Erstellen Sie NAT-Gateways in jedem öffentlichen Subnetz. Ersetzen Sie die Subnetz-IDs und die Zuweisungs-IDs durch Ihre tatsächlichen IDs.

```
# Create NAT Gateway in public subnet of first AZ
aws ec2 create-nat-gateway \
  --subnet-id subnet-abcd1234 \
  --allocation-id eipalloc-abcd1234 \
  --tag-specifications 'ResourceType=natgateway,Tags=[{Key=Name,Value=NAT-Gateway1}]'

# Create NAT Gateway in public subnet of second AZ
aws ec2 create-nat-gateway \
  --subnet-id subnet-efgh1234 \
  --allocation-id eipalloc-efgh1234 \
  --tag-specifications 'ResourceType=natgateway,Tags=[{Key=Name,Value=NAT-Gateway2}]'
```

Jeder Befehl gibt eine Ausgabe zurück, die die NAT-Gateway-ID enthält. Notieren Sie sich diese IDs:
+ NAT-Gateway 1: `nat-abcd1234`
+ NAT-Gateway 2: `nat-efgh1234`

Die Bereitstellung von NAT-Gateways dauert einige Minuten. Warten Sie, bis sie verfügbar sind, bevor Sie fortfahren. Ersetzen Sie die NAT-Gateway-IDs durch Ihre tatsächlichen IDs.

```
# Wait for NAT Gateways to be available
aws ec2 wait nat-gateway-available --nat-gateway-ids nat-abcd1234
aws ec2 wait nat-gateway-available --nat-gateway-ids nat-efgh1234
```

Fügen Sie in den privaten Routing-Tabellen Routen zu den NAT-Gateways hinzu, damit Instances in privaten Subnetzen auf das Internet zugreifen können. Ersetzen Sie die Routing-Tabellen-IDs und die NAT-Gateway-IDs durch Ihre tatsächlichen IDs.

```
# Add route to NAT Gateway 1 in private route table 1
aws ec2 create-route \
  --route-table-id rtb-efgh1234 \
  --destination-cidr-block 0.0.0.0/0 \
  --nat-gateway-id nat-abcd1234

# Add route to NAT Gateway 2 in private route table 2
aws ec2 create-route \
  --route-table-id rtb-ijkl1234 \
  --destination-cidr-block 0.0.0.0/0 \
  --nat-gateway-id nat-efgh1234
```

## Erstellen eines VPC-Endpunkts für Amazon S3
<a name="create-a-vpc-endpoint-for-amazon-s3"></a>

Ein VPC-Endpunkt für Amazon S3 ermöglicht Instances in Ihren privaten Subnetzen den Zugriff auf S3, ohne das NAT-Gateway zu nutzen. Dadurch werden die Datenübertragungskosten gesenkt und die Netzwerkleistung verbessert. Ersetzen Sie `vpc-abcd1234` durch Ihre tatsächliche VPC-ID und die Routing-Tabellen-IDs durch Ihre tatsächlichen IDs.

```
# Get the prefix list ID for S3 in your region
S3_PREFIX_LIST_ID=$(aws ec2 describe-prefix-lists --filters "Name=prefix-list-name,Values=com.amazonaws.$(aws configure get region).s3" --query 'PrefixLists[0].PrefixListId' --output text)

# Create the VPC endpoint for S3
aws ec2 create-vpc-endpoint \
  --vpc-id vpc-abcd1234 \
  --service-name com.amazonaws.$(aws configure get region).s3 \
  --route-table-ids rtb-efgh1234 rtb-ijkl1234 \
  --tag-specifications 'ResourceType=vpc-endpoint,Tags=[{Key=Name,Value=S3-Endpoint}]'
```

Der Befehl gibt eine Ausgabe zurück, die die VPC-Endpunkt-ID enthält. Notieren Sie sich diese ID (zum Beispiel `vpce-abcd1234`).

## Configure Security Groups (Sicherheitsgruppen konfigurieren)
<a name="configure-security-groups"></a>

Sicherheitsgruppen dienen als virtuelle Firewalls für Ihre Instances, um den ein- und ausgehenden Datenverkehr zu steuern. Erstellen Sie eine Sicherheitsgruppe für den Load Balancer, die eingehenden HTTP-Datenverkehr von überall zulässt. Ersetzen Sie `vpc-abcd1234` durch Ihre tatsächliche VPC-ID.

```
# Create security group for the load balancer
aws ec2 create-security-group \
  --group-name LoadBalancerSG \
  --description "Security group for the load balancer" \
  --vpc-id vpc-abcd1234 \
  --tag-specifications 'ResourceType=security-group,Tags=[{Key=Name,Value=LoadBalancerSG}]'
```

Der Befehl gibt eine Ausgabe zurück, die die Sicherheitsgruppen-ID enthält. Notieren Sie sich diese ID (zum Beispiel `sg-abcd1234`).

Lassen Sie eingehenden HTTP-Datenverkehr zum Load Balancer zu. Ersetzen Sie `sg-abcd1234` durch die tatsächliche Sicherheitsgruppen-ID Ihres Load Balancers.

```
# Allow inbound HTTP traffic from anywhere
aws ec2 authorize-security-group-ingress \
  --group-id sg-abcd1234 \
  --protocol tcp \
  --port 80 \
  --cidr 0.0.0.0/0
```

Erstellen Sie eine Sicherheitsgruppe für die Anwendungsserver, die eingehenden Datenverkehr nur vom Load Balancer zulässt. Ersetzen Sie `vpc-abcd1234` durch Ihre tatsächliche VPC-ID.

```
# Create security group for the application servers
aws ec2 create-security-group \
  --group-name AppServerSG \
  --description "Security group for the application servers" \
  --vpc-id vpc-abcd1234 \
  --tag-specifications 'ResourceType=security-group,Tags=[{Key=Name,Value=AppServerSG}]'
```

Der Befehl gibt eine Ausgabe zurück, die die Sicherheitsgruppen-ID enthält. Notieren Sie sich diese ID (zum Beispiel `sg-efgh1234`).

Lassen Sie eingehenden HTTP-Datenverkehr von der Sicherheitsgruppe des Load Balancers zu den Anwendungsservern zu. Ersetzen Sie `sg-efgh1234` durch die tatsächliche Sicherheitsgruppen-ID Ihres Anwendungsservers und `sg-abcd1234` durch die tatsächliche Sicherheitsgruppen-ID Ihres Load Balancers.

```
# Allow inbound HTTP traffic from the load balancer security group
aws ec2 authorize-security-group-ingress \
  --group-id sg-efgh1234 \
  --protocol tcp \
  --port 80 \
  --source-group sg-abcd1234
```

## Erstellen einer Startvorlage für EC2-Instances
<a name="create-a-launch-template-for-ec2-instances"></a>

Eine Startvorlage enthält die Konfigurationsinformationen zum Starten einer Instance, z. B. die AMI-ID, den Instance-Typ und die Sicherheitsgruppen. Erstellen Sie zunächst ein Benutzerdatenskript, das beim Start der Instance ausgeführt wird.

```
cat > user-data.sh << 'EOF'
#!/bin/bash
yum update -y
yum install -y httpd
systemctl start httpd
systemctl enable httpd
echo "<h1>Hello from $(hostname -f) in $(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone)</h1>" > /var/www/html/index.html
EOF
```

Codieren Sie das Benutzerdatenskript in Base64.

```
USER_DATA=$(base64 -w 0 user-data.sh)
```

Rufen Sie die ID des neuesten Amazon-Linux-2-AMI ab.

```
# Get the latest Amazon Linux 2 AMI ID
aws ec2 describe-images --owners amazon --filters "Name=name,Values=amzn2-ami-hvm-*-x86_64-gp2" "Name=state,Values=available" --query 'sort_by(Images, &CreationDate)[-1].ImageId' --output text
```

Erstellen Sie eine Startvorlage mit der AMI-ID, dem Instance-Typ, der Sicherheitsgruppe und den Benutzerdaten. Ersetzen Sie `sg-efgh1234` durch die tatsächliche Sicherheitsgruppen-ID Ihres Anwendungsservers und `$AMI_ID` und `$USER_DATA` durch die Werte, die in den vorherigen Befehlen zurückgegeben wurden.

```
# Create a launch template
aws ec2 create-launch-template \
  --launch-template-name AppServerTemplate \
  --version-description "Initial version" \
  --tag-specifications 'ResourceType=launch-template,Tags=[{Key=Name,Value=AppServerTemplate}]' \
  --launch-template-data '{
    "NetworkInterfaces": [{
      "DeviceIndex": 0,
      "Groups": ["sg-efgh1234"],
      "DeleteOnTermination": true
    }],
    "ImageId": "ami-abcd1234",
    "InstanceType": "t3.micro",
    "UserData": "IyEvYmluL2Jhc2gKeXVtIHVwZGF0ZSAteQp5dW0gaW5zdGFsbCAteSBodHRwZApzeXN0ZW1jdGwgc3RhcnQgaHR0cGQKc3lzdGVtY3RsIGVuYWJsZSBodHRwZAplY2hvICI8aDE+SGVsbG8gZnJvbSAkKGhvc3RuYW1lIC1mKSBpbiAkKGN1cmwgLXMgaHR0cDovLzE2OS4yNTQuMTY5LjI1NC9sYXRlc3QvbWV0YS1kYXRhL3BsYWNlbWVudC9hdmFpbGFiaWxpdHktem9uZSk8L2gxPiIgPiAvdmFyL3d3dy9odG1sL2luZGV4Lmh0bWw=",
    "TagSpecifications": [{
      "ResourceType": "instance",
      "Tags": [{
        "Key": "Name",
        "Value": "AppServer"
      }]
    }]
  }'
```

## Erstellen eines Load Balancers und einer Zielgruppe
<a name="create-a-load-balancer-and-target-group"></a>

Eine Zielgruppe leitet Anforderungen über das Protokoll und die Port-Nummer, die Sie angeben, an registrierte Ziele wie EC2-Instances weiter. Erstellen Sie eine Zielgruppe für Ihre Anwendungsserver. Ersetzen Sie `vpc-abcd1234` durch Ihre tatsächliche VPC-ID.

```
# Create a target group
aws elbv2 create-target-group \
  --name AppTargetGroup \
  --protocol HTTP \
  --port 80 \
  --vpc-id vpc-abcd1234 \
  --target-type instance \
  --health-check-protocol HTTP \
  --health-check-path / \
  --health-check-port traffic-port
```

Der Befehl gibt eine Ausgabe zurück, die den Zielgruppen-ARN enthält. Notieren Sie sich diesen ARN (zum Beispiel `arn:aws:elasticloadbalancing:us-east-1:123456789012:targetgroup/AppTargetGroup/abcd1234`).

Erstellen Sie einen Application Load Balancer in den öffentlichen Subnetzen. Ersetzen Sie die Subnetz- und Sicherheitsgruppen-IDs durch Ihre tatsächlichen IDs.

```
# Create a load balancer
aws elbv2 create-load-balancer \
  --name AppLoadBalancer \
  --subnets subnet-abcd1234 subnet-efgh1234 \
  --security-groups sg-abcd1234 \
  --tags Key=Name,Value=AppLoadBalancer
```

Der Befehl gibt eine Ausgabe zurück, die den Load-Balancer-ARN enthält. Notieren Sie sich diesen ARN (zum Beispiel `arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/AppLoadBalancer/abcd1234`).

Warten Sie, bis der Load Balancer aktiv ist, und fahren Sie dann fort. Ersetzen Sie `arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/AppLoadBalancer/abcd1234` durch den tatsächlichen ARN Ihres Load Balancers.

```
# Wait for load balancer to be active
aws elbv2 wait load-balancer-available \
  --load-balancer-arns arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/AppLoadBalancer/abcd1234
```

Erstellen Sie einen Listener für den Load Balancer, der HTTP-Datenverkehr an die Zielgruppe weiterleitet. Ersetzen Sie den Load-Balancer-ARN und den Zielgruppen-ARN durch Ihre tatsächlichen ARNs.

```
# Create a listener
aws elbv2 create-listener \
  --load-balancer-arn arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/AppLoadBalancer/abcd1234 \
  --protocol HTTP \
  --port 80 \
  --default-actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:us-east-1:123456789012:targetgroup/AppTargetGroup/abcd1234
```

## Erstellen einer Auto-Scaling-Gruppe
<a name="create-an-auto-scaling-group"></a>

Eine Auto-Scaling-Gruppe enthält eine Sammlung von EC2-Instances, die zur automatischen Skalierung und Verwaltung als logische Gruppierung behandelt werden. Erstellen Sie eine Auto-Scaling-Gruppe, die die Startvorlage verwendet und Instances in die privaten Subnetze platziert. Ersetzen Sie die Subnetz-IDs und den Zielgruppen-ARN durch Ihre tatsächlichen Werte.

```
# Create an Auto Scaling group
aws autoscaling create-auto-scaling-group \
  --auto-scaling-group-name AppAutoScalingGroup \
  --launch-template LaunchTemplateName=AppServerTemplate,Version='$Latest' \
  --min-size 2 \
  --max-size 4 \
  --desired-capacity 2 \
  --vpc-zone-identifier "subnet-abcd5678,subnet-efgh5678" \
  --target-group-arns arn:aws:elasticloadbalancing:us-east-1:123456789012:targetgroup/AppTargetGroup/abcd1234 \
  --health-check-type ELB \
  --health-check-grace-period 300 \
  --tags Key=Name,Value=AppServer,PropagateAtLaunch=true
```

## Testen Sie Ihre Konfiguration
<a name="test-your-configuration"></a>

Nachdem die Auto-Scaling-Gruppe Instances gestartet hat und diese die Zustandsprüfungen bestanden haben, können Sie Ihren Load Balancer testen. Rufen Sie den DNS-Namen des Load Balancers ab. Ersetzen Sie den Load-Balancer-ARN durch Ihren tatsächlichen ARN.

```
# Get the DNS name of the load balancer
aws elbv2 describe-load-balancers \
  --load-balancer-arns arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/AppLoadBalancer/abcd1234 \
  --query "LoadBalancers[0].DNSName" \
  --output text
```

Verwenden Sie curl, um die Anwendung mit dem Namen des Load Balancers zu testen.

```
curl http://LoadBalancerName
```

Wenn Sie die Seite mehrmals aktualisieren, sollten Sie Antworten von verschiedenen Instances in verschiedenen Availability Zones sehen.

## Bereinigen von Ressourcen
<a name="clean-up-resources"></a>

Wenn Sie mit diesem Tutorial fertig sind, sollten Sie alle Ressourcen löschen, damit keine weiteren Gebühren anfallen. Ersetzen Sie alle IDs durch Ihre tatsächlichen Ressourcen-IDs.

```
# Delete the Auto Scaling group
aws autoscaling delete-auto-scaling-group \
  --auto-scaling-group-name AppAutoScalingGroup \
  --force-delete

# Wait for the Auto Scaling group to be deleted
sleep 60

# Delete the load balancer
aws elbv2 delete-load-balancer \
  --load-balancer-arn arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/AppLoadBalancer/abcd1234

# Wait for the load balancer to be deleted
sleep 30

# Delete the target group
aws elbv2 delete-target-group \
  --target-group-arn arn:aws:elasticloadbalancing:us-east-1:123456789012:targetgroup/AppTargetGroup/abcd1234

# Delete the launch template
aws ec2 delete-launch-template \
  --launch-template-name AppServerTemplate

# Delete the NAT Gateways
aws ec2 delete-nat-gateway --nat-gateway-id nat-abcd1234
aws ec2 delete-nat-gateway --nat-gateway-id nat-efgh1234

# Wait for the NAT Gateways to be deleted
sleep 90

# Release the Elastic IPs
aws ec2 release-address --allocation-id eipalloc-abcd1234
aws ec2 release-address --allocation-id eipalloc-efgh1234

# Delete the VPC endpoint
aws ec2 delete-vpc-endpoints --vpc-endpoint-ids vpce-abcd1234

# Wait for security group dependencies to clear
sleep 30

# Delete the security groups
aws ec2 delete-security-group --group-id sg-efgh1234
aws ec2 delete-security-group --group-id sg-abcd1234

# Detach the Internet Gateway
aws ec2 detach-internet-gateway --internet-gateway-id igw-abcd1234 --vpc-id vpc-abcd1234

# Delete the Internet Gateway
aws ec2 delete-internet-gateway --internet-gateway-id igw-abcd1234

# Delete the route tables
aws ec2 delete-route-table --route-table-id rtb-efgh1234
aws ec2 delete-route-table --route-table-id rtb-ijkl1234
aws ec2 delete-route-table --route-table-id rtb-abcd1234

# Delete the subnets
aws ec2 delete-subnet --subnet-id subnet-abcd1234
aws ec2 delete-subnet --subnet-id subnet-efgh1234
aws ec2 delete-subnet --subnet-id subnet-abcd5678
aws ec2 delete-subnet --subnet-id subnet-efgh5678

# Delete the VPC
aws ec2 delete-vpc --vpc-id vpc-abcd1234
```

## Nächste Schritte
<a name="next-steps"></a>

Nachdem Sie eine VPC mit privaten Subnetzen und NAT-Gateways erstellt haben, können Sie sich die folgenden Themen ansehen:
+ [Security best practices for your VPC](vpc-security-best-practices.md)
+ [Protokollieren von IP-Datenverkehr mit VPC Flow Logs](flow-logs.md)
+ [Skalierungsrichtlinien für Auto-Scaling-Gruppen](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-scaling-simple-step.html)
+ [Zustandsprüfungen für Load-Balancer-Zielgruppen](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/target-group-health-checks.html)