시작하기 CodeBuild - AWS CodeBuild

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

시작하기 CodeBuild

다음 자습서에서는 샘플 소스 코드 입력 파일 컬렉션을 배포 가능한 소스 코드 버전으로 빌드하는 AWS CodeBuild 데 사용합니다.

두 자습서의 입력 및 결과는 동일하지만 하나는 AWS CodeBuild 콘솔을 사용하고 다른 자습서에서는 를 사용합니다. AWS CLI

중요

AWS 루트 계정을 사용하여 이 자습서를 완료하지 않는 것이 좋습니다.

콘솔 AWS CodeBuild 사용 시작하기

이 자습서에서는 샘플 소스 코드 입력 파일 모음 (빌드 입력 아티팩트 또는 빌드 입력) 을 소스 코드의 배포 가능한 버전 (빌드 출력 아티팩트 또는 빌드 출력) 으로 빌드하는 데 사용합니다 AWS CodeBuild . 특히, 일반적인 빌드 도구인 Apache Maven을 사용하여 Java 클래스 파일 세트를 Java Archive () 파일로 빌드하도록 CodeBuild 지시합니다. JAR 이 자습서는 Apache Maven이나 Java에 익숙하지 않아도 완료할 수 있습니다.

CodeBuild 콘솔 AWS CodePipeline, 또는 CodeBuild 를 통해 작업할 수 있습니다 AWS CLI. AWS SDKs 이 자습서에서는 CodeBuild 콘솔 사용 방법을 보여줍니다. 사용에 대한 자세한 내용은 CodePipeline 을 참조하십시오 CodeBuild 와 함께 사용 CodePipeline.

중요

이 자습서의 단계를 수행하려면 AWS 계정에 요금이 부과될 수 있는 리소스 (예: S3 버킷) 를 생성해야 합니다. 여기에는 Amazon S3 AWS KMS, CloudWatch 로그와 관련된 AWS 리소스 및 작업에 대한 가능한 요금이 포함됩니다. CodeBuild 자세한 내용은 AWS CodeBuild 요금, Amazon S3 요금, AWS Key Management Service 요금Amazon CloudWatch 요금을 참조하십시오.

1단계: 소스 코드 생성

(콘솔 AWS CodeBuild 사용 시작하기의 일부)

이 단계에서는 출력 CodeBuild 버킷에 빌드하려는 소스 코드를 생성합니다. 이 소스 코드는 두 개의 Java 클래스 파일과 Apache Maven 프로젝트 개체 모델 (POM) 파일로 구성되어 있습니다.

  1. 로컬 컴퓨터나 인스턴스의 빈 디렉터리에 다음 디렉터리 구조를 생성합니다.

    (root directory name) `-- src |-- main | `-- java `-- test `-- java
  2. 원하는 텍스트 편집기를 사용하여 다음 파일을 생성하고 이름을 MessageUtil.java로 지정한 다음 이를 src/main/java 디렉터리에 저장합니다.

    public class MessageUtil { private String message; public MessageUtil(String message) { this.message = message; } public String printMessage() { System.out.println(message); return message; } public String salutationMessage() { message = "Hi!" + message; System.out.println(message); return message; } }

    이 클래스 파일은 자신에게 전달되는 문자열을 출력으로 생성합니다. MessageUtil 생성자는 문자열을 설정합니다. printMessage 메서드는 출력을 생성합니다. salutationMessage 메서드는 Hi! 다음에 문자열을 출력합니다.

  3. 다음 파일을 생성하고 이름을 TestMessageUtil.java로 지정한 다음 이를 /src/test/java 디렉터리에 저장합니다.

    import org.junit.Test; import org.junit.Ignore; import static org.junit.Assert.assertEquals; public class TestMessageUtil { String message = "Robert"; MessageUtil messageUtil = new MessageUtil(message); @Test public void testPrintMessage() { System.out.println("Inside testPrintMessage()"); assertEquals(message,messageUtil.printMessage()); } @Test public void testSalutationMessage() { System.out.println("Inside testSalutationMessage()"); message = "Hi!" + "Robert"; assertEquals(message,messageUtil.salutationMessage()); } }

    이 클래스 파일은 MessageUtil 클래스의 message 변수를 Robert로 설정합니다. 그런 다음 테스트를 수행하여 RobertHi!Robert 문자열이 출력에 나타나는지 여부를 확인하여 message 변수가 성공적으로 설정되었는지를 확인합니다.

  4. 다음 파일을 생성하고 이름을 pom.xml로 지정한 다음 이를 루트(최상위) 디렉터리에 저장합니다.

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>messageUtil</artifactId> <version>1.0</version> <packaging>jar</packaging> <name>Message Utility Java Sample App</name> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> </plugin> </plugins> </build> </project>

    Apache Maven은 이 파일의 지침을 따라 MessageUtil.javaTestMessageUtil.java 파일을 messageUtil-1.0.jar이라는 파일로 변환한 다음 지정된 테스트를 실행합니다.

이때 다음과 같이 디렉터리 구조가 나타나야 합니다.

(root directory name) |-- pom.xml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java

2단계: buildspec 파일 생성

(이전 단계: 1단계: 소스 코드 생성)

이 단계에서는 빌드 사양 파일을 생성합니다. 빌드스펙은 빌드를 실행하는 데 사용되는 빌드 명령 및 관련 설정 (YAML형식) 의 모음입니다. CodeBuild 빌드 사양이 없으면 빌드 입력을 빌드 출력으로 성공적으로 변환하거나 빌드 환경에서 빌드 출력 아티팩트를 찾아 출력 버킷에 업로드할 수 CodeBuild 없습니다.

다음 파일을 생성하고 이름을 buildspec.yml로 지정한 다음 이를 루트(최상위) 디렉터리에 저장합니다.

version: 0.2 phases: install: runtime-versions: java: corretto11 pre_build: commands: - echo Nothing to do in the pre_build phase... build: commands: - echo Build started on `date` - mvn install post_build: commands: - echo Build completed on `date` artifacts: files: - target/messageUtil-1.0.jar
중요

빌드 사양 선언은 YAML 유효해야 하므로 빌드 사양 선언의 간격이 중요합니다. 빌드 사양 선언의 공백 수가 YAML과 맞지 않으면 빌드가 즉시 실패할 수 있습니다. YAML유효성 검사기를 사용하여 빌드 사양 선언이 유효한지 테스트할 수 있습니다. YAML

참고

소스 코드에 빌드 사양 파일을 포함하는 대신, 빌드 프로젝트를 생성할 때 빌드 명령을 별도로 선언할 수 있습니다. 이 방법은 매번 소스 코드 리포지토리를 업데이트하지 않아도 되도록 여러 개의 빌드 명령이 있는 소스 코드를 빌드하려는 경우 유용합니다. 자세한 내용은 buildspec 구문 단원을 참조하십시오.

이 빌드 사양 선언에서:

  • version은 사용 중인 빌드 사양 표준의 버전을 나타냅니다. 이 빌드 사양 선언은 최신 버전인 0.2을 사용합니다.

  • phases명령을 실행하도록 CodeBuild 지시할 수 있는 빌드 단계를 나타냅니다. 여기에서는 이 빌드 단계가 install, pre_build, buildpost_build로 나열되어 있습니다. 이 빌드 단계 이름의 철자는 변경할 수 없으며 추가로 빌드 단계 이름을 생성할 수도 없습니다.

    이 예시에서는 build 단계 중에 명령을 CodeBuild 실행합니다. mvn install 이 명령은 Apache Maven이 Java 클래스 파일을 컴파일 및 테스트하고 컴파일된 Java 클래스 파일을 빌드 출력 결과물에 패키지하도록 지시합니다. 그리고 몇 가지 echo 명령을 각 빌드 단계에 추가하여 이 연습을 마치게 됩니다. 이 자습서의 뒷부분에서 자세한 빌드 정보를 볼 때 이러한 echo 명령의 출력을 통해 명령을 CodeBuild 실행하는 방법과 순서를 더 잘 이해할 수 있습니다. (이 예에는 모든 빌드 단계가 포함되어 있지만, 해당 단계에서 아무 명령도 실행하지 않으려면 빌드 단계를 포함하지 않아도 됩니다.) 각 빌드 단계에서 지정된 각 명령을 나열된 순서대로 한 번에 하나씩 처음부터 끝까지 CodeBuild 실행합니다.

  • artifacts출력 버킷에 CodeBuild 업로드되는 빌드 출력 아티팩트 세트를 나타냅니다. files빌드 출력에 포함할 파일을 나타냅니다. CodeBuild 빌드 환경의 target 상대 디렉터리에 있는 단일 messageUtil-1.0.jar 파일을 업로드합니다. 파일 이름 messageUtil-1.0.jar 및 디렉터리 이름 target은 Apache Maven이 이 예제에서만 빌드 출력 결과물을 생성 및 저장하는 방식에 따라 달라집니다. 사용자 자체 빌드에서는 이러한 파일 이름과 디렉터리가 다릅니다.

