

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# リザーブドキャパシティキャパシティフリートでビルドを実行
<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 マシンイメージ (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 マネジメントコンソール し、[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 を指定します。
   + **[カスタム AMI の設定 - オプション]** を選択し、カスタム Amazon マシンイメージ (AMI) を使用します。
     + **[AMI]** ドロップダウンメニューから、フリートの Amazon マシンイメージ (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 プロジェクトを作成するか、既存の CodeBuild プロジェクトを編集します。**[環境]** から **[プロビジョニングモデル]** の **[リザーブドキャパシティ]** を選択し、**[フリート名]** で指定したフリートを選択します。

## ベストプラクティス
<a name="fleets.best-practices"></a>

リザーブドキャパシティフリートを使用する場合は、以下のベストプラクティスに従うことをお勧めします。
+ ソースをキャッシュしてビルドパフォーマンスを向上させるには、ソースキャッシュモードを使用することをお勧めします。
+ Docker レイヤーキャッシュを使用し、既存の Docker レイヤーをキャッシュしてビルドパフォーマンスを向上させることをお勧めします。

## リザーブドキャパシティフリートを複数の CodeBuild プロジェクトで共有できますか?
<a name="fleets.share"></a>

はい。フリートのキャパシティを複数のプロジェクトで使用することで、そのキャパシティを最大限に活用できます。

**重要**  
リザーブドキャパシティ機能を使用すると、ソースファイル、Docker レイヤー、buildspec で指定されキャッシュされたディレクトリなどを含む、フリートインスタンスにキャッシュされたデータに、同じアカウント内の他のプロジェクトからアクセスできます。これは設計によるもので、同じアカウント内のプロジェクトがフリートインスタンスを共有できるようにしています。

## 属性ベースのコンピューティングはどのような仕組みですか?
<a name="fleets.attribute-compute"></a>

フリートの `computeType` として `ATTRIBUTE_BASED_COMPUTE` を選択した場合は、`computeConfiguration` という新しいフィールドで属性を指定できます。これらの属性には、vCPU メモリ、ディスク容量、`machineType` が含まれます。この `machineType` は `GENERAL` または `NVME` のいずれかになります。使用可能な属性の 1 つまたは一部を指定した後、CodeBuild は、サポートされている使用可能なインスタンスタイプからコンピューティングタイプを確定済み `computeConfiguration` として選択します。

**注記**  
CodeBuild は、すべての入力要件を満たす最も安価なインスタンスを選択します。選択したインスタンスのメモリ、vCPU、ディスク容量はすべて、入力要件以上になります。作成または更新されたフリートで、解決された `computeConfiguration` を確認できます。

CodeBuild で満たすことができない `computeConfiguration` を入力した場合は、検証例外が表示されます。また、`computeConfiguration` がオンデマンドで利用できない場合、オンデマンドフリートのオーバーフロー動作はキュー動作に上書きされる点に注意してください。

## フリートの Amazon EC2 インスタンスを手動で指定することはできますか?
<a name="fleets.manual-input-compute"></a>

はい。**[カスタムインスタンス]** を選択するか、API パラメータ `InstanceType` を設定することで、コンソールで目的の 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 Large フリートは、 AWS リージョン米国東部 (バージニア北部）、米国東部 (オハイオ）、米国西部 (オレゴン）、アジアパシフィック (シドニー) でサポートされています。

## リザーブドキャパシティの macOS フリートを設定するにはどうすればよいですか。
<a name="fleets.configure-macos"></a>

**リザーブドキャパシティの macOS フリートを設定するには**

1. にサインイン AWS マネジメントコンソール し、[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、24 GB メモリ、8 vCPU]** または **[Apple M2、32 GB メモリ、12 vCPU]** のいずれかのコンピューティングマシンタイプを選択します。

1. **[容量]** テキストフィールドに、フリート内の最小インスタンス数を入力します。

1. (オプション) フリートにカスタムイメージを使用するには、「[リザーブドキャパシティフリートのカスタム Amazon マシンイメージ (AMI) を設定するにはどうすればよいですか?](#fleets.custom-ami)」を参照して、Amazon マシンイメージ (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 プロジェクトを作成するか、既存の CodeBuild プロジェクトを編集します。**[環境]** から **[プロビジョニングモデル]** の **[リザーブドキャパシティ]** を選択し、**[フリート名]** で指定したフリートを選択します。

## リザーブドキャパシティフリートのカスタム Amazon マシンイメージ (AMI) を設定するにはどうすればよいですか?
<a name="fleets.custom-ami"></a>

**リザーブドキャパシティフリートのカスタム Amazon マシンイメージ (AMI) を設定するには**

1. にサインイン AWS マネジメントコンソール し、[https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home) で AWS CodeBuild コンソールを開きます。

1. ナビゲーションペインで、**[コンピューティングフリート]**、**[フリートを作成]** の順に選択します。

1. **[コンピューティングフリート名]** テキストフィールドに、フリートの名前を入力します。

1. フリートの **[カスタムイメージ]** を選択し、Amazon マシンイメージ (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 に KMS キーの使用](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 アクセス許可をプロジェクトサービスロールに追加してください。詳細については、「[Example policy statement to allow CodeBuild access to AWS services required to create a VPC network interface](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 マシンイメージ (AMI)**  
フリートの Amazon マシンイメージ (AMI) プロパティです。CodeBuild では以下のプロパティがサポートされています。      
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/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 サブネット。リザーブドキャパシティフリートは、単一のアベイラビリティゾーンで 1 つのサブネットのみをサポートすることに注意してください。また、サブネットに 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)」を参照してください。

プロジェクト設定で 1 つ以上のキャッシュモードを指定することから開始できます。

```
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'
```