AWS CodeBuild
ユーザーガイド (API バージョン 2016-10-06)

CodeBuild でキャッシングをビルドする

キャッシュを使用すると、プロジェクトを構築する時間を短縮できます。キャッシュでは、ビルド環境の再利用可能な部分が保存され、複数のビルドでそれらを使用することができます。ビルドプロジェクトでは、Amazon S3 とローカルの 2 種類のキャッシュのうち、いずれかを使用できます。ローカルキャッシュを使用する場合は、3 つのキャッシュモード (ソースキャッシュ、Docker レイヤーキャッシュ、カスタムキャッシュ) のうち 1 つ以上を選択する必要があります。

注記

Docker レイヤーキャッシュモードは Linux 環境でのみ利用可能です。このモードを選択する場合は、権限モードでビルドを実行する必要があります。

Amazon S3 キャッシュ

Amazon S3 キャッシュでは、複数のビルドホスト間で利用できるキャッシュを Amazon S3 バケットに保存します。これは、ダウンロードするよりも構築にコストがかかる小規模な中間ビルドアーティファクトに適したオプションです。また、ネットワーク経由で転送するには長い時間がかかる場合があるため、大規模なビルドアーティファクトには適していません。ビルドパフォーマンスに影響を及ぼす可能性があります。

ローカルキャッシング

ローカルキャッシングは、そのビルドホストのみが利用できるキャッシュをそのビルドホストにローカルに保存します。キャッシュはビルドホストですぐに利用できるため、この方法は大規模な中間ビルドアーティファクトに適しています。つまり、ビルドパフォーマンスはネットワーク転送時間の影響を受けません。ローカルキャッシングを選択した場合は、次のキャッシュモードを 1 つ以上選択する必要があります。

  • ソースキャッシュモードは、プライマリソースとセカンダリソースの Git メタデータをキャッシュします。キャッシュ作成後のビルドでは、コミット間の変更のみプルされます。このモードは、クリーンな作業ディレクトリと、大きな Git リポジトリであるソースを持つプロジェクトに適しています。このオプションを選択し、プロジェクトで Git リポジトリ (GitHub、GitHub Enterprise、または Bitbucket) を使用していない場合、このオプションは無視されます。

  • Docker レイヤーキャッシュモードは、既存の Docker レイヤーをキャッシュします。このモードは、大きな Docker イメージを構築または取得するプロジェクトに適しています。そのため、大きな Docker イメージをネットワークからプルすることによって生じるパフォーマンス上の問題を回避できます。

    注記

    • Docker レイヤーキャッシュは Linux 環境でのみ使用できます。

    • プロジェクトに必要な Docker アクセス許可が付与されるように、privileged フラグを設定する必要があります 。

    • Docker レイヤーキャッシュモードを使用する前に、セキュリティへの影響 を検討してください。

  • カスタムキャッシュモードは buildspec ファイルで指定したディレクトリをキャッシュします。このシナリオは、ビルドシナリオが他の 2 つのローカルキャッシュモードのいずれにも適していない場合に適しています。カスタムキャッシュを使用する場合:

    • キャッシュに指定できるのはディレクトリのみです。個々のファイルを指定することはできません。

    • キャッシュされたディレクトリを参照するには、シンボリックリンクを使用します。

    • キャッシュされたディレクトリは、プロジェクトソースをダウンロードする前にビルドにリンクされます。ソースアイテムの名前が同じ場合、キャッシュされたアイテムは上書きされます。ディレクトリは buildspec ファイルのキャッシュパスを使って指定されます。詳細については、「ビルド仕様の構文」を参照してください。

ローカルキャッシュを指定するには、AWS CLI、コンソール、SDK、または AWS CloudFormation を使用します。

ローカルキャッシュの指定 (CLI)

3 つの各ローカルキャッシュタイプを指定するには、AWS CLI で --cache パラメータを使用します。

  • ソースキャッシュを指定するには:

    --cache type=Local,mode=[LOCAL_SOURCE_CACHE]
  • Docker レイヤーキャッシュを指定するには:

    --cache type=Local,mode=[LOCAL_DOCKER_LAYER_CACHE]
  • カスタムキャッシュを指定するには:

    --cache type=Local,mode=[LOCAL_CUSTOM_CACHE]

詳細については、「ビルドプロジェクトを作成する (AWS CLI)」を参照してください。

ローカルキャッシュの指定 (コンソール)

キャッシュは、コンソールの [アーティファクト] セクションで指定します。[キャッシュタイプ] で、[Amazon S3] または [ローカル] を選択します。[ローカル] を選択した場合は、3 つのローカルキャッシュオプションのうち、1 つ以上を選択します。ローカルキャッシュの選択方法を以下に示します。

詳細については、「ビルドプロジェクトの作成 (コンソール)」を参照してください。

ローカルキャッシュの指定 (AWS CloudFormation)

AWS CloudFormation を使用してローカルキャッシュを指定する場合は、Cache プロパティの Type で、LOCAL を指定します。以下の YAML 形式の AWS CloudFormation コード例では、3 つのロールキャッシュタイプをすべて指定しています。任意のタイプの組み合わせを指定できます。Docker レイヤーキャッシュを使用する場合は、Environment で、PrivilegedModetrueTypeLINUX_CONTAINER に設定する必要があります。

CodeBuildProject: Type: AWS::CodeBuild::Project Properties: Name: MyProject ServiceRole: service-role Artifacts: Type: S3 Location: myBucket Name: myArtifact EncryptionDisabled: true OverrideArtifactName: true Environment: Type: LINUX_CONTAINER ComputeType: BUILD_GENERAL1_SMALL Image: aws/codebuild/standard:2.0 Certificate: bucket/cert.zip # PrivilegedMode must be true if you specify LOCAL_DOCKER_LAYER_CACHE PrivilegedMode: true Source: Type: GITHUB Location: github-location InsecureSsl: true GitCloneDepth: 1 ReportBuildStatus: false TimeoutInMinutes: 10 Cache: Type: LOCAL Modes: # You can specify one or more cache mode, - LOCAL_CUSTOM_CACHE - LOCAL_DOCKER_LAYER_CACHE - LOCAL_SOURCE_CACHE

詳細については、「ビルドプロジェクトを作成する (AWS CloudFormation)」を参照してください。