AWS Elastic Beanstalk
開発者ガイド

アプリケーションソースバンドルを作成する

AWS Elastic Beanstalk コンソールを使用して新しいアプリケーション、またはアプリケーションバージョンをデプロイする場合、ソースバンドルをアップロードする必要があります。ソースバンドルは次の要件を満たしている必要があります。

  • 単一の ZIP ファイルまたは WAR ファイルで構成される (WAR ファイル内に複数の ZIP ファイルを含めることが可能)

  • 512 MB 以下

  • 親フォルダまたは最上位ディレクトリを含まない(サブディレクトリを除く)

定期的なバックグラウンドタスクを処理するワーカーアプリケーションをデプロイする場合には、アプリケーションソースバンドルに cron.yaml ファイルも含める必要があります。詳細については、「定期的なタスク」を参照してください。

Elastic Beanstalk コマンドラインインターフェイス(EB CLI)、AWS Toolkit for Eclipse、または AWS Toolkit for Visual Studio を使用してアプリケーションをデプロイしている場合、ZIP または WAR ファイルが自動的に正しく構造化されます。詳細については、Elastic Beanstalk コマンドラインインターフェイス(EB CLI)AWS Elastic Beanstalk で Java アプリケーションを作成してデプロイする、および AWS Toolkit for Visual Studio を参照してください。

コマンドラインからソースバンドルを作成する

zip コマンドを使用してソースバンドルを作成します。非表示のファイルとフォルダを含めるには、次のようなパターンを使用します。

~/myapp$ zip ../myapp.zip -r * .[^.]* adding: app.js (deflated 63%) adding: index.js (deflated 44%) adding: manual.js (deflated 64%) adding: package.json (deflated 40%) adding: restify.js (deflated 85%) adding: .ebextensions/ (stored 0%) adding: .ebextensions/xray.config (stored 0%)

これにより、Elastic Beanstalk 設定ファイルと、ピリオドで始まるその他のファイルとフォルダがアーカイブに含まれます。

Tomcat ウェブアプリケーションの場合は、jar を使用してウェブアーカイブを作成します。

~/myapp$ jar -cvf myapp.war .

上記のコマンドには、ソースバンドルのサイズを不要に増やす可能性のある非表示のファイルが含まれます。よりきめ細かに制御するには、より詳細なファイルパターンを使用するか、Git でソースバンドルを作成します。

Git を使用してソースバンドルを作成する

Git を使用してアプリケーションのソースコードを管理している場合、git archive コマンドを使用してソースバンドルを作成します。

$ git archive -v -o myapp.zip --format=zip HEAD

git archive には、Git に保存されているファイルのみが含まれ、無視されたファイルや Git ファイルは除外されます。これにより、ソースバンドルをできるだけ小さくできます。詳細については、git-archive のマニュアルページを参照してください。

Mac OS X Finder または Windows エクスプローラーでファイルを圧縮する

Mac OS X Finder または Windows エクスプローラーで ZIP ファイルを作成する場合、親フォルダではなく、ファイルとサブフォルダを圧縮していることを確認します。

注記

Mac OS X および Linux ベースのオペレーティング システムのグラフィカルユーザーインターフェイス(GUI)は、ピリオド(.)で始まる名前のファイルとフォルダを表示しません。ZIP ファイルに .ebextensions などの隠しフォルダを含める必要がある場合、アプリケーションの圧縮に、GUI ではなくコマンドラインインターフェイスを使用します。Mac OS X または Linux ベースのオペレーティング システムで ZIP ファイルを作成するコマンドラインの手順については、「コマンドラインからソースバンドルを作成する」を参照してください。

myapp という Python プロジェクトフォルダがあり、そこに次のファイルとサブフォルダが含まれるとします。

myapplication.py README.md static/ static/css static/css/styles.css static/img static/img/favicon.ico static/img/logo.png templates/ templates/base.html templates/index.html

上記の要件一覧に示すように、ソースバンドルは親フォルダなしで圧縮し、解凍後の構造には余分な上位レベルのディレクトリが含まれないようにする必要があります。この例では、ファイルの圧縮時に myapp フォルダは作成されません(または、コマンドラインで myapp セグメントがファイルパスに追加されません)。

このサンプルファイル構造はこのトピックを通して使用され、ファイルを圧縮する方法を示します。

Mac OS X Finder でファイルを圧縮するには

  1. 最上位のプロジェクトフォルダを開き、そこにあるすべてのファイルとサブフォルダを選択します。最上位フォルダ自体は選択しないでください。

    
            Mac OS X Finder で選択したファイル
  2. 選択したファイルを右クリックし、Compress X items (X 項目を圧縮) を選択します。ここで、X は、選択したファイルとサブフォルダの数です。

    
            Mac OS X Finder でのファイルの圧縮

