

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

# 예약 용량 플릿에서 빌드 실행
<a name="fleets"></a>

CodeBuild는 다음과 같은 컴퓨팅 플릿을 제공합니다.
+ 온디맨드 플릿
+ 예약 용량 플릿

CodeBuild는 온디맨드 플릿을 통해 빌드에 맞는 컴퓨팅 기능을 제공합니다. 빌드가 완료되면 머신이 파괴됩니다. 온디맨드 플릿은 완전 관리형이며, 수요 급증을 처리할 수 있는 자동 규모 조정 기능이 포함되어 있습니다.

**참고**  
온디맨드 플릿은 macOS를 지원하지 않습니다.

CodeBuild는 또한 CodeBuild에서 유지 관리하는 Amazon EC2 기반 인스턴스를 포함하는 예약 용량 플릿을 제공합니다. 예약 용량 플릿을 사용하면 빌드 환경을 위한 전용 인스턴스 세트를 구성할 수 있습니다. 이러한 머신은 유휴 상태로 유지되므로 빌드 또는 테스트를 즉시 처리하고 빌드 기간을 단축할 수 있습니다. 예약 용량 플릿을 사용하면 머신이 상시 가동되므로 프로비저닝하는 한 계속해서 비용이 발생합니다.

**중요**  
인스턴스 실행 시간에 관계없이 예약 용량 플릿에서는 인스턴스당 초기 요금이 발생하며, 그 이후에는 추가 관련 비용이 발생할 수 있습니다. 자세한 내용은 [https://aws.amazon.com/codebuild/pricing/](https://aws.amazon.com/codebuild/pricing/) 단원을 참조하십시오.

**Topics**
+ [예약 용량 플릿 생성](#fleets.how-to)
+ [모범 사례](#fleets.best-practices)
+ [예약 용량 플릿을 여러 CodeBuild 프로젝트에서 공유할 수 있습니까?](#fleets.share)
+ [속성 기반 컴퓨팅은 어떻게 작동하나요?](#fleets.attribute-compute)
+ [플릿에 Amazon EC2 인스턴스를 수동으로 지정할 수 있나요?](#fleets.manual-input-compute)
+ [예약 용량 플릿을 지원하는 리전은 어디입니까?](#fleets.regions)
+ [예약 용량 macOS 플릿을 구성하려면 어떻게 해야 합니까?](#fleets.configure-macos)
+ [예약 용량 플릿에 대한 사용자 지정 Amazon Machine Image(AMI)를 구성하려면 어떻게 해야 하나요?](#fleets.custom-ami)
+ [예약 용량 플릿의 제한](#fleets.limitations)
+ [예약 용량 플릿 속성](fleets.reserved-capacity-fleets.md)
+ [를 사용한 예약 용량 샘플 AWS CodeBuild](reserved-capacity-samples.md)

## 예약 용량 플릿 생성
<a name="fleets.how-to"></a>

다음 지침에 따라 예약 용량 플릿을 생성합니다.

**예약 용량 플릿 생성**

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home) AWS CodeBuild 콘솔을 엽니다.

1. 탐색 창에서 **컴퓨팅 플릿**을 선택한 다음, **플릿 생성**을 선택합니다.

1. **컴퓨팅 플릿 이름** 텍스트 필드에 플릿의 이름을 입력합니다.

1. **운영 체제** 드롭다운 메뉴에서 운영 체제를 선택합니다.

1. **아키텍처** 드롭다운 메뉴에서 아키텍처를 선택합니다.

1. (선택 사항) Docker 컨테이너 대신 Amazon EC2 인스턴스에서 직접 실행하려면 **인스턴스 실행 모드 사용 - 선택 사항**을 선택합니다. 그런 다음 **메이저 버전**과 **마이너 버전**을 선택합니다.

1. (선택 사항) **추가 구성**에서 다음을 수행합니다.
   + **VPC 구성 - 선택 사항**을 선택하여 사용 중에 프라이빗 리소스에 액세스하기 위해 플릿을 VPC에 연결합니다.
     + **VPC** 드롭다운 메뉴에서 CodeBuild 플릿이 액세스할 VPC를 선택합니다.
     + **서브넷** 드롭다운 메뉴에서 CodeBuild가 VPC 구성을 설정하는 데 사용할 서브넷을 선택합니다.
     + **보안 그룹** 드롭다운 메뉴에서 CodeBuild가 VPC와 함께 작동하는 데 사용해야 하는 보안 그룹을 선택합니다.
     + **플릿 서비스 역할** 필드에서 기존 서비스 역할을 선택합니다.
**참고**  
플릿 역할에 필요한 권한이 있는지 확인합니다. 자세한 내용은 [사용자가 플릿 서비스 역할에 대한 권한 정책을 추가하도록 허용](auth-and-access-control-iam-identity-based-access-control.md#customer-managed-policies-example-permission-policy-fleet-service-role) 단원을 참조하십시오.
     + Amazon Linux 운영 체제를 선택한 경우 **프록시 구성 정의 - 선택 사항**을 선택하여 예약 용량 인스턴스에 네트워크 액세스 제어를 적용합니다.
     + **기본 동작**에서 기본적으로 모든 대상에 대한 발신 트래픽을 허용하거나 거부하도록 선택합니다.
     + **프록시 규칙**에서 **프록시 규칙 추가**를 선택하여 네트워크 액세스 제어를 허용하거나 거부할 대상 도메인 또는 IP를 지정합니다.
   + 사용자 지정 Amazon Machine Image(AMI)를 사용하려면 **사용자 지정 AMI 구성 - 선택 사항**을 선택합니다.
     + **AMI** 드롭다운 메뉴에서 플릿의 Amazon Machine Image(AMI)를 선택합니다.
     + **플릿 서비스 역할** 필드에서 기존 서비스 역할을 선택합니다.
**참고**  
플릿 역할에 필요한 권한이 있는지 확인합니다. 자세한 내용은 [사용자가 플릿 서비스 역할에 대한 권한 정책을 추가하도록 허용](auth-and-access-control-iam-identity-based-access-control.md#customer-managed-policies-example-permission-policy-fleet-service-role) 단원을 참조하십시오.

1. **용량 구성**의 **컴퓨팅 선택 모드**에서 다음 중 하나를 선택합니다.
   + **안내형 선택**을 선택하는 경우 다음을 수행합니다.
     + **컴퓨팅**에서 이 플릿에 포함된 인스턴스 유형을 선택합니다.
     + **용량** 텍스트 필드에 플릿의 최소 인스턴스 수를 입력합니다.
     + (선택 사항) **추가 구성**에서 다음을 수행합니다.
       + 이 구성을 기반으로 플릿 규모를 자동으로 조정하려면 **조정 구성 - 선택 사항**을 선택합니다. **조정 모드 - 선택 사항** 드롭다운 메뉴에서 수요가 플릿 용량을 초과할 때의 동작을 선택합니다.
   + **사용자 지정 인스턴스**를 선택하는 경우 다음을 수행합니다.
     + **컴퓨팅 인스턴스 유형** 드롭다운 메뉴에서 이 플릿에 포함된 인스턴스 유형을 선택합니다.
     + **추가 EBS 볼륨 크기 - 선택 사항** 텍스트 필드에 제공된 64GB의 디스크 공간에 추가된 볼륨을 입력합니다.
     + **용량** 텍스트 필드에 플릿의 최소 인스턴스 수를 입력합니다.
     + (선택 사항) **추가 구성**에서 다음을 수행합니다.
       + 이 구성을 기반으로 플릿 규모를 자동으로 조정하려면 **조정 구성 - 선택 사항**을 선택합니다. **조정 모드 - 선택 사항** 드롭다운 메뉴에서 수요가 플릿 용량을 초과할 때의 동작을 선택합니다.

1. **컴퓨팅 플릿 생성**을 선택합니다.

1. 컴퓨팅 플릿이 생성된 후 새 CodeBuild 프로젝트를 만들거나 기존 프로젝트를 편집합니다. **환경**에서 **프로비저닝 모델**의 **예약 용량**을 선택한 다음 **플릿 이름**에서 지정된 플릿을 선택합니다.

## 모범 사례
<a name="fleets.best-practices"></a>

예약 용량 플릿을 사용할 때는 다음 모범 사례를 따르는 것이 좋습니다.
+ 소스를 캐싱하여 빌드 성능을 향상시키려면 소스 캐시 모드를 사용하는 것이 좋습니다.
+ 기존 Docker 계층을 캐싱하여 빌드 성능을 개선하려면 Docker 계층 캐싱을 사용하는 것이 좋습니다.

## 예약 용량 플릿을 여러 CodeBuild 프로젝트에서 공유할 수 있습니까?
<a name="fleets.share"></a>

예. 여러 프로젝트에서 플릿을 사용하여 플릿의 용량 활용도를 극대화할 수 있습니다.

**중요**  
예약 용량 기능을 사용할 때 소스 파일, Docker 계층, 빌드스펙에 지정된 캐시된 디렉터리를 포함하여 플릿 인스턴스에 캐시된 데이터를 동일한 계정 내의 다른 프로젝트에서 액세스할 수 있습니다. 이는 의도적으로 설계된 것이며 동일한 계정 내의 프로젝트가 플릿 인스턴스를 공유할 수 있도록 허용합니다.

## 속성 기반 컴퓨팅은 어떻게 작동하나요?
<a name="fleets.attribute-compute"></a>

플릿의 `computeType`로 `ATTRIBUTE_BASED_COMPUTE`를 선택하면 `computeConfiguration`이라는 새로운 필드에 속성을 지정할 수 있습니다. 이러한 속성에는 vCPU, 메모리, 디스크 공간 및 `machineType`이 포함됩니다. 이 `machineType`는 `GENERAL` 또는 `NVME`입니다. 사용 가능한 속성 중 하나 또는 여러 개를 지정한 후 CodeBuild는 사용 가능한 지원되는 인스턴스 유형에서 컴퓨팅 유형을 완료된 `computeConfiguration`으로 선택합니다.

**참고**  
CodeBuild는 모든 입력 요구 사항에 맞는 가장 저렴한 인스턴스를 선택합니다. 선택한 인스턴스의 메모리, vCPU 및 디스크 공간은 모두 입력 요구 사항보다 크거나 같습니다. 생성되거나 업데이트된 플릿에서 확인된 `computeConfiguration`을 확인할 수 있습니다.

CodeBuild에서 충족할 수 없는 `computeConfiguration`을 입력하면 검증 예외가 발생합니다. 또한, `computeConfiguration`을 온디맨드로 사용할 수 없는 경우 온디맨드 플릿 오버플로 동작이 대기열 동작으로 재정의된다는 점에 유의하세요.

## 플릿에 Amazon EC2 인스턴스를 수동으로 지정할 수 있나요?
<a name="fleets.manual-input-compute"></a>

예. **사용자 지정 인스턴스**를 선택하거나 `InstanceType` API 파라미터를 구성하여 콘솔에 원하는 Amazon EC2 인스턴스를 직접 입력할 수 있습니다. 이 필드는 CreateFleet, UpdateFleet, CreateProject, UpdateProject, StartBuild API에서 사용됩니다. 자세한 내용은 [Compute instance type](fleets.reserved-capacity-fleets.md#compute) 단원을 참조하십시오.

## 예약 용량 플릿을 지원하는 리전은 어디입니까?
<a name="fleets.regions"></a>

예약 용량 Amazon Linux 및 Windows 플릿은 AWS 리전미국 동부(버지니아 북부), 미국 동부(오하이오), 미국 서부(오레곤), 아시아 태평양(뭄바이), 아시아 태평양(싱가포르), 아시아 태평양(시드니), 아시아 태평양(도쿄), 유럽(프랑크푸르트), 유럽(아일랜드), 남아메리카(상파울루)에서 지원됩니다. CodeBuild가 사용 가능한 AWS 리전 에 대한 자세한 내용은 [리전별AWS 서비스](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)를 참조하세요.

예약 용량 macOS Medium 플릿은 AWS 리전미국 동부(버지니아 북부), 미국 동부(오하이오), 미국 서부(오레곤), 아시아 태평양(시드니), 유럽(프랑크푸르트)에서 지원됩니다. 예약 용량 macOS 대규모 플릿은 AWS 리전미국 동부(버지니아 북부), 미국 동부(오하이오), 미국 서부(오레곤), 아시아 태평양(시드니)에서 지원됩니다.

## 예약 용량 macOS 플릿을 구성하려면 어떻게 해야 합니까?
<a name="fleets.configure-macos"></a>

**예약 용량 macOS 플릿을 구성하려면**

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home) AWS CodeBuild 콘솔을 엽니다.

1. 탐색 창에서 **컴퓨팅 플릿**을 선택한 다음, **플릿 생성**을 선택합니다.

1. **컴퓨팅 플릿 이름** 텍스트 필드에 플릿의 이름을 입력합니다.

1. **운영 체제** 드롭다운 메뉴에서 **macOS**를 선택합니다.

1. **컴퓨팅** 필드에서 **Apple M2, 24GB 메모리, 8 vCPU** 또는 **Apple M2, 32GB 메모리, 12 vCPU** 컴퓨팅 머신 유형 중 하나를 선택합니다.

1. **용량** 텍스트 필드에 플릿의 최소 인스턴스 수를 입력합니다.

1. (선택 사항) 플릿에 사용자 지정 이미지를 사용하려면 [예약 용량 플릿에 대한 사용자 지정 Amazon Machine Image(AMI)를 구성하려면 어떻게 해야 하나요?](#fleets.custom-ami)의 내용을 참조하여 Amazon Machine Image(AMI)에 필요한 사전 요구 사항이 있는지 확인합니다.

1. (선택 사항) 플릿으로 VPC를 구성하려면 **추가 구성**에서 다음을 수행합니다.
   + **VPC - 선택 사항** 드롭다운 메뉴에서 CodeBuild 플릿이 액세스할 VPC를 선택합니다.
   + **서브넷** 드롭다운 메뉴에서 CodeBuild가 VPC 구성을 설정하는 데 사용할 서브넷을 선택합니다.
   + **보안 그룹** 드롭다운 메뉴에서 CodeBuild가 VPC와 함께 작동하는 데 사용해야 하는 보안 그룹을 선택합니다.
   + **플릿 서비스 역할** 필드에서 기존 서비스 역할을 선택합니다.
**참고**  
플릿 역할에 필요한 권한이 있는지 확인합니다. 자세한 내용은 [사용자가 플릿 서비스 역할에 대한 권한 정책을 추가하도록 허용](auth-and-access-control-iam-identity-based-access-control.md#customer-managed-policies-example-permission-policy-fleet-service-role) 단원을 참조하십시오.

1. **컴퓨팅 플릿 생성**을 선택하고 플릿 인스턴스가 시작될 때까지 기다립니다. 시작되면 용량은 `n/n`이며, 여기서 *n*은 제공된 용량입니다.

1. 컴퓨팅 플릿이 시작된 후 새 CodeBuild 프로젝트를 만들거나 기존 프로젝트를 편집합니다. **환경**에서 **프로비저닝 모델**의 **예약 용량**을 선택한 다음 **플릿 이름**에서 지정된 플릿을 선택합니다.

## 예약 용량 플릿에 대한 사용자 지정 Amazon Machine Image(AMI)를 구성하려면 어떻게 해야 하나요?
<a name="fleets.custom-ami"></a>

**예약 용량 플릿에 대한 사용자 지정 Amazon Machine Image(AMI)를 구성하려면**

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home) AWS CodeBuild 콘솔을 엽니다.

1. 탐색 창에서 **컴퓨팅 플릿**을 선택한 다음, **플릿 생성**을 선택합니다.

1. **컴퓨팅 플릿 이름** 텍스트 필드에 플릿의 이름을 입력합니다.

1. 플릿에 대해 **사용자 지정 이미지**를 선택하고 Amazon Machine Image(AMI)에 다음과 같은 사전 조건이 있는지 확인합니다.
   + 환경 유형이 `MAC_ARM`인 경우 AMI **아키텍처**가 64비트 `Mac-Arm`인지 확인합니다.
   + 환경 유형이 `LINUX_EC2`인 경우 AMI **아키텍처**가 64비트 `x86`인지 확인합니다.
   + 환경 유형이 `ARM_EC2`인 경우 AMI **아키텍처**가 64비트 `Arm`인지 확인합니다.
   + 환경 유형이 `WINDOWS_EC2`인 경우 AMI **아키텍처**가 64비트 `x86`인지 확인합니다.
   + AMI는 CodeBuild 서비스 **조직 ARN**을 허용합니다. 조직 ARN 목록은 [Amazon Machine Images (AMI)](fleets.reserved-capacity-fleets.md#ami) 섹션을 참조하세요.
   + AMI가 AWS KMS 키로 암호화된 경우 AWS KMS 키는 CodeBuild 서비스 **조직 ID**도 허용해야 합니다. 조직 ID 목록은 [Amazon Machine Images (AMI)](fleets.reserved-capacity-fleets.md#ami) 섹션을 참조하세요. AWS KMS 키에 대한 자세한 내용은 *Amazon EC2 사용 설명서*의 [ 조직 및 OUs](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/share-amis-with-organizations-and-OUs.html#allow-org-ou-to-use-key)하세요. CodeBuild 조직에 KMS 키를 사용할 수 있는 권한을 부여하려면 다음 명령문을 키 정책에 추가합니다.

     ```
     {
         "Sid": "Allow access for organization root",
         "Effect": "Allow",
         "Principal": "*",
         "Action": [
             "kms:Describe*",
             "kms:List*",
             "kms:Get*",
             "kms:Encrypt",
             "kms:Decrypt",
             "kms:ReEncrypt*",
             "kms:GenerateDataKey*",
             "kms:CreateGrant"
         ],
         "Resource": "*",
         "Condition": {
             "StringEquals": {
                 "aws:PrincipalOrgID": "o-123example"
             }
         }
     }
     ```
   + **플릿 서비스 역할** 필드에서 다음 Amazon EC2 권한을 부여합니다.

------
#### [ JSON ]

****  

     ```
     {
         "Version":"2012-10-17",		 	 	 
         "Statement": [
             {
                 "Effect": "Allow",
                 "Action": [
                    "ec2:DescribeImages",
                    "ec2:DescribeSnapshots"
                 ],
                 "Resource": "*"
             }
         ]
     }
     ```

------

## 예약 용량 플릿의 제한
<a name="fleets.limitations"></a>

예약 용량 플릿이 지원하지 않는 몇 가지 사용 사례가 있으며, 이로 인해 영향을 받는 경우에는 온디맨드 플릿을 대신 사용하십시오.
+ 예약 용량 플릿은 빌드 사용률 지표를 지원하지 않습니다.
+ 예약 용량 macOS 플릿은 디버그 세션을 지원하지 않습니다.

제한과 할당량에 대한 자세한 내용은 [컴퓨팅 플릿](limits.md#fleet-limits) 섹션을 참조하십시오.

# 예약 용량 플릿 속성
<a name="fleets.reserved-capacity-fleets"></a>

예약 용량 플릿에는 다음 속성이 포함됩니다. 예약 용량 플릿에 대한 자세한 내용은 [예약 용량 플릿에서 빌드 실행](fleets.md) 섹션을 참조하세요.

**운영 체제**  
운영 체제입니다. 사용할 수 있는 운영 체제는 다음과 같습니다.  
+ Amazon Linux
+ macOS
+ Windows Server 2019
+ Windows Server 2022

**아키텍처**  
프로세서 아키텍처. 사용할 수 있는 아키텍처는 다음과 같습니다.  
+ x86\$164
+ Arm64

**환경 유형**  
**Amazon Linux**를 선택할 때 사용할 수 있는 환경 유형입니다. 다음은 사용할 수 있는 환경 키입니다.  
+ Linux EC2
+ Linux GPU

**컴퓨팅 인스턴스 유형**  
플릿 인스턴스의 컴퓨팅 구성입니다.    
**안내형 선택**  
vCPU, 메모리 및 디스크 공간 설정을 선택하여 다양한 컴퓨팅 유형을 지정합니다. 리전별 컴퓨팅 유형 가용성에 대한 내용은 [예약 용량 환경 유형 정보](build-env-ref-compute-types.md#environment-reserved-capacity.types)를 참조하세요.  
**사용자 지정 인스턴스**  
원하는 인스턴스 유형을 수동으로 지정합니다.

**Capacity**  
플릿에 할당된 초기 머신 수로, 병렬로 실행할 수 있는 빌드 수를 정의합니다.

**오버플로 동작**  
빌드 수가 플릿 용량을 초과할 때의 동작을 정의합니다.    
**온디맨드**  
오버플로 빌드는 CodeBuild 온디맨드에서 실행됩니다.  
VPC 연결 플릿을 생성하는 동안 오버플로 동작을 온디맨드로 설정하도록 선택한 경우 프로젝트 서비스 역할에 필요한 VPC 권한을 추가해야 합니다. 자세한 내용은 VPC 네트워크 인터페이스를 생성하는 데 필요한 AWS 서비스에 [CodeBuild 액세스를 허용하는 정책 설명 예제](auth-and-access-control-iam-identity-based-access-control.md#customer-managed-policies-example-create-vpc-network-interface)를 참조하세요.
오버플로 동작을 온디맨드로 설정하도록 선택하면 온디맨드 Amazon EC2와 마찬가지로 오버플로 빌드에 별도로 요금이 청구됩니다. 자세한 내용은 [https://aws.amazon.com/codebuild/pricing/](https://aws.amazon.com/codebuild/pricing/) 단원을 참조하십시오.  
**대기열**  
머신을 사용할 수 있을 때까지 빌드 실행이 대기열에 배치됩니다. 이렇게 하면 추가 머신이 할당되지 않으므로 추가 비용이 제한됩니다.

**Amazon Machine Image(AMI)**  
플릿의 Amazon Machine Image(AMI) 속성입니다. CodeBuild에서 다음 속성이 지원됩니다.      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/codebuild/latest/userguide/fleets.reserved-capacity-fleets.html)

**추가 구성**    
**VPC - 선택 사항**  
CodeBuild 플릿이 액세스할 VPC입니다. 자세한 내용은 [Amazon Virtual Private Cloud AWS CodeBuild 와 함께 사용](vpc-support.md) 단원을 참조하십시오.  
StartBuild API를 직접 호출할 때 플릿 재정의가 지정되면 CodeBuild는 프로젝트 VPC 구성을 무시합니다.  
**서브넷**  
CodeBuild가 VPC 구성을 설정하는 데 사용하는 VPC 서브넷입니다. 예약 용량 플릿은 단일 가용 영역에서 하나의 서브넷만 지원합니다. 또한 서브넷에 NAT 게이트웨이가 포함되어 있는지 확인합니다.  
**보안 그룹**  
CodeBuild가 VPC와 함께 사용하는 VPC 보안 그룹입니다. 보안 그룹이 아웃바운드 연결을 허용하는지 확인합니다.  
**플릿 서비스 역할**  
계정의 기존 서비스 역할에서 플릿의 서비스 역할을 정의합니다.  
**프록시 구성 정의 - 선택 사항**  
예약 용량 인스턴스에 네트워크 액세스 제어를 적용하는 프록시 구성입니다. 자세한 내용은 [관리형 프록시 서버와 AWS CodeBuild 함께 사용](run-codebuild-in-managed-proxy-server.md) 단원을 참조하십시오.  
프록시 구성은 VPC, Windows 또는 MacOS를 지원하지 않습니다.  
**기본 동작**  
발신 트래픽의 동작을 정의합니다.    
**허용**  
기본적으로 모든 대상으로 전송되는 트래픽을 허용합니다.  
**거부**  
기본적으로 모든 대상으로 전송되는 트래픽을 거부합니다.  
**프록시 규칙**  
네트워크 액세스 제어를 허용하거나 거부할 대상 도메인 또는 IP를 지정합니다.

# 를 사용한 예약 용량 샘플 AWS CodeBuild
<a name="reserved-capacity-samples"></a>

이 샘플은 CodeBuild 내 예약 용량 플릿을 실험하는 데 사용할 수 있습니다.

**Topics**
+ [예약 용량 샘플을 사용한 캐싱](#reserved-capacity-samples.caching)

## 예약 용량 샘플을 사용한 캐싱
<a name="reserved-capacity-samples.caching"></a>

캐시는 빌드 환경에서 재사용할 수 있는 정보를 저장하여 여러 빌드에 사용할 수 있습니다. 이 샘플은 예약 용량을 사용하여 빌드 프로젝트 내에서 캐싱을 활성화하는 방법을 보여주었습니다. 자세한 내용은 [성능을 개선하기 위한 캐시 빌드](build-caching.md) 단원을 참조하십시오.

프로젝트 설정에서 하나 이상의 캐시 모드를 지정하여 시작할 수 있습니다.

```
Cache:
        Type: LOCAL
        Modes:
          - LOCAL_CUSTOM_CACHE
          - LOCAL_DOCKER_LAYER_CACHE
          - LOCAL_SOURCE_CACHE
```

**참고**  
Docker 계층 캐시를 사용하려면 권한 모드를 활성화해야 합니다.

프로젝트 buildspec 설정이 다음과 같아야 합니다.

```
version: 0.2
      phases:
        build:
          commands:
            - echo testing local source cache
            - touch /codebuild/cache/workspace/foobar.txt
            - git checkout -b cached_branch
            - echo testing local docker layer cache
            - docker run alpine:3.14 2>&1 | grep 'Pulling from' || exit 1
            - echo testing local custom cache
            - touch foo
            - mkdir bar && ln -s foo bar/foo2
            - mkdir bar/bar && touch bar/bar/foo3 && touch bar/bar/foo4
            - "[ -f foo ] || exit 1"
            - "[ -L bar/foo2 ] || exit 1"
            - "[ -f bar/bar/foo3 ] || exit 1"
            - "[ -f bar/bar/foo4 ] || exit 1"
      cache:
        paths:
           - './foo'
           - './bar/**/*'
           - './bar/bar/foo3'
```

캐시를 시드하는 새 프로젝트로 빌드를 실행하여 시작할 수 있습니다. 작업이 완료되면 다음과 같이 buildspec을 재정의하는 다른 빌드를 시작해야 합니다.

```
version: 0.2
      phases:
        build:
          commands:
            - echo testing local source cache
            - git branch | if grep 'cached_branch'; then (exit 0); else (exit 1); fi
            - ls /codebuild/cache/workspace | if grep 'foobar.txt'; then (exit 0); else (exit 1); fi
            - echo testing local docker layer cache
            - docker run alpine:3.14 2>&1 | if grep 'Pulling from'; then (exit 1); else (exit 0); fi
            - echo testing local custom cache
            - "[ -f foo ] || exit 1"
            - "[ -L bar/foo2 ] || exit 1"
            - "[ -f bar/bar/foo3 ] || exit 1"
            - "[ -f bar/bar/foo4 ] || exit 1"
      cache:
        paths:
           - './foo'
           - './bar/**/*'
           - './bar/bar/foo3'
```