

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.

# Verwendung AWS CodeBuild mit Amazon Virtual Private Cloud
<a name="vpc-support"></a>

In der Regel AWS CodeBuild kann nicht auf Ressourcen in einer VPC zugegriffen werden. Um den Zugriff zu aktivieren, müssen Sie in Ihrer CodeBuild Projektkonfiguration zusätzliche VPC-spezifische Konfigurationsinformationen angeben. Dazu gehören die VPC-ID, das VPC-Subnetz IDs und die VPC-Sicherheitsgruppe. IDs VPC-fähige Builds können dann auf Ressourcen in Ihrer VPC zugreifen. Weitere Informationen zur Einrichtung einer VPC in Amazon VPC finden Sie im [Amazon VPC-Benutzerhandbuch](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Introduction.html).

**Topics**
+ [Anwendungsfälle](#use-cases)
+ [Bewährte Methoden für VPCs](#best-practices-for-vpcs)
+ [Einschränkungen von VPCs](#vpc-limitations)
+ [Erlauben Sie Amazon VPC-Zugriff in Ihren Projekten CodeBuild](enabling-vpc-access-in-projects.md)
+ [Beheben Sie Probleme mit Ihrem VPC-Setup](troubleshooting-vpc.md)
+ [Verwenden von VPC-Endpunkten](use-vpc-endpoints-with-codebuild.md)
+ [Verwendung AWS CodeBuild mit einem verwalteten Proxyserver](run-codebuild-in-managed-proxy-server.md)
+ [Verwendung AWS CodeBuild mit einem Proxy-Server](use-proxy-server.md)
+ [CloudFormation VPC-Vorlage](cloudformation-vpc-template.md)

## Anwendungsfälle
<a name="use-cases"></a>

Die VPC-Konnektivität von AWS CodeBuild Builds ermöglicht:
+ Führen Sie Integrationstests von Ihrem Build aus anhand von Daten in einer Amazon RDS-Datenbank durch, die in einem privaten Subnetz isoliert ist.
+ Fragen Sie Daten in einem ElastiCache Amazon-Cluster direkt aus Tests ab.
+ Interagieren Sie mit internen Webservices, die auf Amazon EC2, Amazon ECS gehostet werden, oder mit Services, die internes Elastic Load Balancing verwenden.
+ Abhängigkeiten von selbst gehosteten, internen Artefakt-Repositorys, wie PyPI für Python, Maven für Java und npm für Node.js abzurufen,
+ Greifen Sie auf Objekte in einem S3-Bucket zu, der so konfiguriert ist, dass der Zugriff nur über einen Amazon VPC-Endpunkt möglich ist.
+ externe Webservices, die feste IP-Adressen benötigen, über die elastische IP-Adresse des NAT-Gateways oder der NAT-Instance abzufragen, die mit Ihrem Subnetz verknüpft ist.

Ihre Builds können auf jede Ressource zugreifen, die in Ihrer VPC gehostet wird.

## Bewährte Methoden für VPCs
<a name="best-practices-for-vpcs"></a>

Verwenden Sie diese Checkliste, wenn Sie eine VPC einrichten, mit der Sie arbeiten möchten. CodeBuild
+ Richten Sie Ihre VPC mit öffentlichen und privaten Subnetzen und einem NAT-Gateway ein. Das NAT-Gateway muss sich in einem öffentlichen Subnetz befinden. Weitere Informationen finden Sie unter [VPC mit öffentlichen und privaten Subnetzen (NAT)](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Scenario2.html) im *Amazon VPC Benutzerhandbuch*.
**Wichtig**  
Sie benötigen ein NAT-Gateway oder eine NAT-Instance zur Verwendung CodeBuild mit Ihrer VPC, sodass öffentliche Endpunkte erreicht werden CodeBuild können (z. B. um CLI-Befehle auszuführen, wenn Builds ausgeführt werden). Sie können das Internet-Gateway nicht anstelle eines NAT-Gateways oder einer NAT-Instance verwenden, da die Zuweisung von Elastic IP-Adressen zu den von ihm erstellten Netzwerkschnittstellen CodeBuild nicht unterstützt wird und Amazon EC2 die automatische Zuweisung einer öffentlichen IP-Adresse für Netzwerkschnittstellen, die außerhalb von Amazon EC2 EC2-Instance-Starts erstellt wurden, nicht unterstützt. 
+ Binden Sie mehrere Availability Zones in Ihre VPC ein.
+ Stellen Sie sicher, dass für Ihre Sicherheitsgruppen kein eingehender (eingehender) Datenverkehr zu Ihren Builds zugelassen ist. CodeBuild hat keine spezifischen Anforderungen für ausgehenden Datenverkehr, aber Sie müssen den Zugriff auf alle Internetressourcen zulassen, die für Ihren Build erforderlich sind, z. GitHub B. Amazon S3.

  Weitere Informationen finden Sie unter [Sicherheitsgruppenregeln](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#SecurityGroupRules) im *Amazon VPC-Benutzerhandbuch*. 
+ Richten Sie für Ihre Builds separate Subnetze ein.
+ Wenn Sie Ihre CodeBuild Projekte für den Zugriff auf Ihre VPC einrichten, wählen Sie nur private Subnetze. 

Weitere Informationen zur Einrichtung einer VPC in Amazon VPC finden Sie im [Amazon VPC-Benutzerhandbuch](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Introduction.html).

Weitere Informationen CloudFormation zur Konfiguration einer VPC für die Verwendung der CodeBuild VPC-Funktion finden Sie unter. [CloudFormation VPC-Vorlage](cloudformation-vpc-template.md)

## Einschränkungen von VPCs
<a name="vpc-limitations"></a>
+ VPC-Konnektivität von CodeBuild wird für Shared VPCs nicht unterstützt.

# Erlauben Sie Amazon VPC-Zugriff in Ihren Projekten CodeBuild
<a name="enabling-vpc-access-in-projects"></a>

Nehmen Sie diese Einstellungen in Ihre VPC-Konfiguration auf:
+ Wählen Sie für **VPC-ID** die VPC-ID aus, die verwendet wird. CodeBuild 
+ Wählen Sie für **Subnetze** ein privates Subnetz mit NAT-Übersetzung aus, das Routen zu den von verwendeten Ressourcen enthält oder Routen zu diesen enthält. CodeBuild
+ Wählen Sie für **Sicherheitsgruppen** die Sicherheitsgruppen aus, die CodeBuild den Zugriff auf Ressourcen in der ermöglichen. VPCs



Informationen über das Verwenden der Konsole zum Erstellen eines Build-Projekts finden Sie unter [Erstellen Sie ein Build-Projekt (Konsole)](create-project.md#create-project-console). Wenn Sie Ihr CodeBuild Projekt in **VPC** erstellen oder ändern, wählen Sie Ihre VPC-ID, Subnetze und Sicherheitsgruppen aus. 



Informationen zur Verwendung von AWS CLI zum Erstellen eines Build-Projekts finden Sie unter. [Erstellen eines Build-Projekts (AWS CLI)](create-project.md#create-project-cli) Wenn Sie with verwenden CodeBuild, muss der AWS CLI Servicerolle, die für CodeBuild die Interaktion mit Diensten im Namen des IAM-Benutzers verwendet wird, eine Richtlinie angehängt sein. Weitere Informationen finden Sie unter [Erlauben Sie den CodeBuild Zugriff auf AWS Dienste, die für die Erstellung einer VPC-Netzwerkschnittstelle erforderlich sind](auth-and-access-control-iam-identity-based-access-control.md#customer-managed-policies-example-create-vpc-network-interface).

Das *vpcConfig* Objekt sollte Ihr *vpcId**securityGroupIds*, und *subnets* enthalten.
+ *vpcId*: Erforderlich. Die VPC-ID, die CodeBuild verwendet wird. Führen Sie diesen Befehl aus, um eine Liste aller Amazon VPC IDs in Ihrer Region abzurufen:

  ```
  aws ec2 describe-vpcs
  ```
+ *subnets*: Erforderlich. Das Subnetz IDs , das Ressourcen enthält, die von CodeBuild verwendet werden. Führen Sie diesen Befehl aus, um Folgendes zu erhalten: IDs

  ```
  aws ec2 describe-subnets --filters "Name=vpc-id,Values=<vpc-id>" --region us-east-1
  ```
**Anmerkung**  
Ersetzen Sie `us-east-1` durch Ihre Region.
+ *securityGroupIds*: Erforderlich. Die Sicherheitsgruppe, die von IDs verwendet wird CodeBuild , um den Zugriff auf Ressourcen in der zu ermöglichen VPCs. Führen Sie diesen Befehl aus, um diese zu erhalten IDs:

  ```
  aws ec2 describe-security-groups --filters "Name=vpc-id,Values=<vpc-id>" --region us-east-1
  ```
**Anmerkung**  
Ersetzen Sie `us-east-1` durch Ihre Region.

# Beheben Sie Probleme mit Ihrem VPC-Setup
<a name="troubleshooting-vpc"></a>

Verwenden Sie die in der Fehlermeldung angegebenen Informationen, um Probleme zu identifizieren, zu diagnostizieren und zu beheben.

Im Folgenden finden Sie einige Leitlinien, die Ihnen bei der Behebung eines häufig auftretenden CodeBuild-VPC-Fehlers helfen: `Build does not have internet connectivity. Please check subnet network configuration`. 

1. [Stellen Sie sicher, dass Ihr Internet-Gateway an die VPC angeschlossen ist.](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html#Add_IGW_Attach_Gateway).

1. [Stellen Sie sicher, dass die Routing-Tabelle für Ihr öffentliches Subnetz auf das Internet-Gateway verweist.](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html#route-tables-internet-gateway).

1. [Stellen Sie sicher, dass Ihr Netzwerk den Datenverkehr ACLs zulässt](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#SecurityGroupRules).

1. [Stellen Sie sicher, dass Ihre Sicherheitsgruppen den Datenverkehr zulassen](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#SecurityGroupRules).

1. [Fehlerbehebung für Ihr NAT-Gateway](https://docs.aws.amazon.com/vpc/latest/userguide/VPC-nat-gateway.html#nat-gateway-troubleshooting).

1. [Vergewissern Sie sich, dass die Routing-Tabelle für private Subnetze auf das NAT-Gateway verweist.](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html#route-tables-nat).

1. Stellen Sie sicher, dass die Servicerolle, die CodeBuild für die Interaktion mit Diensten im Namen des IAM-Benutzers verwendet wird, über die in [dieser Richtlinie](https://docs.aws.amazon.com/codebuild/latest/userguide/auth-and-access-control-iam-identity-based-access-control.html#customer-managed-policies-example-create-vpc-network-interface) festgelegten Berechtigungen verfügt. Weitere Informationen finden Sie unter [Erlauben CodeBuild Sie die Interaktion mit anderen Diensten AWS](setting-up-service-role.md). 

   Wenn CodeBuild Berechtigungen fehlen, erhalten Sie möglicherweise eine Fehlermeldung, die besagt,`Unexpected EC2 error: UnauthorizedOperation`. Dieser Fehler kann auftreten, wenn Sie CodeBuild nicht über die Amazon EC2 EC2-Berechtigungen verfügen, die für die Arbeit mit einer VPC erforderlich sind.

# Verwenden von VPC-Endpunkten
<a name="use-vpc-endpoints-with-codebuild"></a>

Sie können die Sicherheit Ihrer Builds verbessern, indem Sie die Verwendung eines VPC-Endpunkts mit Schnittstelle konfigurieren AWS CodeBuild . Schnittstellenendpunkte basieren auf einer Technologie PrivateLink, mit der Sie privat auf Amazon EC2 zugreifen und CodeBuild private IP-Adressen verwenden können. PrivateLink schränkt den gesamten Netzwerkverkehr zwischen Ihren verwalteten Instances und Amazon EC2 auf das Amazon-Netzwerk ein. CodeBuild (Verwaltete Instances haben keinen Zugriff auf das Internet.) Zudem benötigen Sie kein Internet-Gateway, kein NAT-Gerät und kein virtuelles privates Gateway. Es ist nicht erforderlich, PrivateLink zu konfigurieren, aber wir empfehlen dies. Weitere Informationen zu PrivateLink VPC-Endpunkten finden Sie unter [Was ist? AWS PrivateLink](https://docs.aws.amazon.com/vpc/latest/privatelink/what-is-privatelink.html) .

## Vorbereitungen für das Erstellen von VPC-Endpunkten
<a name="vpc-endpoints-before-you-begin"></a>

 Bevor Sie VPC-Endpoints für konfigurieren AWS CodeBuild, sollten Sie die folgenden Einschränkungen und Einschränkungen beachten. 

**Anmerkung**  
 Verwenden Sie ein [NAT-Gateway](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_NAT_Instance.html), wenn Sie es CodeBuild mit AWS Services verwenden möchten, die keine Amazon PrivateLink VPC-Verbindungen unterstützen. 
+  VPC-Endpunkte unterstützen von Amazon bereitgestelltes DNS nur über Amazon Route 53. Wenn Sie Ihre eigene DNS verwenden möchten, können Sie die bedingte DNS-Weiterleitung nutzen. Weitere Informationen finden Sie unter [DHCP-Optionssätze](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_DHCP_Options.html) im *Amazon-VPC-Benutzerhandbuch*. 
+  VPC-Endpunkte unterstützen derzeit keine regionsübergreifenden Anforderungen. Stellen Sie sicher, dass Sie Ihren Endpunkt in derselben AWS Region erstellen wie alle S3-Buckets, die Ihre Build-Eingabe und -Ausgabe speichern. Sie können die Amazon S3 S3-Konsole oder den [get-bucket-location](https://docs.aws.amazon.com/cli/latest/reference/s3api/get-bucket-location.html)Befehl verwenden, um den Standort Ihres Buckets zu ermitteln. Verwenden Sie einen regionsspezifischen Amazon S3 S3-Endpunkt, um auf Ihren Bucket zuzugreifen (z. B.`<bucket-name>.s3-us-west-2.amazonaws.com`). Weitere Informationen zu regionsspezifischen Endpunkten für Amazon S3 finden Sie unter [Amazon Simple Storage Service](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) im. *Allgemeine Amazon Web Services-Referenz* Wenn Sie das verwenden, AWS CLI um Anfragen an Amazon S3 zu stellen, setzen Sie Ihre Standardregion auf dieselbe Region, in der Ihr Bucket erstellt wurde, oder verwenden Sie den `--region` Parameter in Ihren Anfragen.

## VPC-Endpoints erstellen für CodeBuild
<a name="creating-vpc-endpoints"></a>

Folgen Sie den Anweisungen unter [Schnittstellendpunkt erstellen](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html#create-interface-endpoint), um den Endpunkt `com.amazonaws.region.codebuild` zu erstellen. Dies ist ein VPC-Endpunkt für AWS CodeBuild. 

![\[Die VPC-Endpunktkonfiguration.\]](http://docs.aws.amazon.com/de_de/codebuild/latest/userguide/images/vpc-endpoint.png)


 *region*stellt die Regionskennung für eine AWS Region dar, die von unterstützt wird CodeBuild, z. B. `us-east-2` für die Region USA Ost (Ohio). Eine Liste der unterstützten AWS Regionen finden Sie [CodeBuild](https://docs.aws.amazon.com/general/latest/gr/rande.html#codebuild_region)in der * AWS Allgemeinen Referenz*. Der Endpunkt ist bereits mit der Region gefüllt, die Sie bei der Anmeldung angegeben haben. AWS Wenn Sie Ihre Region ändern, wird der VPC-Endpunkt entsprechend aktualisiert. 

## Erstellen Sie eine VPC-Endpunktrichtlinie für CodeBuild
<a name="creating-vpc-endpoint-policy"></a>

 Sie können eine Richtlinie für Amazon VPC-Endpunkte erstellen, für die Sie AWS CodeBuild Folgendes angeben können:
+ Prinzipal, der die Aktionen ausführen kann.
+ Aktionen, die ausgeführt werden können
+ Ressourcen, für die Aktionen ausgeführt werden können 

Die folgende Beispielrichtlinie gibt an, dass alle Prinzipale ausschließlich Builds für das Projekt `project-name` starten und einsehen können. 

```
{
    "Statement": [
        {
            "Action": [
                "codebuild:ListBuildsForProject",
                "codebuild:StartBuild",
                "codebuild:BatchGetBuilds"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:codebuild:region-ID:account-ID:project/project-name",
            "Principal": "*"
        }
    ]
}
```

 Weitere Informationen finden Sie unter [Steuerung des Zugriffs auf Services mit VPC-Endpunkten](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-access.html) im *Amazon-VPC-Benutzerhandbuch*. 

# Verwendung AWS CodeBuild mit einem verwalteten Proxyserver
<a name="run-codebuild-in-managed-proxy-server"></a>

 Um Flotten mit AWS CodeBuild reservierter Kapazität auf einem verwalteten Proxyserver auszuführen, müssen Sie den Proxyserver so konfigurieren, dass er mithilfe von Proxyregeln Datenverkehr zu und von externen Websites zulässt oder verweigert. Beachten Sie, dass das Ausführen von Flotten mit reservierter Kapazität auf einem verwalteten Proxyserver für VPC, Windows oder macOS nicht unterstützt wird.

**Wichtig**  
Je nachdem, wie lange eine Proxykonfiguration in der Flotte vorhanden ist, fallen zusätzliche Kosten an. Weitere Informationen finden Sie unter [https://aws.amazon.com/codebuild/Preise/.](https://aws.amazon.com/codebuild/pricing/)

**Topics**
+ [Konfigurieren Sie eine verwaltete Proxykonfiguration für Flotten mit reservierter Kapazität](#run-codebuild-in-managed-proxy-server-configure)
+ [Betreiben Sie eine Flotte mit CodeBuild reservierter Kapazität](#use-managed-server-run-acb-fleet)

## Konfigurieren Sie eine verwaltete Proxykonfiguration für Flotten mit reservierter Kapazität
<a name="run-codebuild-in-managed-proxy-server-configure"></a>

 Um einen verwalteten Proxyserver für Ihre Flotte mit reservierter Kapazität zu konfigurieren, müssen Sie diese Funktion aktivieren, wenn Sie Ihre Flotte in Ihrer Konsole erstellen oder den AWS CLI verwenden. Es gibt mehrere Eigenschaften, die Sie definieren müssen:

**Definieren Sie Proxykonfigurationen — optional**  
Proxykonfigurationen, die die Netzwerkzugriffskontrolle auf Ihre reservierten Kapazitätsinstanzen anwenden.

**Standardverhalten**  
Definiert das Verhalten des ausgehenden Datenverkehrs.    
**Sobald Sie die Details auf dieser Seite überprüft haben, klicken Sie auf**  
Lässt standardmäßig ausgehenden Verkehr zu allen Zielen zu.  
**Deny (Verweigern)**  
Verweigert standardmäßig ausgehenden Verkehr an alle Ziele.

**Proxy-Regeln**  
Gibt Zieldomänen an, auf die die Netzwerkzugriffskontrolle beschränkt werden soll.

Anweisungen zum Definieren von Proxykonfigurationen in Ihrer Konsole [Erstellen Sie eine Flotte mit reservierter Kapazität](fleets.md#fleets.how-to) finden Sie unter. Um Proxykonfigurationen mithilfe von zu definieren AWS CLI, können Sie dies tun, indem Sie die folgende JSON-Syntax ändern und Ihre Ergebnisse speichern:

```
"proxyConfiguration": {
    "defaultBehavior": "ALLOW_ALL" | "DENY_ALL",
    "orderedProxyRules": [
        {
            "type": "DOMAIN" | "IP",
            "effect": "ALLOW" | "DENY",
            "entities": [
                "destination"
            ]
        }
    ]
}
```

Ihre JSON-Datei könnte wie folgt aussehen:

```
"proxyConfiguration": {
    "defaultBehavior": "DENY_ALL",
    "orderedProxyRules": [
        {
            "type": "DOMAIN",
            "effect": "ALLOW",
            "entities": [
                "github.com"
            ]
        }
    ]
}
```

## Betreiben Sie eine Flotte mit CodeBuild reservierter Kapazität
<a name="use-managed-server-run-acb-fleet"></a>

 Wenn Sie Flotten mit AWS CodeBuild reservierter Kapazität auf Ihrem verwalteten Proxyserver ausführen, CodeBuild werden dessen `HTTP_PROXY` und die `HTTPS_PROXY` Umgebungsvariablen automatisch mit den verwalteten Proxyadressen festgelegt. Wenn Ihre Abhängigkeitssoftware eine eigene Konfiguration hat und sich nicht an die Umgebungsvariablen hält, können Sie auf diese Werte verweisen und Ihre Softwarekonfiguration in Ihren Build-Befehlen aktualisieren, um Ihren Build-Verkehr ordnungsgemäß über den verwalteten Proxy weiterzuleiten. Weitere Informationen erhalten Sie unter [Erstellen Sie ein Build-Projekt in AWS CodeBuild](create-project.md) und [Ändern Sie die Build-Projekteinstellungen in AWS CodeBuild](change-project.md).

# Verwendung AWS CodeBuild mit einem Proxy-Server
<a name="use-proxy-server"></a>

 Sie können es AWS CodeBuild zusammen mit einem Proxyserver verwenden, um den HTTP- und HTTPS-Verkehr zum und vom Internet zu regulieren. Um CodeBuild mit einem Proxyserver zu laufen, installieren Sie einen Proxyserver in einem öffentlichen Subnetz und CodeBuild in einem privaten Subnetz in einer VPC. 

Es gibt zwei Hauptanwendungsfälle für die Ausführung CodeBuild in einem Proxyserver: 
+  Damit entfällt die Nutzung eines NAT-Gateways oder einer NAT-Instance in Ihrer VPC. 
+  Damit können Sie angeben, auf URLs welche Instanzen auf dem Proxyserver zugreifen können und URLs auf welche der Proxyserver den Zugriff verweigert.

 Sie können es CodeBuild mit zwei Arten von Proxyservern verwenden. Bei beiden läuft der Proxyserver in einem öffentlichen Subnetz und CodeBuild in einem privaten Subnetz. 
+  **Expliziter Proxy**: Wenn Sie einen expliziten Proxyserver verwenden, müssen Sie die `HTTPS_PROXY` Umgebungsvariablen`HTTP_PROXY`, und auf CodeBuild Projektebene konfigurieren`NO_PROXY`. Weitere Informationen erhalten Sie unter [Ändern Sie die Build-Projekteinstellungen in AWS CodeBuild](change-project.md) und [Erstellen Sie ein Build-Projekt in AWS CodeBuild](create-project.md). 
+  **Transparenter Proxy**: Wenn Sie einen transparenten Proxy-Server verwenden, ist keine besondere Konfiguration erforderlich. 

**Topics**
+ [Richten Sie die Komponenten ein, die für die Ausführung auf CodeBuild einem Proxyserver erforderlich sind](use-proxy-server-transparent-components.md)
+ [CodeBuild Auf einem expliziten Proxyserver ausführen](run-codebuild-in-explicit-proxy-server.md)
+ [Führen Sie es CodeBuild auf einem transparenten Proxyserver aus](run-codebuild-in-transparent-proxy-server.md)
+ [Ausführung eines Paket-Managers und anderer Tools in einem Proxy-Server](use-proxy-server-tools.md)

# Richten Sie die Komponenten ein, die für die Ausführung auf CodeBuild einem Proxyserver erforderlich sind
<a name="use-proxy-server-transparent-components"></a>

 Sie benötigen diese Komponenten, um auf AWS CodeBuild einem transparenten oder expliziten Proxyserver ausgeführt zu werden: 
+  Eine VPC. 
+  Ein öffentliches Subnetz in Ihrer VPC für den Proxy-Server 
+  Ein privates Subnetz in Ihrer VPC für CodeBuild. 
+  Ein Internet-Gateway, das die Kommunikation zwischen der VPC und dem Internet ermöglicht 

 Das folgende Diagramm zeigt, wie die Komponenten interagieren. 

![\[Das Diagramm zeigt, wie die Komponenten interagieren.\]](http://docs.aws.amazon.com/de_de/codebuild/latest/userguide/images/codebuild-proxy-transparent.png)


## Einrichten eines VPC, von Subnetzen und eines Netzwerk-Gateways
<a name="use-proxy-server-transparent-setup"></a>

 Die folgenden Schritte sind für die Ausführung auf AWS CodeBuild einem transparenten oder expliziten Proxyserver erforderlich. 

1. Erstellen Sie eine VPC. Weitere Informationen finden Sie unter [Erstellen einer VPC](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html#Create-VPC) im *Amazon-VPC-Benutzerhandbuch*.

1. Erstellen Sie zwei Subnetze in Ihrer VPC. Eines ist ein öffentliches Subnetz mit dem Namen `Public Subnet`, in dem der Proxy-Server ausgeführt wird. Das andere ist ein privates Subnetz mit dem Namen, `Private Subnet` in dem CodeBuild ausgeführt wird. 

   Informationen hierzu finden Sie im Abschnitt [Erstellen eines Subnetzes in Ihrer VPC](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html#AddaSubnet).

1.  Erstellen Sie ein Internet-Gateway und ordnen Sie es Ihrer VPC zu. Weitere Informationen finden Sie unter [Erstellen und Anfügen eines Internet-Gateways](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html#Add_IGW_Attach_Gateway). 

1.  Fügen Sie eine Regel zu der Standard-Routing-Tabelle hinzu, die ausgehenden Datenverkehr von der VPC (0.0.0.0/0) an das Internet-Gateway weiterleitet. Informationen hierzu finden Sie unter [Hinzufügen und Entfernen von Routen zu und aus einer Routing-Tabelle](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Route_Tables.html#AddRemoveRoutes). 

1.  Fügen Sie eine Regel zu der Standard-Sicherheitsgruppe Ihrer VPC hinzu, die eingehenden SSH-Datenverkehr (TCP 22) von Ihrer VPC (0.0.0.0/0) zulässt. 

1.  Folgen Sie den Anweisungen unter [Starten einer Instance mithilfe des Launch-Instance-Assistenten](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/launching-instance.html) im *Amazon EC2 EC2-Benutzerhandbuch*, um eine Amazon Linux-Instance zu starten. Wählen Sie bei Ausführung des Assistenten die folgenden Optionen aus: 
   +  **Wählen Sie unter Choose an Instance Type** ein Amazon Linux Amazon Machine Image (AMI) aus. 
   +  Wählen Sie unter **Subnet (Subnetz)** das öffentliche Subnetz aus, das Sie zuvor in diesem Thema erstellt haben. Wenn Sie den vorgeschlagenen Namen verwendet haben, heißt dieses Subnetz **Public Subnet (Öffentliches Subnetz)**. 
   +  Klicken Sie in **Auto-assign Public IP** auf **Enable**. 
   +  Wählen Sie auf der Seite **Configure Security Group (Sicherheitsgruppe konfigurieren)** für **Assign a security group (Sicherheitsgruppe zuweisen)** die Option **Select an existing security group (Vorhandene Sicherheitsgruppe auswählen)** aus. Wählen Sie nun die Standard-Sicherheitsgruppe aus. 
   +  Nachdem Sie **Launch (Starten)** ausgewählt haben, wählen Sie ein vorhandenes Schlüsselpaar aus oder erstellen Sie ein neues. 

    Wählen Sie für alle anderen Optionen die Standardeinstellungen aus. 

1.  Nachdem Ihre EC2-Instance ausgeführt wurde, deaktivieren Sie die source/destination Prüfungen. Weitere Informationen finden Sie unter [Deaktivierung von Source/Destination Prüfungen](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_NAT_Instance.html#EIP_Disable_SrcDestCheck) im *Amazon VPC-Benutzerhandbuch*. 

1.  Erstellen Sie eine Routing-Tabelle in Ihrer VPC. Fügen Sie eine Regel zu der Routing-Tabelle hinzu, die für das Internet bestimmten Datenverkehr zu Ihrem Proxy-Server leitet. Ordnen Sie diese Routing-Tabelle Ihrem privaten Subnetz zu. Dies ist erforderlich, damit ausgehende Anfragen von Instances in Ihrem privaten Subnetz, in denen CodeBuild ausgeführt wird, immer über den Proxy-Server weitergeleitet werden. 

## Installieren und Konfigurieren eines Proxy-Servers
<a name="use-proxy-server-squid-install"></a>

 Es stehen viele Proxy-Server zur Auswahl. Ein Open-Source-Proxyserver, Squid, wird hier verwendet, um zu demonstrieren, wie er auf einem Proxyserver AWS CodeBuild läuft. Dasselbe Konzept gilt auch für andere Proxy-Server. 

 Verwenden Sie für die Installation von Squid ein yum-Repository. Führen Sie dazu die folgenden Befehle aus: 

```
sudo yum update -y
sudo yum install -y squid
```

 Nachdem Sie Squid installiert haben, bearbeiten Sie die `squid.conf`-Datei mit den Anweisungen weiter unten in diesem Thema. 

## Konfigurieren von Squid für HTTPS-Datenverkehr
<a name="use-proxy-server-squid-configure-https"></a>

 Bei HTTPS ist der HTTP-Datenverkehr in einer Transport Layer Security (TLS)-Verbindung gekapselt. Squid verwendet eine Funktion, die aufgerufen wird [SslPeekAndSplice](https://wiki.squid-cache.org/Features/SslPeekAndSplice), um die Server Name Indication (SNI) aus der TLS-Initiation abzurufen, die den angeforderten Internet-Host enthält. Dies ist erforderlich, damit Squid den HTTPS-Datenverkehr nicht entschlüsseln muss. Für die Aktivierung SslPeekAndSplice benötigt Squid ein Zertifikat. Erstellen Sie dieses Zertifikat mit OpenSSL: 

```
sudo mkdir /etc/squid/ssl
cd /etc/squid/ssl
sudo openssl genrsa -out squid.key 2048
sudo openssl req -new -key squid.key -out squid.csr -subj "/C=XX/ST=XX/L=squid/O=squid/CN=squid"
sudo openssl x509 -req -days 3650 -in squid.csr -signkey squid.key -out squid.crt
sudo cat squid.key squid.crt | sudo tee squid.pem
```

**Anmerkung**  
 Für HTTP muss Squid nicht konfiguriert werden. Von allen HTTP/1.1-Anforderungsnachrichten kann die Funktion das Host-Header-Feld abrufen, das den angeforderten Internet-Host angibt. 

# CodeBuild Auf einem expliziten Proxyserver ausführen
<a name="run-codebuild-in-explicit-proxy-server"></a>

 Für die Ausführung AWS CodeBuild auf einem expliziten Proxyserver müssen Sie den Proxyserver so konfigurieren, dass er Datenverkehr zu und von externen Websites zulässt oder verweigert, und dann die `HTTPS_PROXY` Umgebungsvariablen `HTTP_PROXY` und konfigurieren. 

**Topics**
+ [Konfigurieren von Squid als expliziter Proxy-Server](#use-proxy-server-explicit-squid-configure)
+ [Erstellen Sie ein Projekt CodeBuild](#use-proxy-server-explicit-create-acb-project)
+ [Expliziter Proxy-Server – `squid.conf`-Beispieldatei](#use-proxy-server-explicit-sample-squid-conf)

## Konfigurieren von Squid als expliziter Proxy-Server
<a name="use-proxy-server-explicit-squid-configure"></a>

 Um Squid als expliziten Proxy-Server zu konfigurieren, müssen Sie die folgenden Änderungen an der Datei `/etc/squid/squid.conf` vornehmen: 
+  Entfernen Sie die folgenden Standard-ACL-Regeln (ACL = Access Control List, Zugriffskontrollliste). 

  ```
  acl localnet src 10.0.0.0/8     
  acl localnet src 172.16.0.0/12  
  acl localnet src 192.168.0.0/16 
  acl localnet src fc00::/7       
  acl localnet src fe80::/10
  ```

   Fügen Sie anstelle der von Ihnen entfernten Standard-ACL-Regeln Folgendes hinzu. Die erste Zeile lässt Anforderungen von Ihrer VPC zu. Die nächsten beiden Zeilen gewähren Ihrem Proxyserver Zugriff auf ein Ziel URLs , das möglicherweise von verwendet wird AWS CodeBuild. Bearbeiten Sie den regulären Ausdruck in der letzten Zeile, um S3-Buckets oder ein CodeCommit Repository in einer AWS Region anzugeben. Beispiel:
  + Wenn Ihre Quelle Amazon S3 ist, verwenden Sie den Befehl, **acl download\$1src dstdom\$1regex .\$1s3\$1.us-west-1\$1.amazonaws\$1.com** um Zugriff auf S3-Buckets in der `us-west-1` Region zu gewähren.
  +  Wenn Ihre Quelle ist AWS CodeCommit, verwenden Sie diese `git-codecommit.<your-region>.amazonaws.com` Option, um einer AWS Zulassungsliste eine Region hinzuzufügen. 

  ```
  acl localnet src 10.1.0.0/16 #Only allow requests from within the VPC
  acl allowed_sites dstdomain .github.com #Allows to download source from GitHub
  acl allowed_sites dstdomain .bitbucket.com #Allows to download source from Bitbucket
  acl download_src dstdom_regex .*\.amazonaws\.com #Allows to download source from Amazon S3 or CodeCommit
  ```
+  Ersetzen Sie `http_access allow localnet` durch Folgendes: 

  ```
  http_access allow localnet allowed_sites
  http_access allow localnet download_src
  ```
+ Wenn Sie möchten, dass Ihr Build Protokolle und Artefakte hochlädt, führen Sie einen der folgenden Schritte aus:

  1. Fügen Sie vor der Anweisung `http_access deny all` die folgenden Anweisungen ein. Sie ermöglichen CodeBuild den Zugriff CloudWatch auf Amazon S3. Der Zugriff auf CloudWatch ist erforderlich, damit CloudWatch Protokolle erstellt CodeBuild werden können. Für das Hochladen von Artefakten und das Amazon S3-Caching ist Zugriff auf Amazon S3 erforderlich. 
     + 

       ```
       https_port 3130 cert=/etc/squid/ssl/squid.pem ssl-bump intercept
       acl SSL_port port 443
       http_access allow SSL_port
       acl allowed_https_sites ssl::server_name .amazonaws.com
       acl step1 at_step SslBump1
       acl step2 at_step SslBump2
       acl step3 at_step SslBump3
       ssl_bump peek step1 all
       ssl_bump peek step2 allowed_https_sites
       ssl_bump splice step3 allowed_https_sites
       ssl_bump terminate step2 all
       ```
     + Führen Sie nach dem Speichern `squid.conf` den folgenden Befehl aus: 

       ```
       sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 3130
       sudo service squid restart
       ```

  1.  Fügen Sie Ihrer Buildspec-Datei `proxy` hinzu. Weitere Informationen finden Sie unter [Syntax der Build-Spezifikation](build-spec-ref.md#build-spec-ref-syntax). 

     ```
     version: 0.2
     proxy:
       upload-artifacts: yes
       logs: yes
     phases:
       build:
         commands:
           - command
     ```

**Anmerkung**  
Wenn Sie einen RequestError Timeout-Fehler erhalten, finden Sie weitere Informationen unter[RequestError Timeout-Fehler bei der Ausführung auf CodeBuild einem Proxyserver](troubleshooting.md#code-request-timeout-error).

Weitere Informationen finden Sie unter [Expliziter Proxy-Server – `squid.conf`-Beispieldatei](#use-proxy-server-explicit-sample-squid-conf) an späterer Stelle in diesem Thema.

## Erstellen Sie ein Projekt CodeBuild
<a name="use-proxy-server-explicit-create-acb-project"></a>

 Um AWS CodeBuild mit Ihrem expliziten Proxyserver zu arbeiten, legen Sie dessen `HTTP_PROXY` und `HTTPS_PROXY` Umgebungsvariablen auf die private IP-Adresse der EC2-Instance fest, die Sie für Ihren Proxyserver erstellt haben, und Port 3128 auf Projektebene. Die private IP-Adresse sieht folgendermaßen aus: `http://your-ec2-private-ip-address:3128`. Weitere Informationen erhalten Sie unter [Erstellen Sie ein Build-Projekt in AWS CodeBuild](create-project.md) und [Ändern Sie die Build-Projekteinstellungen in AWS CodeBuild](change-project.md).

 Verwenden Sie den folgenden Befehl, um das Zugriffsprotokoll des Squid-Proxys anzuzeigen: 

```
sudo tail -f /var/log/squid/access.log
```

## Expliziter Proxy-Server – `squid.conf`-Beispieldatei
<a name="use-proxy-server-explicit-sample-squid-conf"></a>

 Im Folgenden sehen Sie ein Beispiel für eine `squid.conf`-Datei, die für einen expliziten Proxy-Server konfiguriert wurde. 

```
  acl localnet src 10.0.0.0/16 #Only allow requests from within the VPC
  # add all URLS to be whitelisted for download source and commands to be run in build environment
  acl allowed_sites dstdomain .github.com    #Allows to download source from github
  acl allowed_sites dstdomain .bitbucket.com #Allows to download source from bitbucket
  acl allowed_sites dstdomain ppa.launchpad.net #Allows to run apt-get in build environment
  acl download_src dstdom_regex .*\.amazonaws\.com #Allows to download source from S3 or CodeCommit
  acl SSL_ports port 443
  acl Safe_ports port 80		# http
  acl Safe_ports port 21		# ftp
  acl Safe_ports port 443		# https
  acl Safe_ports port 70		# gopher
  acl Safe_ports port 210		# wais
  acl Safe_ports port 1025-65535	# unregistered ports
  acl Safe_ports port 280		# http-mgmt
  acl Safe_ports port 488		# gss-http
  acl Safe_ports port 591		# filemaker
  acl Safe_ports port 777		# multiling http
  acl CONNECT method CONNECT
  #
  # Recommended minimum Access Permission configuration:
  #
  # Deny requests to certain unsafe ports
  http_access deny !Safe_ports
  # Deny CONNECT to other than secure SSL ports
  http_access deny CONNECT !SSL_ports
  # Only allow cachemgr access from localhost
  http_access allow localhost manager
  http_access deny manager
  # We strongly recommend the following be uncommented to protect innocent
  # web applications running on the proxy server who think the only
  # one who can access services on "localhost" is a local user
  #http_access deny to_localhost
  #
  # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
  #
  # Example rule allowing access from your local networks.
  # Adapt localnet in the ACL section to list your (internal) IP networks
  # from where browsing should be allowed
  http_access allow localnet allowed_sites
  http_access allow localnet download_src
  http_access allow localhost
  # Add this for CodeBuild to access CWL end point, caching and upload artifacts S3 bucket end point
  https_port 3130 cert=/etc/squid/ssl/squid.pem ssl-bump intercept
  acl SSL_port port 443
  http_access allow SSL_port
  acl allowed_https_sites ssl::server_name .amazonaws.com
  acl step1 at_step SslBump1
  acl step2 at_step SslBump2
  acl step3 at_step SslBump3
  ssl_bump peek step1 all
  ssl_bump peek step2 allowed_https_sites
  ssl_bump splice step3 allowed_https_sites
  ssl_bump terminate step2 all
  # And finally deny all other access to this proxy
  http_access deny all
  # Squid normally listens to port 3128
  http_port 3128
  # Uncomment and adjust the following to add a disk cache directory.
  #cache_dir ufs /var/spool/squid 100 16 256
  # Leave coredumps in the first cache dir
  coredump_dir /var/spool/squid
  #
  # Add any of your own refresh_pattern entries above these.
  #
  refresh_pattern ^ftp:		1440	20%	10080
  refresh_pattern ^gopher:	1440	0%	1440
  refresh_pattern -i (/cgi-bin/|\?) 0	0%	0
  refresh_pattern .		0	20%	4320
```

# Führen Sie es CodeBuild auf einem transparenten Proxyserver aus
<a name="run-codebuild-in-transparent-proxy-server"></a>

 Für die Ausführung AWS CodeBuild auf einem transparenten Proxyserver müssen Sie den Proxyserver so konfigurieren, dass er Zugriff auf die Websites und Domänen hat, mit denen er interagiert. 

**Topics**
+ [Konfigurieren von Squid als transparenter Proxy-Server](#use-proxy-server-transparent-squid-configure)
+ [CodeBuild Erstelle ein Projekt](#use-proxy-server-transparent-create-acb-project)

## Konfigurieren von Squid als transparenter Proxy-Server
<a name="use-proxy-server-transparent-squid-configure"></a>

 Um einen transparenten Proxy-Server zu konfigurieren, müssen Sie ihm Zugriff auf die Domänen und Websites erteilen, auf die er zugreifen soll. Um AWS CodeBuild mit einem transparenten Proxyserver zu arbeiten, müssen Sie ihm Zugriff `amazonaws.com` gewähren. Sie müssen auch Zugriff auf andere Websites CodeBuild gewähren. Diese variieren, je nachdem, wie Sie Ihre CodeBuild Projekte erstellen. Beispiel-Websites sind solche für Repositorys wie Bitbucket GitHub, Yum und Maven. Um Squid Zugriff auf bestimmte Domains und Websites zu erteilen, aktualisieren Sie die `squid.conf`-Datei mit einem Befehl ähnlich dem folgenden: Dieser Beispielbefehl gewährt Zugriff auf `amazonaws.com`, `github.com` und `bitbucket.com`. Sie können dieses Beispiel bearbeiten, um Zugriff auf andere Websites zu erteilen. 

```
cat | sudo tee /etc/squid/squid.conf ≪EOF
visible_hostname squid
#Handling HTTP requests
http_port 3129 intercept
acl allowed_http_sites dstdomain .amazonaws.com
#acl allowed_http_sites dstdomain domain_name [uncomment this line to add another domain]
http_access allow allowed_http_sites
#Handling HTTPS requests
https_port 3130 cert=/etc/squid/ssl/squid.pem ssl-bump intercept
acl SSL_port port 443
http_access allow SSL_port
acl allowed_https_sites ssl::server_name .amazonaws.com
acl allowed_https_sites ssl::server_name .github.com
acl allowed_https_sites ssl::server_name .bitbucket.com
#acl allowed_https_sites ssl::server_name [uncomment this line to add another website]
acl step1 at_step SslBump1
acl step2 at_step SslBump2
acl step3 at_step SslBump3
ssl_bump peek step1 all
ssl_bump peek step2 allowed_https_sites
ssl_bump splice step3 allowed_https_sites
ssl_bump terminate step2 all
http_access deny all
EOF
```

 Eingehende Anforderungen von Instances im privaten Subnetz muss zu den Squid-Ports umgeleitet werden. Squid ist an Port 3129 für HTTP-Datenverkehr (anstelle von 80) und an Port 3130 für HTTPS-Datenverkehr (anstelle von 443) empfangsbereit. Verwenden Sie den Befehl **iptables**, um Datenverkehr weiterzuleiten: 

```
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3129
sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 3130
sudo service iptables save
sudo service squid start
```

## CodeBuild Erstelle ein Projekt
<a name="use-proxy-server-transparent-create-acb-project"></a>

 Nachdem Sie Ihren Proxyserver konfiguriert haben, können Sie ihn ohne weitere Konfiguration AWS CodeBuild in einem privaten Subnetz verwenden. Jede HTTP- und HTTPS-Anforderung durchläuft den öffentlichen Proxy-Server. Verwenden Sie den folgenden Befehl, um das Zugriffsprotokoll des Squid-Proxys anzuzeigen: 

```
sudo tail -f /var/log/squid/access.log
```

# Ausführung eines Paket-Managers und anderer Tools in einem Proxy-Server
<a name="use-proxy-server-tools"></a>

Verwenden Sie die folgenden Verfahren, um einen Paketmanager und andere Tools auf einem Proxyserver auszuführen.

**Um ein Tool, z. B. einen Paketmanager, auf einem Proxyserver auszuführen**

1.  Fügen Sie das Tool der Genehmigungsliste auf Ihrem Proxy-Server hinzu, indem Sie Ihrer `squid.conf`-Datei Anweisungen hinzufügen. 

1.  Fügen Sie eine Zeile zu Ihrer buildspec-Datei hinzu, die auf den privaten Endpunkt Ihres Proxy-Servers verweist. 

 Die folgenden Beispiele veranschaulichen dies für `apt-get`, `curl` und `maven`. Wenn Sie ein anderes Tool verwenden, gelten die gleichen Prinzipien. Fügen Sie es einer Zulassungsliste in der `squid.conf` Datei hinzu und fügen Sie Ihrer Buildspec-Datei einen Befehl hinzu, um auf den Endpunkt Ihres Proxyservers CodeBuild aufmerksam zu machen. 

**Ausführen von `apt-get` in einem Proxy-Server**

1. Fügen Sie der `squid.conf`-Datei die folgenden Anweisungen hinzu, um `apt-get` einer Genehmigungsliste in Ihrem Proxy-Server hinzuzufügen. Die ersten drei Zeilen ermöglichen `apt-get` die Ausführung in der Build-Umgebung.

   ```
   acl allowed_sites dstdomain ppa.launchpad.net # Required for apt-get to run in the build environment
   acl apt_get dstdom_regex .*\.launchpad.net # Required for CodeBuild to run apt-get in the build environment
   acl apt_get dstdom_regex .*\.ubuntu.com    # Required for CodeBuild to run apt-get in the build environment
   http_access allow localnet allowed_sites
   http_access allow localnet apt_get
   ```

1. Nehmen Sie die folgende Anweisung in Ihre buildspec Datei auf, damit `apt-get`-Befehle in `/etc/apt/apt.conf.d/00proxy` nach der Proxy-Konfiguration suchen.

   ```
   echo 'Acquire::http::Proxy "http://<private-ip-of-proxy-server>:3128"; Acquire::https::Proxy "http://<private-ip-of-proxy-server>:3128"; Acquire::ftp::Proxy "http://<private-ip-of-proxy-server>:3128";' > /etc/apt/apt.conf.d/00proxy
   ```

**Ausführen von `curl` in einem Proxy-Server**

1.  Fügen Sie der Datei `squid.conf` Folgendes hinzu, um `curl` einer Genehmigungsliste in Ihrer Build-Umgebung hinzuzufügen. 

   ```
   acl allowed_sites dstdomain ppa.launchpad.net # Required to run apt-get in the build environment
   acl allowed_sites dstdomain google.com # Required for access to a webiste. This example uses www.google.com.
   http_access allow localnet allowed_sites
   http_access allow localnet apt_get
   ```

1.  Nehmen Sie die folgende Anweisung in Ihre buildspec-Datei auf, damit `curl` den privaten Proxy-Server für den Zugriff auf die Website verwendet, die Sie `squid.conf` hinzugefügt haben. In diesem Beispiel ist die Website `google.com`. 

   ```
   curl -x <private-ip-of-proxy-server>:3128 https://www.google.com
   ```

**Ausführen von `maven` in einem Proxy-Server**

1.  Fügen Sie der Datei `squid.conf` Folgendes hinzu, um `maven` einer Genehmigungsliste in Ihrer Build-Umgebung hinzuzufügen. 

   ```
   acl allowed_sites dstdomain ppa.launchpad.net # Required to run apt-get in the build environment
   acl maven dstdom_regex .*\.maven.org # Allows access to the maven repository in the build environment
   http_access allow localnet allowed_sites
   http_access allow localnet maven
   ```

1. Fügen Sie ihrer buildspec-Datei die folgende Anweisung hinzu. 

   ```
   maven clean install -DproxySet=true -DproxyHost=<private-ip-of-proxy-server> -DproxyPort=3128
   ```

# CloudFormation VPC-Vorlage
<a name="cloudformation-vpc-template"></a>

CloudFormation *ermöglicht es Ihnen, AWS Infrastrukturbereitstellungen vorhersehbar und wiederholt zu erstellen und bereitzustellen, indem Sie mithilfe von Vorlagendateien eine Sammlung von Ressourcen als eine einzige Einheit (einen Stapel) erstellen und löschen.* Weitere Informationen finden Sie im [CloudFormation -Benutzerhandbuch](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html).

Im Folgenden finden Sie eine CloudFormation YAML-Vorlage für die Konfiguration einer zu verwendenden VPC. AWS CodeBuild[Diese Datei ist auch in samples.zip verfügbar.](./samples/samples.zip)

```
Description:  This template deploys a VPC, with a pair of public and private subnets spread
  across two Availability Zones. It deploys an internet gateway, with a default
  route on the public subnets. It deploys a pair of NAT gateways (one in each AZ),
  and default routes for them in the private subnets.

Parameters:
  EnvironmentName:
    Description: An environment name that is prefixed to resource names
    Type: String

  VpcCIDR:
    Description: Please enter the IP range (CIDR notation) for this VPC
    Type: String
    Default: 10.192.0.0/16

  PublicSubnet1CIDR:
    Description: Please enter the IP range (CIDR notation) for the public subnet in the first Availability Zone
    Type: String
    Default: 10.192.10.0/24

  PublicSubnet2CIDR:
    Description: Please enter the IP range (CIDR notation) for the public subnet in the second Availability Zone
    Type: String
    Default: 10.192.11.0/24

  PrivateSubnet1CIDR:
    Description: Please enter the IP range (CIDR notation) for the private subnet in the first Availability Zone
    Type: String
    Default: 10.192.20.0/24

  PrivateSubnet2CIDR:
    Description: Please enter the IP range (CIDR notation) for the private subnet in the second Availability Zone
    Type: String
    Default: 10.192.21.0/24

Resources:
  VPC:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock: !Ref VpcCIDR
      EnableDnsSupport: true
      EnableDnsHostnames: true
      Tags:
        - Key: Name
          Value: !Ref EnvironmentName

  InternetGateway:
    Type: AWS::EC2::InternetGateway
    Properties:
      Tags:
        - Key: Name
          Value: !Ref EnvironmentName

  InternetGatewayAttachment:
    Type: AWS::EC2::VPCGatewayAttachment
    Properties:
      InternetGatewayId: !Ref InternetGateway
      VpcId: !Ref VPC

  PublicSubnet1:
    Type: AWS::EC2::Subnet
    Properties:
      VpcId: !Ref VPC
      AvailabilityZone: !Select [ 0, !GetAZs '' ]
      CidrBlock: !Ref PublicSubnet1CIDR
      MapPublicIpOnLaunch: true
      Tags:
        - Key: Name
          Value: !Sub ${EnvironmentName} Public Subnet (AZ1)

  PublicSubnet2:
    Type: AWS::EC2::Subnet
    Properties:
      VpcId: !Ref VPC
      AvailabilityZone: !Select [ 1, !GetAZs  '' ]
      CidrBlock: !Ref PublicSubnet2CIDR
      MapPublicIpOnLaunch: true
      Tags:
        - Key: Name
          Value: !Sub ${EnvironmentName} Public Subnet (AZ2)

  PrivateSubnet1:
    Type: AWS::EC2::Subnet
    Properties:
      VpcId: !Ref VPC
      AvailabilityZone: !Select [ 0, !GetAZs  '' ]
      CidrBlock: !Ref PrivateSubnet1CIDR
      MapPublicIpOnLaunch: false
      Tags:
        - Key: Name
          Value: !Sub ${EnvironmentName} Private Subnet (AZ1)

  PrivateSubnet2:
    Type: AWS::EC2::Subnet
    Properties:
      VpcId: !Ref VPC
      AvailabilityZone: !Select [ 1, !GetAZs  '' ]
      CidrBlock: !Ref PrivateSubnet2CIDR
      MapPublicIpOnLaunch: false
      Tags:
        - Key: Name
          Value: !Sub ${EnvironmentName} Private Subnet (AZ2)

  NatGateway1EIP:
    Type: AWS::EC2::EIP
    DependsOn: InternetGatewayAttachment
    Properties:
      Domain: vpc

  NatGateway2EIP:
    Type: AWS::EC2::EIP
    DependsOn: InternetGatewayAttachment
    Properties:
      Domain: vpc

  NatGateway1:
    Type: AWS::EC2::NatGateway
    Properties:
      AllocationId: !GetAtt NatGateway1EIP.AllocationId
      SubnetId: !Ref PublicSubnet1

  NatGateway2:
    Type: AWS::EC2::NatGateway
    Properties:
      AllocationId: !GetAtt NatGateway2EIP.AllocationId
      SubnetId: !Ref PublicSubnet2

  PublicRouteTable:
    Type: AWS::EC2::RouteTable
    Properties:
      VpcId: !Ref VPC
      Tags:
        - Key: Name
          Value: !Sub ${EnvironmentName} Public Routes

  DefaultPublicRoute:
    Type: AWS::EC2::Route
    DependsOn: InternetGatewayAttachment
    Properties:
      RouteTableId: !Ref PublicRouteTable
      DestinationCidrBlock: 0.0.0.0/0
      GatewayId: !Ref InternetGateway

  PublicSubnet1RouteTableAssociation:
    Type: AWS::EC2::SubnetRouteTableAssociation
    Properties:
      RouteTableId: !Ref PublicRouteTable
      SubnetId: !Ref PublicSubnet1

  PublicSubnet2RouteTableAssociation:
    Type: AWS::EC2::SubnetRouteTableAssociation
    Properties:
      RouteTableId: !Ref PublicRouteTable
      SubnetId: !Ref PublicSubnet2


  PrivateRouteTable1:
    Type: AWS::EC2::RouteTable
    Properties:
      VpcId: !Ref VPC
      Tags:
        - Key: Name
          Value: !Sub ${EnvironmentName} Private Routes (AZ1)

  DefaultPrivateRoute1:
    Type: AWS::EC2::Route
    Properties:
      RouteTableId: !Ref PrivateRouteTable1
      DestinationCidrBlock: 0.0.0.0/0
      NatGatewayId: !Ref NatGateway1

  PrivateSubnet1RouteTableAssociation:
    Type: AWS::EC2::SubnetRouteTableAssociation
    Properties:
      RouteTableId: !Ref PrivateRouteTable1
      SubnetId: !Ref PrivateSubnet1

  PrivateRouteTable2:
    Type: AWS::EC2::RouteTable
    Properties:
      VpcId: !Ref VPC
      Tags:
        - Key: Name
          Value: !Sub ${EnvironmentName} Private Routes (AZ2)

  DefaultPrivateRoute2:
    Type: AWS::EC2::Route
    Properties:
      RouteTableId: !Ref PrivateRouteTable2
      DestinationCidrBlock: 0.0.0.0/0
      NatGatewayId: !Ref NatGateway2

  PrivateSubnet2RouteTableAssociation:
    Type: AWS::EC2::SubnetRouteTableAssociation
    Properties:
      RouteTableId: !Ref PrivateRouteTable2
      SubnetId: !Ref PrivateSubnet2

  NoIngressSecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupName: "no-ingress-sg"
      GroupDescription: "Security group with no ingress rule"
      VpcId: !Ref VPC

Outputs:
  VPC:
    Description: A reference to the created VPC
    Value: !Ref VPC

  PublicSubnets:
    Description: A list of the public subnets
    Value: !Join [ ",", [ !Ref PublicSubnet1, !Ref PublicSubnet2 ]]

  PrivateSubnets:
    Description: A list of the private subnets
    Value: !Join [ ",", [ !Ref PrivateSubnet1, !Ref PrivateSubnet2 ]]

  PublicSubnet1:
    Description: A reference to the public subnet in the 1st Availability Zone
    Value: !Ref PublicSubnet1

  PublicSubnet2:
    Description: A reference to the public subnet in the 2nd Availability Zone
    Value: !Ref PublicSubnet2

  PrivateSubnet1:
    Description: A reference to the private subnet in the 1st Availability Zone
    Value: !Ref PrivateSubnet1

  PrivateSubnet2:
    Description: A reference to the private subnet in the 2nd Availability Zone
    Value: !Ref PrivateSubnet2

  NoIngressSecurityGroup:
    Description: Security group with no ingress rule
    Value: !Ref NoIngressSecurityGroup
```