AWS CodeBuild の Amazon Elastic File System サンプル
Amazon EC2 インスタンスのスケーラブルな共有ファイルサービスである Amazon Elastic File System で AWS CodeBuild ビルドを作成できます。Amazon EFS のストレージ容量は伸縮自在なため、ファイルの追加および削除に合わせて拡大または縮小されます。また、ファイルシステムを作成、設定するために使用できるシンプルなウェブサービスインターフェイスを提供します。さらに、ファイルストレージインフラストラクチャも自動的に管理されるため、ファイルシステム設定のデプロイ、パッチ適用、保守について心配する必要がありません。詳細については、Amazon Elastic File System ユーザーガイドの「Amazon Elastic File System とは」を参照してください。
このサンプルでは、Java アプリケーションが Amazon EFS ファイルシステムにマウントされて構築されるように CodeBuild プロジェクトを設定する方法を示します。開始する前に、S3 入力バケットまたは AWS CodeCommit、GitHub、GitHub Enterprise Server、Bitbucket リポジトリにアップロードされる Java アプリケーションをビルドする準備ができている必要があります。
ファイルシステムの転送中のデータは暗号化されます。別のイメージを使用して転送中のデータを暗号化するには、「転送中のデータの暗号化」を参照してください。
Amazon Elastic File System で AWS CodeBuild を使用
このサンプルでは、AWS CodeBuild で Amazon EFS を使用するために必要な 4 つの大まかなステップについて説明します。具体的には次の 2 つです。
-
AWS アカウントに Virtual Private Cloud (VPC) を作成します。
-
この VPC を使用するファイルシステムを作成します。
-
VPC を使用する CodeBuild プロジェクトを作成および構築します。CodeBuild プロジェクトでは、以下を使用してファイルシステムが識別されます。
-
一意のファイルシステム識別子。ビルドプロジェクトでファイルシステムを指定するときに識別子を選択します。
-
ファイルシステム ID。ID は、Amazon EFS コンソールでファイルシステムを開くと表示されます。
-
マウントポイント。ファイルシステムをマウントする Docker コンテナ内のディレクトリです。
-
マウントオプション。ファイルシステムのマウント方法に関する詳細が含まれます。
-
-
ビルドプロジェクトを確認して、正しいプロジェクトファイルと変数が生成されていることを確認します。
注記
Amazon EFS で作成されたファイルシステムは Linux プラットフォームでのみサポートされます。
トピック
ステップ 1: AWS CloudFormation を使用して VPC を作成
AWS CloudFormation テンプレートを使用して VPC を作成します。
-
「AWS CloudFormation VPC テンプレート」の手順に従って、AWS CloudFormation で VPC を作成します。
注記
この AWS CloudFormation テンプレートによって作成される VPC には、2 つのプライベートサブネットと 2 つのパブリックサブネットがあります。プライベートサブネットを使用するのは、Amazon EFS で作成したファイルシステムを、AWS CodeBuild でマウントする場合のみです。いずれかのパブリックサブネットを使用する場合、ビルドに失敗します。
AWS Management Console にサインインして、Amazon VPC コンソール (https://console.aws.amazon.com/vpc/
) を開きます。 -
AWS CloudFormation で作成した VPC を選択します。
-
[説明] タブに表示される VPC の名前と ID を書き留めます。どちらも、このサンプルの後半で AWS CodeBuild プロジェクトを作成するときに必要になります。
ステップ 2: VPC を使用した Amazon Elastic File System ファイルシステムを作成
先ほど作成した VPC を使用して、このサンプルのシンプルな Amazon EFS ファイルシステムを作成します。
AWS Management Console にサインインして Amazon EFS コンソール ( https://console.aws.amazon.com/efs/
) を開きます。 -
[Create file system] を選択します。
-
[VPC] で、このサンプルの前のステップで書き留めた VPC 名を選択します。
-
サブネットに関連付けられているアベイラビリティーゾーンの選択したままにしておきます。
-
[Next Step] (次のステップ) をクリックします。
-
[Add tags] (タグの追加) のデフォルトの [Name] (名前) キーにある [Value] (値) に、Amazon EFS ファイルシステムの名前を入力します。
-
デフォルトのパフォーマンスモードおよびスループットモードとして [General Purpose (汎用)] および [Bursting (バースト)] を選択したまま [Next Step (次のステップ)] を選択します。
-
[Configure client access (クライアントアクセスの設定)] で、[Next Step (次のステップ)] を選択します。
-
[Create File System (ファイルシステムの作成)] を選択します。
-
(オプション) 転送時のデータ暗号化を適用するポリシーを、Amazon EFS ファイルシステムに追加することをお勧めします。Amazon EFS コンソールで、[ファイルシステムポリシー]、[編集]、[すべてのクライアントに転送中の暗号化を適用する] ボックス、[保存] の順に選択します。
ステップ 3: Amazon EFS で使用する CodeBuild プロジェクトを作成
このサンプルで先ほど作成した VPC を使用する AWS CodeBuild プロジェクトを作成します。ビルドを実行すると、先ほど作成した Amazon EFS ファイルシステムがマウントされます。次に、Java アプリケーションによって作成された .jar ファイルがファイルシステムのマウントポイントディレクトリに保存されます。
AWS CodeBuild コンソール (https://console.aws.amazon.com/codesuite/codebuild/home
) を開きます。 -
ナビゲーションペインで [ビルドプロジェクト] を選択し、次に [ビルドプロジェクトの作成] を選択します。
-
[Project name (プロジェクト名)] にプロジェクトの名前を入力します。
-
[ソースプロバイダー] で、構築する Java アプリケーションが含まれているリポジトリを選択します。
-
CodeBuild がアプリケーションを見つけるために使用するリポジトリ URL などの情報を入力します。オプションはソースプロバイダーごとに異なります。詳細については、「Choose source provider」を参照してください。
-
[環境イメージ] で、[Managed image (マネージド型イメージ)] を選択します。
-
[オペレーティングシステム] で、[Amazon Linux 2] を選択します。
-
[ランタイム] で、[Standard (標準)] を選択します。
-
[イメージ] で、[aws/codebuild/amazonlinux2-x86_64-standard:4.0] を選択します。
-
[環境タイプ] で、[Linux] を選択します。
-
[Service role (サービスロール)] で、[New service role (新しいサービスロール)] を選択します。[Role name] (ロール名) に、CodeBuild により作成されたロールの名前を入力します。
-
[Additional configuration (追加設定)] を展開します。
-
[Enable this flag if you want to build Docker images or want your builds to get elevated privileges (Docker イメージを構築する場合、またはビルドで昇格された権限を取得する場合は、このフラグを有効にする)] を選択します。
注記
デフォルトでは、Docker デーモンは非 VPC ビルドで有効になっています。VPC ビルドに Docker コンテナを使用する場合は、Docker Docs ウェブサイトの「Runtime Privilege and Linux Capabilities
」を参照して、特権モードを有効にします。また、Windows は特権モードをサポートしていません。 -
[VPC (VPC)] で、VPC ID を選択します。
-
[サブネット] で、VPC に関連付けられているプライベートサブネットのうち 1 つ以上を選択します。Amazon EFS ファイルシステムをマウントするビルドでプライベートサブネットを使用する必要があります。パブリックサブネットを使用している場合、ビルドに失敗します。
-
[Security groups (セキュリティグループ)] で、デフォルトのセキュリティグループを選択します。
-
[ファイルシステム] で、以下の情報を入力します。
-
[識別子] に、一意のファイルシステム識別子を入力します。識別子の長さは 129 文字未満である必要があります。英数字とアンダースコアのみを使用できます。一意のファイルシステム識別子。CodeBuild によって使用されて、伸縮自在なファイルシステムを識別する環境変数が作成されます。環境変数の形式は大文字の
CODEBUILD_
です。たとえば、<file_system_identifier>
my_efs
と入力すると、環境変数はCODEBUILD_MY_EFS
になります。 -
[ID] で、ファイルシステム ID を選択します。
-
(オプション) ファイルシステムのディレクトリを入力します。CodeBuild はこのディレクトリをマウントします。[ディレクトリパス] を空白のままにすると、CodeBuild はファイルシステム全体をマウントします。パスはファイルシステムのルートからの相対です。
-
[マウントポイント] に、ファイルシステムをマウントするディレクトリの絶対パスを入力します。このディレクトリが存在しない場合は、CodeBuild によってビルド中に作成されます。
-
(オプション) マウントオプションを入力します。[マウントオプション] を空白のままにすると、CodeBuild はデフォルトのマウントオプションを使用します。
nfsvers=4.1 rsize=1048576 wsize=1048576 hard timeo=600 retrans=2
詳細については、Amazon Elastic File System ユーザーガイドの「NFS の推奨されるマウントオプション」を参照してください。
-
-
[ビルド仕様] で、[ビルドコマンドの挿入]、[Switch to editor (エディタに切り替え)] の順に選択します。
-
エディタに次のビルド仕様コマンドを入力します。
をステップ 17 で入力した識別子に置き換えます。大文字を使用します (<file_system_identifier>
CODEBUILD_MY_EFS
など)。version: 0.2 phases: install: runtime-versions: java: corretto11 build: commands: - mvn compile -Dgpg.skip=true -Dmaven.repo.local=$CODEBUILD_
<file_system_identifier>
-
他のすべての設定にはデフォルト値を使用し、[Create build project (ビルドプロジェクトの作成)] を選択します。ビルドが完了すると、プロジェクトのコンソールページが表示されます。
-
[Start build] を選択します。
ステップ 4: ビルドプロジェクトを確認
AWS CodeBuild プロジェクトがビルドされた後:
-
Java アプリケーションによって作成された .jar ファイルがあります。このファイルは Amazon EFS ファイルシステムのマウントポイントディレクトリにビルドされています。
-
ファイルシステムを識別する環境変数は、プロジェクトの作成時に入力したファイルシステム識別子を使用して作成されます。
詳細については、Amazon Elastic File System ユーザーガイドの「ファイルシステムのマウント」を参照してください。