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

このガイドの手順では、新しいコンソールデザインがサポートされています。古いバージョンのコンソールを選択すると、古い概念が反映され、本ガイドの基本的な手順がそのまま適用されます。新しいコンソールのヘルプにアクセスするには、情報アイコンを選択します。

AWS CodeBuild の AWS Elastic Beanstalk サンプル

このサンプルでは、AWS CodeBuild に Maven を使用して、ビルド出力として my-web-app.war という名前の 1 つの WAR ファイルを生成するよう指示しています。このサンプルでは、WAR ファイルを Elastic Beanstalk 環境のインスタンスにデプロイします。

重要

このサンプルを実行すると、AWS アカウントに課金される場合があります。これには、AWS CodeBuild および Amazon S3、AWS KMS、CloudWatch Logs、および Amazon EC2 に関連する AWS リソースおよびアクションの料金が含まれます。詳細については、「AWS CodeBuild 料金表」、「Amazon S3 料金表」、「AWS Key Management Service 料金表」、「Amazon CloudWatch 料金表」、および「Amazon EC2 料金表」を参照してください。

ソースコードの作成

このセクションでは、Maven を使用して、ソースコードを生成します。その後、AWS CodeBuild を使用して、このソースコードに基づいて WAR ファイルを構築します。

  1. Maven をダウンロードし、インストールします。詳細については、Apache Maven ウェブサイトの「Apache Maven のダウンロード」および「Apache Maven のインストール」を参照してください。

  2. ローカルコンピュータまたはインスタンスの空のディレクトリに切り替えて、この Maven コマンドを実行します。

    mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-web-app -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false

    成功すると、このディレクトリ構造とファイルが作成されます。

    (root directory name) `-- my-web-app |-- pom.xml `-- src `-- main |-- resources `-- webapp |-- WEB-INF | `-- web.xml `-- index.jsp

Maven を実行したら、次のいずれかのシナリオに進みます。

シナリオ A: AWS CodeBuild を手動で実行し、Elastic Beanstalk に手動でデプロイする

このシナリオでは、ソースコードを作成してアップロードします。次に、AWS CodeBuild と Elastic Beanstalk コンソールを使用してソースコードを作成し、Elastic Beanstalk アプリケーションと環境を作成後、ビルド出力を環境にデプロイします。

ステップ A1: ソースコードにファイルを追加する

