Elastic Beanstalk の使用を開始する方法について説明します - AWS Elastic Beanstalk

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

Elastic Beanstalk の使用を開始する方法について説明します

Elastic Beanstalk を使用すると、ウェブアプリケーションとサービスをデプロイ、モニタリング、スケーリングできます。通常、コードをローカルで開発し、Amazon EC2 サーバーインスタンスにデプロイします。これらのインスタンスは環境とも呼ばれ、AWS コンソールまたはコマンドラインを使用してアップグレードできるプラットフォームで実行されます。

開始するには、コンソールから直接、構築済みのサンプルアプリケーションをデプロイすることをお勧めします。次に、QuickStart: Elastic Beanstalk に PHP アプリケーションをデプロイする でローカルに開発し、コマンドラインからデプロイする方法について説明します。

Elastic Beanstalk の使用には料金はかかりませんが、このチュートリアルの過程で作成した AWS リソースは、最後に削除するまで標準料金が適用されます。使用料合計は通常 1 USD 未満です。使用料を最小限に抑える方法については、「AWS 無料利用枠」を参照してください。

このチュートリアルを完了すると、ユーザーは Amazon EC2 インスタンスで実行されている環境を使用して Elastic Beanstalk アプリケーションを作成、設定、デプロイ、更新、モニタリングするための基本を理解します。

推定所要時間: 35~45 分

ウェブサーバー環境を使用した Elastic Beanstalk アプリケーションのシンプルなアーキテクチャ。

構築する内容

最初の Elastic Beanstalk アプリケーションは、PHP マネージドプラットフォームで PHP サンプルを実行する単一の Amazon EC2 環境で構成されます。

Elastic Beanstalk アプリケーション

Elastic Beanstalk アプリケーションは、Elastic Beanstalk コンポーネント用のコンテナです。これには、アプリケーションコードが Elastic Beanstalk によって提供および管理されるプラットフォームで、またはユーザーが提供するカスタムコンテナで実行される環境が含まれます。

環境

Elastic Beanstalk 環境は、Amazon EC2 インスタンスを含む、一緒に実行される AWS リソースのコレクションです。環境を作成するときに、Elastic Beanstalk は必要なリソースを AWS アカウントにプロビジョニングします。

プラットフォーム

プラットフォームは、オペレーティングシステム、プログラミング言語ランタイム、ウェブサーバー、アプリケーションサーバー、および追加の Elastic Beanstalk コンポーネントの組み合わせです。Elastic Beanstalk は管理されたプラットフォームを提供します。または、ユーザーはコンテナ内に独自のプラットフォームを提供することができます。

Elastic Beanstalk は、さまざまなプログラミング言語、アプリケーションサーバー、および Docker コンテナ用のプラットフォームをサポートします。環境を作成するときに、プラットフォームを選択する必要があります。プラットフォームはアップグレードできますが、環境のプラットフォームを変更することはできません。

プラットフォームの切り替え

プログラミング言語を変更する必要がある場合は、別のプラットフォームで新しい環境を作成して切り替える必要があります。

ステップ 1: アプリケーションを作成する

サンプルアプリケーションを作成するには、[Create application] (アプリケーションの作成) コンソールウィザードを使用します。Elastic Beanstalk アプリケーションを作成し、その中に環境を起動します。

リマインダー: 環境は、アプリケーションコードを実行するために必要な AWS リソースのコレクションです。

[アプリケーションの作成] ボタンを指す矢印付きの Elastic Beanstalk コンソール。
アプリケーションを作成するには

  1. Elastic Beanstalk コンソールで開きます

  2. [アプリケーションを作成] を選択します。

  3. [Application name] (アプリケーション名) に getting-started-app と入力します。

コンソールには、アプリケーションを作成し、環境を設定するための 6 ステップのプロセスが用意されています。このクイックスタートでは、最初の 2 つのステップに集中するだけで済みます。次にスキップして先に進み、アプリケーションと環境を確認して作成できます。

環境を設定するには
  1. [環境情報] で、[環境名] に入力します: gs-app-web-env

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

  3. [アプリケーションコード][プリセット] では、デフォルト ([サンプルアプリケーション][単一インスタンス]) を受け入れ、[次へ] を選択します。

サービスアクセスを設定するには

次に、2 つのロールが必要です。[サービスロール] を使用すると、Elastic Beanstalk は EC2 インスタンスをモニタリングし、環境のプラットフォームをアップグレードできます。[EC2 インスタンスプロファイル] ロールは、ログの書き込みや他のサービスとのやり取りなどのタスクを許可します。

