빌드 프로젝트 생성(AWS CLI) - AWS CodeBuild

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

빌드 프로젝트 생성(AWS CLI)

with 사용에 대한 자세한 내용은 CodeBuild 를 참조하십시오명령줄 참조. AWS CLI

를 사용하여 CodeBuild 빌드 프로젝트를 만들려면 JSON 형식의 프로젝트 구조를 만들고 구조를 채운 create-project다음 명령을 호출하여 프로젝트를 생성합니다. AWS CLI

JSON 파일 생성

--generate-cli-skeleton 옵션을 사용하여 create-project 명령으로 스켈레톤 JSON 파일을 생성합니다.

aws codebuild create-project --generate-cli-skeleton > <json-file>

이렇게 하면 <json-file>로 지정된 경로와 파일 이름을 가진 JSON 파일이 생성됩니다.

JSON 파일 채우기

JSON 데이터를 다음과 같이 수정하고 결과를 저장합니다.

{ "name": "<project-name>", "description": "<description>", "source": { "type": "CODECOMMIT" | "CODEPIPELINE" | "GITHUB" | "GITHUB_ENTERPRISE" | "GITLAB" | "GITLAB_SELF_MANAGED" | "BITBUCKET" | "S3" | "NO_SOURCE", "location": "<source-location>", "gitCloneDepth": "<git-clone-depth>", "buildspec": "<buildspec>", "InsecureSsl": "<insecure-ssl>", "reportBuildStatus": "<report-build-status>", "buildStatusConfig": { "context": "<context>", "targetUrl": "<target-url>" }, "gitSubmodulesConfig": { "fetchSubmodules": "<fetch-submodules>" }, "auth": { "type": "<auth-type>", "resource": "<auth-resource>" }, "sourceIdentifier": "<source-identifier>" }, "secondarySources": [ { "type": "CODECOMMIT" | "CODEPIPELINE" | "GITHUB" | "GITHUB_ENTERPRISE" | "GITLAB" | "GITLAB_SELF_MANAGED" | "BITBUCKET" | "S3" | "NO_SOURCE", "location": "<source-location>", "gitCloneDepth": "<git-clone-depth>", "buildspec": "<buildspec>", "InsecureSsl": "<insecure-ssl>", "reportBuildStatus": "<report-build-status>", "auth": { "type": "<auth-type>", "resource": "<auth-resource>" }, "sourceIdentifier": "<source-identifier>" } ], "secondarySourceVersions": [ { "sourceIdentifier": "<secondary-source-identifier>", "sourceVersion": "<secondary-source-version>" } ], "sourceVersion": "<source-version>", "artifacts": { "type": "CODEPIPELINE" | "S3" | "NO_ARTIFACTS", "location": "<artifacts-location>", "path": "<artifacts-path>", "namespaceType": "<artifacts-namespacetype>", "name": "<artifacts-name>", "overrideArtifactName": "<override-artifact-name>", "packaging": "<artifacts-packaging>" }, "secondaryArtifacts": [ { "type": "CODEPIPELINE" | "S3" | "NO_ARTIFACTS", "location": "<secondary-artifact-location>", "path": "<secondary-artifact-path>", "namespaceType": "<secondary-artifact-namespaceType>", "name": "<secondary-artifact-name>", "packaging": "<secondary-artifact-packaging>", "artifactIdentifier": "<secondary-artifact-identifier>" } ], "cache": { "type": "<cache-type>", "location": "<cache-location>", "mode": [ "<cache-mode>" ] }, "environment": { "type": "LINUX_CONTAINER" | "LINUX_GPU_CONTAINER" | "ARM_CONTAINER" | "WINDOWS_SERVER_2019_CONTAINER" | "WINDOWS_SERVER_2022_CONTAINER", "image": "<image>", "computeType": "BUILD_GENERAL1_SMALL" | "BUILD_GENERAL1_MEDIUM" | "BUILD_GENERAL1_LARGE" | "BUILD_GENERAL1_2XLARGE", "certificate": "<certificate>", "environmentVariables": [ { "name": "<environmentVariable-name>", "value": "<environmentVariable-value>", "type": "<environmentVariable-type>" } ], "registryCredential": [ { "credential": "<credential-arn-or-name>", "credentialProvider": "<credential-provider>" } ], "imagePullCredentialsType": "CODEBUILD" | "SERVICE_ROLE", "privilegedMode": "<privileged-mode>" }, "serviceRole": "<service-role>", "timeoutInMinutes": <timeout>, "queuedTimeoutInMinutes": <queued-timeout>, "encryptionKey": "<encryption-key>", "tags": [ { "key": "<tag-key>", "value": "<tag-value>" } ], "vpcConfig": { "securityGroupIds": [ "<security-group-id>" ], "subnets": [ "<subnet-id>" ], "vpcId": "<vpc-id>" }, "badgeEnabled": "<badge-enabled>", "logsConfig": { "cloudWatchLogs": { "status": "<cloudwatch-logs-status>", "groupName": "<group-name>", "streamName": "<stream-name>" }, "s3Logs": { "status": "<s3-logs-status>", "location": "<s3-logs-location>", "encryptionDisabled": "<s3-logs-encryption-disabled>" } }, "fileSystemLocations": [ { "type": "EFS", "location": "<EFS-DNS-name-1>:/<directory-path>", "mountPoint": "<mount-point>", "identifier": "<efs-identifier>", "mountOptions": "<efs-mount-options>" } ], "buildBatchConfig": { "serviceRole": "<batch-service-role>", "combineArtifacts": <combine-artifacts>, "restrictions": { "maximumBuildsAllowed": <max-builds>, "computeTypesAllowed": [ "<compute-type>" ] }, "timeoutInMins": <batch-timeout>, "batchReportMode": "REPORT_AGGREGATED_BATCH" | "REPORT_INDIVIDUAL_BUILDS" }, "concurrentBuildLimit": <concurrent-build-limit> }

