CodeBuild Bereitstellung von benutzerdefiniertem Amazon VPC-Support - AWS Proton

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.

CodeBuild Bereitstellung von benutzerdefiniertem Amazon VPC-Support

AWS Proton CodeBuild Beim Provisioning werden beliebige vom Kunden bereitgestellte CLI-Befehle in einem CodeBuild Projekt ausgeführt, das sich im Environment-Konto befindet. AWS Proton Diese Befehle verwalten Ressourcen in der Regel mithilfe eines IaC-Tools (Infrastructure as Code) wie CDK. Wenn Sie über Ressourcen in einer Amazon VPC verfügen, CodeBuild können Sie möglicherweise nicht darauf zugreifen. Um dies zu ermöglichen, CodeBuild unterstützt es die Ausführung innerhalb einer bestimmten Amazon VPC. Einige Beispiele für Anwendungsfälle sind:

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

  • CodeBuild muss auf einen Jenkins-Server in einer bestimmten Amazon VPC zugreifen, um eine Pipeline zu registrieren.

  • Greifen Sie auf Objekte in einem Amazon S3 S3-Bucket zu, der so konfiguriert ist, dass der Zugriff nur über einen Amazon VPC-Endpunkt möglich ist.

  • Führen Sie Integrationstests von Ihrem Build aus anhand von Daten in einer Amazon RDS-Datenbank durch, die in einem privaten Subnetz isoliert ist.

Weitere Informationen finden Sie CodeBuild in der VPC-Dokumentation.

Wenn Sie möchten, dass CodeBuild Provisioning in einer benutzerdefinierten VPC ausgeführt wird, AWS Proton bietet dies eine einfache Lösung. Zunächst müssen Sie die VPC-ID, Subnetze und Sicherheitsgruppen zur Umgebungsvorlage hinzufügen. Als Nächstes geben Sie diese Werte in die Umgebungsspezifikation ein. Dies führt dazu, dass für Sie ein CodeBuild Projekt erstellt wird, das auf eine bestimmte VPC abzielt.

Aktualisierung der Umgebungsvorlage

Schema

Die VPC-ID, die Subnetze und die Sicherheitsgruppen müssen dem Vorlagenschema hinzugefügt werden, damit sie in der Umgebungsspezifikation existieren können.

Ein Beispiel: schema.yaml

schema: format: openapi: "3.0.0" environment_input_type: "EnvironmentInputType" types: EnvironmentInputType: type: object properties: codebuild_vpc_id: type: string codebuild_subnets: type: array items: type: string codebuild_security_groups: type: array items: type: string

Dadurch werden drei neue Eigenschaften hinzugefügt, die vom Manifest verwendet werden:

  • codebuild_vpc_id

  • codebuild_subnets

  • codebuild_security_groups

Manifest

Um die Amazon VPC-Einstellungen zu konfigurieren CodeBuild, project_properties steht im Vorlagenmanifest eine optionale Eigenschaft namens zur Verfügung. Der Inhalt von project_properties wird dem AWS CloudFormation Stack hinzugefügt, der das CodeBuild Projekt erstellt. Dadurch ist es möglich, nicht nur Amazon AWS CloudFormation VPC-Eigenschaften hinzuzufügen, sondern auch alle unterstützten CodeBuild CloudFormation Eigenschaften, wie z. B. Build-Timeout. Dieselben Daten, die für proton-inputs.json bereitgestellt wurden, werden für die Werte von zur Verfügung gestellt. project_properties

Fügen Sie diesen Abschnitt zu Ihrem hinzumanifest.yaml:

project_properties: VpcConfig: VpcId: "{{ environment.inputs.codebuild_vpc_id }}" Subnets: "{{ environment.inputs.codebuild_subnets }}" SecurityGroupIds: "{{ environment.inputs.codebuild_security_groups }}"

Das Ergebnis manifest.yaml könnte wie folgt aussehen:

infrastructure: templates: - rendering_engine: codebuild settings: image: aws/codebuild/amazonlinux2-x86_64-standard:4.0 runtimes: nodejs: 16 provision: - npm install - npm run build - npm run cdk bootstrap - npm run cdk deploy -- --require-approval never deprovision: - npm install - npm run build - npm run cdk destroy -- --force project_properties: VpcConfig: VpcId: "{{ environment.inputs.codebuild_vpc_id }}" Subnets: "{{ environment.inputs.codebuild_subnets }}" SecurityGroupIds: "{{ environment.inputs.codebuild_security_groups }}"
Die Umgebung erstellen

Wenn Sie eine Umgebung mit Ihrer CodeBuild Provisioning VPC-fähigen Vorlage erstellen, müssen Sie die Amazon VPC-ID, Subnetze und Sicherheitsgruppen angeben.

Führen Sie den folgenden Befehl aus, um eine Liste aller Amazon VPC IDs in Ihrer Region abzurufen:

aws ec2 describe-vpcs

Um eine Liste aller Subnetze zu erhalten IDs, führen Sie folgenden Befehl aus:

aws ec2 describe-subnets --filters "Name=vpc-id,Values=vpc-id"
Wichtig

Schließt nur private Subnetze ein. CodeBuild schlägt fehl, wenn Sie öffentliche Subnetze bereitstellen. Öffentliche Subnetze haben eine Standardroute zu einem Internet Gateway, private Subnetze dagegen nicht.

Führen Sie den folgenden Befehl aus, um die Sicherheitsgruppe abzurufen. IDs Diese IDs können auch abgerufen werden über AWS Management Console:

aws ec2 describe-security-groups --filters "Name=vpc-id,Values=vpc-id"

Die Werte werden wie folgt aussehen:

vpc-id: vpc-045ch35y28dec3a05 subnets: - subnet-04029a82e6ae46968 - subnet-0f500a9294fc5f26a security-groups: - sg-03bc4c4ce32d67e8d
Sicherstellung von CodeBuild Genehmigungen

Für die Unterstützung von Amazon VPC sind bestimmte Berechtigungen erforderlich, z. B. die Möglichkeit, eine Elastic Network Interface zu erstellen.

Wenn die Umgebung in der Konsole erstellt wird, geben Sie diese Werte während des Assistenten zur Umgebungserstellung ein. Wenn Sie die Umgebung programmgesteuert erstellen möchten, spec.yaml sieht sie wie folgt aus:

proton: EnvironmentSpec spec: codebuild_vpc_id: vpc-045ch35y28dec3a05 codebuild_subnets: - subnet-04029a82e6ae46968 - subnet-0f500a9294fc5f26a codebuild_security_groups: - sg-03bc4c4ce32d67e8d