の Amazon Elastic File System サンプル AWS CodeBuild - AWS CodeBuild

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

の Amazon Elastic File System サンプル AWS CodeBuild

Amazon EC2 インスタンス用のスケーラブルな共有ファイルサービスである Amazon Amazon Elastic File Systemで AWS CodeBuild ビルドを作成することもできます。Amazon EFS のストレージ容量は伸縮自在なため、ファイルの追加および削除に合わせて拡大または縮小されます。また、ファイルシステムを作成、設定するために使用できるシンプルなウェブサービスインターフェイスを提供します。さらに、ファイルストレージインフラストラクチャも自動的に管理されるため、ファイルシステム設定のデプロイ、パッチ適用、保守について心配する必要がありません。詳細については、Amazon Elastic File System ユーザーガイドの「Amazon Elastic File System とは」を参照してください。

このサンプルでは、Java アプリケーションをマウントして Amazon EFS ファイルシステムに構築するように CodeBuild プロジェクトを設定する方法を示します。開始する前に、S3 入力バケット、、 GitHub エンタープライズサーバー AWS CodeCommit GitHub、または Bitbucket リポジトリにアップロードされる Java アプリケーションを構築できる状態になっている必要があります。

ファイルシステムの転送中のデータは暗号化されます。別のイメージを使用して転送中のデータを暗号化するには、「転送中のデータの暗号化」を参照してください。

概要ステップ

このサンプルでは、 で Amazon EFS を使用するために必要な 3 つの大まかなステップについて説明します AWS CodeBuild。

  1. AWS アカウントに Virtual Private Cloud (VPC) を作成します。

  2. この VPC を使用するファイルシステムを作成します。

  3. VPC を使用する CodeBuild プロジェクトを作成して構築します。 CodeBuild プロジェクトでは、以下を使用してファイルシステムを識別します。

    • 一意のファイルシステム識別子。ビルドプロジェクトでファイルシステムを指定するときに識別子を選択します。

    • ファイルシステム ID。ID は、Amazon EFS コンソールでファイルシステムを開くと表示されます。

    • マウントポイント。ファイルシステムをマウントする Docker コンテナ内のディレクトリです。

    • マウントオプション。ファイルシステムのマウント方法に関する詳細が含まれます。

注記

Amazon EFS で作成されたファイルシステムは Linux プラットフォームでのみサポートされます。

を使用して VPC を作成する AWS CloudFormation

AWS CloudFormation テンプレートを使用して VPC を作成します。

  1. 「」の手順に従ってAWS CloudFormation VPC テンプレート、 AWS CloudFormation を使用して VPC を作成します。

    注記

    この AWS CloudFormation テンプレートによって作成された VPC には、2 つのプライベートサブネットと 2 つのパブリックサブネットがあります。Amazon EFS で作成したファイルシステムをマウント AWS CodeBuild するために を使用する場合にのみ、プライベートサブネットを使用する必要があります。いずれかのパブリックサブネットを使用する場合、ビルドに失敗します。

  2. にサインイン AWS Management Console し、https://console.aws.amazon.com/vpc/ で Amazon VPC コンソールを開きます。

  3. で作成した VPC を選択します AWS CloudFormation。

  4. [説明] タブに表示される VPC の名前と ID を書き留めます。このサンプルの後半で AWS CodeBuild プロジェクトを作成する場合は、どちらも必要です。

VPC を使用した Amazon Elastic File System ファイルシステムを作成する

先ほど作成した VPC を使用して、このサンプルのシンプルな Amazon EFS ファイルシステムを作成します。

  1. にサインイン AWS Management Console し、https://console.aws.amazon.com/efs/ で Amazon EFS コンソールを開きます。

  2. [Create file system] を選択します。

  3. [VPC] で、このサンプルの前のステップで書き留めた VPC 名を選択します。

  4. サブネットに関連付けられているアベイラビリティーゾーンの選択したままにしておきます。

  5. [Next Step] (次のステップ) をクリックします。

  6. [Add tags] (タグの追加) のデフォルトの [Name] (名前) キーにある [Value] (値) に、Amazon EFS ファイルシステムの名前を入力します。

  7. デフォルトのパフォーマンスモードおよびスループットモードとして [General Purpose (汎用)] および [Bursting (バースト)] を選択したまま [Next Step (次のステップ)] を選択します。

  8. [Configure client access (クライアントアクセスの設定)] で、[Next Step (次のステップ)] を選択します。

  9. [Create File System (ファイルシステムの作成)] を選択します。

  10. (オプション) 転送時のデータ暗号化を適用するポリシーを、Amazon EFS ファイルシステムに追加することをお勧めします。Amazon EFS コンソールで、[ファイルシステムポリシー]、[編集]、[すべてのクライアントに転送中の暗号化を適用する] ボックス、[保存] の順に選択します。

Amazon EFS で使用する CodeBuild プロジェクトを作成する

