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

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

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

AWS CLI와 CodeBuild를 함께 사용하는 방법에 대한 자세한 정보는 명령줄 참조 단원을 참조하십시오.

를 생성하려면CodeBuild다음을 사용하여 프로젝트를 빌드합니다.AWS CLI을 사용하여 JSON 형식을 생성합니다.프로젝트구조, 구조 채우기 및create-project프로젝트를 생성하는 명령입니다.

JSON 파일 생성

를 사용하여 스켈레톤 JSON 파일 생성create-project명령, 사용--generate-cli-skeleton옵션:

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

이렇게 하면 에 의해 지정된 경로와 파일 이름을 가진 JSON 파일이 만들어집니다.<json-file>.

JSON 파일 입력

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

{ "name": "<project-name>", "description": "<description>", "source": { "type": "CODECOMMIT" | "CODEPIPELINE" | "GITHUB" | "GITHUB_ENTERPRISE" | "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" | "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", "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> }

다음을 바꿉니다.

name

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

description

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

source

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

Source/유형

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

  • CODECOMMIT

  • CODEPIPELINE

  • GITHUB

  • GITHUB_ENTERPRISE

  • BITBUCKET

  • S3

  • NO_SOURCE

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

Source/위치

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

  • CodeCommit의 경우 HTTPS가 소스 코드 및 buildspec 파일을 포함하는 리포지토리에 URL을 복제합니다(예: 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.

  • 용GitHub를 사용하여 소스 코드 및 buildspec 파일을 포함하는 리포지토리에 URL을 복제합니다. URL에 github.com이 포함되어야 합니다. 연결해야 합니다.AWS계정에GitHub계정. 이렇게 하려면 CodeBuild 콘솔을 사용하여 빌드 프로젝트를 생성합니다.

    1. 온GitHub 애플리케이션 권한 부여의 페이지조직 액세스섹션, 선택액세스 요청원하는 각 저장소 옆에CodeBuild에 액세스 할 수 있습니다.

    2. [Authorize application]을 선택합니다. (연결한 후GitHubaccount, 빌드 프로젝트 만들기를 완료하지 않아도 됩니다. 닫을 수 있습니다.CodeBuild콘솔.

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

    1. 개인용 액세스 토큰을 생성합니다.GitHubEnterprise Server.

    2. CodeBuild 프로젝트를 생성할 때 사용할 수 있도록 이 토큰을 클립보드에 복사합니다. 자세한 내용은 단원을 참조하십시오.명령줄에 대한 개인용 액세스 토큰 생성에GitHub도움말 웹 사이트.

    3. 콘솔을 사용하여CodeBuild프로젝트소스,소스 제공자, 선택GitHub엔터프라이즈.

    4. [Personal Access Token]에서 클리보드에 복사한 토큰을 붙여 넣습니다. 토큰 저장을 선택합니다. 귀하CodeBuild계정이 현재 계정에 연결되었습니다.GitHubEnterprise Server 계정.

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

    1. 콘솔을 사용하여 Bitbucket에 연결(또는 재연결)하면 Bitbucket [Confirm access to your account] 페이지에서 [Grant access]를 선택합니다. (Bitbucket 계정에 연결했으면 빌드 프로젝트 만들기를 완료하지 않아도 됩니다. 닫을 수 있습니다.CodeBuild콘솔.

  • AWS CodePipeline의 경우 sourcelocation 값을 지정하지 마십시오. CodePipeline에 파이프라인을 생성하면 가 이 값을 무시합니다.CodePipeline를 선택하면 파이프라인의 소스 단계에서 소스 단계에서 소스 를 지정합니다.

Source/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/인증

사용하지 않습니다. 이 객체는CodeBuild콘솔 전용.

Source/reportBuildStatus

빌드의 시작 및 완료 상태를 소스 공급자에게 보낼지 여부를 지정합니다. 소스 공급자로 설정하는 경우GitHub,GitHub엔터프라이즈 서버 또는 비트버킷invalidInputException이 발생합니다.

소스 공급자에 빌드 상태를 보고하려면 소스 공급자와 연결된 사용자에게 저장소에 대한 쓰기 액세스 권한이 있어야 합니다. 사용자에게 쓰기 액세스 권한이 없으면 빌드 상태를 업데이트할 수 없습니다. 자세한 정보는 소스 제공자 액세스을 참조하십시오.

Source/buildStatusConfig

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

Source/buildStatusConfig/문맥

Bitbucket 소스의 경우, 이 파라미터는nameBitbucket 커밋 상태의 파라미터입니다. 용GitHub소스, 이 매개 변수는context파라미터는GitHub커밋 상태입니다.

예를 들어,context다음을 사용하여 빌드 번호와 웹훅 트리거를 포함합니다.CodeBuild환경 변수:

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

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

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

Bitbucket 소스의 경우, 이 파라미터는urlBitbucket 커밋 상태의 파라미터입니다. 용GitHub소스, 이 매개 변수는target_url파라미터는GitHub커밋 상태입니다.

예를 들어 를 설정할 수 있습니다.targetUrlhttps://aws.amazon.com/codebuild/<path to build>커밋 상태가 이 URL에 링크됩니다.

다음을 포함시킬 수도 있습니다.CodeBuild환경 변수targetUrlURL에 추가 정보를 추가합니다. 예를 들어 URL에 빌드 영역을 추가하려면targetUrlCNAME:

"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
Source/gitSubmodulesConfig

선택 사항. Git 하위 모듈 구성에 대한 정보입니다. 와 함께 사용CodeCommit,GitHub,GitHubEnterprise Server 및 Bitbucket에만 해당.

Source/gitSubmodulesConfig/FetchSubmodules

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

Source/InsecureSsl

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

Source/소스 식별자

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

SecondarySour

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

secondarySourceVersions

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

sourceVersion

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

  • 용CodeCommit, 사용할 커밋 ID, 분기 또는 Git 태그입니다.

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

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

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

빌드 수준에서 sourceVersion이 지정되어 있으면 (프로젝트 수준에서) 그 버전이 이 sourceVersion보다 우선합니다. 자세한 정보는 AWS CodeBuild를 사용한 소스 버전 샘플을 참조하십시오.

유물

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

artifacts/유형

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

  • CODEPIPELINE

  • NO_ARTIFACTS

  • S3

artifacts/위치

과 함께 사용됨S3아티팩트 유형. 다른 아티팩트 유형에는 사용되지 않습니다.

필수 구성 요소에서 생성하거나 식별한 출력 버킷의 이름입니다.

artifacts/통로

과 함께 사용됨S3아티팩트 유형. 다른 아티팩트 유형에는 사용되지 않습니다.

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

artifacts/namespaceType

과 함께 사용됨S3아티팩트 유형. 다른 아티팩트 유형에는 사용되지 않습니다.

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

artifacts/name

과 함께 사용됨S3아티팩트 유형. 다른 아티팩트 유형에는 사용되지 않습니다.

빌드 출력 ZIP 파일 또는 폴더의 이름입니다.location. 예를 들어 를 지정하는 경우MyPath...에 대한pathMyArtifact.zip...에 대한name경로와 이름은 다음과 같습니다.MyPath/MyArtifact.zip.

artifacts/overrideArtifactName

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

선택 사항. 로 설정된 경우true, 에 지정된 이름입니다.artifactsbuildspec 파일 재정의 블록name. 자세한 정보는 CodeBuild의 빌드 사양 참조을 참조하십시오.

artifacts/포장

과 함께 사용됨S3아티팩트 유형. 다른 아티팩트 유형에는 사용되지 않습니다.

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

NONE

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

ZIP

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

Secondary아티팩트

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

캐시

필수. AProjectCache이 빌드 프로젝트의 캐시 설정에 대한 정보가 포함된 객체입니다. 자세한 정보는 빌드 캐싱을 참조하십시오.

환경

필수. AProjectEnvironment프로젝트의 빌드 환경 설정에 대한 정보가 포함된 객체입니다. 이러한 설정은 다음과 같습니다.

환경/유형

필수. 빌드 환경의 유형입니다. 자세한 내용은 단원을 참조하십시오.유형CodeBuildAPI 참조.

환경/영상

필수. 이 빌드 환경에서 사용하는 Docker 이미지 식별자입니다. 일반적으로 이 식별자는 image-name:tag로 표현됩니다. 예를 들어 CodeBuild가 도커 이미지를 관리하는 데 사용하는 Docker 리포지토리에서 이 값은 aws/codebuild/standard:4.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. 자세한 정보는 가 제공하는 도커 이미지 CodeBuild을 참조하십시오.

환경/computeType

필수. 이 빌드 환경에서 사용하는 컴퓨팅 리소스를 지정합니다. 자세한 내용은 단원을 참조하십시오.computeTypeCodeBuildAPI 참조.

환경/인증서

선택 사항. 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.

환경/환경 변수

선택 사항. 의 어레이EnvironmentVariable이 빌드 환경에 지정하려는 환경 변수가 포함된 객체입니다. 각 환경 변수는 다음을 포함하는 객체로 표현됩니다.name,value, 및typename,value, 및type.

콘솔 및AWS CLI사용자는 모든 환경 변수를 확인할 수 있습니다. 환경 변수의 가시성에 대한 문제가 없다면namevalue, 및 세트typePLAINTEXT.

다음과 같은 민감한 값을 사용하여 환경 변수를 저장하는 것이 좋습니다.AWS액세스 키 IDAWS보안 액세스 키 또는 암호 (Amazon EC2 Systems Manager 파라미터 스토어의 파라미터로AWS Secrets Manager. 용name, 저장된 파라미터에 대해 식별자를 설정합니다.CodeBuild참조할 수 있습니다.

Amazon EC2 Systems Manager 파라미터 스토어를 사용하는 경우value파라미터의 스토어에 저장되는 파라미터의 이름을 설정합니다. typePARAMETER_STORE로 설정합니다. 라는 매개 변수 사용/CodeBuild/dockerLoginPassword예를 들면 으로 설정합니다.nameLOGIN_PASSWORD. value/CodeBuild/dockerLoginPassword로 설정합니다. typePARAMETER_STORE로 설정합니다.

중요

Amazon EC2 Systems Manager 파라미터 스토어를 사용하는 경우 로 시작하는 파라미터 이름으로 파라미터를 저장하는 것이 좋습니다./CodeBuild/(예:/CodeBuild/dockerLoginPassword). 이CodeBuild콘솔로 Amazon EC2 Systems Manager Manager에서 파라미터를 생성합니다. 파라미터 생성을 선택하고 대화 상자에 표시되는 지시에 따릅니다. (이 대화 상자에서KMS 키에서 ARN을 지정할 수 있습니다.AWS KMS계정에 있는 키. Amazon EC2 Systems Manager Manager는 이 키를 사용하여 스토리지 동안 파라미터의 값을 암호화하고 검색 시 암호를 해독합니다. CodeBuild 콘솔을 사용하여 파라미터를 만드는 경우 콘솔은 /CodeBuild/라는 이름의 파라미터가 저장될 때 이를 시작합니다. 자세한 내용은 단원을 참조하십시오.Systems Manager Parameter StoreSystems Manager 파라미터 스토어 콘솔 연습Amazon EC2 Systems Manager 사용.

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

빌드 프로젝트가 로 시작되지 않는 파라미터 이름으로 Amazon EC2 Systems Manager 파라미터 스토어에 저장된 파라미터를 참조하는 경우/CodeBuild/, 그리고 당신은 선택했습니다새로운 서비스 역할에서 시작하지 않는 매개 변수 이름에 액세스할 수 있도록 해당 서비스 역할을 업데이트해야 합니다./CodeBuild/. 이는 서비스 역할이 /CodeBuild/로 시작하는 파라미터 이름에만 액세스할 수 있기 때문입니다.

를 선택한 경우새로운 서비스 역할, 서비스 역할에 아래의 모든 파라미터를 해독할 권한이 포함됩니다./CodeBuild/Amazon EC2 Systems Manager 파라미터 스토어에 있는 네임스페이스

사용자가 설정한 환경 변수는 기존 환경 변수를 대체합니다. 예를 들어 Docker 이미지에 값이 my_valueMY_VAR이라는 환경 변수가 이미 포함되어 있는데, 사용자가 MY_VAR 환경 변수의 값을 other_value로 설정하면, my_valueother_value로 바뀝니다. 마찬가지로, Docker 이미지에 값이 /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:GetSecretValueaction. 앞에서 New service role(새 서비스 역할)을 선택한 경우에는 CodeBuild는 빌드 프로젝트의 기본 서비스 역할에 이 작업을 포함합니다. Existing service role(기존 서비스 역할)을 선택한 경우에는 이 작업을 서비스 역할에 별도로 포함해야 합니다.

빌드 프로젝트가 로 시작되지 않는 암호 이름으로 Secret Manager에 저장된 암호를 참조하는 경우/CodeBuild/, 그리고 당신은 선택했습니다새로운 서비스 역할를 사용하여 로 시작하지 않는 암호 이름에 액세스할 수 있도록 서비스 역할을 업데이트해야 합니다./CodeBuild/. 이는 서비스 역할이 /CodeBuild/로 시작하는 암호 이름에만 액세스할 수 있기 때문입니다.

를 선택한 경우새로운 서비스 역할, 서비스 역할에 아래의 모든 암호를 해독할 권한이 포함됩니다./CodeBuild/시크릿 Secrets Manager 네임스페이스

환경/RegistryCred

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

환경/등록 자격 증명/자격 인증서

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

환경/등록 자격 증명/ProvidalProvider

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

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

  • imagePullCredentialsSERVICE_ROLE로 설정해야 합니다.

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

환경/imagePullCredentials유형

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

CODEBUILD

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

서비스_역할

를 지정합니다.CodeBuild은 가 빌드 프로젝트의 서비스 역할을 수행합니다.

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

환경/Pervironment

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

참고

기본적으로 Docker 컨테이너는 모든 디바이스에 대한 액세스를 허용하지 않습니다. 권한 모드는 빌드 프로젝트의 Docker 컨테이너에 모든 디바이스에 대한 액세스 권한을 부여합니다. 자세한 내용은 Docker 문서 웹 사이트의 런타임 권한 및 Linux 기능을 참조하십시오.

- 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

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

timeoutInMinutes

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

queuedTimeoutIn분

선택 사항. 시간 (분 단위: 5분에서 480분 (8시간) 사이) 입니다.CodeBuild빌드가 여전히 큐에 있는 경우 빌드를 중지합니다. 지정하지 않을 경우 기본값인 60을 사용합니다.

encryptionKey

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

tags

선택 사항. 의 어레이Tag이 빌드 프로젝트에 연결하려는 태그를 제공하는 객체입니다. 최대 50개의 태그를 지정할 수 있습니다. 이러한 태그는 CodeBuild 빌드 프로젝트 태그를 지원하는 AWS 서비스가 사용할 수 있습니다. 각 태그는 다음과 같이 객체로 표현됩니다.key및 avalue.

VPCConfig

선택 사항. AVpcConfig프로젝트의 VPC 구성에 대한 정보가 포함된 객체입니다. 자세한 정보는 사용AWS CodeBuildAmazon Virtual Private Cloud 사용을 참조하십시오.

속성에는 다음이 포함됩니다.

vpcId

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

aws ec2 describe-vpcs --region <region-ID>
서브넷

필수. 가 사용하는 리소스가 포함된 서브넷 ID 어레이CodeBuild. 이 ID를 얻으려면 다음 명령을 실행합니다.

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

필수. 가 사용하는 보안 그룹 ID 어레이CodeBuild를 사용하여 VPC 리소스에 대한 액세스를 허용합니다. 이 ID를 얻으려면 다음 명령을 실행합니다.

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

badgeEnabled

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

LogsConfig

ALogsConfig이 빌드의 로그가 있는 위치에 대한 정보가 포함된 객체입니다.

LogsConfig/cloudWatchLogs

ACloudWatchLogsConfig로그를 푸시하는 방법에 대한 정보가 포함된 객체CloudWatch로그.

LogsConfig/S3Logs

원래 요청 ping에 대한S3LogsConfig로그를 Amazon S3 푸시하는 방법에 대한 정보가 포함된 객체입니다.

fileSystemLocations

선택 사항. 의 어레이ProjectFileSystemsLocationAmazon EFS 구성에 대한 정보가 포함된 객체입니다.

buildBatchConfig

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

buildBatchConfig/serviceRole

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

buildBatchConfig/CombineArtifact

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

buildBatchConfig/제한/maximumBuildsAllowed

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

buildBatchConfig/제한/computeTypesAllowed

배치 빌드에 허용되는 컴퓨팅 유형을 지정하는 문자열 배열입니다. 단원을 참조하십시오.빌드 환경 컴퓨팅 유형이 값에 대한 것입니다.

buildBatchConfig/timeoutInMinutes

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

buildBatchConfig/batchReportMode

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

REPORT_AGGREGATED_BATCH

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

REPORT_INDIVIDUAL_BUILDS

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

concurrentBuildLimit

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

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

프로젝트 생성

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

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

성공하면 JSON 표현은프로젝트객체가 콘솔 출력에 표시됩니다. 단원을 참조하십시오.CreateProject응답 구문이 데이터의 예제를 참조하십시오.

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

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

소스 코드가 에 저장되어 있는 경우GitHub리포지토리 및 원하는CodeBuild코드 변경이 리포지토리로 푸시될 때마다 소스 코드를 다시 빌드하려면빌드 실행 자동 시작(AWS CLI).