AWS CodeBuild와 EB CLI를 함께 사용 - AWS Elastic Beanstalk

AWS CodeBuild와 EB CLI를 함께 사용

AWS CodeBuild는 소스 코드를 컴파일하고 단위 테스트를 실행하며 배포 준비가 완료된 아티팩트를 생성합니다. CodeBuild를 EB CLI와 함께 사용하여 소스 코드를 통한 애플리케이션 빌드를 자동화할 수 있습니다. 이후의 환경 생성과 각 배포는 빌드 단계로 시작하며, 그 후에는 결과로 얻은 애플리케이션을 배포합니다.

참고

일부 리전에서는 CodeBuild를 제공하지 않습니다. Elastic Beanstalk와 CodeBuild 간의 통합은 이러한 리전에서 작동하지 않습니다.

각 리전에서 제공되는 AWS 서비스에 대한 자세한 내용은 리전 표를 참조하십시오.

애플리케이션 생성

CodeBuild를 사용하는 Elastic Beanstalk 애플리케이션을 만들려면

  1. CodeBuild 빌드 사양 파일인 buildspec.yml을 애플리케이션 폴더에 포함합니다.

  2. Elastic Beanstalk에 고유한 옵션으로 eb_codebuild_settings 항목을 파일에 추가합니다.

  3. 폴더에서 eb init을 실행합니다.

Elastic Beanstalk는 CodeBuild 빌드 사양 파일 형식을 확장하여 다음 추가 설정을 포함합니다.

eb_codebuild_settings: CodeBuildServiceRole: role-name ComputeType: size Image: image Timeout: minutes
CodeBuildServiceRole

CodeBuild가 사용자를 대신해 종속 AWS 서비스와 상호 작용하는 데 사용할 수 있는 AWS Identity and Access Management(IAM) 서비스 역할 이름 또는 ARN입니다. 이 값은 필수입니다. 이를 생략할 경우 후속 eb create 또는 eb deploy 명령이 실패합니다.

CodeBuild에 대한 서비스 역할 생성에 대해 자세히 알아보려면 AWS CodeBuild 사용 설명서CodeBuild 서비스 역할 생성을 참조하십시오.

참고

또한 CodeBuild 자체에서 작업을 수행할 권한도 필요합니다. Elastic Beanstalk AdministratorAccess-AWSElasticBeanstalk 관리형 사용자 정책에 필요한 모든 CodeBuild 작업 권한이 포함되어 있습니다. 관리형 정책을 사용하지 않는 경우 반드시 사용자 정책에서 다음 권한을 허용합니다.

"codebuild:CreateProject", "codebuild:DeleteProject", "codebuild:BatchGetBuilds", "codebuild:StartBuild"

자세한 내용은 Elastic Beanstalk 사용자 정책 관리을(를) 참조하십시오.

ComputeType

CodeBuild 빌드 환경에서 Docker 컨테이너가 사용하는 리소스의 양입니다. 유효한 값은 BUILD_GENERAL1_SMALL, BUILD_GENERAL1_MEDIUM, BUILD_GENERAL1_LARGE입니다.

Image

CodeBuild가 빌드 환경에 대해 사용하는 Docker Hub 또는 Amazon ECR 이미지의 이름입니다. 이 도커 이미지에는 코드 빌드에 필요한 실행 시간 라이브러리와 도구가 전부 들어 있어야 하며, 애플리케이션의 대상 플랫폼과 일치해야 합니다. CodeBuild는 Elastic Beanstalk에서 사용하도록 특별히 마련된 이미지 세트를 관리하고 유지합니다. 이들 중 하나를 사용하는 것이 좋습니다. 자세한 내용은 AWS CodeBuild 사용 설명서CodeBuild에서 제공하는 도커 이미지를 참조하십시오.

Image 값은 선택 사항입니다. 이를 생략할 경우 eb init 명령은 대상 플랫폼에 가장 잘 맞는 이미지를 선택하려고 시도합니다. 또한 대화형 모드에서 eb init을 실행했는데 이미지를 선택하지 못할 경우, 이미지를 하나 선택하라는 메시지가 표시됩니다. 초기화가 성공적으로 끝나는 시점에는 eb init이 선택된 이미지를 buildspec.yml 파일에 작성합니다.

Timeout

제한 시간이 지나기 전에 CodeBuild 빌드를 실행하는 기간(분)입니다. 이 값은 선택 사항입니다. 유효한 값과 기본값에 대한 자세한 내용은 CodeBuild에서 빌드 프로젝트 생성을 참조하십시오.

참고

이 제한 시간은 CodeBuild 실행이 지속되는 최대 시간을 제어하고 EB CLI 또한 이를 애플리케이션 버전 생성의 첫 번째 단계의 일부로서 준수합니다. 이는 eb create 또는 eb deploy 명령의 --timeout 옵션으로 지정 가능한 값과 다릅니다. 후자의 값은 환경 생성이나 업데이트에 대한 EB CLI의 최대 대기 시간을 제어합니다.

애플리케이션 코드 빌드 및 배포

애플리케이션 코드 배포가 필요할 때마다 EB CLI는 CodeBuild를 사용하여 빌드를 실행하고 그에 따른 빌드 아티팩트를 환경으로 배포합니다. 이는 eb create 명령을 사용하여 애플리케이션에 Elastic Beanstalk 환경을 생성할 때와 그 이후에 eb deploy 명령을 사용하여 코드 변경 사항을 환경에 배포할 때마다 수행됩니다.

CodeBuild 단계가 실패할 경우 환경 생성이나 배포가 시작되지 않습니다.