As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
CodeBuild provisionamento de suporte personalizado à Amazon VPC
AWS Proton CodeBuild O provisionamento executa comandos CLI arbitrários fornecidos pelo cliente em um projeto localizado na CodeBuild conta Environment. AWS Proton Esses comandos normalmente gerenciam recursos usando uma ferramenta de Infraestrutura como Código (IaC), como CDK. Se você tiver recursos em uma Amazon VPC, CodeBuild talvez não consiga acessá-los. Para permitir isso, CodeBuild oferece suporte à capacidade de execução em uma Amazon VPC específica. Alguns exemplos de casos de uso incluem:
-
Recuperar dependências de repositórios de artefatos auto-hospedados, internos, como
PyPI
para Python,Maven
para Java enpm
para Node.js. -
CodeBuild precisa acessar um servidor Jenkins em uma Amazon VPC específica para registrar um pipeline.
-
Acessar objetos em um bucket do Amazon S3 configurado para permitir acesso apenas por meio de um endpoint da VPC da Amazon.
-
Executar testes de integração na compilação em relação a dados em um banco de dados do Amazon RDS isolado em uma sub-rede privada.
Para obter mais informações, consulte a CodeBuild documentação da VPC.
Se você quiser que o CodeBuild provisionamento seja executado em uma VPC personalizada, AWS Proton fornece uma solução simples. Primeiro, você deve adicionar a ID da VPC, as sub-redes e os grupos de segurança ao modelo de ambiente. Em seguida, você insere esses valores na especificação do ambiente. Isso resultará na criação de um CodeBuild projeto para você que tem como alvo uma determinada VPC.
Atualizando o modelo de ambiente
Schema
O ID da VPC, as sub-redes e os grupos de segurança precisam ser adicionados ao esquema do modelo para que possam existir na especificação do ambiente.
Um exemplo de 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
Isso adiciona três novas propriedades que serão usadas pelo manifesto:
-
codebuild_vpc_id
-
codebuild_subnets
-
codebuild_security_groups
Manifesto
Para definir as configurações da Amazon VPC em CodeBuild, uma propriedade opcional chamada project_properties
está disponível no modelo de manifesto. O conteúdo de project_properties
é adicionado à AWS CloudFormation pilha que cria o CodeBuild projeto. Isso possibilita adicionar não apenas AWS CloudFormation propriedades da Amazon VPC, mas também qualquer CodeBuild CloudFormation propriedade compatível, como tempo limite de compilação. Os mesmos dados fornecidos ao proton-inputs.json
são disponibilizados para os valores de project_properties
.
Adicione esta seção ao seu manifest.yaml
:
project_properties: VpcConfig: VpcId: "{{ environment.inputs.codebuild_vpc_id }}" Subnets: "{{ environment.inputs.codebuild_subnets }}" SecurityGroupIds: "{{ environment.inputs.codebuild_security_groups }}"
Veja a seguir a aparência do manifest.yaml
resultante:
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 }}"
Criar o ambiente
Ao criar um ambiente com seu modelo habilitado para CodeBuild Provisioning VPC, você deve fornecer o ID, as sub-redes e os grupos de segurança da Amazon VPC.
Para obter uma lista de todas as Amazon VPC IDs em sua região, execute o seguinte comando:
aws ec2 describe-vpcs
Para obter uma lista de toda a sub-rede IDs, execute:
aws ec2 describe-subnets --filters "Name=vpc-id,Values=
vpc-id
"
Importante
Inclua somente sub-redes privadas. CodeBuild falhará se você fornecer sub-redes públicas. As sub-redes públicas têm uma rota padrão para um Gateway da Internet, enquanto as sub-redes privadas não.
Execute o comando a seguir para obter o grupo de segurança IDs. Eles também IDs podem ser obtidos por meio do AWS Management Console:
aws ec2 describe-security-groups --filters "Name=vpc-id,Values=
vpc-id
"
Os valores serão semelhantes a:
vpc-id: vpc-045ch35y28dec3a05 subnets: - subnet-04029a82e6ae46968 - subnet-0f500a9294fc5f26a security-groups: - sg-03bc4c4ce32d67e8d
Garantindo CodeBuild permissões
O suporte ao Amazon VPC exige certas permissões, como a capacidade de criar uma interface de rede elástica.
Se o ambiente estiver sendo criado no console, insira esses valores durante o assistente de criação de ambiente. Se você quiser criar o ambiente de forma programática, a aparência do seu spec.yaml
será a seguinte:
proton: EnvironmentSpec spec: codebuild_vpc_id:
vpc-045ch35y28dec3a05
codebuild_subnets: -subnet-04029a82e6ae46968
-subnet-0f500a9294fc5f26a
codebuild_security_groups: -sg-03bc4c4ce32d67e8d