다음을 바꿉니다.

이름

필수 사항입니다. 이 빌드 프로젝트의 이름입니다. 이 이름은 계정의 모든 빌드 프로젝트에서 고유해야 합니다. AWS

description

선택 사항입니다. 이 빌드 프로젝트의 설명입니다.

source

필수 사항입니다. 이 빌드 프로젝트의 소스 코드 설정에 대한 정보가 들어 있는 ProjectSource객체입니다. source 객체를 추가한 후에는 secondarySources를 사용해 소스를 최대 12개까지 더 추가할 수 있습니다. 이러한 설정에는 다음이 포함됩니다.

source/type

필수 사항입니다. 빌드할 소스 코드가 포함된 리포지토리의 유형입니다. 유효한 값으로는 다음이 포함됩니다.

  • CODECOMMIT

  • CODEPIPELINE

  • GITHUB

  • GITHUB_ENTERPRISE

  • GITLAB

  • GITLAB_SELF_MANAGED

  • BITBUCKET

  • S3

  • NO_SOURCE

NO_SOURCE를 사용할 경우 프로젝트에 소스가 없으므로 buildspec은 파일이 될 수 없습니다. 대신에 buildspec 속성을 사용하여 buildspec에 대해 YAML 형식이 지정된 문자열을 지정해야 합니다. 자세한 정보는 소스 샘플이 없는 프로젝트을 참조하세요.

source/location

