CodeBuild aprovisionamiento de soporte personalizado para Amazon VPC - AWS Proton

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

CodeBuild aprovisionamiento de soporte personalizado para Amazon VPC

AWS Proton CodeBuild El aprovisionamiento ejecuta comandos CLI arbitrarios proporcionados por el cliente en CodeBuild un proyecto ubicado en AWS Proton la cuenta de entorno. Estos comandos suelen administrar los recursos mediante una herramienta de infraestructura como código (IaC), como CDK. Si tiene recursos en una Amazon VPC, es CodeBuild posible que no pueda acceder a ellos. Para habilitar esto, CodeBuild admite la capacidad de ejecutarse en una Amazon VPC específica. Algunos ejemplos de casos de uso incluyen:

  • Recuperar las dependencias de repositorios de artefactos internos y autoalojados, como PyPI para Python, Maven para Java y npm para Node.js

  • CodeBuild necesita acceder a un servidor Jenkins en una Amazon VPC concreta para registrar una canalización.

  • Acceder a los objetos de un bucket de Amazon S3 configurado para permitir el acceso únicamente a través de un punto de conexión de VPC de Amazon.

  • Ejecutar pruebas de integración desde la compilación con los datos de una base de datos de Amazon RDS aislada en una subred privada.

Para obtener más información, consulte la CodeBuild documentación de la VPC.

Si desea que el CodeBuild aprovisionamiento se ejecute en una VPC personalizada AWS Proton , ofrece una solución sencilla. En primer lugar, debe agregar el ID de la VPC, las subredes y los grupos de seguridad a la plantilla de entorno. A continuación, introduzca esos valores en la especificación del entorno. Esto dará como resultado la creación de un CodeBuild proyecto para usted dirigido a una VPC determinada.

Actualización de la plantilla de entorno

Esquema

El ID de la VPC, las subredes y los grupos de seguridad deben agregarse al esquema de la plantilla para que puedan existir en las especificaciones del entorno.

Un ejemplo 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

Esto agrega tres propiedades nuevas que utilizará el manifiesto:

  • codebuild_vpc_id

  • codebuild_subnets

  • codebuild_security_groups

Manifiesto

Para configurar los ajustes de Amazon VPC en CodeBuild, hay una propiedad opcional llamada project_properties disponible en el manifiesto de la plantilla. El contenido de project_properties se añade a la AWS CloudFormation pila que crea el CodeBuild proyecto. Esto permite añadir no solo AWS CloudFormation propiedades de Amazon VPC, sino también cualquier CodeBuild CloudFormation propiedad compatible, como el tiempo de espera de compilación. Los mismos datos proporcionados a proton-inputs.json están disponibles para los valores de project_properties.

Añada esta sección a su manifest.yaml:

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

El manifest.yaml resultante puede tener el siguiente aspecto:

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 }}"
Creación del entorno

Al crear un entorno con una plantilla habilitada para VPC de CodeBuild Provisioning, debe proporcionar el ID de Amazon VPC, las subredes y los grupos de seguridad.

Para obtener una lista de todas las Amazon VPC de su IDs región, ejecute el siguiente comando:

aws ec2 describe-vpcs

Para obtener una lista de todas las subredes IDs, ejecute:

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

Incluya solo las subredes privadas. CodeBuild fallará si proporciona subredes públicas. A diferencia de las subredes privadas, las subredes públicas tienen una ruta predeterminada a una puerta de enlace de Internet.

Ejecute el siguiente comando para obtener el grupo IDs de seguridad. También se IDs pueden obtener mediante AWS Management Console:

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

Los valores se parecerán a los siguientes:

vpc-id: vpc-045ch35y28dec3a05 subnets: - subnet-04029a82e6ae46968 - subnet-0f500a9294fc5f26a security-groups: - sg-03bc4c4ce32d67e8d
Garantizar CodeBuild los permisos

La compatibilidad con la VPC de Amazon requiere ciertos permisos, como la capacidad de crear una interfaz de red elástica.

Si el entorno se está creando en la consola, introduzca estos valores durante el asistente de creación del entorno. Si desea crear el entorno mediante programación, su spec.yaml tendrá el siguiente aspecto:

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