Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
CodeBuild fourniture d'un support Amazon VPC personnalisé
AWS Proton CodeBuild Le provisionnement exécute des commandes CLI arbitraires fournies par le client dans CodeBuild un projet situé dans AWS Proton le compte Environment. Ces commandes gèrent généralement les ressources à l'aide d'un outil d'infrastructure en tant que code (IaC), tel que CDK. Si vous disposez de ressources dans un Amazon VPC, il est CodeBuild possible que vous ne puissiez pas y accéder. Pour ce faire, CodeBuild prend en charge la possibilité de s'exécuter au sein d'un Amazon VPC spécifique. Voici quelques exemples de cas d'utilisation :
-
Récupérez les dépendances à partir de référentiels d'artefacts internes auto-hébergés, tels que pour
PyPI
Python,Maven
pour Java et pour Node.jsnpm
-
CodeBuild doit accéder à un serveur Jenkins dans un Amazon VPC particulier pour enregistrer un pipeline.
-
Accédez aux objets d'un compartiment Amazon S3 configuré pour autoriser l'accès uniquement via un point de terminaison Amazon VPC.
-
Exécutez des tests d'intégration depuis votre build par rapport aux données d'une base de données Amazon RDS isolée sur un sous-réseau privé.
Pour plus d'informations, consultez la documentation sur CodeBuild les VPC.
Si vous souhaitez que le CodeBuild provisioning s'exécute dans un VPC personnalisé AWS Proton , cette solution est simple. Tout d'abord, vous devez ajouter l'ID du VPC, les sous-réseaux et les groupes de sécurité au modèle d'environnement. Ensuite, vous entrez ces valeurs dans les spécifications d'environnement. Cela se traduira par la création d'un CodeBuild projet qui cible un VPC donné.
Mise à jour du modèle d'environnement
Schema
L'ID VPC, les sous-réseaux et les groupes de sécurité doivent être ajoutés au schéma du modèle afin qu'ils puissent exister dans les spécifications de l'environnement.
Un exemple 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
Cela ajoute trois nouvelles propriétés qui seront utilisées par le manifeste :
-
codebuild_vpc_id
-
codebuild_subnets
-
codebuild_security_groups
Manifeste
Pour configurer les paramètres Amazon VPC dans CodeBuild, une propriété facultative appelée project_properties
est disponible dans le manifeste du modèle. Le contenu project_properties
de est ajouté à la AWS CloudFormation pile qui crée le CodeBuild projet. Cela permet d'ajouter non seulement les propriétés Amazon VPC, mais également toutes les AWS CloudFormationCodeBuild CloudFormation propriétés prises en charge, telles que le délai de génération. Les mêmes données fournies sont mises à proton-inputs.json
disposition pour les valeurs deproject_properties
.
Ajoutez cette section à votre manifest.yaml
:
project_properties: VpcConfig: VpcId: "{{ environment.inputs.codebuild_vpc_id }}" Subnets: "{{ environment.inputs.codebuild_subnets }}" SecurityGroupIds: "{{ environment.inputs.codebuild_security_groups }}"
Voici à quoi manifest.yaml
peut ressembler le résultat :
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 }}"
Création de l'environnement
Lorsque vous créez un environnement avec votre modèle compatible CodeBuild Provisioning VPC, vous devez fournir l'identifiant Amazon VPC, les sous-réseaux et les groupes de sécurité.
Pour obtenir la liste de tous les Amazon VPC de votre IDs région, exécutez la commande suivante :
aws ec2 describe-vpcs
Pour obtenir une liste de tous les sous-réseaux IDs, exécutez :
aws ec2 describe-subnets --filters "Name=vpc-id,Values=
vpc-id
"
Important
N'incluez que les sous-réseaux privés. CodeBuild échouera si vous fournissez des sous-réseaux publics. Les sous-réseaux publics ont une route par défaut vers une passerelle Internet, contrairement aux sous-réseaux privés.
Exécutez la commande suivante pour obtenir le groupe de sécurité IDs. Ils IDs peuvent également être obtenus par le biais de AWS Management Console :
aws ec2 describe-security-groups --filters "Name=vpc-id,Values=
vpc-id
"
Les valeurs ressembleront à :
vpc-id: vpc-045ch35y28dec3a05 subnets: - subnet-04029a82e6ae46968 - subnet-0f500a9294fc5f26a security-groups: - sg-03bc4c4ce32d67e8d
Garantir CodeBuild les autorisations
Le support Amazon VPC nécessite certaines autorisations, telles que la possibilité de créer une interface réseau élastique.
Si l'environnement est créé dans la console, entrez ces valeurs dans l'assistant de création d'environnement. Si vous souhaitez créer l'environnement par programmation, voici ce spec.yaml
qui suit :
proton: EnvironmentSpec spec: codebuild_vpc_id:
vpc-045ch35y28dec3a05
codebuild_subnets: -subnet-04029a82e6ae46968
-subnet-0f500a9294fc5f26a
codebuild_security_groups: -sg-03bc4c4ce32d67e8d