目次
はじめに
みなさんこんにちは!
突然ですが、AWSを使い始めるときって「EC2とかS3とかが基本のサービスなんでしょ?」ってとりあえず使ってみることがあると思うんです。そしてそこで満足してしまって、その他の「名前のかっこいいサービスたち」に触れなくなってしまう人がいるのではないでしょうか。(特に元からインフラの教養のある人!!)確かにEC2は基本的だし、カンタンにサーバーが構築できて便利です。しかし、AWSはその他のサービスにこそクラウドのおてがるさが凝縮されているんです!使わなきゃもったいないですね!!!
ということでこのシリーズ(シリーズ化させたい)では、「機会がないと手を出さないけれど、使ってみるととってもおてがるなAWSのサービス」をチュートリアル的なノリで使っていきます。基本的な使い方や、気をつけるポイントなどを実際に触っていく形で説明していきたいと思っています。
記念すべき最初のサービスは、アプリのデプロイがおてがるにできる!「AWS Elastic Beanstalk」です!!
Elastic Beanstalkって?
公式ページの「よくある質問」には、こう書かれています。
Q: AWS Elastic Beanstalk とは何ですか?
AWS Elastic Beanstalk により、開発者は AWS クラウドのアプリケーションを迅速にデプロイし管理することがより簡単になります。
開発者は単にそのアプリケーションをアップロードするだけで、Elastic Beanstalk が自動的に容量のプロビジョニング、負荷分散、Auto-Scaling、およびアプリケーション状態モニタリングといったデプロイの詳細を処理します。
・・・つまり、「アプリを試してみたいけどしっかりインフラ構築するほどの規模でもないな・・・」とか「インフラ運用の工数を抑えたいな・・・」というときに、「インフラはAWSが用意して面倒をみるので、あなたはアプリに集中してください!!」としてくれるサービスです。
EC2でサーバーを構築しようとした場合、アベイラビリティーゾーンはここで~セキュリティグループはこれで~(必要なら)ELB構築して~と、意外とやることがいっぱいあります。Beanstalkを使えば、上記のような設定は必要最低限で済み、あとのインフラ構築や管理はBeanstalkがイイ感じにやってくれます!便利ですね!
言葉で説明してもイメージがつかないと思うので、ここからは実際に触ってみましょう!
Elastic Beanstalkのサンプルを使って構築してみる
Beanstalkは、「アプリケーション」 > 「環境」 > 「バージョン」の要素で構成されています。
(AWS Black Belt Online Seminar 2017 AWS Elastic Beanstalkより)
※AWS Elastic Beanstalk上の「アプリケーション」と、ユーザーがアップロードする「アプリケーション」とで指すものが違うため、以下の説明では後者の方を「アプリ」と略して記載しています。
まずはBeanstalkのサンプルを利用して、最初から作っていきましょう!
AWSコンソールから、「Elastic Beanstalk」を選択します。
「今すぐ始める」を選択します。
「アプリケーション名」「プラットフォーム」「アプリケーションコード」を選択します。
「アプリケーション名」は適当に入力してください。
今回は「プラットフォーム」は「Tomcat」を、「アプリケーションコード」は「サンプルアプリケーション」を選択します。
構築が終わるのを待ちます。数分かかります。
「ヘルス」が「OK」になれば、構築は終了です。URLをクリックすると、デプロイしたアプリにアクセスすることができます。
デプロイしたサンプルアプリの画面です。Congratulations!!
どうでしょうか?ここまで驚くほどスムーズに進められたと思います!しかし、裏では多くのAWSリソースが構築されているのです!
EC2とか、
S3とか、
CloudFormationとか。CloudFormationの「スタック」によって、Beanstalkのリソースは作られています。(いずれCloudFormationも説明できるとよいですね)
これだけのリソースを自分で作り、アプリが動く環境を用意するとなると、Beanstalkで使った時間以上は確実にかかることでしょう。おてがるですよね!
以上がBeanstalkのサンプルです。おてがるさが実感できていたらうれしいです!
Elastic Beanstalkに自分で用意したアプリをデプロイしてみる
サンプルを使うことができたら、次は自分でアプリを用意してみましょう!今回は超カンタンなアプリを用意してみます。
シンプルな index.jsp を用意し、適当なファイル名のzipファイルに固めます。この記事では、 miso-hajimete-ver1.zip というzipファイルを作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Welcome</title> <style> body { color: #ffffff; background-color: #c7c7c7; font-family: Arial, sans-serif; font-size:14px; } html, body { height: 100%; } .wrapper { height: 100%; margin: auto; display: flex; } .textColumn { padding: 2em; float: left; text-align: right; padding-top: 11em; background-color: #ff0000; background-image: #ff0000; } .textColumn p { width: 75%; float:right; } h1 { font-size: 500%; font-weight: normal; margin-bottom: 0em; } </style> </head> <body> <div class="wrapper"> <div class="textColumn"> <h1>Congratulations</h1> <p>MISO!!!</p> </div> </div> </body> </html> |
アプリが用意できたら、おさらいの意味も含めてもう一度 Beanstalk のアプリケーションを作ってみましょう。
AWSコンソールの Elastic Beanstalk から、「新しいアプリケーションの作成」を選択します。「アプリケーション名」「説明」を入力します。
上記までで、Beanstalkでいうところの「アプリケーション」が作成されます。ここからは「環境」を作っていきます。
「アクション」→「環境の作成」を選択します。
「ウェブサーバー環境」を選択します。
必要事項を入力します。「アプリケーションコード」では、先ほど作成したzipファイルをアップロードします。
「さらにオプションを設定」を選択すると、さまざまな追加の設定を指定することができます。たとえば、EC2のインスタンスタイプを指定したり、追加でRDSのインスタンスを作成したりすることができます。
設定が終わったら、サンプルのときと同じように「ヘルス」が「OK」になるのを待って、URLをクリックしてみてください。
無事にアプリの画面が表示されましたか?お疲れ様です!
また、環境の左側にある「設定」ペインで各リソースの設定を変更したり、
「モニタリング」ペインでサーバーの状態をカンタンに確認できたりします。自動で取得してくれるのでおてがる!
アプリのバージョン管理
ここまででアプリのデプロイはおてがるにできましたが、実はバージョン管理もおてがるにできるんです!試してみるために、先ほど作成した index.jsp の26, 27行目を書き換えて、ver2 としてzip化しましょう。miso-hajimete-ver2.zip です。
「ダッシュボード」の「アップロードとデプロイ」から、ver2 のzipファイルをアップロードします。
バージョンが変更されるのを待ちます。「ヘルス」が「OK」になったらURLをクリックしてみましょう。色変わってますか?
エラーなどでバージョンを戻したい場合は、「アップロードとデプロイ」→「アプリケーションバージョンページ」から、バージョンを選んで戻すことができます!バージョン更新で何か起こっても安心ですね!
以上で実際に触ってみるものは以上です。お疲れ様でした!
気をつけるポイント
おてがるにAWSリソースを構築できる Beanstalk ですが、気をつけるべきポイントがあります。一番大きなポイントは、「必要最小限の項目でリソースを構築できる分、アプリの設定をインフラ側に寄せる必要がある」ことです。たとえば、 Beanstalk で構築されるデータベース(RDSインスタンス)は、データベース名が「ebdb」固定のため、アプリ側の設定で「ebdb」を設定する必要があります。
もうひとつのポイントは、「Beanstalk 自体の利用は無料だが、各リソースごとに費用が計算される」ことです。EC2インスタンスやRDSインスタンスは、その設定に応じた課金がされます。どのAWSサービスにも言えることですが、費用はしっかり確認しておきましょう!
さいごに
おてがるにアプリをデプロイする環境が構築できる「AWS Elastic Beanstalk」いかがでしたでしょうか?
理解して使えば、検証でも本番でもクラウドのおてがるさを活かして効率よく開発ができると思います!ぜひ使ってみてください!ここまで読んでくださってありがとうございました!
※Amazon Web Services その他のAWS商標は、米国その他の国における、Amazon.com,Inc.またはその関連会社の商標です。
執筆者プロフィール

- tdi デジタルイノベーション技術部
-
インフラの技術支援や、クラウドテクノロジーの検証・社内教育/展開を担当しています。
AWSのプロフェッショナルを目指して奮闘中です。
「人に何かを説明すること」が好き!