このステップでは、Elastic Beanstalk 設定ファイルとビルド仕様ファイルを ソースコードの作成 のコードに追加します。その後、ソースコードを Amazon S3 入力バケットか、AWS CodeCommit または GitHub リポジトリにアップロードします。

  1. .ebextensions という名前のサブディレクトリを (root directory name)/my-web-app ディレクトリに作成します。.ebextensions サブディレクトリに、fix-path.config という名前のファイルをこのコンテンツで作成します。

    container_commands: fix_path: command: "unzip my-web-app.war 2>&1 > /var/log/my_last_deploy.log"
  2. 次の内容で、buildspec.yml というファイルを作成します。ファイルを (root directory name)/my-web-app ディレクトリ内に保存します。

    version: 0.2 phases: post_build: commands: - mvn package - mv target/my-web-app.war my-web-app.war artifacts: files: - my-web-app.war - .ebextensions/**/*
  3. ファイル構造は次のようになります。

    (root directory name) `-- my-web-app |-- .ebextensions | `-- fix-path.config |-- src | `-- main | |-- resources | `-- webapp | |-- WEB-INF | | `-- web.xml | `-- index.jsp |-- buildpsec.yml `-- pom.xml
  4. my-web-app ディレクトリの内容を、Amazon S3 入力バケットか、AWS CodeCommit、GitHub、または Bitbucket リポジトリにアップロードします。

    重要

    (root directory name) または (root directory name)/my-web-app をアップロードしないでください。アップロードするのは、(root directory name)/my-web-app のディレクトリとファイルだけです。

    Amazon S3 入力バケットを使用している場合は、ディレクトリ構造とファイルを含む ZIP ファイルを作成してから、入力バケットにアップロードしてください。(root directory name) または (root directory name)/my-web-app を ZIP ファイルに追加しないでください。追加するのは、(root directory name)/my-web-app のディレクトリとファイルだけです。

ステップ A2: ビルドプロジェクトを作成し、ビルドを実行する

このステップでは、AWS CodeBuild コンソールを使用してプロジェクトを作成し、ビルドを実行します。

  1. ビルド出力を保存する Amazon S3 出力バケットを作成または識別します。Amazon S3 入力バケットにソースコードを保存する場合、出力バケットは入力バケットと同じ AWS リージョンに存在する必要があります。

  2. AWS リージョンセレクタを使用して、AWS CodeBuild をサポートするリージョンを選択し、Amazon S3 出力バケットが保存されているリージョンに合わせます。

  3. ビルドプロジェクトを作成し、ビルドを実行します。詳細については、「ビルドプロジェクトの作成 (コンソール)」および「ビルドの実行 (コンソール)」を参照してください。これらの設定を除いて、すべての設定をデフォルト値のままにします。

    • [環境] の場合:

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

      • [Operating system] で、[Ubuntu] を選択します。

      • [Runtime] で、[Java] を選択します。

      • [ランタイムバージョン] で、aws/codebuild/java:openjdk-8 を選択します。

    • [アーティファクト] の場合:

      • [名前] に、覚えやすいビルド出力ファイル名を入力します。.zip 拡張子を含めます。

      • [アーティファクトのパッケージ化] では、[Zip] を選択します。

ステップ A3: アプリケーションと環境を作成してデプロイする

このステップでは、Elastic Beanstalk コンソールを使用してアプリケーションと環境を作成します。環境の作成の一環として、前の手順のビルド出力を環境にデプロイします。

  1. Elastic Beanstalk コンソール (https://console.aws.amazon.com/elasticbeanstalk) を開きます。

    AWS リージョンセレクタを使用して、Amazon S3 出力バケットが保存されているリージョンを選択します。

  2. Elastic Beanstalk アプリケーションを作成します。詳細については、「AWS Elastic Beanstalk アプリケーションの管理と設定」を参照してください。

  3. このアプリケーション用の Elastic Beanstalk 環境を作成します。詳細については、「新しい環境の作成ウィザード」を参照してください。これらの設定を除いて、すべての設定をデフォルト値のままにします。

    • [プラットフォーム] では、[Tomcat] を選択します。

    • [Application code] では、[Upload your code] を選択して、[Upload] を選択します。[ソースコード元] で、[Public S3 URL] を選択し、出力バケットのビルド出力 ZIP ファイルの完全な URL を入力します。[Upload] を選択します。

  4. Elastic Beanstalk がビルド出力を環境にデプロイすると、ウェブブラウザに結果が表示されます。インスタンスの環境 URL (例:http://my-environment-name.random-string.region-ID.elasticbeanstalk.com) へ移動します。ウェブブラウザにテキスト Hello World! が表示されます。

シナリオ B: AWS CodePipeline を使用して AWS CodeBuild を実行し、Elastic Beanstalk にデプロイする

このシナリオでは、ソースコードを準備し、アップロードするステップを完了します。AWS Elastic Beanstalk コンソールで AWS CodeBuild および AWS Elastic Beanstalk アプリケーションと環境を使用してビルドプロジェクトを作成します。その後、AWS CodePipeline コンソールを使用してパイプラインを作成します。パイプラインを作成したら、AWS CodePipeline によってソースコードが構築され、環境にビルド出力がデプロイされます。

ステップ B1: ビルド仕様ファイルをソースコードに追加する

このステップでは、ビルド仕様ファイルを作成し、ソースコードの作成 で作成したコードに追加します。その後、ソースコードを Amazon S3 入力バケットか、AWS CodeCommit または GitHub リポジトリにアップロードします。

  1. 次の内容で、buildspec.yml というファイルを作成します。ファイルを (root directory name)/my-web-app ディレクトリ内に保存します。

    version: 0.2 phases: post_build: commands: - mvn package artifacts: files: - '**/*' base-directory: 'target/my-web-app'
  2. ファイル構造は次のようになります。

    (root directory name) `-- my-web-app |-- src | `-- main | |-- resources | `-- webapp | |-- WEB-INF | | `-- web.xml | `-- index.jsp |-- buildpsec.yml `-- pom.xml
  3. my-web-app ディレクトリのこの内容を、Amazon S3 入力バケットまたは AWS CodeCommit、GitHub、または Bitbucket リポジトリにアップロードします。

    重要

    (root directory name) または (root directory name)/my-web-app をアップロードしないでください。アップロードするのは、(root directory name)/my-web-app のディレクトリとファイルだけです。

    Amazon S3 入力バケットを使用している場合は、ディレクトリ構造とファイルを含む ZIP ファイルを作成してから、入力バケットにアップロードしてください。(root directory name) または (root directory name)/my-web-app を ZIP ファイルに追加しないでください。追加するのは、(root directory name)/my-web-app のディレクトリとファイルだけです。

ステップ B 2: ビルドプロジェクトを作成します。

このステップでは、パイプラインで使用する AWS CodeBuild ビルドプロジェクトを作成します。

  1. ビルドプロジェクトを作成します。詳細については、「ビルドプロジェクトの作成 (コンソール)」および「ビルドの実行 (コンソール)」を参照してください。これらの設定を除いて、すべての設定をデフォルト値のままにします。

    • [環境] の場合:

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

      • [Operating system] で、[Ubuntu] を選択します。

      • [Runtime] で、[Java] を選択します。

      • [ランタイムバージョン] で、aws/codebuild/java:openjdk-8 を選択します。

    • [アーティファクト] の場合:

      • [名前] に、覚えやすいビルド出力ファイル名を入力します。.zip 拡張子を含めます。

      • [アーティファクトのパッケージ化] では、[Zip] を選択します。

ステップ B3: AWS Elastic Beanstalk アプリケーションと環境の作成

このステップでは、AWS CodePipeline で使用する AWS Elastic Beanstalk アプリケーションと環境を作成します。

  1. Open the Elastic Beanstalk console at https://console.aws.amazon.com/elasticbeanstalk/.

  2. Elastic Beanstalk コンソールを使用して、アプリケーションを作成します。詳細については、「AWS Elastic Beanstalk アプリケーションの管理と設定」を参照してください。

  3. Elastic Beanstalk コンソールを使用して、環境を作成します。詳細については、「新しい環境の作成ウィザード」を参照してください。[プラットフォーム] を除き、すべての設定をデフォルト値のままにします。[プラットフォーム] では、[Tomcat] を選択します。

ステップ B4: パイプラインの作成とデプロイ

このステップでは、AWS CodePipeline コンソールを使用してパイプラインを作成します。パイプラインを作成して実行すると、AWS CodePipeline は AWS CodeBuild を使用してソースコードを作成します。AWS CodePipeline はその後、Elastic Beanstalk を使用して環境にビルド出力をデプロイします。

  1. AWS CodePipeline、AWS CodeBuild、および Elastic Beanstalk がユーザーのための作業に使用できるサービスロールを作成または識別します。詳細については、「前提条件」を参照してください。

  2. https://console.aws.amazon.com/codesuite/codepipeline で AWS CodePipeline コンソールを開きます。

    AWS リージョンセレクタを使用して AWS CodeBuild をサポートするリージョンを選択し、ソースコードを Amazon S3 入力バケットに保存する場合は、入力バケットが保存されているリージョンを選択します。

  3. パイプラインを作成します。詳細については、AWS CodeBuild を使用するパイプラインを作成する (AWS CodePipeline コンソール) を参照してください。これらの設定を除いて、すべての設定をデフォルト値のままにします。

    • [Step 3: Add build stage (ステップ 3: ビルドステージの追加)] の [ビルドプロバイダ] で、AWS CodeBuild を選択します。[Project name (プロジェクト名)] で、先ほど作成したビルドプロジェクトを選択します。

    • [Step 4: Add deploy stage (ステップ 4: デプロイステージの追加)] の [Deployment provider (デプロイプロバイダ)] に、[AWS Elastic Beanstalk] を選択します。

      • [Application name (アプリケーション名)] で、先ほど作成した Elastic Beanstalk アプリケーションを選択します。

      • [Environment name (環境名)] で、先ほど作成した環境を選択します。

  4. パイプラインが正常に実行されたら、ウェブブラウザで結果を表示できます。インスタンスの環境 URL (例:http://my-environment-name.random-string.region-ID.elasticbeanstalk.com) へ移動します。ウェブブラウザにテキスト Hello World! が表示されます。

これで、ソースコードを変更して元の Amazon S3 入力バケットまたは AWS CodeCommit、GitHub、または Bitbucket リポジトリに変更をアップロードするたびに、AWS CodePipeline によって変更が検出され、パイプラインが再度実行されます。これにより、AWS CodeBuild によってコードが再構築され、Elastic Beanstalk は、再構築された出力を環境にデプロイします。

シナリオ C: Elastic Beanstalk CLI を使用して、AWS CodeBuild を実行し、Elastic Beanstalk 環境にデプロイする

このシナリオでは、ソースコードを準備し、アップロードするステップを完了します。次に、Elastic Beanstalk CLI を実行して Elastic Beanstalk アプリケーションと環境を作成し、AWS CodeBuild を使用してソースコードを作成した後、ビルド出力を環境にデプロイします。詳細については、AWS Elastic Beanstalk Developer Guide の「AWS CodeBuild での EB CLI の使用」を参照してください。

ステップ C1: ソースコードにファイルを追加する

このステップでは、Elastic Beanstalk 設定ファイルとビルド仕様ファイルを ソースコードの作成 で作成したコードに追加します。また、ビルド仕様ファイルのサービスロールを作成または識別します。

  1. Elastic Beanstalk や CLI がユーザーのために使用できるサービスロールを作成または指定します。詳細については、AWS CodeBuild サービスロールの作成 を参照してください。

  2. .ebextensions という名前のサブディレクトリを (root directory name)/my-web-app ディレクトリに作成します。.ebextensions サブディレクトリに、fix-path.config という名前のファイルをこのコンテンツで作成します。

    container_commands: fix_path: command: "unzip my-web-app.war 2>&1 > /var/log/my_last_deploy.log"
  3. 次の内容で、buildspec.yml というファイルを作成します。ファイルを (root directory name)/my-web-app ディレクトリ内に保存します。

    version: 0.2 phases: post_build: commands: - mvn package - mv target/my-web-app.war my-web-app.war artifacts: files: - my-web-app.war - .ebextensions/**/* eb_codebuild_settings: CodeBuildServiceRole: my-service-role-name ComputeType: BUILD_GENERAL1_SMALL Image: aws/codebuild/java:openjdk-8 Timeout: 60

    前のコードでは、my-service-role-name を、以前に作成または識別したサービスロールの名前で置き換えます。

  4. ファイル構造は次のようになります。

    (root directory name) `-- my-web-app |-- .ebextensions | `-- fix-path.config |-- src | `-- main | |-- resources | `-- webapp | |-- WEB-INF | | `-- web.xml | `-- index.jsp |-- buildpsec.yml `-- pom.xml

