やさしいElastic Beanstalk の構築
概要
AWS Elastic Beanstalk とは
- これまで、ペーパー上しか(AWS 認定試験しか)関わってこなかった AWS Elastic Beanstalk を学ぶ機会が出来ました。案件に感謝です。
- AWS Elastic Beanstalk は、アプリケーションのデプロイと管理を簡単にする AWSサービスです。インフラの知識がなくても、AWS 上にアプリケーションをデプロイできます。
- Elastic Beanstalk を使用するには、アプリケーションを作成し、アプリケーションソースバンドル(Java .war ファイルなど)の形式でアプリケーションバージョンを Elastic Beanstalk にアップロードします。Elastic Beanstalk によって自動的に環境が起動され、コードの実行に必要な AWS リソースが作成・設定されます。
AWS Elastic Beanstalk の利用料
- Elastic Beanstalk に対する追加料金はありません。AWS リソースの利用料のみ必要となります。
AWS Elastic Beanstalk 紹介動画
- AWS が提供するAWS Elastic Beanstalk 紹介動画です。動画を見たら使いたくなっちゃいますね。
Elastic Beanstalk を構築する
デプロイ用サンプルコードのダウンロード
- AWS Elastic Beanstalk デベロッパーガイドからElastic Beanstalk のサンプルコードがダウンロードできます。こちらをデプロイに使います。
- 以下、ダウンロード可能なサンプルコードです。
- Docker – docker.zip
- 複数コンテナ Docker – docker-multicontainer-v2.zip
- 事前設定済み Docker (Glassfish) – docker-glassfish-v1.zip
- Go – go.zip
- Corretto – corretto.zip
- Tomcat – tomcat.zip
- Linux 上の .NET Core – dotnet-core-linux.zip
- .NET – dotnet-asp-v1.zip
- Node.js – nodejs.zip
- PHP – php.zip
- Python – python.zip
- Ruby – ruby.zip
アプリケーションを作成する
- 先ず、コンソールからElastic Beanstalk のサービスを開きます。
- 次に、「アプリケーション」を選択して、「新しいアプリケーションの作成」を押します。
- アプリケーション名を入力し、「作成」を押します。
- アプリケーションが作成されました。
実行環境を作成する
- 続けて、アプリケーションの実行環境を作成します。「新しい環境の作成」を押します。
- 環境枠を選択します。今回は、「ウェブサーバー環境」を選択します。
- 次に、「アプリケーション名」、「環境名」を指定します。
- 「管理されたプラットフォーム」を指定します。今回は、プラットフォームに「Python」、プラットフォームのブランチに「Python 3.8 running on 64bit Amazon Linux 2」、プラットフォームのバージョンに「3.3.8 (Recommended)」を選択します。
- アプリケーションコードは、「コードのアップロード」を選択し、先ほど準備したサンプルコードをアップロードします。
- 「より多くのオプションの設定」のボタンを押し、環境設定をカスタマイズします。
- 先ず、設定のプリセットからユースケースを選びます。今回の構成は Load Balancer(ALB) を使用するため、「高可用性」を選択します。
- 以降の設定において、要件に合わせたカスタマイズを行います。
- 以下は「ソフトウェア」の変更画面です。例えば、PythonプラットフォームのプロキシはAmazon Linux 2 の場合、デフォルトがNginx ですが、Apache に変更できます。
- その他、ログのS3 やCloudWatch Logs アップロード、環境プロパティの変更が可能です。
- 以下は、「インスタンス」の変更画面です。例えば、ルートボリューム (起動デバイス)のタイプ,サイズ,IOPSの変更、セキュリティグループを変更します。
- セキュリティグループは、インスタンスにログインする場合に要チェックですね。
- 以下は、「容量」の変更画面です。
- Auto Scalingグループ(単一 or 負荷分散、インスタンス数、インスタンスタイプ、AMI ID、AZ)、スケーリングトリガーの指定などを行います。
- 以下は、「ロードバランサー」の変更画面です。
- Load Balancer の設定(種類, リスナー, ヘルスチェック, アクセスログ保存など)を変更します。
- 以下は、「ローリング更新とデプロイ」の変更画面です。
- アプリケーションのデプロイメントポリシー、ローリング更新のタイプ、デプロイの設定を変更します。
- ローリング更新は、運用時に重要な設定値ですね。以下、オプションの説明を抜粋します。(出典:AWS Elastic Beanstalk デベロッパーガイド)
- Rolling update type – Elastic Beanstalk が、インスタンスのバッチの更新を終え、次のバッチに進むまで待機し、その間インスタンスがブートストラップを終了して、トラフィック処理を開始できるようになります。次のオプションから選択します。
- Rolling based on Health – 現在のバッチのインスタンスが正常な状態になるまで待ってから、インスタンスを実行状態にし、次のバッチを処理します。
- Rolling based on Time – 新しいインスタンスを開始して実行状態にし、次のバッチを処理するまでの待機時間を指定します。
- Immutable – 変更不可能な更新を実行することで、設定変更をインスタンスの新しいグループに適用します。
- Batch size – 各バッチで置き換えるインスタンスの数です。
1
~10000
のいずれかの値を指定できます。デフォルトでは、この値は Auto Scaling グループの最小サイズの 1/3 を整数に切り上げた値になります。- Minimum capacity – 他のインスタンスの更新中に実行され続けるインスタンスの最小数。
0
~9999
のいずれかの値を指定できます。デフォルト値は Auto Scaling グループの最小サイズ、または Auto Scaling グループの最大サイズ未満の値のいずれかの低い数値になります。- Pause time (時間ベースのみ) – バッチが更新されてから次のバッチに移るまでに待つ時間。その間に、アプリケーションがトラフィックの受信を開始できるようになります。0 秒~1 時間のいずれかの値を指定できます。
- 以下は、「セキュリティ」の変更画面です。
- インスタンスのキーペア、プロファイル(IAMロール)を指定します。
- キーペアは、インスタンスにログインする場合に要チェックですね。また、インスタンスからAWSサービスにアクセスする場合は、IAMロールの設定を忘れずに。
- 以下は、「管理された更新」の変更画面です。
- 指定したメンテナンスウィンドウに自動的にプラットフォームの更新が適用されます。こちらも運用時に重要な設定値ですね。
- 以下は、「ネットワーク」の変更画面です。
- VPC、サブネットを指定します。
- カスタマイズの指定ができたら、「環境の作成」を押します。環境の作成に数分掛かります。
- 無事に、環境が作成されました。
ブラウザでアクセスしてみる
- ロードバランサー のDNS名を確認します。ブラウザからロードバランサーへアクセスし、テストページが表示されることを確認します。
関連資料