CodeBuild fornitura di supporto personalizzato per Amazon VPC - AWS Proton

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

CodeBuild fornitura di supporto personalizzato per Amazon VPC

AWS Proton CodeBuild Il provisioning esegue comandi CLI arbitrari forniti dal cliente in un CodeBuild progetto situato nell'accountAWS Proton Environment. Questi comandi in genere gestiscono le risorse utilizzando uno strumento Infrastructure as Code (IAC), come CDK. Se disponi di risorse in un Amazon VPC, CodeBuild potresti non essere in grado di accedervi. Per abilitare ciò, CodeBuild supporta la capacità di funzionare all'interno di uno specifico Amazon VPC. Alcuni esempi di casi d'uso includono:

  • Recupera le dipendenze da repository di artefatti interni ospitati autonomamente, ad esempioPyPI per Python,Maven per Java enpm per Node.js

  • CodeBuild deve accedere a un server Jenkins in un particolare Amazon VPC per registrare una pipeline.

  • Accedere agli oggetti in un bucket Amazon S3 configurato per consentire l'accesso solo tramite un endpoint Amazon VPC.

  • Esegui i test di integrazione della tua build rispetto ai dati in un database Amazon RDS isolato in una sottorete privata.

Per ulteriori informazioni, consulta CodeBuild la documentazione VPC.

Se desideri che CodeBuild il provisioning venga eseguito in un VPC personalizzato,AWS Proton fornisce una soluzione semplice. Per prima cosa, è necessario aggiungere l'ID VPC, le sottoreti e i gruppi di sicurezza al modello dell'ambiente. Successivamente, inserisci questi valori nelle specifiche dell'ambiente. Ciò comporterà la creazione di un CodeBuild progetto per te destinato a un determinato VPC.

Aggiornamento del modello di ambiente

Schema

L'ID VPC, le sottoreti e i gruppi di sicurezza devono essere aggiunti allo schema del modello in modo che possano esistere nelle specifiche dell'ambiente.

Un esempioschema.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

Questo aggiunge tre nuove proprietà che verranno utilizzate dal manifesto:

  • codebuild_vpc_id

  • codebuild_subnets

  • codebuild_security_groups

Manifest

Per configurare le impostazioni di Amazon VPC in CodeBuild, nel manifesto del modelloproject_properties è disponibile una proprietà opzionale chiamata. I contenuti diproject_properties vengono aggiunti alloAWS CloudFormation stack che crea il CodeBuild progetto. In questo modo è possibile aggiungere non solo AWS CloudFormationle proprietà Amazon VPC, ma anche qualsiasi CodeBuild CloudFormation proprietà supportata, come il timeout di compilazione. Gli stessi dati fornitiproton-inputs.json vengono messi a disposizione dei valori diproject_properties.

Aggiungi questa sezione al tuomanifest.yaml:

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

Di seguito è riportato comemanifest.yaml potrebbe apparire il risultato:

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 }}"
Creazione dell'ambiente

Quando crei un ambiente con il tuo modello compatibile con CodeBuild Provisioning VPC, devi fornire l'ID Amazon VPC, le sottoreti e i gruppi di sicurezza.

Per ottenere un elenco di tutti gli ID Amazon VPC nella tua regione, eseguire il seguente comando:

aws ec2 describe-vpcs

Per ottenere un elenco di tutti gli ID di sottorete, eseguire:

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

Includi solo sottoreti private. CodeBuild fallirà se fornisci sottoreti pubbliche. Le sottoreti pubbliche hanno un percorso predefinito verso un Internet Gateway, mentre le sottoreti private no.

Esegui i seguenti comandi per ottenere gli ID del gruppo di sicurezza. Questi ID possono essere ottenuti anche tramiteAWS Management Console:

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

I valori saranno simili a:

vpc-id: vpc-045ch35y28dec3a05 subnets: - subnet-04029a82e6ae46968 - subnet-0f500a9294fc5f26a security-groups: - sg-03bc4c4ce32d67e8d
Garantire CodeBuild le autorizzazioni

Il supporto di Amazon VPC richiede determinate autorizzazioni, come la possibilità di creare un'interfaccia di rete elastica.

Se l'ambiente viene creato nella console, inserisci questi valori durante la procedura guidata di creazione dell'ambiente. Se vuoi creare l'ambiente in modo programmatico, il tuospec.yaml aspetto è il seguente:

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