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. Open the AWS CodeBuild console at https://console.aws.amazon.com/codebuild/.

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

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

    • [環境: ビルド方法] では、

      • [環境イメージ] で、[AWS CodeBuild によって管理されたイメージの使用] を選択します。

      • [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 を入力します。次に、アップロードを選択します。

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

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

このシナリオでは、作成するソースコードを手動で準備してアップロードする作業が完了します。その後、AWS CodePipeline コンソールを使用して、パイプラインと Elastic Beanstalk アプリケーションと環境を作成します。パイプラインを作成すると、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 の中のディレクトリとファイルだけです。

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

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

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

  2. Open the AWS CodePipeline console at https://console.aws.amazon.com/codepipeline/.

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

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

    • [ステップ 3: ビルド] では、[プロジェクトの設定] で、[新しいビルドプロジェクトを作成] を選択します。[環境: ビルド方法] では、

      • [環境イメージ] で、[AWS CodeBuild によって管理されたイメージの使用] を選択します。

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

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

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

    • [ステップ 4: ベータ] では、[デプロイプロバイダ] で [AWS Elastic Beanstalk] を選択します。

      • アプリケーションでは、[Elastic Beanstalk に新規作成] リンクを選択します。これにより、Elastic Beanstalk コンソールが開きます。詳細については、「AWS Elastic Beanstalk アプリケーションの管理と設定」を参照してください。アプリケーションを作成したら、AWS CodePipeline コンソールに戻り、作成したばかりのアプリケーションを選択します。

      • 環境では、[Elastic Beanstalk に新規作成] リンクを選択します。これにより、Elastic Beanstalk コンソールが開きます。詳細については、「新しい環境の作成ウィザード」を参照してください。1 つの設定を除くすべての設定をデフォルト値のままにしておきます。[プラットフォーム] では、[Tomcat] を選択します。環境を作成したら、AWS CodePipeline コンソールに戻り、作成したばかりの環境を選択します。

  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 コマンドラインインターフェイス (EB CLI) を使用して、AWS CodeBuild を実行し、Elastic Beanstalk 環境にデプロイする

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

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

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

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

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

    eb init

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

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

    • 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 コマンドと同じ手順を実行しますが、新しい環境を作成する代わりに既存の環境にビルド出力をデプロイします。

関連リソース