Verwenden von AWS CodeBuild mit Amazon Virtual Private Cloud - AWS CodeBuild

Verwenden von AWS CodeBuild mit Amazon Virtual Private Cloud

In der Regel kann AWS CodeBuild nicht auf Ressourcen in einer VPC zugreifen. Um den Zugriff zu ermöglichen, müssen Sie zusätzliche VPC-spezifische Konfigurationsinformationen in Ihrer CodeBuild-Projektkonfiguration bereitstellen. 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.

Anmerkung

VPC-Konnektivität von CodeBuild wird in Windows nicht unterstützt.

Anwendungsfälle

Eine VPC-Konnektivität von AWS CodeBuild-Builds ermöglicht es,

  • Integrationstests von Ihrem Build aus mit Daten in einer Amazon RDS-Datenbank auszuführen, das in einem privaten Subnetz isoliert ist,

  • Daten in einem Amazon ElastiCache-Cluster direkt aus Tests heraus abzufragen,

  • Mit internen Webservices, die auf Amazon EC2, Amazon ECS gehostet werden, oder mit Services, die einen internen Elastic Load Balancing verwenden, zu interagieren,

  • Rufen Sie Abhängigkeiten aus selbst gehosteten, internen Artefakt-Repositorys ab, z. B. PyPI für Python, Maven für Java und npm für Node.js.

  • auf Objekte in einem S3-Bucket zuzugreifen, 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.

Zulassen des Amazon VPCZugriffs in Ihren CodeBuild-Projekten

Nehmen Sie diese Einstellungen in Ihre VPC-Konfiguration auf:

  • Wählen Sie für VPC ID, die VPC-ID aus, die CodeBuild verwendet.

  • Wählen Sie für Subnets (Subnetze) ein privates Subnetz mit NAT-Übersetzung aus, das Routen zu den in CodeBuild verwendeten Ressourcen enthält bzw. hat.

  • Wählen Sie für Security Groups (Sicherheitsgruppen) die Sicherheitsgruppen aus, die CodeBuild verwendet, um den Zugriff auf Ressourcen in der VPCs zu erlauben.

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

Informationen über das Verwenden der AWS CLI zum Erstellen eines Build-Projekts finden Sie unter Erstellen eines Build-Projekts (AWS CLI). Wenn Sie die AWS CLI mit CodeBuild verwenden, muss der Servicerolle, die von CodeBuild verwendet wird, um mit Services im Namen des IAM-Benutzers zu interagieren, eine Richtlinie angefügt sein. Weitere Informationen finden Sie unter CodeBuild Zugriff auf die zur Erstellung einer VPC-Netzwerkschnittstelle erforderlichen AWS-Services erlauben.

Das Tool vpcConfig -Objekt sollte Ihre vpcId, securityGroupIds, und subnets.

  • vpcId: Erforderlich Die von CodeBuild verwendete VPC-ID. Führen Sie diesen Befehl aus, um eine Liste aller Amazon VPC IDs in Ihrer Region zu erhalten:

    aws ec2 describe-vpcs
  • subnets: Erforderlich Das Subnetz IDs, das die von CodeBuild verwendeten Ressourcen enthält. Führen Sie diesen Befehl aus, um diese IDs zu erhalten:

    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 von IDs verwendete Sicherheitsgruppe CodeBuild, um den Zugriff auf Ressourcen in der VPCs zu ermöglichen. Führen Sie diesen Befehl aus, um diese IDs zu erhalten:

    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.

Bewährte Methoden für VPCs

Verwenden Sie diese Checkliste, wenn Sie eine VPC für die Arbeit mit CodeBuild einrichten.

  • 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) im Amazon VPC-Benutzerhandbuch.

    Wichtig

    Sie benötigen ein NAT-Gateway oder eine NAT-Instance, um CodeBuild mit Ihrer VPC verwenden zu können, damit CodeBuild öffentliche Endpunkte erreichen kann (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 CodeBuild die Zuweisung von Elastic IP-Adressen zu den von ihm erstellten Netzwerkschnittstellen nicht unterstützt, und die automatische Zuweisung einer öffentlichen IP-Adresse von Amazon EC2 für alle Netzwerkschnittstellen, die außerhalb von Amazon EC2-Instance-Starts erstellt wurden, nicht unterstützt wird.

  • Binden Sie mehrere Availability Zones in Ihre VPC ein.

  • Stellen Sie sicher, dass Ihre Sicherheitsgruppen keinen eingehenden Datenverkehr zu Ihren Builds zulassen. CodeBuild hat keine spezifischen Anforderungen für ausgehenden Datenverkehr, Sie müssen jedoch den Zugriff auf alle Internetressourcen erlauben, die für Ihren Build erforderlich sind, wie z. B. GitHub oder Amazon S3.

    Weitere Informationen finden Sie unter Sicherheitsgruppenregeln im Amazon VPC-Benutzerhandbuch.

  • Richten Sie für Ihre Builds separate Subnetze ein.

  • Wählen Sie bei der Einrichtung Ihrer CodeBuild-Projekte für den Zugriff auf Ihre VPC nur private Subnetze.

Weitere Informationen zur Einrichtung einer VPC in Amazon VPC finden Sie im Amazon VPC-Benutzerhandbuch.

Weitere Informationen zur Nutzung von AWS CloudFormation, um eine VPC für die Verwendung der CodeBuild-VPC-Funktion zu konfigurieren, finden Sie unter AWS CloudFormation VPC-Vorlage.

Fehlerbehebung für Ihre VPC-Einrichtung

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

Im Folgenden finden Sie einige Richtlinien, die Sie bei der Behebung eines häufigen CodeBuild-VPC-Fehlers unterstützen: Build does not have internet connectivity. Please check subnet network configuration:

  1. Stellen Sie sicher, dass Ihr Internet-Gateway an die VPC angeschlossen ist..

  2. Stellen Sie sicher, dass die Routing-Tabelle für Ihr öffentliches Subnetz auf das Internet-Gateway verweist..

  3. Stellen Sie sicher, dass Ihr Netzwerk ACLs den Datenverkehr zulässt.

  4. Stellen Sie sicher, dass Ihre Sicherheitsgruppen den Datenverkehr zulassen.

  5. Fehlerbehebung für Ihr NAT-Gateway.

  6. Vergewissern Sie sich, dass die Routing-Tabelle für private Subnetze auf das NAT-Gateway verweist..

  7. Stellen Sie sicher, dass der Servicerolle, die von CodeBuild verwendet wird, um mit Services im Namen des IAM-Benutzers zu interagieren, über Berechtigungen in dieser Richtlinie verfügt. Weitere Informationen finden Sie unter Erstellen Sie eine CodeBuild-Servicerolle.

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