CodeBuild 프로비저닝 사용자 지정 아마존 VPC 지원 - AWS Proton

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

CodeBuild 프로비저닝 사용자 지정 아마존 VPC 지원

AWS Proton CodeBuild 프로비저닝은 AWS Proton 환경 계정에 있는 CodeBuild 프로젝트에서 고객이 제공한 임의의 CLI 명령을 실행합니다. 이러한 명령은 일반적으로 CDK와 같은 코드형 인프라(IaC) 도구를 사용하여 리소스를 관리합니다. Amazon VPC에 리소스가 있는 경우 CodeBuild에서 리소스에 액세스하지 못할 수 있습니다. 이를 위해 CodeBuild는 특정 Amazon VPC 내에서 실행할 수 있는 기능을 지원합니다. 몇 가지 사용 사례는 다음과 같습니다.

  • Python용 PyPI, Java용 Maven 및 Node.js용 npm과 같은 자체 호스팅된 내부 아티팩트 리포지토리의 종속성을 검색합니다.

  • CodeBuild는 파이프라인을 등록하기 위해 특정 Amazon VPC의 Jenkins 서버에 액세스해야 합니다.

  • Amazon VPC 엔드포인트를 통해서만 액세스할 수 있도록 구성된 Amazon S3 버킷의 개체에 액세스합니다.

  • 빌드에서 사설 서브넷에 격리된 Amazon RDS 데이터베이스의 데이터에 대해 통합 테스트를 실행합니다.

자세한 내용은 CodeBuild 및 VPC 설명서를 참조하세요.

CodeBuild 프로비저닝을 커스텀 VPC에서 실행하려는 경우 AWS Proton은 간단한 솔루션을 제공합니다. 먼저 VPC ID, 서브넷, 보안 그룹을 환경 템플릿에 추가해야 합니다. 그런 다음 환경 사양에 해당 값을 입력합니다. 이렇게 하면 지정된 VPC를 대상으로 하는 CodeBuild 프로젝트가 생성됩니다.

환경 템플릿 업데이트

스키마

VPC ID, 서브넷 및 보안 그룹은 환경 사양에 존재할 수 있도록 템플릿 스키마에 추가해야 합니다.

예시 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

이렇게 하면 매니페스트에서 사용할 세 가지 새 속성이 추가됩니다.

  • codebuild_vpc_id

  • codebuild_subnets

  • codebuild_security_groups

매니페스트

CodeBuild에서 Amazon VPC 설정을 구성하려면 템플릿 매니페스트에서 project_properties 라는 선택적 속성을 사용할 수 있습니다. project_properties의 내용은 CodeBuild 프로젝트를 만드는 AWS CloudFormation 스택에 추가됩니다. 이렇게 하면 Amazon VPC AWS CloudFormation 속성뿐만 아니라 빌드 타임아웃과 같이 지원되는 CodeBuild CloudFormation 속성도 추가할 수 있습니다. proton-inputs.json에 제공된 것과 동일한 데이터를 project_properties의 값에도 사용할 수 있습니다.

이 섹션을 manifest.yaml에 추가합니다.

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

결과 manifest.yaml는 다음과 같을 수 있습니다.

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 }}"
환경 생성

CodeBuild 프로비저닝 VPC 지원 템플릿으로 환경을 생성할 때는 Amazon VPC ID, 서브넷, 보안 그룹을 제공해야 합니다.

해당 지역의 모든 Amazon VPC ID 목록을 가져오려면 다음 명령을 실행합니다.

aws ec2 describe-vpcs

모든 서브넷 ID 목록을 얻으려면 다음을 실행합니다.

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

프라이빗 서브넷만 포함하세요. 퍼블릭 서브넷을 제공하면 CodeBuild가 실패합니다. 퍼블릭 서브넷에는 인터넷 게이트웨이로 연결되는 기본 경로가 있지만 프라이빗 서브넷은 그렇지 않습니다.

다음 명령을 실행하여 보안 그룹 ID를 가져옵니다. 이러한 ID는 AWS Management Console을 통해서도 얻을 수 있습니다.

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

값은 다음과 비슷합니다.

vpc-id: vpc-045ch35y28dec3a05 subnets: - subnet-04029a82e6ae46968 - subnet-0f500a9294fc5f26a security-groups: - sg-03bc4c4ce32d67e8d
CodeBuild 권한 보장

Amazon VPC를 지원하려면 엘라스틱 네트워크 인터페이스를 생성하는 기능과 같은 특정 권한이 필요합니다.

콘솔에서 환경을 생성하는 경우 환경 생성 마법사 중에 이러한 값을 입력하세요. 프로그래밍 방식으로 환경을 만들려는 경우 spec.yaml은 다음과 같이 표시됩니다.

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