ステップ C2: EB CLI のインストールと実行

  1. EB CLI をまだインストールしていない場合は、ソースコードを作成した同じコンピュータまたはインスタンスにインストールして設定します。詳細については、『AWS Elastic Beanstalk Developer Guide』の「Elastic Beanstalk コマンドラインインターフェイスのインストール (EB CLI)」および「EB CLI の設定」を参照してください。

  2. コンピュータまたはインスタンスのコマンドラインまたはターミナルから、cd コマンドなどを実行して、(root directory name)/my-web-app ディレクトリに切り替えます。eb init コマンドを実行して、EB CLI を設定します。

    eb init

    プロンプトが表示されたら:

    • AWS CodeBuild がサポートされており、Elastic Beanstalk アプリケーションと環境を作成する AWS リージョンを選択します。

    • Elastic Beanstalk アプリケーションを作成し、アプリケーションの名前を入力します。

    • Tomcat プラットフォームを選択します。

    • Tomcat 8 Java 8 バージョンを選択します。

    • SSH を使用して環境のインスタンスへのアクセスを設定するかどうかを選択します。

  3. 同じディレクトリから eb create コマンドを実行して、Elastic Beanstalk 環境を作成します。

    eb create

    プロンプトが表示されたら:

    • 新しい環境の名前を入力するか、提案された名前をそのまま使用します。

    • 環境の DNS CNAME プレフィックスを入力するか、推奨値をそのまま使用します。

    • このサンプルでは、Classic Load Balancer タイプを受け入れます。

  4. eb create コマンドを実行すると、EB CLI は次のことを行います。

    1. ソースコードから ZIP ファイルを作成し、ZIP ファイルをアカウントの Amazon S3 バケットにアップロードします。

    2. Elastic Beanstalk アプリケーションとアプリケーションバージョンを作成します。

    3. AWS CodeBuild プロジェクトを作成します。

    4. 新しいプロジェクトに基づいてビルドを実行します。

    5. ビルドが完了した後にプロジェクトを削除します。

    6. Elastic Beanstalk 環境を作成します。

    7. ビルドの出力を環境にデプロイします。

  5. EB CLI がビルド出力を環境にデプロイすると、ウェブブラウザに結果が表示されます。インスタンスの環境 URL (例:http://my-environment-name.random-string.region-ID.elasticbeanstalk.com) へ移動します。ウェブブラウザにテキスト Hello World! が表示されます。

必要に応じて、ソースコードを変更して、同じディレクトリから eb deploy コマンドを実行できます。EB CLI は eb create コマンドと同じ手順を実行しますが、新しい環境を作成する代わりに既存の環境にビルド出力をデプロイします。

関連リソース