

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

# 빌드 실행(AWS CLI)
<a name="run-build-cli"></a>

**참고**  
CodePipeline을 사용하여 AWS CodeBuild에서 빌드를 실행하려면 다음 단계를 건너뛰고 [CodeBuild를 사용하는 파이프라인 생성(AWS CLI)](how-to-create-pipeline-cli.md) 섹션의 지침을 따르세요.  
AWS CLI와 CodeBuild를 함께 사용하는 방법에 대한 자세한 내용은 [명령줄 참조](cmd-ref.md) 섹션을 참조하세요.

1. 다음 중 한 방법으로 `start-build` 명령을 실행합니다.

   ```
   aws codebuild start-build --project-name <project-name>
   ```

   빌드 입력 결과물의 최신 버전과 빌드 프로젝트의 기존 설정을 사용하는 빌드를 실행하려면 이 방법을 사용합니다.

   ```
   aws codebuild start-build --generate-cli-skeleton
   ```

   이전 버전의 빌드 입력 결과물을 사용하여 빌드를 실행하려는 경우 또는 빌드 출력 결과물, 환경 변수, buildspec 또는 기본 빌드 제한 시간의 설정을 재정의하려는 경우 이 방법을 사용합니다.

1. **start-build** 명령을 `--project-name` 옵션과 함께 실행하는 경우 *<project-name>*을 빌드 프로젝트의 이름으로 바꾼 다음 이 절차의 6단계로 이동합니다. 빌드 프로젝트 목록을 가져오려면 [빌드 프로젝트 이름 보기](view-project-list.md) 단원을 참조하십시오.

1. **start-build** 명령을 `--idempotency-token` 옵션과 함께 실행하면 고유의 대소문자 구분 식별자인 토큰이 `start-build` 요청에 포함됩니다. 토큰은 요청 후 5분 동안 유효합니다. 동일한 토큰을 사용하여 `start-build` 요청을 반복하고 파라미터를 변경하면 CodeBuild는 파라미터 불일치 오류를 반환합니다.

