CodeBuild Bereitstellung von benutzerdefiniertem Amazon-Support VPC - 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-Support VPC

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 in der Regel Ressourcen mithilfe eines IaC-Tools (Infrastructure as Code), z. B. CDK Wenn Sie Ressourcen in einem Amazon habenVPC, CodeBuild können Sie möglicherweise nicht darauf zugreifen. Um dies zu ermöglichen, CodeBuild unterstützt es die Möglichkeit, innerhalb eines bestimmten Amazon zu laufenVPC. 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 einem bestimmten Amazon zugreifen, um eine VPC Pipeline zu registrieren.

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

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

Weitere Informationen finden Sie unter CodeBuild und in der VPC Dokumentation.

Wenn Sie möchten, dass CodeBuild Provisioning in einer benutzerdefinierten Version ausgeführt wirdVPC, AWS Proton bietet dies eine einfache Lösung. Zunächst müssen Sie die VPC ID, die Subnetze und die 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 ein bestimmtes VPC Ziel 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 VPC Amazon-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. Auf diese Weise können nicht nur VPC AWS CloudFormation Amazon-Eigenschaften, sondern auch alle unterstützten CodeBuild CloudFormation Eigenschaften hinzugefügt werden, z. B. ein Build-Timeout. Dieselben Daten, die bereitgestellt wurden, proton-inputs.json werden für die Werte von project_properties zur Verfügung gestellt.

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 Vorlage für CodeBuild Provisioning VPC erstellen, müssen Sie die VPC Amazon-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 erhaltenIDs, führen Sie Folgendes 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 den VPC Amazon-Support 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