자세한 정보는 buildspec 참조 단원을 참조하십시오.

이때 다음과 같이 디렉터리 구조가 나타나야 합니다.

(root directory name) |-- pom.xml |-- buildspec.yml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java

3단계: 두 개의 S3 버킷 생성

(이전 단계: 2단계: buildspec 파일 생성)

한 개의 버킷을 사용하여 이 실습을 수행할 수도 있지만, 두 개의 버킷을 사용해야 빌드 입력이 들어오는 위치 및 빌드 출력이 나가는 위치를 쉽게 확인할 수 있습니다.

  • 이러한 버킷 중 하나(입력 버킷)는 빌드 입력을 저장합니다. 이 자습서에서 이 입력 버킷의 이름은 다음과 codebuild-region-ID-account-ID-input-bucket 같습니다.region-ID 는 버킷의 AWS 지역이고 account-ID AWS 계정 ID입니다.

  • 다른 버킷(출력 버킷)은 빌드 출력을 저장합니다. 이 자습서에서 이 출력 버킷의 이름은 codebuild-region-ID-account-ID-output-bucket입니다.

이러한 버킷에 대해 다른 이름을 선택한 경우 이 자습서 전체에서 해당 이름을 사용해야 합니다.

이 두 버킷은 빌드와 같은 AWS 지역에 있어야 합니다. 예를 들어 미국 동부 (오하이오) 지역에서 빌드를 CodeBuild 실행하도록 지시하는 경우 이러한 버킷은 미국 동부 (오하이오) 지역에도 있어야 합니다.

자세한 내용은 Amazon Simple Storage Service 사용 설명서에서 버킷 생성을 참조하세요.

참고

CodeCommit GitHub, 및 Bitbucket 리포지토리에 저장된 빌드 CodeBuild 입력도 지원하지만 이 자습서에서는 사용 방법을 설명하지 않습니다. 자세한 내용은 빌드 계획 단원을 참조하십시오.

4단계: 소스 코드 및 buildspec 파일 업로드

(이전 단계: 3단계: 두 개의 S3 버킷 생성)

이 단계에서는 소스 코드 및 빌드 사양 파일을 입력 버킷에 추가합니다.

사용하는 운영 체제의 zip 유틸리티를 사용하여 MessageUtil.java, TestMessageUtil.java, pom.xmlbuildspec.yml을 포함하는 MessageUtil.zip이라는 파일을 생성합니다.

MessageUtil.zip 파일의 디렉터리 구조가 다음과 같이 나타나야 합니다.

MessageUtil.zip |-- pom.xml |-- buildspec.yml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java
중요

(root directory name) 디렉터리는 포함하지 말고, (root directory name) 디렉터리 안에 있는 디렉터리 및 파일만 포함하십시오.

MessageUtil.zip 파일을 codebuild-region-ID-account-ID-input-bucket이라는 입력 버킷에 업로드합니다.

중요

및 Bitbucket 리포지토리의 경우 일반적으로 각 리포지토리의 루트 (최상위 수준) buildspec.yml 에 이름이 지정된 빌드 사양 파일을 저장하거나 빌드 프로젝트 정의의 일부로 빌드 사양 선언을 포함해야 합니다. CodeCommit GitHub 리포지토리의 소스 코드와 빌드 사양 ZIP 파일이 포함된 파일은 만들지 마세요.

S3 버킷에 저장된 빌드 입력의 경우에만 소스 코드가 들어 있는 ZIP 파일을 만들고 규칙에 따라 루트 (최상위 수준) 에 이름이 지정된 buildspec.yml 빌드 사양 파일을 만들거나 빌드 프로젝트 정의의 일부로 빌드 사양 선언을 포함해야 합니다.

빌드 사양 파일에 다른 이름을 사용하거나 루트가 아닌 위치에서 빌드 사양을 참조하려면 빌드 사양 재정의를 빌드 프로젝트 정의의 일부로 지정할 수 있습니다. 자세한 내용은 buildspec 파일 이름 및 스토리지 위치 단원을 참조하십시오.

5단계: 빌드 프로젝트 생성

(이전 단계: 4단계: 소스 코드 및 buildspec 파일 업로드)

이 단계에서는 빌드를 실행하는 데 AWS CodeBuild 사용하는 빌드 프로젝트를 생성합니다. 이 빌드 프로젝트에는 소스 코드를 가져올 위치, 사용할 빌드 환경, 실행할 빌드 명령 및 빌드 출력을 저장할 위치를 비롯하여 빌드 실행 방법에 대한 정보가 포함되어 있습니다. 빌드 환경은 운영 체제, 프로그래밍 언어 런타임, 빌드를 실행하는 데 CodeBuild 사용하는 도구의 조합을 나타냅니다. 빌드 환경은 도커 이미지로 표현됩니다. 자세한 정보는 Docker Docs 웹 사이트에서 Docker 개요 주제를 참조하십시오.

이 빌드 환경에서는 Java 개발 키트 (JDK) 및 Apache Maven의 버전이 포함된 Docker 이미지를 사용하도록 CodeBuild 지시합니다.