サービスロールを作成または選択するには
  1. 以前に [サービスロール] を作成していて、既存のロールを選択する場合は、[サービスロール] ドロップダウンから値を選択し、サービスロールを作成するためのこれらの残りのステップをスキップします。

  2. [サービスロール] に一覧表示された値がない場合、または新しいものを作成する場合は、次のステップに進みます。

  3. [サービスロール] では、[ロールの作成] を選択します。

  4. [信頼できるエンティティタイプ] で、[AWS サービス] を選択してください。

  5. [ユースケース] では、[Elastic Beanstalk – 環境] を選択します。

  6. [次へ] を選択します。

  7. [アクセス許可ポリシー] に以下が含まれていることを確認し、[次へ] を選択します。

    • AWSElasticBeanstalkEnhancedHealth

    • AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy

  8. [ロールの作成] を選択してください。

  9. [サービスアクセスの設定] タブに戻り、リストを更新して、新しく作成したサービスロールを選択します。

EC2 インスタンスプロファイルを作成または選択するには
  1. 以前に [EC2 インスタンスプロファイル] を作成していて、既存の EC2 インスタンスプロファイルを選択する場合は、[EC2 インスタンスプロファイル] ドロップダウンから値を選択し、EC2 インスタンスプロファイルを作成するためのこれらの残りのステップをスキップします。

  2. [EC2 インスタンスプロファイル] に一覧表示された値がない場合、または新しいものを作成する場合は、次のステップに進みます。

  3. [ロールの作成] を選択してください。

  4. [信頼できるエンティティタイプ] で、[AWS サービス] を選択します。

  5. [ユースケース] では、[Elastic Beanstalk – コンピューティング] を選択します。

  6. [次へ] を選択します。

  7. [アクセス許可ポリシー] に以下が含まれていることを確認し、[次へ] を選択します。

    • AWSElasticBeanstalkWebTier

    • AWSElasticBeanstalkWorkerTier

    • AWSElasticBeanstalkMulticontainerDocker

  8. [ロールの作成] を選択してください。

  9. [サービスアクセスの設定] タブに戻り、リストを更新して、新しく作成した EC2 インスタンスプロファイルを選択します。

アプリケーションの設定と作成を完了するには
  1. [EC2 キーペア] をスキップします。

    コンソールを介して Amazon EC2 インスタンスに接続するその他の方法が表示されます。

  2. [レビューにスキップ] を選択して、いくつかのオプションステップをスキップします。

    オプションのステップ: ネットワーク、データベース、スケーリングパラメータ、更新の高度な設定、モニタリング、ログ記録。

  3. 選択の概要を示す [レビュー] ページで、[送信] を選択します。

お疲れ様でした。

アプリケーションを作成し、環境を設定しました! 次に、リソースがデプロイされるのを待つ必要があります。

ステップ 2: アプリケーションをデプロイする

アプリケーションを作成すると、Elastic Beanstalk が環境をセットアップします。座って待つだけで完了します。

初期デプロイでは、リソースの作成に最大 5 分かかる場合があります。変更のみがスタックにデプロイされるため、更新にかかる時間が短くなります。

デプロイプロセスを表す説明図

サンプルアプリケーションを作成すると、Elastic Beanstalk によって次の S リソースが作成されます。

  • EC2 インスタンス – 選択したプラットフォームでウェブアプリケーションを実行するよう設定された Amazon EC2 仮想マシン。

    すべてのプラットフォームは、それぞれ特定の言語バージョン、フレームワーク、ウェブコンテナ、またはそれらの組み合わせをサポートするための、さまざまなソフトウェア、設定ファイル、スクリプトを実行します。ほとんどのプラットフォームでは、リバースプロキシとして Apache または nginx のいずれかを使用して、ウェブトラフィックをウェブアプリに転送し、静的アセットを提供し、アクセスログとエラーログを生成します。Amazon EC2 インスタンスに接続して、設定とログを表示できます。

  • インスタンスセキュリティグループ – Amazon EC2 セキュリティグループが作成され、ポート 80 での受信リクエストが許可されるため、ロードバランサーのインバウンドトラフィックはウェブアプリケーションに到達できます。

  • Amazon S3 バケット – ソースコード、ログ、その他のアーティファクトの保存場所。

  • Amazon CloudWatch アラーム – インスタンスの負荷をモニタリングし、必要に応じてスケールアップまたはスケールダウンするために 2 つの CloudWatch アラームが作成されます。

  • CloudFormation スタック – 環境内でリソースをデプロイして、設定の変更を行うために、Elastic Beanstalk は CloudFormation を使用します。リソースは、CloudFormation コンソールのリソース定義テンプレートで表示できます。

  • ドメイン名 – ウェブアプリにルーティングするドメイン名 (形式: subdomain.region.elasticbeanstalk.com)。

