AWS CodeBuild でのキャッシュのビルド - AWS CodeBuild

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

AWS CodeBuild でのキャッシュのビルド

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

注記

Docker レイヤーキャッシュモードは Linux 環境でのみ利用可能です。このモードを選択した場合は、特権モードのビルドを実行する必要があります。特権モードが付与された CodeBuild プロジェクトは、すべてのデバイスへのコンテナアクセスを許可します。詳細については、Docker Docs ウェブサイトの「ランタイム特権と Linux 機能」を参照してください。

Amazon S3 のキャッシュ

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

ローカルキャッシュ

ローカルキャッシュは、そのビルドホストのみが利用できるキャッシュをそのビルドホストにローカルに保存します。キャッシュはビルドホストですぐに利用できるため、この方法は大規模から中間ビルドアーティファクトに適しています。ビルドの頻度が低い場合、これは最適なオプションではありません。つまり、ビルドパフォーマンスはネットワーク転送時間の影響を受けません。

ローカルキャッシングを選択した場合は、次のキャッシュモードを 1 つ以上選択する必要があります。

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

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

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

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

      デフォルトでは、Docker デーモンは VPC 以外のビルドで有効になっています。VPC ビルドに Docker コンテナを使用する場合は、Docker Docs ウェブサイトの「ランタイム特権と Linux 機能」を参照して、特権モードを有効にします。また、Windows は特権モードをサポートしていません。

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

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

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

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

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

    • ソースとキャッシュで同じディレクトリ名は使用しないでください。ローカルにキャッシュされたディレクトリにより、ソースリポジトリ内の同じ名前のディレクトリの内容が上書きまたは削除される場合があります。

注記

ローカルキャッシュは、環境タイプ LINUX_GPU_CONTAINER とコンピューティングタイプ BUILD_GENERAL1_2XLARGE ではサポートされていません。詳細については、「ビルド環境のコンピューティングモードおよびタイプ」を参照してください。

注記

VPC と連携 CodeBuild するように を設定する場合、ローカルキャッシュはサポートされません。で VPCs「」を参照してくださいAmazon Virtual Private Cloud での AWS CodeBuild の使用。 CodeBuild

ローカルキャッシュを指定するには、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)」を参照してください。

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

キャッシュは、コンソールの [アーティファクト] セクションで指定します。[Cache type] (キャッシュタイプ) で、[Amazon S3] または [Local] (ローカル) を選択します。[ローカル] を選択した場合は、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: <bucket-name> Name: myArtifact EncryptionDisabled: true OverrideArtifactName: true Environment: Type: LINUX_CONTAINER ComputeType: BUILD_GENERAL1_SMALL Image: aws/codebuild/standard:5.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
注記

デフォルトでは、Docker デーモンは VPC 以外のビルドで有効になっています。VPC ビルドに Docker コンテナを使用する場合は、Docker Docs ウェブサイトの「ランタイム特権と Linux 機能」を参照して、特権モードを有効にします。また、Windows は特権モードをサポートしていません。

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