빌드 프로젝트를 생성하려면
  1. 에 AWS Management Console 로그인하고 codebuild/home에서 콘솔을 엽니다. AWS CodeBuild https://console.aws.amazon.com/codesuite/

  2. AWS 지역 선택기를 사용하여 지원되는 AWS 지역을 선택하세요. CodeBuild 자세한 내용은Amazon Web Services 일반 참조에서 AWS CodeBuild 엔드포인트 및 할당량을 참조하세요.

  3. CodeBuild 정보 페이지가 표시되면 빌드 프로젝트 생성을 선택합니다. 그렇지 않을 경우, 탐색 창에서 빌드를 확장한 후 빌드 프로젝트를 선택하고 빌드 프로젝트 생성을 선택합니다.

  4. 빌드 프로젝트 만들기 페이지의 프로젝트 구성에서 프로젝트 이름에 이 빌드 프로젝트의 이름(이 예에서는 codebuild-demo-project)을 입력합니다. 빌드 프로젝트 이름은 AWS 계정별로 고유해야 합니다. 다른 이름을 사용하는 경우 이 자습서 전체에서 해당 이름을 사용해야 합니다.

    참고

    빌드 프로젝트 생성 페이지에 You are not authorized to perform this operation.와 같은 오류 메시지가 표시될 수 있습니다. 빌드 프로젝트를 만들 권한이 없는 AWS Management Console 사용자로 에 로그인했기 때문일 가능성이 큽니다. 이 문제를 해결하려면 에서 로그아웃한 후 다음 IAM 엔티티 중 하나에 속하는 자격 증명으로 다시 로그인하세요. AWS Management Console

    • AWS 계정의 관리자 사용자. 자세한 내용은 사용 설명서의 첫 번째 AWS 계정 루트 사용자 및 그룹 만들기를 참조하십시오.

    • AWSCodeBuildAdminAccess,AmazonS3ReadOnlyAccess, 및 IAMFullAccess 관리형 정책을 사용하는 AWS 계정의 사용자는 해당 사용자 또는 해당 사용자가 속한 IAM 그룹에 연결되어 있습니다. AWS 계정에 이러한 권한을 가진 사용자 또는 그룹이 없고 이러한 권한을 사용자 또는 그룹에 추가할 수 없는 경우 AWS 계정 관리자에게 도움을 요청하십시오. 자세한 내용은 AWS 에 대한 관리형 (사전 정의된) 정책 AWS CodeBuild 단원을 참조하십시오.

    두 옵션 모두 이 자습서를 완료할 수 있도록 빌드 프로젝트를 생성할 수 있는 관리자 권한이 포함되어 있습니다. 작업을 완료하는 데 필요한 최소 권한을 항상 사용하는 것이 좋습니다. 자세한 내용은 AWS CodeBuild 권한 참조 단원을 참조하십시오.

  5. 소스소스 공급자에서 Amazon S3를 선택합니다.

  6. 버킷의 경우 codebuild-를 선택합니다.region-ID-account-ID-입력 버킷.

  7. S3 object key(S3 객체 키)MessageUtil.zip을 입력합니다.

  8. 환경환경 이미지에서 관리형 이미지를 선택된 상태로 둡니다.

  9. 운영 체제에서 Amazon Linux 2를 선택합니다.

  10. 런타임에서 표준을 선택합니다.

  11. 이미지의 경우 aws/codebuild/amazonlinux2-x86_64-standard:4.0을 선택합니다.

  12. 서비스 역할에서 새 서비스 역할을 선택된 상태로 두고, 역할 이름도 변경하지 않고 그대로 둡니다.

  13. Buildspec(빌드 사양)에서 Use a buildspec file(빌드 사양 파일 사용)을 선택된 상태로 둡니다.

  14. 아티팩트에서 유형으로 Amazon S3를 선택합니다.

  15. 버킷 이름으로 코드빌드를 선택합니다. region-ID-account-ID-출력 버킷.

  16. 이름경로는 비워 둡니다.

  17. 빌드 프로젝트 생성을 선택합니다.

6단계: 빌드 실행

(이전 단계: 5단계: 빌드 프로젝트 생성)

이 단계에서는 빌드 프로젝트의 설정으로 빌드를 AWS CodeBuild 실행하도록 지시합니다.

빌드를 실행하려면
  1. https://console.aws.amazon.com/codesuite/코드빌드/홈에서 AWS CodeBuild 콘솔을 엽니다.

  2. 탐색 창에서 프로젝트 빌드를 선택합니다.

  3. 빌드 프로젝트 목록에서 을 선택한 codebuild-demo-project다음 빌드 시작을 선택합니다. 빌드가 즉시 시작됩니다.

7단계: 요약된 빌드 정보 보기

(이전 단계: 6단계: 빌드 실행)

이 단계에서는 빌드 상태에 대한 요약 정보를 확인합니다.

요약된 빌드 정보를 보려면

  1. codebuild-demo-project다음과 같은 경우:<build-ID>페이지가 표시되지 않는 경우 내비게이션 바에서 Build history를 선택합니다. 그런 다음 빌드 프로젝트 목록에서 프로젝트에 대해 빌드 실행 대상 링크를 선택합니다 codebuild-demo-project. 일치하는 링크가 하나만 있어야 합니다. (이전에 이 자습서를 완료한 경우 완료됨 열에서 가장 최근 값이 포함된 링크를 선택합니다.)

  2. 빌드 상태 페이지의 단계 세부 정보에는 다음과 같은 빌드 단계가 표시되고 상태 열에 성공이 표시되어야 합니다.

    • SUBMITTED

    • QUEUED

    • PROVISIONING

    • DOWNLOAD_SOURCE

    • INSTALL

    • PRE_BUILD

    • BUILD

    • POST_BUILD

    • UPLOAD_ARTIFACTS

    • FINALIZING

    • COMPLETED

    빌드 상태에, 성공이 표시되어야 합니다.

    대신 진행 중이 표시되면 새로 고침 단추를 선택합니다.

  3. 각 빌드 단계 옆에 있는 기간 값은 빌드 단계가 지속되는 기간을 나타냅니다. 종료 시간 값은 빌드 단계가 종료되었음을 나타냅니다.

8단계: 자세한 빌드 정보 보기

(이전 단계: 7단계: 요약된 빌드 정보 보기)

이 단계에서는 CloudWatch 로그에서 빌드에 대한 자세한 정보를 볼 수 있습니다.

참고

민감한 정보를 보호하기 위해 CodeBuild 로그에는 다음이 숨겨져 있습니다.

자세한 빌드 정보를 보려면
  1. 이전 단계의 빌드 세부 정보 페이지가 계속 표시된 상태에서 [Build logs]에 빌드 로그의 마지막 10,000행이 표시되어 있습니다. 로그에서 전체 빌드 CloudWatch 로그를 보려면 전체 로그 보기 링크를 선택합니다.

  2. 로그 CloudWatch 로그 스트림에서 로그 이벤트를 찾아볼 수 있습니다. 기본적으로 가장 최근의 로그 이벤트 세트만 표시됩니다. 이전의 로그 이벤트를 보려면 목록의 처음으로 스크롤합니다.

  3. 이 자습서에서 설명하는 대부분의 로그 이벤트에는 빌드 종속성 파일을 해당 빌드 환경에 CodeBuild 다운로드하고 설치하는 방법에 대한 자세한 정보가 포함되어 있습니다. 이 정보는 아마 신경 쓰지 않으셔도 됩니다. [Filter events]를 사용하면 표시되는 정보를 줄일 수 있습니다. 예를 들어, 필터 이벤트"[INFO]"를 입력하면 [INFO]를 포함하는 이벤트만 표시됩니다. 자세한 내용은 Amazon CloudWatch 사용 설명서의 필터 및 패턴 구문을 참조하십시오.

9단계: 빌드 출력 아티팩트 가져오기

(이전 단계: 8단계: 자세한 빌드 정보 보기)

이 단계에서는 출력 버킷에 CodeBuild 빌드되고 업로드된 messageUtil-1.0.jar 파일을 가져옵니다.

CodeBuild 콘솔 또는 Amazon S3 콘솔을 사용하여 이 단계를 완료할 수 있습니다.

빌드 출력 아티팩트를 가져오려면 (AWS CodeBuild 콘솔)
  1. CodeBuild 콘솔이 여전히 열려 있고 이전 단계의 빌드 세부정보 페이지가 계속 표시된 상태에서 빌드 세부정보 탭을 선택하고 아티팩트 섹션으로 스크롤합니다.

    참고

    빌드 세부 정보 페이지가 표시되지 않으면, 탐색 모음에서 빌드 이력을 선택한 다음, 빌드 실행 링크를 선택합니다.

  2. Amazon S3 폴더로 연결되는 링크는 아티팩트 업로드 위치 아래에 있습니다. 이 링크를 클릭하면 messageUtil-1.0.jar 빌드 출력 아티팩트 파일을 찾는 Amazon S3의 폴더가 열립니다.

빌드 출력 아티팩트를 가져오려면(Amazon S3 콘솔)
  1. 에서 Amazon S3 콘솔을 엽니다 https://console.aws.amazon.com/s3/.

  2. codebuild-region-ID-account-ID-output-bucket를 엽니다.

  3. codebuild-demo-project 폴더를 엽니다.

  4. target 폴더를 엽니다. 이 폴더에서 messageUtil-1.0.jar 빌드 출력 결과물 파일을 찾을 수 있습니다.

10단계: S3 버킷 삭제

(이전 단계: 9단계: 빌드 출력 아티팩트 가져오기)

AWS 계정에 계속 요금이 청구되는 것을 방지하려면 이 자습서에서 사용된 입력 및 출력 버킷을 삭제하면 됩니다. 지침을 보려면 Amazon Simple Storage Service 사용 설명서에서 버킷 삭제 또는 비우기를 참조하세요.