Windows エクスプローラーでファイルを圧縮するには

  1. 最上位のプロジェクトフォルダを開き、そこにあるすべてのファイルとサブフォルダを選択します。最上位フォルダ自体は選択しないでください。

    
            Windows エクスプローラーで選択したファイル
  2. 選択したファイルを右クリックし、送る を選択して、圧縮 (zip 形式) フォルダ を選択します。

    
            Windows エクスプローラーでのファイルの圧縮

.NET アプリケーションのソースバンドルの作成

Visual Studio を使用する場合は、AWS Toolkit for Visual Studio に含まれているデプロイツールを使用して、.NET アプリケーションを Elastic Beanstalk にデプロイできます。詳細については、「デプロイツールを使用した、.NET 内での Elastic Beanstalk アプリケーションの配置」を参照してください。

.NET アプリケーションのソースバンドルを手動で作成する必要がある場合は、プロジェクトディレクトリを含む ZIP ファイルを簡単に作成することはできません。Elastic Beanstalk へのデプロイに適したプロジェクトのウェブデプロイパッケージを作成する必要があります。デプロイパッケージを作成するために使用できる方法にはいくつかあります。

  • Visual Studio の Web 発行 ウィザードを使用してデプロイパッケージを作成します。詳細については、「Visual Studio でウェブデプロイパッケージを作成する方法」を参照してください。

    重要

    ウェブデプロイパッケージを作成するとき、サイト名Default Web Site で始める必要があります。

  • .NET プロジェクトを用意している場合、次の例に示すように、msbuild コマンドを使用してデプロイパッケージを作成できます。

    重要

    DeployIisAppPath パラメータは Default Web Site で始める必要があります。

    C:/> msbuild <web_app>.csproj /t:Package /p:DeployIisAppPath="Default Web Site"
  • ウェブサイトプロジェクトを用意している場合、IIS ウェブデプロイツールを使用してデプロイパッケージを作成します。詳細については、Packaging and Restoring a Web site を参照してください。

    重要

    apphostconfig パラメータは Default Web Site で始める必要があります。

複数のアプリケーションまたは ASP.NET コアアプリケーションをデプロイする場合は、ソースバンドルのルートに、.ebextensions フォルダをアプリケーションバンドルとマニフェストファイルに並べて置きます。

~/workspace/source-bundle/ |-- .ebextensions | |-- environmentvariables.config | `-- healthcheckurl.config |-- AspNetCore101HelloWorld.zip |-- AspNetCoreHelloWorld.zip |-- aws-windows-deployment-manifest.json `-- VS2015AspNetWebApiApp.zip

ソースバンドルをテストする

ソースバンドルを Elastic Beanstalk にアップロードする前に、ローカルでテストする必要があります。Elastic Beanstalk は基本的にファイルの抽出にコマンドラインを使用するため、GUI ツールではなくコマンドラインからテストを実行することをお勧めします。

Mac OS X または Linux でのファイル抽出をテストするには

  1. ターミナルウィンドウ(Mac OS X)を開くか Linux サーバーに接続します。ソースバンドルを含むディレクトリに移動します。

  2. unzip または tar xf コマンドを使用して、アーカイブを解凍します。

  3. 解凍されたファイルが、新しい上位フォルダまたはディレクトリではなく、アーカイブ自体があるフォルダに表示されていることを確認します。

    注記

    Mac OS X Finder を使用してアーカイブを圧縮する場合、アーカイブ自体を構成した方法に関係なく、新しい上位フォルダが作成されます。最適な方法として、コマンドラインを使用します。

Windows でのファイル抽出をテストするには

  1. 圧縮ファイルをコマンドラインから抽出できるプログラムをダウンロードまたはインストールします。たとえば、無料の unzip.exe プログラムを http://stahlforce.com/dev/index.php?tool=zipunzip からダウンロードできます。

  2. 必要であれば、ソースバンドルのあるディレクトリに実行可能ファイルをコピーします。システム全体におよぶツールをインストールしている場合は、このステップをスキップできます。

  3. 適切なコマンドを使用して、アーカイブを解凍します。ステップ 1 のリンクを使用して unzip.exe をダウンロードした場合は、コマンドは unzip <archive-name> となります。

  4. 解凍されたファイルが、新しい上位フォルダまたはディレクトリではなく、アーカイブ自体があるフォルダに表示されていることを確認します。