<source-type>CODEPIPELINE으로 설정하지 않은 경우 필수입니다. 지정한 리포지토리 유형의 소스 코드 위치입니다.

  • 소스 코드와 buildspec 파일이 들어 있는 저장소의 HTTPS 복제 URL (예:) 의 경우 CodeCommit https://git-codecommit.<region-id>.amazonaws.com/v1/repos/<repo-name>

  • Amazon S3의 경우 빌드 입력 버킷 이름 다음에 소스 코드 및 buildspec이 포함된 ZIP 파일의 경로와 이름이 옵니다. 예:

    • 입력 버킷의 루트에 있는 ZIP 파일의 경우: <bucket-name>/<object-name>.zip

    • 입력 버킷의 하위 폴더에 있는 ZIP 파일의 경우: <bucket-name>/<subfoler-path>/<object-name>.zip

  • 소스 코드와 빌드스펙 파일이 들어 있는 저장소의 HTTPS 복제 URL의 경우 GitHub URL에 github.com이 포함되어야 합니다. AWS 계정을 계정에 연결해야 합니다. GitHub 이렇게 하려면 CodeBuild 콘솔을 사용하여 빌드 프로젝트를 만드세요.

    • [Authorize application]을 선택합니다. ( GitHub 계정에 연결한 후에는 빌드 프로젝트 생성을 완료할 필요가 없습니다. CodeBuild 콘솔을 닫을 수 있습니다.

  • GitHub 엔터프라이즈 서버의 경우 소스 코드와 buildspec 파일이 들어 있는 저장소의 HTTP 또는 HTTPS 복제 URL입니다. 또한 계정을 엔터프라이즈 서버 AWS 계정에 연결해야 합니다 GitHub. 이렇게 하려면 CodeBuild 콘솔을 사용하여 빌드 프로젝트를 만드십시오.

    1. GitHub 엔터프라이즈 서버에서 개인용 액세스 토큰을 생성합니다.

    2. 이 토큰을 클립보드에 복사하면 프로젝트를 만들 때 사용할 수 있습니다 CodeBuild . 자세한 내용은 GitHub 도움말 웹 사이트의 명령줄용 개인용 액세스 토큰 만들기를 참조하십시오.

    3. 콘솔을 사용하여 CodeBuild 프로젝트를 만들 때는 소스에서 소스 공급자로 GitHub Enterprise를 선택합니다.

    4. [Personal Access Token]에서 클리보드에 복사한 토큰을 붙여 넣습니다. 토큰 저장을 선택합니다. 이제 CodeBuild 계정이 GitHub 엔터프라이즈 서버 계정에 연결되었습니다.

  • 소스 코드와 buildspec 파일이 들어 있는 저장소의 HTTPS 복제 URL은 GitLab 자체 관리됩니다. GitLab 를 사용하는 경우 URL에 gitlab.com이 포함되어야 GitLab 한다는 점에 유의하세요. GitLab 자체 관리형을 사용하는 경우 URL에 gitlab.com이 포함되지 않아도 됩니다. AWS 계정을 본인 계정 또는 자체 관리 계정에 연결해야 합니다 GitLab. GitLab 이렇게 하려면 CodeBuild 콘솔을 사용하여 빌드 프로젝트를 만드세요.

    • 개발자 도구 탐색 창에서 설정, 연결, 연결 생성을 선택합니다. 이 페이지에서 연결 GitLab 또는 GitLab 자체 관리형 연결을 만든 다음 Connect to GitLab (연결 대상) 를 선택합니다.

  • Bitbucket의 경우 HTTPS가 소스 코드 및 buildspec 파일을 포함하는 리포지토리에 URL을 복제합니다. URL에 bitbucket.org가 포함되어야 합니다. 또한 계정을 Bitbucket AWS 계정에 연결해야 합니다. 이렇게 하려면 CodeBuild 콘솔을 사용하여 빌드 프로젝트를 만드세요.

    1. 콘솔을 사용하여 Bitbucket에 연결(또는 재연결)하면 Bitbucket [Confirm access to your account] 페이지에서 [Grant access]를 선택합니다. (Bitbucket 계정에 연결한 후에는 빌드 프로젝트 생성을 완료할 필요가 없습니다. CodeBuild 콘솔을 닫을 수 있습니다.

  • 의 AWS CodePipeline경우 location 값을 지정하지 마십시오source. CodePipeline 에서 CodePipeline 파이프라인을 생성할 때 파이프라인의 소스 단계에서 소스 코드 위치를 지정하므로 이 값을 무시합니다.

소스/ gitCloneDepth

선택 사항입니다. 다운로드할 이력의 수준입니다. 최소값은 0입니다. 이 값이 0이거나, 25를 초과하거나, 지정되지 않은 경우 각 빌드 프로젝트에서 전체 이력이 다운로드됩니다. 소스 유형이 Amazon S3일 경우 이 값이 지원되지 않습니다.

source/buildspec

선택 사항입니다. 사용할 빌드 사양 정의 또는 파일입니다. 이 값을 제공하지 않거나 빈 문자열로 설정하는 경우 소스 코드에 루트 디렉터리의 buildspec.yml 파일이 포함되어 있어야 합니다. 이 값이 설정된 경우 인라인 buildspec 정의, 기본 소스의 루트 디렉터리에 상대적인 대체 buildspec 파일의 경로 또는 S3 버킷의 경로가 될 수 있습니다. 버킷은 빌드 프로젝트와 동일한 AWS 리전에 있어야 합니다. ARN을 사용하여 buildspec 파일을 지정합니다(예: arn:aws:s3:::<my-codebuild-sample2>/buildspec.yml). 자세한 정보는 buildspec 파일 이름 및 스토리지 위치을 참조하세요.

source/auth

사용하지 않습니다. 이 객체는 CodeBuild 콘솔에서만 사용됩니다.

소스/ reportBuildStatus

빌드의 시작 및 완료 상태를 소스 공급자에게 보낼지 여부를 지정합니다. GitHub 엔터프라이즈 서버 또는 Bitbucket이 아닌 GitHub 다른 소스 공급자로 이 값을 설정하면 invalidInputException an이 발생합니다.

소스 공급자에게 빌드 상태를 보고하려면 소스 공급자와 연결된 사용자에게 리포지토리에 대한 쓰기 권한이 있어야 합니다. 사용자에게 쓰기 권한이 없는 경우 빌드 상태를 업데이트할 수 없습니다. 자세한 정보는 소스 공급자 액세스을 참조하세요.

소스/ buildStatusConfig

CodeBuild 빌드 프로젝트가 빌드 상태를 소스 공급자에게 보고하는 방법을 정의하는 정보가 들어 있습니다. 이 옵션은 소스 유형이 GITHUB, GITHUB_ENTERPRISE 또는 BITBUCKET인 경우에만 사용됩니다.

소스//컨텍스트 buildStatusConfig

Bitbucket 소스의 경우 이 파라미터는 Bitbucket 커밋 상태의 name 파라미터에 사용됩니다. GitHub 소스의 경우 이 매개변수는 GitHub 커밋 상태의 context 매개변수에 사용됩니다.

예를 들어, CodeBuild 환경 변수를 사용하여 빌드 번호와 웹후크 트리거를 context 포함할 수 있습니다.

AWS CodeBuild sample-project Build #$CODEBUILD_BUILD_NUMBER - $CODEBUILD_WEBHOOK_TRIGGER

그 결과 webhook 풀 요청 이벤트에 의해 트리거된 빌드 #24에 대해 다음과 같은 컨텍스트가 나타납니다.

AWS CodeBuild sample-project Build #24 - pr/8
소스//타겟 URL buildStatusConfig

Bitbucket 소스의 경우 이 파라미터는 Bitbucket 커밋 상태의 url 파라미터에 사용됩니다. GitHub 소스의 경우 이 매개변수는 커밋 상태의 target_url 매개변수에 사용됩니다. GitHub

예를 들어 targetUrlhttps://aws.amazon.com/codebuild/<path to build>로 설정하면 커밋 상태가 이 URL에 연결됩니다.

URL에 추가 정보를 targetUrl 추가하기 위해 에 CodeBuild 환경 변수를 포함할 수도 있습니다. 예를 들어 URL에 빌드 리전을 영역을 추가하려면 다음과 같이 targetUrl을 설정합니다.

"targetUrl": "https://aws.amazon.com/codebuild/<path to build>?region=$AWS_REGION"

빌드 리전이 us-east-2이면 다음과 같이 확장됩니다.

https://aws.amazon.com/codebuild/<path to build>?region=us-east-2
소스/ gitSubmodulesConfig

선택 사항입니다. Git 하위 모듈 구성에 대한 정보입니다. CodeCommit, GitHub, GitHub 엔터프라이즈 서버 및 비트버킷에만 사용됩니다.

소스/ gitSubmodulesConfig 페치 서브 모듈

리포지토리에 Git 하위 모듈을 포함하려면 fetchSubmodulestrue로 설정합니다. 포함된 Git 하위 모듈은 HTTPS로 구성해야 합니다.

소스/ InsecureSsl

선택 사항입니다. GitHub 엔터프라이즈 서버에만 사용됩니다. GitHub Enterprise Server 프로젝트 리포지토리에 연결하는 동안 TLS 경고를 true 무시하려면 이 값을 로 설정하십시오. 기본값은 false입니다. InsecureSsl은 테스트 용도로만 사용해야 합니다. 프로덕션 환경에 사용하면 안 됩니다.

source/sourceIdentifier

프로젝트 소스의 사용자 정의 식별자입니다. 기본 소스의 경우 선택 사항입니다. 보조 소스에 필요합니다.

secondarySources

선택 사항입니다. 빌드 프로젝트의 보조 소스에 대한 정보가 포함된 ProjectSource개체 배열입니다. 보조 소스는 12개까지 추가할 수 있습니다. secondarySources 객체는 source 객체에서 사용하는 것과 동일한 속성을 사용합니다. 보조 소스 객체에는 sourceIdentifier가 필요합니다.

secondarySourceVersions

선택 사항입니다. ProjectSourceVersion 객체 어레이. 빌드 레벨에서 secondarySourceVersions이 지정되어 있으면 그 버전이 이 버전보다 우선합니다.

sourceVersion

선택 사항입니다. 이 프로젝트에 대해 빌드할 빌드 입력의 버전입니다. 지정하지 않으면 최신 버전이 사용됩니다. 지정하면 다음 중 하나여야 합니다.

  • For CodeCommit, 사용할 커밋 ID, 브랜치 또는 Git 태그

  • F의 경우 GitHub, 빌드하려는 소스 코드의 버전에 해당하는 커밋 ID, 풀 리퀘스트 ID, 브랜치 이름 또는 태그 이름. 풀 요청 ID가 지정된 경우 pr/pull-request-ID 형식을 사용해야 합니다(예: pr/25). 분기 이름이 지정되어 있으면 분기의 HEAD 커밋 ID가 사용됩니다. 지정되지 않은 경우 기본 분기의 HEAD 커밋 ID가 사용됩니다.

  • 커밋 ID GitLab, 풀 리퀘스트 ID, 브랜치 이름, 태그 이름 또는 참조 및 커밋 ID의 경우 자세한 정보는 소스 버전 샘플은 다음과 같습니다. AWS CodeBuild을 참조하세요.

  • Bitbucket의 경우, 빌드하려는 소스 코드의 버전에 해당하는 커밋 ID, 분기 이름 또는 태그 이름입니다. 분기 이름이 지정되어 있으면 분기의 HEAD 커밋 ID가 사용됩니다. 지정되지 않은 경우 기본 분기의 HEAD 커밋 ID가 사용됩니다.

  • Amazon S3의 경우 사용할 빌드 입력 ZIP 파일을 나타내는 객체의 버전 ID입니다.

빌드 수준에서 sourceVersion이 지정되어 있으면 (프로젝트 수준에서) 그 버전이 이 sourceVersion보다 우선합니다. 자세한 정보는 소스 버전 샘플은 다음과 같습니다. AWS CodeBuild을 참조하세요.

artifacts

필수 사항입니다. 이 빌드 프로젝트의 출력 아티팩트 설정에 대한 정보가 들어 있는 ProjectArtifacts객체입니다. artifacts 객체를 추가한 후에는 secondaryArtifacts를 사용해 아티팩트를 최대 12개까지 더 추가할 수 있습니다. 이러한 설정에는 다음이 포함됩니다.

artifacts/type

필수 사항입니다. 빌드 출력 결과물의 유형입니다. 유효한 값은 다음과 같습니다.

  • CODEPIPELINE

  • NO_ARTIFACTS

  • S3

artifacts/location

S3 아티팩트 유형에만 사용됩니다. 다른 아티팩트 유형에는 사용되지 않습니다.

사전 요구 사항에서 생성했거나 식별한 출력 버킷의 이름입니다.

artifacts/path

S3 아티팩트 유형에만 사용됩니다. 다른 아티팩트 유형에는 사용되지 않습니다.

ZIP 파일 또는 폴더를 배치할 출력 버킷의 경로입니다. 값을 지정하지 않은 경우path, and를 CodeBuild 사용하여 빌드 출력 ZIP 파일 또는 폴더의 경로와 이름을 결정합니다 namespaceType (지정된 경우). name 예를 들어 path에 대해 MyPath, name에 대해 MyArtifact.zip을 를 지정하면 경로와 이름은 MyPath/MyArtifact.zip이 됩니다.

artifacts/namespaceType

S3 아티팩트 유형에만 사용됩니다. 다른 아티팩트 유형에는 사용되지 않습니다.

빌드 출력 ZIP 파일 또는 폴더의 네임스페이스입니다. 유효한 값에는 BUILD_IDNONE(이)가 있습니다. 빌드 출력 ZIP 파일 또는 폴더의 경로에 빌드 ID를 삽입하려면 BUILD_ID를 사용하고 그렇지 않은 경우 NONE을 사용합니다. 값을 지정하지 않을 경우 빌드 출력 ZIP 파일 또는 폴더의 경로와 이름을 path (지정된 경우) 와 CodeBuild 사용하여 결정합니다. namespaceType name 예를 들어 path에 대해 MyPath, namespaceType에 대해 BUILD_ID, name에 대해 MyArtifact.zip을 지정하면 경로와 이름은 MyPath/build-ID/MyArtifact.zip이 됩니다.

artifacts/name

S3 아티팩트 유형에만 사용됩니다. 다른 아티팩트 유형에는 사용되지 않습니다.

location 안에 있는 빌드 출력 ZIP 파일 또는 폴더의 경로 및 이름입니다. 예를 들어 path에 대해 MyPath, name에 대해 MyArtifact.zip을 를 지정하면 경로와 이름은 MyPath/MyArtifact.zip이 됩니다.

아티팩트/ overrideArtifactName

S3 아티팩트 유형에만 사용됩니다. 다른 아티팩트 유형에는 사용되지 않습니다.

선택 사항입니다. true로 설정할 경우 buildspec 파일의 artifacts 블록에서 지정한 이름이 name을 재정의합니다. 자세한 정보는 에 대한 빌드 사양 참조 CodeBuild을 참조하세요.

artifacts/packaging

S3 아티팩트 유형에만 사용됩니다. 다른 아티팩트 유형에는 사용되지 않습니다.

선택 사항입니다. 아티팩트를 패키징하는 방법을 지정합니다. 허용되는 값:

NONE

빌드 아티팩트가 포함된 폴더를 생성합니다. 이것이 기본값입니다.

ZIP

빌드 아티팩트가 포함된 ZIP 파일을 생성합니다.

secondaryArtifacts

선택 사항입니다. 빌드 프로젝트의 보조 아티팩트 설정에 대한 정보가 포함된 ProjectArtifacts객체 배열입니다. 보조 아티팩트는 최대 12개까지 추가할 수 있습니다. secondaryArtifactsartifacts 객체에서 사용하는 것과 동일한 수의 설정을 사용합니다.

cache

필수 사항입니다. 이 빌드 프로젝트의 캐시 설정에 대한 정보가 들어 있는 ProjectCache객체입니다. 자세한 정보는 빌드 캐싱을 참조하세요.

환경

필수 사항입니다. 이 프로젝트의 빌드 환경 설정에 대한 정보가 들어 있는 ProjectEnvironment객체입니다. 이러한 설정은 다음과 같습니다.

environment/type

필수 사항입니다. 빌드 환경의 유형입니다. 자세한 내용은 CodeBuild API 레퍼런스 입력을 참조하십시오.

environment/image

필수 사항입니다. 이 빌드 환경에서 사용하는 도커 이미지 식별자입니다. 일반적으로 이 식별자는 image-name:tag로 표현됩니다. 예를 들어 Docker 이미지를 관리하는 데 CodeBuild 사용하는 Docker 저장소에서는 다음과 같을 수 있습니다. aws/codebuild/standard:5.0 Docker Hub에서는 maven:3.3.9-jdk-8입니다. Amazon ECR에서는 account-id.dkr.ecr.region-id.amazonaws.com/your-Amazon-ECR-repo-name:tag입니다. 자세한 정보는 Docker 이미지 제공: CodeBuild을 참조하세요.

environment/computeType

필수 사항입니다. 이 빌드 환경에서 사용하는 컴퓨팅 리소스를 지정합니다. 자세한 내용은 API 레퍼런스의 CodeBuild ComputeType을 참조하십시오.

environment/certificate

선택 사항입니다. PEM 인코딩된 인증서를 포함하는 Amazon S3 버킷, 경로 접두사 및 객체 키의 ARN입니다. 객체 키는 단지 .pem 파일일 수도 있고 PEM 인코딩된 인증서를 포함하는 .zip 파일일 수도 있습니다. 예를 들어 Amazon S3 버킷 이름이 <my-bucket>이고 경로 접두사는 <cert>이고 객체 키 이름이 <certificate.pem>인 경우 certificate에 허용되는 형식은 <my-bucket/cert/certificate.pem> 또는 arn:aws:s3:::<my-bucket/cert/certificate.pem>입니다.

environment/environmentVariables

선택 사항입니다. 이 빌드 환경에 지정하려는 환경 변수를 포함하는 EnvironmentVariable객체 배열입니다. 각 환경 변수는 name, value, typename, value, type을 포함하는 객체로 표현됩니다.

콘솔 및 AWS CLI 사용자는 모든 환경 변수를 볼 수 있습니다. 환경 변수의 가시성에 대한 문제가 없으면 namevalue를 설정하고 typePLAINTEXT로 설정합니다.

AWS 액세스 키 ID, AWS 보안 액세스 키 또는 암호와 같은 민감한 값이 있는 환경 변수를 Amazon EC2 Systems Manager 파라미터 스토어 AWS Secrets Manager또는 의 파라미터로 저장하는 것이 좋습니다. 저장된 파라미터의 name 경우 CodeBuild 참조할 식별자를 설정하십시오.

Amazon EC2 Systems Manager Parameter Store를 사용하는 경우, value에 대해 파라미터 이름을 Parameter Store에 저장된 것으로 설정합니다. typePARAMETER_STORE으로 설정합니다. 이름이 /CodeBuild/dockerLoginPassword인 파라미터를 예제로 사용하여 nameLOGIN_PASSWORD로 설정합니다. value/CodeBuild/dockerLoginPassword으로 설정합니다. typePARAMETER_STORE로 설정합니다.

중요

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 사용 설명서의 Systems Manager Parameter StoreSystems Manager Parameter Store 콘솔 연습을 참조하세요.

빌드 프로젝트가 Amazon EC2 Systems Manager Parameter Store에 저장된 파라미터를 참조하는 경우 해당 빌드 프로젝트의 서비스 역할은 ssm:GetParameters 작업을 허용해야 합니다. 이전에 새 서비스 역할을 선택한 경우 빌드 프로젝트의 기본 서비스 역할에 이 작업을 CodeBuild 포함하세요. Existing service role(기존 서비스 역할)을 선택한 경우에는 이 작업을 서비스 역할에 별도로 포함해야 합니다.

빌드 프로젝트가 /CodeBuild/로 시작되지 않는 파라미터 이름으로 Amazon EC2 Systems Manager Parameter Store에 저장된 파라미터를 참조하는 경우 새 서비스 역할을 선택하면 /CodeBuild/로 시작하지 않는 파라미터 이름에 액세스할 수 있도록 해당 서비스 역할을 업데이트해야 합니다. 이는 서비스 역할이 /CodeBuild/로 시작하는 파라미터 이름에만 액세스할 수 있기 때문입니다.

새 서비스 역할을 선택하면 Amazon EC2 Systems Manager Parameter Store에 있는 /CodeBuild/ 네임스페이스의 모든 파라미터를 해독할 권한이 서비스 역할에 포함됩니다.

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

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

여러 위치에서 동일한 이름의 환경 변수가 정의되는 경우, 다음과 같이 값이 결정됩니다.

  • 시작 빌드 작업 호출의 값이 가장 높은 우선 순위를 갖습니다.

  • 빌드 프로젝트 정의의 값이 다음 우선 순위를 갖습니다.

  • buildspec 선언의 값이 가장 낮은 우선 순위를 갖습니다.

Secrets Manager를 value 사용하는 경우 파라미터 이름을 Secrets Manager에 저장된 항목으로 설정합니다. typeSECRETS_MANAGER으로 설정합니다. 이름이 /CodeBuild/dockerLoginPassword인 보안 암호를 예제로 사용하여 nameLOGIN_PASSWORD로 설정합니다. value/CodeBuild/dockerLoginPassword으로 설정합니다. typeSECRETS_MANAGER로 설정합니다.

중요

Secrets Manager를 사용하는 경우 이름이 /CodeBuild/로 시작하는 암호를 저장하는 것이 좋습니다(예: /CodeBuild/dockerLoginPassword). 자세한 내용은 AWS Secrets Manager사용 설명서의 AWS Secrets Manager 이란? 섹션을 참조하세요.

빌드 프로젝트가 Secrets Manager에 저장된 암호를 참조하는 경우 해당 빌드 프로젝트의 서비스 역할은 secretsmanager:GetSecretValue 작업을 허용해야 합니다. 이전에 새 서비스 역할을 선택한 경우 빌드 프로젝트의 기본 서비스 역할에 이 작업을 CodeBuild 포함하세요. Existing service role(기존 서비스 역할)을 선택한 경우에는 이 작업을 서비스 역할에 별도로 포함해야 합니다.

빌드 프로젝트가 /CodeBuild/로 시작되지 않는 보안 암호 이름으로 Secrets Manager에 저장된 암호를 참조하는 경우 새 서비스 역할을 선택하면 /CodeBuild/로 시작하지 않는 보안 암호 이름에 액세스할 수 있도록 해당 서비스 역할을 업데이트해야 합니다. 이는 서비스 역할이 /CodeBuild/로 시작하는 암호 이름에만 액세스할 수 있기 때문입니다.

새 서비스 역할을 선택하면 에 있는 /CodeBuild/ 네임스페이스의 모든 암호를 해독할 권한이 서비스 역할에 포함됩니다.

environment/registryCredential

선택 사항입니다. 프라이빗 Docker 레지스트리에 대한 액세스를 제공하는 자격 증명을 지정하는 RegistryCredential객체입니다.

environment/registryCredential/credential

AWS Managed Services를 사용하여 생성한 보안 인증의 ARN 또는 이름을 지정합니다. 현재 리전에 있는 자격 증명의 이름만 사용할 수 있습니다.

environment/registryCredential/credentialProvider

유일한 유효 값은 SECRETS_MANAGER입니다.

이를 설정할 경우 다음과 같이 해야 합니다.

  • imagePullCredentialsSERVICE_ROLE로 설정해야 합니다.

  • 이 이미지는 큐레이트된 이미지 또는 Amazon ECR 이미지일 수 없습니다.

환경/ 유형 imagePullCredentials

선택 사항입니다. 빌드에서 이미지를 가져오는 데 CodeBuild 사용하는 자격 증명의 유형입니다. 두 가지 값을 사용할 수 있습니다.

CODEBUILD

CODEBUILD자체 자격 증명을 CodeBuild 사용하도록 지정합니다. Amazon ECR 리포지토리 정책을 편집하여 CodeBuild 서비스 보안 주체를 신뢰해야 합니다.

SERVICE_ROLE

빌드 프로젝트의 서비스 역할을 CodeBuild 사용하도록 지정합니다.

교차 계정 또는 프라이빗 레지스트리 이미지를 사용할 경우 SERVICE_ROLE 자격 증명을 사용해야 합니다. CodeBuild 큐레이션된 이미지를 사용할 때는 CODEBUILD 자격 증명을 사용해야 합니다.

environment/privilegedMode

이 빌드 프로젝트를 사용하여 도커 이미지를 빌드하려는 경우에만 true로 설정합니다. 그렇지 않으면 Docker 데몬과 상호 작용을 시도하는 모든 연결된 빌드가 실패합니다. 또한 빌드가 상호 작용할 수 있도록 Docker 데몬을 시작해야 합니다. 이를 수행하는 한 가지 방법은 다음 빌드 명령을 실행하여 buildspec 파일의 install 단계에서 Docker 데몬을 초기화하는 것입니다. Docker 지원에서 제공하는 빌드 환경 이미지를 지정한 경우에는 이 명령을 실행하지 마세요. CodeBuild

참고

기본적으로 Docker 데몬은 VPC가 아닌 빌드에는 활성화되어 있습니다. VPC 빌드에 Docker 컨테이너를 사용하려면 Docker Docs 웹 사이트의 런타임 권한 및 Linux 기능을 참조하고 권한 모드를 활성화하세요. 또한 Windows는 권한 모드를 지원하지 않습니다.

- nohup /usr/local/bin/dockerd --host=unix:///var/run/docker.sock --host=tcp://127.0.0.1:2375 --storage-driver=overlay2 & - timeout 15 sh -c "until docker info; do echo .; sleep 1; done"

serviceRole

필수 사항입니다. 서비스 역할의 ARN은 사용자를 대신하여 서비스와 상호 작용하는 데 CodeBuild 사용합니다 (예:). arn:aws:iam::account-id:role/role-name

timeoutInMinutes

선택 사항입니다. 5분에서 480분 (8시간) 사이이며, 이 시간이 지나면 빌드가 완료되지 않으면 빌드가 CodeBuild 중지됩니다. 지정하지 않을 경우 기본값인 60을 사용합니다. 타임아웃으로 인해 빌드가 CodeBuild 중지되었는지 여부와 중단된 시기를 확인하려면 명령을 실행하세요. batch-get-builds 빌드가 중지되었는지 확인하려면 출력에서 FAILEDbuildStatus 값을 살펴봅니다. 빌드가 시간 초과된 시간을 확인하려면 출력에서 TIMED_OUTphaseStatus와 연결된 endTime 값을 살펴봅니다.

queuedTimeoutIn분

선택 사항입니다. 5분에서 480분 (8시간) 사이이며, 이 시간이 지나면 빌드가 아직 대기 중인 경우 빌드가 CodeBuild 중지됩니다. 지정하지 않을 경우 기본값인 60을 사용합니다.

encryptionKey

선택 사항입니다. 에서 빌드 출력을 암호화하는 데 사용하는 CodeBuild 별칭 또는 ARN입니다. AWS KMS key 별칭을 지정하는 경우 arn:aws:kms:region-ID:account-ID:key/key-ID 형식을 사용하고, 별칭이 있는 경우 alias/key-alias 형식을 사용합니다. 지정하지 않으면 Amazon S3의 AWS관리형 KMS 키가 사용됩니다.

tags

선택 사항입니다. 이 빌드 프로젝트와 연결할 태그를 제공하는 Tag 객체 배열입니다. 최대 50개의 태그를 지정할 수 있습니다. CodeBuild 빌드 프로젝트 태그를 지원하는 모든 AWS 서비스에서 이러한 태그를 사용할 수 있습니다. 각 태그는 keyvalue가 있는 객체로 표현됩니다.

vpcConfig

선택 사항입니다. 프로젝트의 VPC 구성에 대한 정보가 들어 있는 VpcConfig객체입니다. 자세한 정보는 Amazon Virtual Private 클라우드와 AWS CodeBuild 함께 사용을 참조하세요.

이러한 속성은 다음과 같습니다.

vpcId

필수 사항입니다. 사용하는 VPC ID입니다. CodeBuild 리전의 모든 VPC ID 목록을 가져오려면 다음 명령을 실행합니다.

aws ec2 describe-vpcs --region <region-ID>
subnets

필수 사항입니다. 에서 사용하는 리소스를 포함하는 서브넷 ID의 배열. CodeBuild 이 ID를 얻으려면 다음 명령을 실행합니다.

aws ec2 describe-subnets --filters "Name=vpc-id,Values=<vpc-id>" --region <region-ID>
securityGroupIds

필수 사항입니다. 에서 VPC의 리소스에 대한 액세스를 허용하는 CodeBuild 데 사용하는 보안 그룹 ID의 배열입니다. 이 ID를 얻으려면 다음 명령을 실행합니다.

aws ec2 describe-security-groups --filters "Name=vpc-id,Values=<vpc-id>" --<region-ID>

badgeEnabled

선택 사항입니다. 프로젝트에 빌드 배지를 포함할지 여부를 지정합니다. CodeBuild 빌드 배지를 활성화하려면 true로 설정하고, 그렇지 않으면 false로 설정합니다. 자세한 정보는 다음을 사용하여 배지 샘플을 빌드하십시오. CodeBuild 을 참조하세요.

logsConfig

이 빌드의 로그 위치에 대한 정보가 들어 있는 LogsConfig객체입니다.

LogsConfig/ cloudWatchLogs

로그를 Log로 푸시하는 방법에 대한 정보가 들어 있는 CloudWatchLogsConfig객체입니다. CloudWatch

logsConfig/s3Logs

Amazon S3로 로그를 푸시하는 방법에 대한 정보가 들어 있는 S3 LogsConfig 객체입니다.

fileSystemLocations

선택 사항입니다. Amazon EFS 구성에 대한 정보가 들어 있는 ProjectFileSystemsLocation객체 배열입니다.

buildBatchConfig

선택 사항입니다. buildBatchConfig객체는 프로젝트의 배치 빌드 구성 정보를 포함하는 ProjectBuildBatchConfig구조입니다.

buildBatchConfig/서비스 역할

배치 빌드 프로젝트에 대한 서비스 역할 ARN입니다.

buildBatchConfig/아티팩트 결합

배치 빌드의 빌드 아티팩트를 단일 아티팩트 위치로 결합할지 여부를 지정하는 부울 값입니다.

buildBatchConfig/제한 사항/ maximumBuildsAllowed

허용되는 최대 빌드 수입니다.

buildBatchConfig/제한 사항/ computeTypesAllowed

배치 빌드에 허용되는 컴퓨팅 유형을 지정하는 문자열 배열입니다. 이러한 값은 빌드 환경 컴퓨팅 유형를 참조하세요.

buildBatchConfig/timeoutInMinutes

배치 빌드를 완료해야 하는 최대 시간(분)입니다.

buildBatchConfig/batchReportMode

배치 빌드를 위해 빌드 상태 보고서를 소스 제공자에게 보내는 방법을 지정합니다. 유효한 값으로는 다음이 포함됩니다.

REPORT_AGGREGATED_BATCH

(기본값) 모든 빌드 상태를 단일 상태 보고서로 집계합니다.

REPORT_INDIVIDUAL_BUILDS

각 개별 빌드에 대해 별도의 상태 보고서를 보냅니다.

concurrentBuildLimit

이 프로젝트에 허용된 최대 동시 실행 빌드 수입니다.

현재 빌드 수가 이 한도 이하인 경우에만 새 빌드가 시작됩니다. 현재 빌드 수가 이 한도에 도달하면 새 빌드가 제한되고 실행되지 않습니다.

프로젝트 생성

프로젝트를 생성하려면 JSON 파일을 전달하여 create-project 명령을 다시 실행합니다.

aws codebuild create-project --cli-input-json file://<json-file>

성공하면 Project 객체의 JSON 표현이 콘솔 출력에 나타납니다. 이 데이터의 예는 CreateProject 응답 구문을 참조하십시오.

빌드 프로젝트 이름을 제외한 모든 빌드 프로젝트 설정은 나중에 변경할 수 있습니다. 자세한 정보는 빌드 프로젝트 설정 변경(AWS CLI)을 참조하세요.

빌드 실행을 시작하려면 빌드 실행(AWS CLI) 단원을 참조하십시오.

소스 코드가 리포지토리에 저장되어 있고 코드 변경 사항이 GitHub 리포지토리에 푸시될 때마다 소스 코드를 다시 CodeBuild 빌드하려는 경우 을 참조하십시오빌드 실행 자동 시작(AWS CLI).