IAM사용자 또는 관리자 IAM 사용자를 사용하여 이러한 버킷을 삭제하는 경우 사용자에게 추가 액세스 권한이 있어야 합니다. 마커 사이에 다음 명령문을 추가합니다 (### BEGIN ADDING STATEMENT HERE ### 그리고 ### END ADDING STATEMENTS HERE ###사용자의 기존 액세스 정책에) 을 입력합니다.

이 명령문의 줄임표(...)는 간결하게 나타내기 위해 사용됩니다. 기존 액세스 정책의 어떤 명령문도 제거하지 마십시오. 이러한 줄임표는 정책에 입력하지 않아야 합니다.

{ "Version": "2012-10-17", "Id": "...", "Statement": [ ### BEGIN ADDING STATEMENT HERE ### { "Effect": "Allow", "Action": [ "s3:DeleteBucket", "s3:DeleteObject" ], "Resource": "*" } ### END ADDING STATEMENT HERE ### ] }

마무리

이 자습서에서는 Java 클래스 파일 세트를 파일로 AWS CodeBuild 빌드하는 JAR 방법을 사용했습니다. 그리고 빌드 결과를 확인했습니다.

이제 자체 CodeBuild 시나리오에서 사용해 볼 수 있습니다. 빌드 계획의 지침을 따르세요. 아직 시도해 볼 준비가 되지 않은 것 같으면 샘플 몇 가지를 더 빌드해 볼 수 있습니다. 자세한 내용은 사례 기반 샘플 사용 CodeBuild 단원을 참조하십시오.

AWS CodeBuild 사용 시작하기 AWS CLI

이 자습서에서는 샘플 소스 코드 입력 파일 모음 (빌드 입력 아티팩트 또는 빌드 입력이라고 함) 을 소스 코드의 배포 가능한 버전 (빌드 출력 아티팩트 또는 빌드 출력이라고 함) 으로 빌드하는 데 사용합니다 AWS CodeBuild . 특히, 일반적인 빌드 도구인 Apache Maven을 사용하여 Java 클래스 파일 세트를 Java Archive () 파일로 빌드하도록 CodeBuild 지시합니다. JAR 이 자습서는 Apache Maven이나 Java에 익숙하지 않아도 완료할 수 있습니다.

CodeBuild 콘솔 AWS CodePipeline, 또는 CodeBuild 를 통해 작업할 수 있습니다 AWS CLI. AWS SDKs 이 자습서에서는 CodeBuild 와 함께 사용하는 방법을 보여줍니다. AWS CLI사용에 대한 자세한 내용은 CodePipeline 을 참조하십시오 CodeBuild 와 함께 사용 CodePipeline.

중요

이 자습서의 단계를 수행하려면 AWS 계정에 요금이 부과될 수 있는 리소스 (예: S3 버킷) 를 생성해야 합니다. 여기에는 Amazon S3 AWS KMS, CloudWatch 로그와 관련된 AWS 리소스 및 작업에 대한 가능한 요금이 포함됩니다. CodeBuild 자세한 내용은 CodeBuild요금, Amazon S3 요금, AWS Key Management Service 요금Amazon CloudWatch 요금을 참조하십시오.

1단계: 소스 코드 생성

(AWS CodeBuild 사용 시작하기 AWS CLI의 일부)

이 단계에서는 출력 CodeBuild 버킷에 빌드하려는 소스 코드를 생성합니다. 이 소스 코드는 두 개의 Java 클래스 파일과 Apache Maven 프로젝트 개체 모델 (POM) 파일로 구성되어 있습니다.

  1. 로컬 컴퓨터나 인스턴스의 빈 디렉터리에 다음 디렉터리 구조를 생성합니다.

    (root directory name) `-- src |-- main | `-- java `-- test `-- java
  2. 원하는 텍스트 편집기를 사용하여 다음 파일을 생성하고 이름을 MessageUtil.java로 지정한 다음 이를 src/main/java 디렉터리에 저장합니다.

    public class MessageUtil { private String message; public MessageUtil(String message) { this.message = message; } public String printMessage() { System.out.println(message); return message; } public String salutationMessage() { message = "Hi!" + message; System.out.println(message); return message; } }

    이 클래스 파일은 자신에게 전달되는 문자열을 출력으로 생성합니다. MessageUtil 생성자는 문자열을 설정합니다. printMessage 메서드는 출력을 생성합니다. salutationMessage 메서드는 Hi! 다음에 문자열을 출력합니다.

  3. 다음 파일을 생성하고 이름을 TestMessageUtil.java로 지정한 다음 이를 /src/test/java 디렉터리에 저장합니다.

    import org.junit.Test; import org.junit.Ignore; import static org.junit.Assert.assertEquals; public class TestMessageUtil { String message = "Robert"; MessageUtil messageUtil = new MessageUtil(message); @Test public void testPrintMessage() { System.out.println("Inside testPrintMessage()"); assertEquals(message,messageUtil.printMessage()); } @Test public void testSalutationMessage() { System.out.println("Inside testSalutationMessage()"); message = "Hi!" + "Robert"; assertEquals(message,messageUtil.salutationMessage()); } }

    이 클래스 파일은 MessageUtil 클래스의 message 변수를 Robert로 설정합니다. 그런 다음 테스트를 수행하여 RobertHi!Robert 문자열이 출력에 나타나는지 여부를 확인하여 message 변수가 성공적으로 설정되었는지를 확인합니다.

  4. 다음 파일을 생성하고 이름을 pom.xml로 지정한 다음 이를 루트(최상위) 디렉터리에 저장합니다.

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>messageUtil</artifactId> <version>1.0</version> <packaging>jar</packaging> <name>Message Utility Java Sample App</name> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> </plugin> </plugins> </build> </project>

    Apache Maven은 이 파일의 지침을 따라 MessageUtil.javaTestMessageUtil.java 파일을 messageUtil-1.0.jar이라는 파일로 변환한 다음 지정된 테스트를 실행합니다.

이때 다음과 같이 디렉터리 구조가 나타나야 합니다.

(root directory name) |-- pom.xml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java

2단계: buildspec 파일 생성

(이전 단계: 1단계: 소스 코드 생성)

이 단계에서는 빌드 사양 파일을 생성합니다. 빌드스펙은 빌드를 실행하는 데 사용되는 빌드 명령 및 관련 설정 (YAML형식) 의 모음입니다. CodeBuild 빌드 사양이 없으면 빌드 입력을 빌드 출력으로 성공적으로 변환하거나 빌드 환경에서 빌드 출력 아티팩트를 찾아 출력 버킷에 업로드할 수 CodeBuild 없습니다.

다음 파일을 생성하고 이름을 buildspec.yml로 지정한 다음 이를 루트(최상위) 디렉터리에 저장합니다.

version: 0.2 phases: install: runtime-versions: java: corretto11 pre_build: commands: - echo Nothing to do in the pre_build phase... build: commands: - echo Build started on `date` - mvn install post_build: commands: - echo Build completed on `date` artifacts: files: - target/messageUtil-1.0.jar
중요

빌드 사양 선언은 YAML 유효해야 하므로 빌드 사양 선언의 간격이 중요합니다. 빌드 사양 선언의 공백 수가 YAML과 맞지 않으면 빌드가 즉시 실패할 수 있습니다. YAML유효성 검사기를 사용하여 빌드 사양 선언이 유효한지 테스트할 수 있습니다. YAML

참고

소스 코드에 빌드 사양 파일을 포함하는 대신, 빌드 프로젝트를 생성할 때 빌드 명령을 별도로 선언할 수 있습니다. 이 방법은 매번 소스 코드 리포지토리를 업데이트하지 않아도 되도록 여러 개의 빌드 명령이 있는 소스 코드를 빌드하려는 경우 유용합니다. 자세한 내용은 buildspec 구문 단원을 참조하십시오.

이 빌드 사양 선언에서:

  • version은 사용 중인 빌드 사양 표준의 버전을 나타냅니다. 이 빌드 사양 선언은 최신 버전인 0.2을 사용합니다.

  • phases명령을 실행하도록 CodeBuild 지시할 수 있는 빌드 단계를 나타냅니다. 여기에서는 이 빌드 단계가 install, pre_build, buildpost_build로 나열되어 있습니다. 이 빌드 단계 이름의 철자는 변경할 수 없으며 추가로 빌드 단계 이름을 생성할 수도 없습니다.

    이 예시에서는 build 단계 중에 명령을 CodeBuild 실행합니다. mvn install 이 명령은 Apache Maven이 Java 클래스 파일을 컴파일 및 테스트하고 컴파일된 Java 클래스 파일을 빌드 출력 결과물에 패키지하도록 지시합니다. 그리고 몇 가지 echo 명령을 각 빌드 단계에 추가하여 이 연습을 마치게 됩니다. 이 자습서의 뒷부분에서 자세한 빌드 정보를 볼 때 이러한 echo 명령의 출력을 통해 명령을 CodeBuild 실행하는 방법과 순서를 더 잘 이해할 수 있습니다. (이 예에는 모든 빌드 단계가 포함되어 있지만, 해당 단계에서 아무 명령도 실행하지 않으려면 빌드 단계를 포함하지 않아도 됩니다.) 각 빌드 단계에서 지정된 각 명령을 나열된 순서대로 한 번에 하나씩 처음부터 끝까지 CodeBuild 실행합니다.

  • artifacts출력 버킷에 CodeBuild 업로드되는 빌드 출력 아티팩트 세트를 나타냅니다. files빌드 출력에 포함할 파일을 나타냅니다. CodeBuild 빌드 환경의 target 상대 디렉터리에 있는 단일 messageUtil-1.0.jar 파일을 업로드합니다. 파일 이름 messageUtil-1.0.jar 및 디렉터리 이름 target은 Apache Maven이 이 예제에서만 빌드 출력 결과물을 생성 및 저장하는 방식에 따라 달라집니다. 사용자 자체 빌드에서는 이러한 파일 이름과 디렉터리가 다릅니다.

자세한 정보는 buildspec 참조 단원을 참조하십시오.

이때 다음과 같이 디렉터리 구조가 나타나야 합니다.

(root directory name) |-- pom.xml |-- buildspec.yml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java

3단계: 두 개의 S3 버킷 생성

(이전 단계: 2단계: buildspec 파일 생성)

한 개의 버킷을 사용하여 이 실습을 수행할 수도 있지만, 두 개의 버킷을 사용해야 빌드 입력이 들어오는 위치 및 빌드 출력이 나가는 위치를 쉽게 확인할 수 있습니다.

  • 이러한 버킷 중 하나(입력 버킷)는 빌드 입력을 저장합니다. 이 자습서에서 이 입력 버킷의 이름은 다음과 codebuild-region-ID-account-ID-input-bucket 같습니다.region-ID 는 버킷의 AWS 지역이고 account-ID AWS 계정 ID입니다.

  • 다른 버킷(출력 버킷)은 빌드 출력을 저장합니다. 이 자습서에서 이 출력 버킷의 이름은 codebuild-region-ID-account-ID-output-bucket입니다.

이러한 버킷에 대해 다른 이름을 선택한 경우 이 자습서 전체에서 해당 이름을 사용해야 합니다.

이 두 버킷은 빌드와 같은 AWS 지역에 있어야 합니다. 예를 들어 미국 동부 (오하이오) 지역에서 빌드를 CodeBuild 실행하도록 지시하는 경우 이러한 버킷은 미국 동부 (오하이오) 지역에도 있어야 합니다.

자세한 내용은 Amazon Simple Storage Service 사용 설명서에서 버킷 생성을 참조하세요.

참고

CodeCommit GitHub, 및 Bitbucket 리포지토리에 저장된 빌드 CodeBuild 입력도 지원하지만 이 자습서에서는 사용 방법을 설명하지 않습니다. 자세한 내용은 빌드 계획 단원을 참조하십시오.

4단계: 소스 코드 및 buildspec 파일 업로드

(이전 단계: 3단계: 두 개의 S3 버킷 생성)

이 단계에서는 소스 코드 및 빌드 사양 파일을 입력 버킷에 추가합니다.

사용하는 운영 체제의 zip 유틸리티를 사용하여 MessageUtil.java, TestMessageUtil.java, pom.xmlbuildspec.yml을 포함하는 MessageUtil.zip이라는 파일을 생성합니다.

MessageUtil.zip 파일의 디렉터리 구조가 다음과 같이 나타나야 합니다.

MessageUtil.zip |-- pom.xml |-- buildspec.yml `-- src |-- main | `-- java | `-- MessageUtil.java `-- test `-- java `-- TestMessageUtil.java
중요

(root directory name) 디렉터리는 포함하지 말고, (root directory name) 디렉터리 안에 있는 디렉터리 및 파일만 포함하십시오.

MessageUtil.zip 파일을 codebuild-region-ID-account-ID-input-bucket이라는 입력 버킷에 업로드합니다.

중요

및 Bitbucket 리포지토리의 경우 일반적으로 각 리포지토리의 루트 (최상위 수준) buildspec.yml 에 이름이 지정된 빌드 사양 파일을 저장하거나 빌드 프로젝트 정의의 일부로 빌드 사양 선언을 포함해야 합니다. CodeCommit GitHub 리포지토리의 소스 코드와 빌드 사양 ZIP 파일이 포함된 파일은 만들지 마세요.

S3 버킷에 저장된 빌드 입력의 경우에만 소스 코드가 들어 있는 ZIP 파일을 만들고 규칙에 따라 루트 (최상위 수준) 에 이름이 지정된 buildspec.yml 빌드 사양 파일을 만들거나 빌드 프로젝트 정의의 일부로 빌드 사양 선언을 포함해야 합니다.

빌드 사양 파일에 다른 이름을 사용하거나 루트가 아닌 위치에서 빌드 사양을 참조하려면 빌드 사양 재정의를 빌드 프로젝트 정의의 일부로 지정할 수 있습니다. 자세한 내용은 buildspec 파일 이름 및 스토리지 위치 단원을 참조하십시오.

5단계: 빌드 프로젝트 생성

(이전 단계: 4단계: 소스 코드 및 buildspec 파일 업로드)

이 단계에서는 빌드를 실행하는 데 AWS CodeBuild 사용하는 빌드 프로젝트를 생성합니다. 이 빌드 프로젝트에는 소스 코드를 가져올 위치, 사용할 빌드 환경, 실행할 빌드 명령 및 빌드 출력을 저장할 위치를 비롯하여 빌드 실행 방법에 대한 정보가 포함되어 있습니다. 빌드 환경은 운영 체제, 프로그래밍 언어 런타임, 빌드를 실행하는 데 CodeBuild 사용하는 도구의 조합을 나타냅니다. 빌드 환경은 도커 이미지로 표현됩니다. 자세한 정보는 Docker Docs 웹 사이트에서 Docker 개요 주제를 참조하십시오.

이 빌드 환경에서는 Java 개발 키트 (JDK) 및 Apache Maven의 버전이 포함된 Docker 이미지를 사용하도록 CodeBuild 지시합니다.

빌드 프로젝트를 생성하려면
  1. 를 AWS CLI 사용하여 명령을 실행합니다. create-project

    aws codebuild create-project --generate-cli-skeleton

    JSON-포맷된 데이터가 출력에 나타납니다. 설치된 로컬 컴퓨터 또는 인스턴스의 위치에 이름이 지정된 create-project.json 파일에 데이터를 복사합니다 AWS CLI . 다른 파일 이름을 사용하기로 선택하는 경우 이 자습서 전체에서 해당 이름을 사용해야 합니다.

    복사된 데이터를 다음 형식으로 수정한 다음 결과를 저장합니다.

    { "name": "codebuild-demo-project", "source": { "type": "S3", "location": "codebuild-region-ID-account-ID-input-bucket/MessageUtil.zip" }, "artifacts": { "type": "S3", "location": "codebuild-region-ID-account-ID-output-bucket" }, "environment": { "type": "LINUX_CONTAINER", "image": "aws/codebuild/standard:5.0", "computeType": "BUILD_GENERAL1_SMALL" }, "serviceRole": "serviceIAMRole" }

    Replace serviceIAMRole CodeBuild 서비스 역할의 Amazon 리소스 이름 (ARN) 을 사용합니다 (예:arn:aws:iam::account-ID:role/role-name). 파일을 만들려면 다른 AWS 서비스와 상호 작용할 수 CodeBuild 있도록 허용 섹션을 참조하세요.

    이 데이터에서:

    • name은 이 빌드 프로젝트에 대한 필수 식별자를 나타냅니다(이 예에서는 codebuild-demo-project). 빌드 프로젝트 이름은 계정에 있는 모든 빌드 프로젝트에서 고유해야 합니다.

    • sourcetype은 소스 코드의 리포지토리 유형을 나타내는 필수 값입니다(이 예에서는 Amazon S3 버킷의 경우 S3).

    • sourceFor 는 소스 코드의 경로를 location 나타냅니다 (이 예에서는 입력 버킷 이름 뒤에 ZIP 파일 이름이 붙음).

    • artifactstype은 빌드 출력 아티팩트의 리포지토리 유형을 나타내는 필수 값입니다(이 예에서는 Amazon S3 버킷의 경우 S3).

    • artifactslocation은 앞에서 생성하거나 지정한 출력 버킷의 이름을 나타냅니다(이 예에서는 codebuild-region-ID-account-ID-output-bucket).

    • environmenttype은 빌드 환경의 유형을 나타내는 필수 값입니다(이 예에서는 LINUX_CONTAINER).

    • For image 는 Docker 이미지 리포지토리 유형별로 지정된 대로 이 빌드 프로젝트에서 사용하는 Docker 이미지 이름 및 태그 조합을 나타내는 필수 값입니다 (이 예에서는 Docker 이미지 리포지토리의 Docker aws/codebuild/standard:5.0 이미지용). environment CodeBuild aws/codebuild/standardDocker 이미지의 이름입니다. 5.0도커 이미지의 태그입니다.

      자신의 시나리오에서 사용할 수 있는 더 많은 도커 이미지를 찾으려면 빌드 환경 참조 단원을 참조하십시오.

    • environmentFor computeType 는 CodeBuild 사용하는 컴퓨팅 리소스를 나타내는 필수 값입니다 (이 예에서는BUILD_GENERAL1_SMALL).

    참고

    , (및 포함),, (for), (및 포함) descriptionbuildspec, auth (type및 포함resource)path,namespaceType, 및 name (namevalue 포함artifacts) 와 같은 원본 JSON 형식 데이터에서 사용 가능한 기타 값은 선택 사항입니다. packaging environmentVariables timeoutInMinutes encryptionKey tags key value 이러한 값은 이 자습서에서 사용되지 않으므로 여기서는 다루지 않습니다. 자세한 내용은 빌드 프로젝트 생성(AWS CLI) 단원을 참조하십시오.

  2. 방금 저장한 파일이 들어 있는 디렉터리로 전환한 다음, create-project 명령을 다시 실행합니다.

    aws codebuild create-project --cli-input-json file://create-project.json

    이 명령이 제대로 실행되면 다음과 비슷한 데이터가 출력에 표시됩니다.

    { "project": { "name": "codebuild-demo-project", "serviceRole": "serviceIAMRole", "tags": [], "artifacts": { "packaging": "NONE", "type": "S3", "location": "codebuild-region-ID-account-ID-output-bucket", "name": "message-util.zip" }, "lastModified": 1472661575.244, "timeoutInMinutes": 60, "created": 1472661575.244, "environment": { "computeType": "BUILD_GENERAL1_SMALL", "image": "aws/codebuild/standard:5.0", "type": "LINUX_CONTAINER", "environmentVariables": [] }, "source": { "type": "S3", "location": "codebuild-region-ID-account-ID-input-bucket/MessageUtil.zip" }, "encryptionKey": "arn:aws:kms:region-ID:account-ID:alias/aws/s3", "arn": "arn:aws:codebuild:region-ID:account-ID:project/codebuild-demo-project" } }
    • project는 이 빌드 프로젝트에 대한 정보를 나타냅니다.

      • tags는 선언된 태그를 나타냅니다.

      • packaging은 빌드 출력 결과물이 출력 버킷에 저장되는 방식을 나타냅니다. NONE은 폴더가 출력 버킷 내부에 생성됨을 의미합니다. 빌드 출력 결과물이 해당 폴더에 저장됩니다.

      • lastModified는 빌드 프로젝트에 대한 정보가 마지막으로 변경된 시간을 Unix 시간 형식으로 나타냅니다.

      • timeoutInMinutes빌드가 완료되지 않은 경우 빌드가 CodeBuild 중지되기까지 걸리는 시간 (분) 을 나타냅니다. (기본값은 60분입니다.)

      • created는 빌드 프로젝트가 생성된 시간을 Unix 시간 형식으로 나타냅니다.

      • environmentVariables선언되어 빌드 중에 사용할 CodeBuild 수 있는 모든 환경 변수를 나타냅니다.

      • encryptionKey빌드 출력 아티팩트를 암호화하는 CodeBuild 데 사용된 고객 관리 키를 나타냅니다. ARN

      • arn빌드 프로젝트를 ARN 나타냅니다.

참고

create-project명령을 실행하면 다음과 비슷한 오류 메시지가 출력될 수 있습니다. User: user-ARN 수행할 권한이 없습니다: 코드빌드:. CreateProject 이는 빌드 프로젝트를 만드는 데 사용할 CodeBuild 수 있는 충분한 권한이 없는 사용자의 자격 AWS CLI 증명으로 를 구성했기 때문일 가능성이 큽니다. 이 문제를 해결하려면 다음 IAM 엔티티 중 하나에 속하는 자격 AWS CLI 증명으로 를 구성하세요.

  • AWS 계정의 관리자 사용자. 자세한 내용은 사용 설명서의 첫 번째 AWS 계정 루트 사용자 및 그룹 만들기를 참조하십시오.

  • AWSCodeBuildAdminAccess,AmazonS3ReadOnlyAccess, 및 IAMFullAccess 관리형 정책을 사용하는 AWS 계정의 사용자는 해당 사용자 또는 해당 사용자가 속한 IAM 그룹에 연결되어 있습니다. AWS 계정에 이러한 권한을 가진 사용자 또는 그룹이 없고 이러한 권한을 사용자 또는 그룹에 추가할 수 없는 경우 AWS 계정 관리자에게 도움을 요청하십시오. 자세한 내용은 AWS 에 대한 관리형 (사전 정의된) 정책 AWS CodeBuild 단원을 참조하십시오.

6단계: 빌드 실행

(이전 단계: 5단계: 빌드 프로젝트 생성)

이 단계에서는 빌드 프로젝트의 설정을 사용하여 빌드를 AWS CodeBuild 실행하도록 지시합니다.

빌드를 실행하려면
  1. 를 AWS CLI 사용하여 start-build 명령을 실행합니다.

    aws codebuild start-build --project-name project-name

    Replace project-name 이전 단계의 빌드 프로젝트 이름 (예:codebuild-demo-project) 을 사용합니다.

  2. 이 명령이 제대로 실행되면 다음과 비슷한 데이터가 출력에 표시됩니다.

    { "build": { "buildComplete": false, "initiator": "user-name", "artifacts": { "location": "arn:aws:s3:::codebuild-region-ID-account-ID-output-bucket/message-util.zip" }, "projectName": "codebuild-demo-project", "timeoutInMinutes": 60, "buildStatus": "IN_PROGRESS", "environment": { "computeType": "BUILD_GENERAL1_SMALL", "image": "aws/codebuild/standard:5.0", "type": "LINUX_CONTAINER", "environmentVariables": [] }, "source": { "type": "S3", "location": "codebuild-region-ID-account-ID-input-bucket/MessageUtil.zip" }, "currentPhase": "SUBMITTED", "startTime": 1472848787.882, "id": "codebuild-demo-project:0cfbb6ec-3db9-4e8c-992b-1ab28EXAMPLE", "arn": "arn:aws:codebuild:region-ID:account-ID:build/codebuild-demo-project:0cfbb6ec-3db9-4e8c-992b-1ab28EXAMPLE" } }
    • build는 이 빌드에 대한 정보를 나타냅니다.

      • buildComplete는 빌드 완료 여부를 나타냅니다(true). 그렇지 않을 경우 false입니다.

      • initiator는 빌드를 시작한 엔터티를 나타냅니다.

      • artifacts는 빌드 출력에 대한 정보를 나타냅니다(위치 포함).

      • projectName은 빌드 프로젝트의 이름을 나타냅니다.

      • buildStatusstart-build 명령이 실행되었을 당시의 빌드 상태를 나타냅니다.

      • currentPhasestart-build 명령이 실행되었을 당시의 빌드 단계를 나타냅니다.

      • startTime은 빌드 프로세스가 시작된 시간을 Unix 시간 형식으로 나타냅니다.

      • id는 빌드의 ID를 나타냅니다.

      • arnARN빌드의 를 나타냅니다.

    [id] 값을 기록해 둡니다. 이 정보는 다음 단계에서 필요합니다.

7단계: 요약된 빌드 정보 보기

(이전 단계: 6단계: 빌드 실행)

이 단계에서는 빌드 상태에 대한 요약 정보를 확인합니다.

요약된 빌드 정보를 보려면
  • 를 AWS CLI 사용하여 batch-get-builds 명령을 실행합니다.

    aws codebuild batch-get-builds --ids id

    Replace id 이전 단계의 출력에 표시된 id 값을 사용합니다.

    이 명령이 제대로 실행되면 다음과 비슷한 데이터가 출력에 표시됩니다.

    { "buildsNotFound": [], "builds": [ { "buildComplete": true, "phases": [ { "phaseStatus": "SUCCEEDED", "endTime": 1472848788.525, "phaseType": "SUBMITTED", "durationInSeconds": 0, "startTime": 1472848787.882 }, ... The full list of build phases has been omitted for brevity ... { "phaseType": "COMPLETED", "startTime": 1472848878.079 } ], "logs": { "groupName": "/aws/codebuild/codebuild-demo-project", "deepLink": "https://console.aws.amazon.com/cloudwatch/home?region=region-ID#logEvent:group=/aws/codebuild/codebuild-demo-project;stream=38ca1c4a-e9ca-4dbc-bef1-d52bfEXAMPLE", "streamName": "38ca1c4a-e9ca-4dbc-bef1-d52bfEXAMPLE" }, "artifacts": { "md5sum": "MD5-hash", "location": "arn:aws:s3:::codebuild-region-ID-account-ID-output-bucket/message-util.zip", "sha256sum": "SHA-256-hash" }, "projectName": "codebuild-demo-project", "timeoutInMinutes": 60, "initiator": "user-name", "buildStatus": "SUCCEEDED", "environment": { "computeType": "BUILD_GENERAL1_SMALL", "image": "aws/codebuild/standard:5.0", "type": "LINUX_CONTAINER", "environmentVariables": [] }, "source": { "type": "S3", "location": "codebuild-region-ID-account-ID-input-bucket/MessageUtil.zip" }, "currentPhase": "COMPLETED", "startTime": 1472848787.882, "endTime": 1472848878.079, "id": "codebuild-demo-project:38ca1c4a-e9ca-4dbc-bef1-d52bfEXAMPLE", "arn": "arn:aws:codebuild:region-ID:account-ID:build/codebuild-demo-project:38ca1c4a-e9ca-4dbc-bef1-d52bfEXAMPLE" } ] }
    • buildsNotFound정보를 IDs 사용할 수 없는 빌드의 빌드를 나타냅니다. 이 예에서는 비어 있어야 합니다.

    • builds는 정보를 찾을 수 있는 각 빌드에 대한 정보를 나타냅니다. 이 예에서는 한 빌드에 대한 정보만 출력에 표시됩니다.

      • phases빌드 프로세스 중에 CodeBuild 실행되는 빌드 단계 세트를 나타냅니다. 각 빌드 단계에 대한 정보는 startTime, endTimedurationInSeconds(빌드 단계가 시작 및 종료된 시간은 Unix 형식으로, 지속된 기간은 초로 표시)뿐만 아니라 phaseType(SUBMITTED, PROVISIONING, DOWNLOAD_SOURCE, INSTALL, PRE_BUILD, BUILD, POST_BUILD, UPLOAD_ARTIFACTS, FINALIZING 또는 COMPLETED 등) 및 phaseStatus(SUCCEEDED, FAILED, FAULT, TIMED_OUT, IN_PROGRESS 또는 STOPPED)가 개별적으로 나열됩니다. batch-get-builds 명령을 처음으로 실행하면 단계가 많이 표시되지 않거나 아예 하나도 표시되지 않을 수 있습니다. 동일한 빌드 ID로 batch-get-builds 명령을 계속하여 실행하면 더 많은 빌드 단계가 출력에 표시됩니다.

      • logs빌드 CloudWatch 로그에 대한 Amazon Logs의 정보를 나타냅니다.

      • md5sum빌드 출력 아티팩트의 해시를 sha256sum MD5 나타내고 SHA -256개의 해시를 나타냅니다. 이러한 값은 빌드 프로젝트의 packaging 값이 ZIP으로 설정되어 있는 경우에만 출력에 표시됩니다. (이 자습서에서는 이 값을 설정하지 않음) 이러한 해시를 체크섬 도구와 함께 사용하면 파일 무결성 및 신뢰성을 확인할 수 있습니다.

        참고

        Amazon S3 콘솔을 사용해서도 이러한 해시를 확인할 수 있습니다. 빌드 출력 결과물 옆의 확인란을 선택하고 작업, 속성을 차례로 선택합니다. 속성 창에서 메타데이터를 확장하고 -content-md5 및 -content-sha256의 값을 확인합니다. x-amz-meta-codebuild x-amz-meta-codebuild (Amazon S3 콘솔에서 빌드 출력 아티팩트 ETag값은 MD5 또는 SHA -256 해시로 해석되어서는 안 됩니다.)

        를 사용하여 이러한 해시를 가져오는 경우 값의 이름은 및 AWS SDKs 로 지정됩니다. codebuild-content-md5 codebuild-content-sha256

      • endTime은 빌드 프로세스가 종료된 시간을 Unix 시간 형식으로 나타냅니다.

    참고

    Amazon S3 메타데이터에는 Amazon S3에 아티팩트를 게시하는 buildArn CodeBuild 빌드의 이름이 x-amz-meta-codebuild-buildarn 포함된 CodeBuild 헤더가 있습니다. 알림에 대한 소스 추적을 허용하고 아티팩트가 생성된 빌드를 참조할 수 있도록 하기 위해 buildArn이 추가되었습니다.

8단계: 자세한 빌드 정보 보기

(이전 단계: 7단계: 요약된 빌드 정보 보기)

이 단계에서는 로그에서 CloudWatch 빌드에 대한 세부 정보를 확인합니다.

참고

민감한 정보를 보호하기 위해 CodeBuild 로그에는 다음이 숨겨져 있습니다.

자세한 빌드 정보를 보려면
  1. 웹 브라우저를 사용하여 이전 단계의 출력에 표시된 deepLink 위치로 이동합니다(예: https://console.aws.amazon.com/cloudwatch/home?region=region-ID#logEvent:group=/aws/codebuild/codebuild-demo-project;stream=38ca1c4a-e9ca-4dbc-bef1-d52bfEXAMPLE).

  2. 로그 CloudWatch 로그 스트림에서 로그 이벤트를 찾아볼 수 있습니다. 기본적으로 가장 최근의 로그 이벤트 세트만 표시됩니다. 이전의 로그 이벤트를 보려면 목록의 처음으로 스크롤합니다.

  3. 이 자습서에서 설명하는 대부분의 로그 이벤트에는 빌드 종속성 파일을 해당 빌드 환경에 CodeBuild 다운로드하고 설치하는 방법에 대한 자세한 정보가 포함되어 있습니다. 이 정보는 아마 신경 쓰지 않으셔도 됩니다. [Filter events]를 사용하면 표시되는 정보를 줄일 수 있습니다. 예를 들어, 필터 이벤트"[INFO]"를 입력하면 [INFO]를 포함하는 이벤트만 표시됩니다. 자세한 내용은 Amazon CloudWatch 사용 설명서의 필터 및 패턴 구문을 참조하십시오.

로그 CloudWatch 로그 스트림의 다음 부분은 이 자습서와 관련이 있습니다.

... [Container] 2016/04/15 17:49:42 Entering phase PRE_BUILD [Container] 2016/04/15 17:49:42 Running command echo Entering pre_build phase... [Container] 2016/04/15 17:49:42 Entering pre_build phase... [Container] 2016/04/15 17:49:42 Phase complete: PRE_BUILD Success: true [Container] 2016/04/15 17:49:42 Entering phase BUILD [Container] 2016/04/15 17:49:42 Running command echo Entering build phase... [Container] 2016/04/15 17:49:42 Entering build phase... [Container] 2016/04/15 17:49:42 Running command mvn install [Container] 2016/04/15 17:49:44 [INFO] Scanning for projects... [Container] 2016/04/15 17:49:44 [INFO] [Container] 2016/04/15 17:49:44 [INFO] ------------------------------------------------------------------------ [Container] 2016/04/15 17:49:44 [INFO] Building Message Utility Java Sample App 1.0 [Container] 2016/04/15 17:49:44 [INFO] ------------------------------------------------------------------------ ... [Container] 2016/04/15 17:49:55 ------------------------------------------------------- [Container] 2016/04/15 17:49:55 T E S T S [Container] 2016/04/15 17:49:55 ------------------------------------------------------- [Container] 2016/04/15 17:49:55 Running TestMessageUtil [Container] 2016/04/15 17:49:55 Inside testSalutationMessage() [Container] 2016/04/15 17:49:55 Hi!Robert [Container] 2016/04/15 17:49:55 Inside testPrintMessage() [Container] 2016/04/15 17:49:55 Robert [Container] 2016/04/15 17:49:55 Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.018 sec [Container] 2016/04/15 17:49:55 [Container] 2016/04/15 17:49:55 Results : [Container] 2016/04/15 17:49:55 [Container] 2016/04/15 17:49:55 Tests run: 2, Failures: 0, Errors: 0, Skipped: 0 ... [Container] 2016/04/15 17:49:56 [INFO] ------------------------------------------------------------------------ [Container] 2016/04/15 17:49:56 [INFO] BUILD SUCCESS [Container] 2016/04/15 17:49:56 [INFO] ------------------------------------------------------------------------ [Container] 2016/04/15 17:49:56 [INFO] Total time: 11.845 s [Container] 2016/04/15 17:49:56 [INFO] Finished at: 2016-04-15T17:49:56+00:00 [Container] 2016/04/15 17:49:56 [INFO] Final Memory: 18M/216M [Container] 2016/04/15 17:49:56 [INFO] ------------------------------------------------------------------------ [Container] 2016/04/15 17:49:56 Phase complete: BUILD Success: true [Container] 2016/04/15 17:49:56 Entering phase POST_BUILD [Container] 2016/04/15 17:49:56 Running command echo Entering post_build phase... [Container] 2016/04/15 17:49:56 Entering post_build phase... [Container] 2016/04/15 17:49:56 Phase complete: POST_BUILD Success: true [Container] 2016/04/15 17:49:57 Preparing to copy artifacts [Container] 2016/04/15 17:49:57 Assembling file list [Container] 2016/04/15 17:49:57 Expanding target/messageUtil-1.0.jar [Container] 2016/04/15 17:49:57 Found target/messageUtil-1.0.jar [Container] 2016/04/15 17:49:57 Creating zip artifact

이 예제에서는 사전 빌드, 빌드 및 빌드 후 빌드 단계를 CodeBuild 성공적으로 완료했습니다. 또한 단위 테스트를 실행하고 messageUtil-1.0.jar 파일을 성공적으로 빌드했습니다.

9단계: 빌드 출력 아티팩트 가져오기

(이전 단계: 8단계: 자세한 빌드 정보 보기)

이 단계에서는 CodeBuild 빌드된 messageUtil-1.0.jar 파일을 가져와 출력 버킷에 업로드합니다.

CodeBuild 콘솔 또는 Amazon S3 콘솔을 사용하여 이 단계를 완료할 수 있습니다.

빌드 출력 아티팩트를 가져오려면 (AWS CodeBuild 콘솔)
  1. CodeBuild 콘솔이 여전히 열려 있고 이전 단계의 빌드 세부정보 페이지가 계속 표시된 상태에서 빌드 세부정보 탭을 선택하고 아티팩트 섹션으로 스크롤합니다.

    참고

    빌드 세부 정보 페이지가 표시되지 않으면, 탐색 모음에서 빌드 이력을 선택한 다음, 빌드 실행 링크를 선택합니다.

  2. Amazon S3 폴더로 연결되는 링크는 아티팩트 업로드 위치 아래에 있습니다. 이 링크를 클릭하면 messageUtil-1.0.jar 빌드 출력 아티팩트 파일을 찾는 Amazon S3의 폴더가 열립니다.

빌드 출력 아티팩트를 가져오려면(Amazon S3 콘솔)
  1. 에서 Amazon S3 콘솔을 엽니다 https://console.aws.amazon.com/s3/.

  2. codebuild-region-ID-account-ID-output-bucket를 엽니다.

  3. codebuild-demo-project 폴더를 엽니다.

  4. target 폴더를 엽니다. 이 폴더에서 messageUtil-1.0.jar 빌드 출력 결과물 파일을 찾을 수 있습니다.

10단계: S3 버킷 삭제

(이전 단계: 9단계: 빌드 출력 아티팩트 가져오기)

AWS 계정에 계속 요금이 청구되는 것을 방지하려면 이 자습서에서 사용된 입력 및 출력 버킷을 삭제하면 됩니다. 지침을 보려면 Amazon Simple Storage Service 사용 설명서에서 버킷 삭제 또는 비우기를 참조하세요.

IAM사용자 또는 관리자 IAM 사용자를 사용하여 이러한 버킷을 삭제하는 경우 사용자에게 추가 액세스 권한이 있어야 합니다. 마커 사이에 다음 명령문을 추가합니다 (### BEGIN ADDING STATEMENT HERE ### 그리고 ### END ADDING STATEMENTS HERE ###사용자의 기존 액세스 정책에) 을 입력합니다.

이 명령문의 줄임표(...)는 간결하게 나타내기 위해 사용됩니다. 기존 액세스 정책의 어떤 명령문도 제거하지 마십시오. 이러한 줄임표는 정책에 입력하지 않아야 합니다.

{ "Version": "2012-10-17", "Id": "...", "Statement": [ ### BEGIN ADDING STATEMENT HERE ### { "Effect": "Allow", "Action": [ "s3:DeleteBucket", "s3:DeleteObject" ], "Resource": "*" } ### END ADDING STATEMENT HERE ### ] }

마무리

이 자습서에서는 Java 클래스 파일 세트를 파일로 AWS CodeBuild 빌드하는 JAR 방법을 사용했습니다. 그리고 빌드 결과를 확인했습니다.

이제 자체 CodeBuild 시나리오에서 사용해 볼 수 있습니다. 빌드 계획의 지침을 따르세요. 아직 시도해 볼 준비가 되지 않은 것 같으면 샘플 몇 가지를 더 빌드해 볼 수 있습니다. 자세한 내용은 사례 기반 샘플 사용 CodeBuild 단원을 참조하십시오.