Elastic Beanstalk は、アプリケーションを作成し、環境を起動し、アプリケーションバージョンを作成し、コードを環境にデプロイします。プロセス中に、コンソールでは進捗状況が追跡され、[イベント] タブにイベントのステータスが表示されます。

ウェブサーバー環境を使用した Elastic Beanstalk アプリケーションのアーキテクチャの概要。

すべてのリソースがデプロイされると、環境の状態は Ok に変わります。

アプリケーションの準備ができました!

アプリケーションの状態が Ok に変わったら、ウェブアプリケーションのウェブサイトを参照できます。

ステップ 3 - Elastic Beanstalk 環境を探索する

コンソールの環境の概要ページから、デプロイされたアプリケーション環境の探索を開始します。

環境とアプリケーションを表示するには
  1. Elastic Beanstalk コンソールを開き、[Regions] (リージョン) リストで AWS リージョンを選択します。

  2. ナビゲーションペインで、[環境] を選択し、リストから環境の名前を選択します。

  3. [環境に移動] を選択して、アプリケーションを参照してください!

    (ドメインに一覧表示されている URL リンクを選択してアプリケーションを参照することもできます)。

    接続は HTTP (HTTPS ではない) になるため、ブラウザに警告が表示されることがあります。

サンプル Elastic Beanstalk アプリケーションの [おめでとうございます] 画面の説明的な例。

Elastic Beanstalk コンソールに戻ると、上部には、名前、ドメイン URL、現在のヘルスステータス、実行中のバージョン、アプリケーションが実行されているプラットフォームなど、環境に関する最上位の情報を含む環境の概要が表示されます。実行中のバージョンとプラットフォームは、現在デプロイされているアプリケーションのトラブルシューティングに不可欠です。

概要ペインの後に、[イベント] タブに最近の環境アクティビティが表示されます。

起動された環境を示す Elastic Beanstalk コンソール。

Elastic Beanstalk が AWS リソースを作成し、アプリケーションを起動している間、環境は Pending 状態になります。起動イベントに関するステータスメッセージは、[イベント] のリストに継続的に追加されます。

環境の [ドメイン] は、デプロイされたウェブアプリケーションの URL です。左側のナビゲーションペインの [環境に移動] でもドメインに移動できます。同様に、左側のナビゲーションペインには、さまざまなタブに対応するリンクがあります。

左側のナビゲーションペインの [設定] リンクを書き留めます。このリンクには、環境設定オプション値の概要がカテゴリ別にグループ化されて表示されます。

環境設定の設定

左側のナビゲーションペインの [設定] リンクを書き留めます。サービスロール、ネットワーク、データベース、スケーリング、マネージドプラットフォームの更新、メモリ、ヘルスモニタリング、ローリングデプロイ、ログ記録など、詳細な環境設定を表示および編集できます。

さまざまなタブには、環境に関する詳細情報が含まれています。

  • イベント – 環境内のリソースに関する Elastic Beanstalk サービスおよびその他のサービスからの情報とエラーメッセージの更新リストを表示します。

  • ヘルス – アプリケーションを実行している Amazon EC2 インスタンスの状態と詳細なヘルス情報を表示します。

  • [Logs] (ログ) - 環境内の Amazon EC2 からログを取得してダウンロードします。ログ全体または最近のアクティビティを取得できます。取得したログは 15 分間使用できます。

  • モニタリング – 平均レイテンシーや CPU 使用率など、環境の統計情報を表示します。

  • アラーム – 環境メトリクスで設定したアラームを表示および編集します。

  • マネージド更新 - 次回および完了したマネージドプラットフォームの更新やインスタンスの置換に関する情報を表示します。

  • タグ – 環境に適用されるキーと値のペアを表示および編集します。

注記

コンソールナビゲーションペインのリンクは、対応するタブを表示します。

ログによるトラブルシューティング

予期しない動作のトラブルシューティングやデプロイのデバッグを行うために、環境のログを確認したい場合があるでしょう。

Elastic Beanstalk コンソールの [ログ] タブで、すべてのログファイルの 100 行をリクエストできます。または、Amazon EC2 インスタンスに直接接続し、リアルタイムでログをテーリングすることもできます。

ログをリクエストするには (Elastic Beanstalk コンソール)
  1. Elastic Beanstalk コンソールで環境に移動します。

  2. [ログ] タブまたは左ナビゲーションを選択し、[ログをリクエストする] を選択します。

  3. [最後の 100 行] を選択します。

  4. ログを作成したら、[ダウンロード] リンクを選択してブラウザでログを表示します。

