目的
- AWS Elastic Beanstalkについて話題になり、知ったかぶりするため、基本動作を確認することにした。(目標:なんとなくアプリのデプロイまでできること)
AWS Elastic Beanstalk とは(自分の理解)
- インフラ(EC2、ELB等)の構築、運用を自動化し、アプリケーションの実行環境として一元管理できるサービス。
やったこと
- Elastic Beanstalk によるサンプルアプリ実行環境(python)の作成
- 構成変更(EC21 ⇒ ELB+EC22)
- アプリケーションのデプロイ(追加バッチとローリング)
構成図
動作確認
Elastic Beanstalk 「アプリケーション」の作成
-
Elastic Beanstalk の画面で、「今すぐ始める」を選択する。設定値としては、「アプリケーション名:mksamba-ebtalk-sample」、「プラットフォーム:Python」とする。
-
数分で環境が構成され、アプリケーション「MksambaEbtsample-env」の作成が完了する。デフォルト構成(最小構成)のため、EC2インスタンス(t2.micro) 1台、ELBなしとなり、その1台のインスタンス上のみでPythonの実行環境が動作する。
- WEBアクセス用のURLが用意されるため、ブラウザからアクセスして初期画面を確認する。apacheとかと同様の「無事インストールできましたね」的な画面が表示される。
アプリケーションのデプロイ
- 公式ガイド:チュートリアル及びサンプルのところに、pythonのソース(python-v1.zip)が配布されており、このソースが初期状態として使われている様子。
- zipファイルの中にある application.py の中身(表示文言および背景色)を少し変更し、再度cron.yaml(こちらは変更なし)と合わせてzipファイルにする。
- 「アップロードとデプロイ」のボタンから、zipファイルをアップロードしてデプロイを行う。
- デプロイが無事完了し、文言と色が変わったことを確認する。
構成の変更
- EC2 1台構成だとローリングでのデプロイができないため、ELB + EC2 2台の構成に変更する。
- 「設定」-「容量の変更」のところで、値を以下に変更する。他の値はデフォルト値とする。
- 環境タイプ: 単一のインスタンス ⇒ 負荷分散
- インスタンス: (設定なし) ⇒ 最小2, 最大2
- 設定を更新すると、ELB(CLB)が作成され、EC2も2台に増加する。
アプリケーションのデプロイ(追加バッチとローリング)
- 「設定」-「ローリング更新とデプロイの変更」のところで、値を以下に変更する。他の値はデフォルト値とする。
- デプロイメントポリシー: 1回にすべて ⇒ 追加バッチとローリング
- バッチサイズ: (設定なし) ⇒ 固定 1インスタンス/1回
- 再度「アプリケーションとデプロイ」のボタンから、デプロイ(色を変えるだけの更新)を行う。
- ポリシーを「追加バッチとローリング」としたため、まずバッチ(追加の1台)を作成し、そこに新しいアプリをデプロイしてELBに組み込む。その後で既存のEC2インスタンスへのデプロイを行い、一番古い?インスタンスが削除される。
- アプリが更新されていることを確認する。
所感
- いろいろ奥が深そうだがこの辺にしておき、実案件で使うことがあれば深堀したい。
参考記事
-
AWS Elastic Beanstalkのデプロイメントポリシーについて
- 各デプロイポリシーの動作仕様がが分かりやすく記載されている。