このサンプルの前半で作成した VPC を使用する AWS CodeBuild プロジェクトを作成します。ビルドを実行すると、先ほど作成した Amazon EFS ファイルシステムがマウントされます。次に、Java アプリケーションによって作成された .jar ファイルがファイルシステムのマウントポイントディレクトリに保存されます。

  1. https://console.aws.amazon.com/codesuite/codebuild/home で AWS CodeBuild コンソールを開きます。

  2. ナビゲーションペインで [ビルドプロジェクト] を選択し、次に [ビルドプロジェクトの作成] を選択します。

  3. [Project name (プロジェクト名)] にプロジェクトの名前を入力します。

  4. [ソースプロバイダー] で、構築する Java アプリケーションが含まれているリポジトリを選択します。

  5. がアプリケーションを検索 CodeBuild するために使用するリポジトリ URL などの情報を入力します。オプションはソースプロバイダーごとに異なります。詳細については、「Choose source provider」を参照してください。

  6. [環境イメージ] で、[Managed image (マネージド型イメージ)] を選択します。

  7. [オペレーティングシステム] で、[Amazon Linux 2] を選択します。

  8. [ランタイム] で、[Standard (標準)] を選択します。

  9. [イメージ] で、[aws/codebuild/amazonlinux2-x86_64-standard:4.0] を選択します。

  10. [環境タイプ] で、[Linux] を選択します。

  11. [Service role (サービスロール)] で、[New service role (新しいサービスロール)] を選択します。「ロール名」に、 が CodeBuild 作成するロールの名前を入力します。

  12. Additional configuration] (追加設定) を展開します。

  13. [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 ウェブサイトの「ランタイム特権と Linux 機能」を参照して、特権モードを有効にします。また、Windows は特権モードをサポートしていません。

  14. [VPC (VPC)] で、VPC ID を選択します。

  15. [サブネット] で、VPC に関連付けられているプライベートサブネットのうち 1 つ以上を選択します。Amazon EFS ファイルシステムをマウントするビルドでプライベートサブネットを使用する必要があります。パブリックサブネットを使用している場合、ビルドに失敗します。

  16. [Security groups (セキュリティグループ)] で、デフォルトのセキュリティグループを選択します。

  17. [ファイルシステム] で、以下の情報を入力します。

    • [識別子] に、一意のファイルシステム識別子を入力します。識別子の長さは 129 文字未満である必要があります。英数字とアンダースコアのみを使用できます。 CodeBuild はこの識別子を使用して、Elastic ファイルシステムを識別する環境変数を作成します。環境変数の形式は大文字の CODEBUILD_<file_system_identifier> です。たとえば、my_efs と入力すると、環境変数は CODEBUILD_MY_EFS になります。

    • [ID] で、ファイルシステム ID を選択します。

    • (オプション) ファイル system. CodeBuild mounts にディレクトリを入力します。[ディレクトリパス] を空白のままにすると、 CodeBuild はファイルシステム全体をマウントします。パスはファイルシステムのルートからの相対です。

    • [マウントポイント] に、ファイルシステムをマウントするディレクトリの絶対パスを入力します。このディレクトリが存在しない場合は、ビルド中に によって CodeBuild 作成されます。

    • (オプション) マウントオプションを入力します。マウントオプションを空白のままにすると、 はデフォルトのマウントオプション CodeBuild を使用します。

      nfsvers=4.1 rsize=1048576 wsize=1048576 hard timeo=600 retrans=2

      詳細については、Amazon Elastic File System ユーザーガイドの「NFS の推奨されるマウントオプション」を参照してください。

  18. [ビルド仕様] で、[ビルドコマンドの挿入]、[Switch to editor (エディタに切り替え)] の順に選択します。

  19. エディタに次のビルド仕様コマンドを入力します。<file_system_identifier> をステップ 17 で入力した識別子に置き換えます。大文字を使用します (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>
  20. 他のすべての設定にはデフォルト値を使用し、[Create build project (ビルドプロジェクトの作成)] を選択します。ビルドが完了すると、プロジェクトのコンソールページが表示されます。

  21. [Start build] を選択します。

CodeBuild および Amazon EFS サンプルの概要

AWS CodeBuild プロジェクトが構築された後:

  • Java アプリケーションによって作成された .jar ファイルがあります。このファイルは Amazon EFS ファイルシステムのマウントポイントディレクトリにビルドされています。

  • ファイルシステムを識別する環境変数は、プロジェクトの作成時に入力したファイルシステム識別子を使用して作成されます。

詳細については、Amazon Elastic File System ユーザーガイドの「ファイルシステムのマウント」を参照してください。

トラブルシューティング

以下は、 で Amazon EFS をセットアップするときに発生する可能性のあるエラーです CodeBuild。

CLIENT_ERROR: mounting '127.0.0.1:/' failed. permission denied (クライアントエラー:'127.0.0.1: /' のマウントに失敗しました。パーミッションが拒否されました)

IAM 認証は、 を使用した Amazon EFS のマウントではサポートされていません CodeBuild。カスタム Amazon EFS ファイルシステムポリシーを使用している場合は、すべての IAM プリンシパルへの読み取りおよび書き込みアクセスを許可する必要があります。例:

"Principal": { "AWS": "*" }

CLIENT_ERROR: mounting '127.0.0.1:/' failed. connection reset by peer (クライアントエラー:'127.0.0.1: /' のマウントに失敗しました。ピアによって接続がリセットされました)

この問題の原因は 2 つ考えられます。

  • CodeBuild VPC サブネットが Amazon EFS マウントターゲットとは異なるアベイラビリティーゾーンにある。Amazon EFS マウントターゲットと同じアベイラビリティーゾーンに VPC サブネットを追加することで、この問題を解決できます。

  • セキュリティグループには、Amazon EFS と通信する許可がありません。これを解決するには、VPC(VPC のプライマリ CIDR ブロックを追加する)またはセキュリティグループ自体からのすべてのトラフィックを許可するインバウンドルールを追加します。

VPC_CLIENT_ERROR: 予期しない EC2 エラー: UnauthorizedOperation

このエラーは、プロジェクトの VPC 設定内のすべてのサブネットがパブリックサブネットである場合に CodeBuild発生します。ネットワーク接続を確保するには、VPC 内に少なくとも 1 つのプライベートサブネットが必要です。