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.jsnpm
-
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