ログで、ログを検索し、nginx アクセスログのディレクトリを書き留めます。

Amazon EC2 への接続を有効にするポリシーを追加する

接続する前に、Session Manager を使用して Amazon EC2 への接続を有効にするポリシーを追加する必要があります。

  1. IAM コンソールに入ります。

  2. aws-elasticbeanstalk-ec2-role ロールを検索して選択します。

  3. [アクセス許可を追加] を選択し、[ポリシーをアタッチ] を選択します。

  4. テキスト AmazonSSMManagedEC2Instance始まるデフォルトポリシーを検索し、ロールに追加します。

Session Manager を使用して Amazon EC2 インスタンスに接続するには
  1. Amazon EC2 コンソールに移動します。

  2. [インスタンス] を選択し、gs-app-web-env インスタンスを選択します。

  3. [接続] を選択し、[Session Manager] を選択します。

  4. [接続] を選択します。

インスタンスに接続したら、bash シェルを起動し、ログをテーリングします。

  1. コマンドを実行します。bash

  2. コマンドを実行します。cd /var/log/nginx

  3. コマンドを実行します。tail -f access.log

  4. ブラウザで、アプリケーションドメイン URL に移動します。更新します。

おめでとうございます。接続されました!

ページを更新するたびに、インスタンスの更新にログエントリが表示されるはずです。

接続ボタンが機能しませんか?

接続ボタンが使用できない場合は、IAM に戻り、必要なポリシーをロールに追加したことを確認します。

ステップ 4: アプリケーションを更新する

最終的には、アプリケーションを更新したいと思うようになります。環境で現在実行中の他の更新オペレーションがなければ、アプリケーションの新しいバージョンはいつでもデプロイ可能です。

このチュートリアル開始時のアプリケーションバージョンは、サンプルアプリケーションと呼ばれます。

環境の更新を示す説明図。
アプリケーションバージョンを更新するには
  1. 次の PHP サンプルアプリケーションをダウンロードする:

    PHPphp-v2.zip

  2. Elastic Beanstalk コンソールを開き、[Regions] (リージョン) リストで AWS リージョンを選択します。

  3. ナビゲーションペインで、[環境] を選択し、リストから環境の名前を選択します。

  4. 環境の概要ページで、[Upload and deploy (アップロードとデプロイ)] を選択します。

  5. [ファイルを選択] を選択し、ダウンロードしたサンプルアプリケーションソースバンドルをアップロードします。

    コンソールでは、[バージョンラベル] に新しい一意のラベルが自動的に入力され、自動的に末尾の整数が増加します。独自のバージョンラベルを入力する場合は、一意であることを確認してください。

  6. [デプロイ] を選択します。

Elastic Beanstalk がファイルを Amazon EC2 インスタンスにデプロイしている間、[環境概要] ページでデプロイステータスを表示できます。アプリケーションバージョンがアップデートされている間、環境の [ヘルス] ステータスは灰色になります。デプロイが完了すると、Elastic Beanstalk によってアプリケーションのヘルスチェックが実行されます。アプリケーションがヘルスチェックに応答すると、正常と見なされ、ステータスは緑色に戻ります。環境概要には、新しい [実行バージョン] に [バージョンラベル ] として指定した名前が表示されます。

Elastic Beanstalk により、新しいアプリケーションバージョンがアップロードされ、アプリケーションバージョンのテーブルにも追加されます。テーブルを表示するには、ナビゲーションペインの [getting-started-app][Application versions] (アプリケーションバージョン) を選択します。

更新に成功しました!

ブラウザを更新すると、更新された「v2」メッセージが表示されます。

ソースを自分で編集する場合は、ソースバンドルを解凍、編集、再圧縮します。macOS では、-X を使用して php ディレクトリ内から次のコマンドを使用して、追加のファイル属性を除外します。

zip -X -r ../php-v2.zip .

ステップ 5 - アプリケーションをスケールする

お使いのアプリケーションに適合するよう、環境をカスタマイズすることができます。例えば、計算量の多いアプリケーションがある場合、アプリケーションを実行する Amazon Elastic Compute Cloud (Amazon EC2) インスタンスの種類を変更できます。設定の変更を適用するために、Elastic Beanstalk は環境の更新を実行します。

一部の簡単な設定の変更はすぐに反映されます。また、AWS リソースの削除と再作成を行う必要がある変更もあります。このような変更には数分かかることがあります。構成設定を変更すると、Elastic Beanstalk により、アプリケーションのダウンタイムが発生する可能性について警告が表示されます。