1. **start-build** 명령을 `--generate-cli-skeleton` 옵션과 함께 실행하는 경우 JSON 형식 데이터가 출력에 표시됩니다. `start-build.json`가 설치된 로컬 컴퓨터 또는 인스턴스의 위치에 있는 파일(예: AWS CLI)에 데이터를 복사합니다. 복사된 데이터를 다음 형식으로 수정한 다음 결과를 저장합니다.

   ```
   {
     "projectName": "projectName",
     "sourceVersion": "sourceVersion",
     "artifactsOverride": {
       "type": "type",
       "location": "location",
       "path": "path",
       "namespaceType": "namespaceType",
       "name": "artifactsOverride-name",
       "packaging": "packaging"
     },
     "buildspecOverride": "buildspecOverride",
     "cacheOverride": {
       "location": "cacheOverride-location",
       "type": "cacheOverride-type"
     },
     "certificateOverride": "certificateOverride",
     "computeTypeOverride": "computeTypeOverride",
     "environmentTypeOverride": "environmentTypeOverride",
     "environmentVariablesOverride": {
       "name": "environmentVariablesOverride-name",
       "value": "environmentVariablesValue",
       "type": "environmentVariablesOverride-type"
     },
     "gitCloneDepthOverride": "gitCloneDepthOverride",
     "imageOverride": "imageOverride",
     "idempotencyToken": "idempotencyToken",
     "insecureSslOverride": "insecureSslOverride",
     "privilegedModeOverride": "privilegedModeOverride",
     "queuedTimeoutInMinutesOverride": "queuedTimeoutInMinutesOverride",
     "reportBuildStatusOverride": "reportBuildStatusOverride",
     "timeoutInMinutesOverride": "timeoutInMinutesOverride",
     "sourceAuthOverride": "sourceAuthOverride",
     "sourceLocationOverride": "sourceLocationOverride",
     "serviceRoleOverride": "serviceRoleOverride",
     "sourceTypeOverride": "sourceTypeOverride"
   }
   ```

   다음과 같이 자리 표시자를 바꿉니다.
   + *projectName*: 필수 문자열입니다. 이 빌드에 사용할 빌드 프로젝트의 이름입니다.
   + *sourceVersion*: 선택적 문자열입니다. 빌드할 소스 코드의 버전으로, 다음과 같습니다.
     + Amazon S3의 경우, 빌드하려는 입력 ZIP 파일의 버전에 해당하는 버전 ID입니다. *sourceVersion*을 지정하지 않은 경우 최신 버전이 사용됩니다.
     + CodeCommit의 경우, 빌드하려는 소스 코드의 버전에 해당하는 커밋 ID입니다. *sourceVersion*을 지정하지 않은 경우 기본 분기의 HEAD 커밋 ID가 사용됩니다. (*sourceVersion*의 태그 이름은 지정할 수 없지만, 태그의 커밋 ID는 지정할 수 있습니다.)
     + GitHub의 경우, 빌드하려는 소스 코드의 버전에 해당하는 커밋 ID, 풀 요청 ID, 분기 이름 또는 태그 이름입니다. 풀 요청 ID가 지정된 경우 `pr/pull-request-ID` 형식을 사용해야 합니다(예: `pr/25`). 분기 이름이 지정되어 있으면 분기의 HEAD 커밋 ID가 사용됩니다. *sourceVersion*을 지정하지 않은 경우 기본 분기의 HEAD 커밋 ID가 사용됩니다.
     + Bitbucket의 경우, 빌드하려는 소스 코드의 버전에 해당하는 커밋 ID, 분기 이름 또는 태그 이름입니다. 분기 이름이 지정되어 있으면 분기의 HEAD 커밋 ID가 사용됩니다. *sourceVersion*을 지정하지 않은 경우 기본 분기의 HEAD 커밋 ID가 사용됩니다.
   + 다음 자리 표시자는 `artifactsOverride`용입니다.
     + *type*: 선택 사항입니다. 빌드 프로젝트에서 정의된 빌드 출력 결과물 유형이 아닌 이 빌드에서만 사용되는 빌드 출력 결과물 유형입니다.
     + *location*: 선택 사항입니다. 빌드 프로젝트에서 정의된 빌드 출력 결과물 위치가 아닌 이 빌드에서만 사용되는 빌드 출력 결과물 위치입니다.
     + *path*: 선택 사항입니다. 빌드 프로젝트에서 정의된 빌드 출력 결과물 경로가 아닌 이 빌드에서만 사용되는 빌드 출력 결과물 경로입니다.
     + *namespaceType*: 선택 사항입니다. 빌드 프로젝트에서 정의된 빌드 출력 결과물 유형이 아닌 이 빌드에서만 사용되는 빌드 출력 결과물 유형입니다.
     + *name*: 선택 사항입니다. 빌드 프로젝트에서 정의된 빌드 출력 결과물 이름이 아닌 이 빌드에서만 사용되는 빌드 출력 결과물 이름입니다.
     + *packaging*: 선택 사항입니다. 빌드 프로젝트에서 정의된 빌드 출력 결과물 패키징이 아닌 이 빌드에서만 사용되는 빌드 출력 결과물 패키징입니다.
   + *buildspecOverride*: 선택 사항입니다. 빌드 프로젝트에서 정의된 buildspec 선언이 아닌 이 빌드에서만 사용되는 buildspec 선언입니다. 이 값이 설정된 경우 인라인 buildspec 정의, 내장된 `CODEBUILD_SRC_DIR` 환경 변수의 값에 상대적인 대체 buildspec 파일 또는 S3 버킷의 경로가 될 수 있습니다. S3 버킷은 빌드 프로젝트와 동일한 AWS 리전에 있어야 합니다. ARN을 사용하여 buildspec 파일을 지정합니다(예: `arn:aws:s3:::<my-codebuild-sample2>/buildspec.yml`). 이 값을 제공하지 않거나 빈 문자열로 설정하는 경우 소스 코드에 루트 디렉터리의 `buildspec.yml` 파일이 포함되어 있어야 합니다. 자세한 내용은 [buildspec 파일 이름 및 스토리지 위치](build-spec-ref.md#build-spec-ref-name-storage) 섹션을 참조하세요.
   + 다음 자리 표시자는 `cacheOverride`용입니다.
     + *cacheOverride-location*: 선택 사항입니다. 빌드 프로젝트에서 지정된 `ProjectCache` 객체를 재정의하는 이 빌드에 대한 `ProjectCache` 객체의 위치입니다. `cacheOverride`는 선택 사항이며 `ProjectCache` 객체를 가져옵니다. `location`는 `ProjectCache` 객체에서 필수입니다.
     + *cacheOverride-type*: 선택 사항입니다. 이 빌드에 대한 `ProjectCache` 객체의 유형으로, 빌드 프로젝트에서 지정된 `ProjectCache` 객체를 재정의합니다. `cacheOverride`는 선택 사항이며 `ProjectCache` 객체를 가져옵니다. `type`는 `ProjectCache` 객체에서 필수입니다.
   + *certificateOverride*: 선택 사항입니다. 빌드 프로젝트에서 지정된 인증서를 재정의하는 이 빌드에 대한 인증서의 이름입니다.
   + *environmentTypeOverride*: 선택 사항입니다. 빌드 프로젝트에서 지정된 컨테이너를 재정의하는 이 빌드의 컨테이너 유형입니다. 현재 유효한 문자열은 `LINUX_CONTAINER`입니다.
   + 다음 자리 표시자는 `environmentVariablesOverride`용입니다.
     + *environmentVariablesOverride-name*: 선택 사항입니다. 이 빌드에서 값을 재정의하려는 빌드 프로젝트의 환경 변수 이름입니다.
     + *environmentVariablesOverride-type*: 선택 사항입니다. 이 빌드에서 값을 재정의하려는 빌드 프로젝트의 환경 변수 유형입니다.
     + *environmentVariablesValue*: 선택 사항입니다. 이 빌드에서 재정의하려는 빌드 프로젝트에 정의된 환경 변수 값입니다.
   + *gitCloneDepthOverride*: 선택 사항입니다. 이 빌드에서 값을 재정의하려는 빌드 프로젝트의 **Git clone depth** 값입니다. 소스 유형이 Amazon S3일 경우 이 값이 지원되지 않습니다.
   + *imageOverride*: 선택 사항입니다. 빌드 프로젝트에서 지정된 이미지를 재정의하는 이 빌드에 대한 이미지의 이름입니다.
   + *idempotencyToken*: 선택 사항입니다. 빌드 요청이 idempotent임을 지정하기 위해 토큰으로 제공되는 문자열입니다. 64자 이하의 모든 문자열을 선택할 수 있습니다. 토큰은 start-build 요청 후 5분 동안 유효합니다. 동일한 토큰을 사용하여 start-build 요청을 반복하고 파라미터를 변경하면 CodeBuild는 파라미터 불일치 오류를 반환합니다.
   + *insecureSslOverride*: 빌드 프로젝트에서 지정된 안전하지 않은 TLS 설정을 재정의할지 여부를 지정하는 선택적 부울입니다. 안전하지 않은 TLS 설정은 프로젝트 소스 코드에 연결하는 동안 TLS 경고를 무시할지 여부를 결정합니다. 이 설정은 빌드의 소스가 GitHub Enterprise Server인 경우에만 적용됩니다.
   + *privilegedModeOverride*: 선택적 부울입니다. true로 설정하면 빌드는 빌드 프로젝트에서 권한이 있는 모드를 재정의합니다.
   +  *queuedTimeoutInMinutesOverride*: 빌드 대기 시간이 얼마나 지나야 시간 초과로 처리되는지를 지정하는 정수(분)입니다(선택 사항). 최솟값은 5분이며, 최댓값은 480분(8시간)입니다.
   + *reportBuildStatusOverride*: 빌드의 시작 및 완료 상태를 소스 공급자에게 보낼지 여부를 지정하는 선택적 부울입니다. GitHub, GitHub Enterprise Server 또는 Bitbucket이 아닌 소스 공급자로 설정하는 경우, invalidInputException이 발생합니다.
   + *sourceAuthOverride*: 선택적 문자열입니다. 빌드 프로젝트에서 정의된 권한 부여를 재정의하는 이 빌드에 대한 권한 부여 유형입니다. 이 재정의는 빌드 프로젝트의 소스가 Bitbucket 또는 GitHub인 경우에만 적용됩니다.
   + *sourceLocationOverride*: 선택적 문자열입니다. 빌드 프로젝트에서 정의된 위치의 소스 위치를 이 빌드에 대해 재정의하는 위치입니다.
   + *serviceRoleOverride*: 선택 사항 문자열. 빌드 프로젝트에서 지정된 서비스 역할을 재정의하는 이 빌드에 대한 서비스 역할의 이름입니다.
   + *sourceTypeOverride*: 선택적 문자열입니다. 빌드 프로젝트에서 정의된 소스 입력을 재정의하는 이 빌드에 대한 소스 입력 유형입니다. 유효한 문자열은 `NO_SOURCE`, `CODECOMMIT`, `CODEPIPELINE`, `GITHUB`, `S3`, `BITBUCKET` 및 `GITHUB_ENTERPRISE`입니다.
   + *timeoutInMinutesOverride*: 선택적 숫자입니다. 빌드 프로젝트에서 정의된 빌드 제한 시간(분)이 아닌 이 빌드에서만 사용되는 빌드 제한 시간(분)입니다.

   AWS 액세스 키 ID, AWS 비밀 액세스 키 또는 암호와 같은 중요한 값을 가진 환경 변수는 Amazon EC2 Systems Manager Parameter Store 또는 에 파라미터로 저장하는 것이 좋습니다. CodeBuild는 Amazon EC2 Systems Manager Parameter Store에 저장된 파라미터 이름이 `/CodeBuild/`(예: `/CodeBuild/dockerLoginPassword`)로 시작하는 경우에만 해당 파라미터를 사용할 수 있습니다. CodeBuild 콘솔을 사용하여 Amazon EC2 Systems Manager에서 파라미터를 생성할 수 있습니다. **파라미터 생성**을 선택한 후 지침에 따릅니다. 경우에 따라 대화 상자의 **KMS 키**에 해당 계정의 AWS KMS 키에 대한 ARN을 지정할 수 있습니다. Amazon EC2 Systems Manager는 이 키를 사용하여 저장 시 파라미터의 값을 암호화하고 검색 시 암호를 해독합니다. CodeBuild 콘솔을 사용하여 파라미터를 생성하는 경우 콘솔은 `/CodeBuild/`로 파라미터를 시작합니다. 하지만 Amazon EC2 Systems Manager Parameter Store 콘솔을 사용하여 파라미터를 생성하는 경우, `/CodeBuild/`로 파라미터 이름을 시작해야 하고 **유형**을 **보안 문자열**로 설정해야 합니다. 자세한 내용은 Amazon EC2 Systems Manager 사용 설명서의 [AWS Systems Manager 파라미터 스토어](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) 및 [연습: 문자열 파라미터 생성 및 테스트(콘솔)](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-console.html)을 참조하세요.**

   빌드 프로젝트가 Amazon EC2 Systems Manager Parameter Store에 저장된 파라미터를 참조하는 경우 해당 빌드 프로젝트의 서비스 역할은 `ssm:GetParameters` 작업을 허용해야 합니다. 앞에서 **해당 계정에 새로운 서비스 역할 생성**을 선택한 경우 CodeBuild는 빌드 프로젝트의 기본 서비스 역할에 이 작업을 자동으로 포함합니다. 하지만 [**Choose an existing service role from your account**]를 선택한 경우 이 작업을 서비스 역할에 별도로 포함해야 합니다.

   사용자가 설정한 환경 변수는 기존 환경 변수를 대체합니다. 예를 들어 도커 이미지에 값이 `my_value`인 `MY_VAR`이라는 환경 변수가 이미 포함되어 있는데, 사용자가 `MY_VAR` 환경 변수의 값을 `other_value`로 설정하면, `my_value`가 `other_value`로 바뀝니다. 마찬가지로, 도커 이미지에 값이 `/usr/local/sbin:/usr/local/bin`인 `PATH`라는 환경 변수가 이미 포함되어 있는데, 사용자가 `PATH` 환경 변수의 값을 `$PATH:/usr/share/ant/bin`으로 설정하면, `/usr/local/sbin:/usr/local/bin`이 `$PATH:/usr/share/ant/bin` 리터럴 값으로 바뀝니다.

   `CODEBUILD_`로 시작하는 이름으로 환경 변수를 설정하지 마십시오. 이 접두사는 내부 전용으로 예약되어 있습니다.

   여러 위치에서 동일한 이름의 환경 변수가 정의되는 경우, 다음과 같이 환경 변수 값이 결정됩니다.
   + 시작 빌드 작업 호출의 값이 가장 높은 우선 순위를 갖습니다.
   + 빌드 프로젝트 정의의 값이 다음 우선 순위를 갖습니다.
   + buildspec 파일 선언의 값이 가장 낮은 우선 순위를 갖습니다.

   이 자리 표시자의 유효한 값에 대한 자세한 정보는 [빌드 프로젝트 생성(AWS CLI)](create-project.md#create-project-cli) 단원을 참조하십시오. 빌드 프로젝트의 최신 설정 목록은 [빌드 프로젝트 세부 정보 보기](view-project-details.md) 단원을 참조하십시오.

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

   ```
   aws codebuild start-build --cli-input-json file://start-build.json
   ```

1. 이 명령이 제대로 실행되면 [빌드를 실행하려면](getting-started-overview.md#getting-started-run-build-cli) 절차에 설명된 것과 유사한 데이터가 출력에 표시됩니다.

이 빌드에 대한 자세한 정보를 보려면 출력에서 `id` 값을 적어 둔 다음 [빌드 세부 정보 보기(AWS CLI)](view-build-details.md#view-build-details-cli) 단원을 참조하십시오.