環境の拡大を示す説明図。

容量設定を増やす

この構成変更の例では、環境の容量設定を編集します。Auto Scaling グループに 2 つから 4 つの Amazon EC2 インスタンスを持つ負荷分散型のスケーラブルな環境を設定し、変更が行われたことを確認します。Elastic Beanstalk は Amazon EC2 インスタンスを作成し、最初に作成した 1 つのインスタンスに追加します。次に、Elastic Beanstalk は両方のインスタンスを環境内のロードバランサーに関連付けます。その結果、アプリケーションの応答性が向上し、可用性が向上します。

環境の容量を変更するには
  1. Elastic Beanstalk コンソールを開き、[Regions] (リージョン) リストで AWS リージョンを選択します。

  2. ナビゲーションペインで、[環境] を選択し、リストから環境の名前を選択します。

  3. ナビゲーションペインで、[設定] を選択します。

  4. [Instance traffic and scaling] (インスタンスのトラフィックおよびスケーリング) 設定カテゴリで、[Edit] (編集) を選択します。

  5. [Instances] (インスタンス) セクションを折りたたむと、[Capacity] (容量) セクションが見やすくなります。[Auto Scaling group] (Auto Scaling グループ) で、[Environment type] (環境タイプ) を [Load balanced] (負荷分散) に変更します。

  6. [インスタンス] 行で、[最小数]2 に変更し、[最大数]4 に変更します。

  7. ページの最下部で [適用] を選択し変更を保存します。

    更新によって現在のインスタンスがすべて置き換えられることが警告された場合。[確認] を選択してください。

環境の更新には数分程かかります。イベントのリストにいくつかの更新が表示されます。「環境に新しい設定を正常にデプロイしました」というイベントをウォッチします。

容量の増加を確認する

環境の更新が完了し、環境の準備が完了した後、Elastic Beanstalk は新しい最小容量設定を満たすために 2 番目のインスタンスを自動的に起動しました。

増加した容量を確認するには
  1. タブリストまたは左側のナビゲーションペインから [ヘルス] を選択します。

  2. [拡張インスタンスヘルス] セクションを確認します。

スケールアップが完了しました!

2 つの Amazon EC2 インスタンスでは、環境容量が 2 倍になり、それには数分しかかかりませんでした。

Elastic Beanstalk 環境のクリーンアップ

使用していないサービスに対して課金されないようにするには、すべてのアプリケーションバージョンを削除し、環境を終了します。これにより環境がユーザー用に作成した AWS も削除されます。

リソースの削除を示す説明図。
アプリケーションおよび関連するすべてのリソースを削除するには
  1. すべてのアプリケーションバージョンを削除します。

    1. Elastic Beanstalk コンソールを開き、[Regions] (リージョン) リストで AWS リージョンを選択します。

    2. ナビゲーションペインで、[アプリケーション] を選択し、[getting-started-app] を選択します。

    3. ナビゲーションペインで、アプリケーション名を見つけ、[アプリケーションバージョン] を選択します。

    4. [アプリケーションバージョン] ページで、削除するすべてのアプリケーションバージョンを選択します。

    5. [アクション] を選択し、[削除] を選択します。

    6. [Amazon S3 からのバージョンの削除] をオンにします。

    7. [削除] を選択してから、[完了] を選択します。

  2. 環境を終了します。

    1. ナビゲーションペインで、[gettinging-started-app] を選択してから、環境リストで [GettingStartedApp-env] を選択します。

    2. [アクション]、[環境の終了] の順に選択します。

    3. 環境名を入力し、GettingStartedApp-env の終了を確認した後に、[Terminate] (終了) を選択します。

  3. getting-started-app アプリケーションを削除します。

    1. ナビゲーションペインで、[getting-started-app] を選択します。

    2. [アクション] を選択してから、[アプリケーションの削除] を選択します。

    3. アプリケーション名を入力して [getting-started-app] を削除することを確認し、[削除] を選択します。

お疲れ様でした。

正常に、サンプルアプリケーションを AWS クラウドにデプロイし、新しいバージョンをアップロードし、その設定を変更して 2 つ目の Auto Scaling インスタンスを追加し、AWS リソースをクリーンアップしました!

次のステップ

eb コマンドラインツールを使用して Elastic Beanstalk へのコードのデプロイを自動化する方法については、QuickStart: Elastic Beanstalk に PHP アプリケーションをデプロイする を続行することをお勧めします。

次に、HTTPS 接続の設定方法を確認したい場合は、「Elastic Beanstalk 環境の HTTPS の設定」を参照してください。