ITの教科書検索
入門読了 約11分

AWS Elastic Beanstalkとは ― コードを渡して動かす

AWS Elastic Beanstalkとは、コードを渡すとEC2・ロードバランサ・台数の調整をまとめて用意するサービスです。Beanstalk自体は無料です。EC2・ECS・Lambdaとの使い分けも分かります。

目次
  1. AWS Elastic Beanstalkとは
  2. PaaSとしての位置づけ
  3. 裏で作られるリソース
  4. Webサーバ環境とワーカー環境
  5. 対応する言語とデプロイの方法
  6. 料金の決まり方
  7. EC2・ECS・Lambdaとの使い分け
  8. 練習問題

AWS Elastic Beanstalkとは、コードを渡すとWebアプリを動かす環境を用意するサービス

AWS Elastic Beanstalkは、実行に必要なサーバ一式をまとめて用意するAWSのサービスです。利用者はWebアプリのコードを渡します。EC2インスタンスの起動・ロードバランサの設定・負荷に合わせた台数の調整を、Beanstalkが行います。

EC2だけでWebアプリを公開するときは、インスタンスとロードバランサとAuto Scalingを自分で組み合わせます。Beanstalkを使えば、その構築を任せて、コードを書くことに集中できます。Beanstalk自体に料金はかからず、作られたEC2などの料金だけを払います。

PaaSとしての位置づけは、OSから下の構築を任せること

クラウドのサービスは、利用者が管理する範囲でIaaS・PaaS・SaaSに分けられます。この分類では、Beanstalkは、アプリを配置すれば動く環境を借りるPaaSに近いサービスです。利用者が主に扱うのは、自分のアプリと、それを動かす環境の設定です。

ただし、Beanstalkが作るEC2インスタンスなどは、利用者のAWSアカウントの中に置かれます。AWSのFAQは、ほかのPaaSと比べたBeanstalkの違いとして、利用者がリソースを制御できる点を挙げています。作られたリソースは確認でき、あとから自分で調整できます。

OSや言語のランタイムの更新版は、Beanstalkが定期的に出します。コンソールで作った環境では、マイナー版とパッチ版の更新を自動で適用する設定が最初から有効です。適用は週に1回の時間帯に行います。AWSと利用者の担当の分け方は、責任共有モデルの記事で説明しています。

裏で作られるのは、EC2・ELB・Auto Scalingなどの見えるリソース

Beanstalkを使うときは、まずアプリケーションを作り、コードをまとめたファイルを渡します。すると、Beanstalkはコードの実行に必要なリソースを作成して設定します。そのリソースの集まりを、環境と呼びます。

利用者コードを渡すElasticBeanstalk作って設定する環境ロードバランサ(ELB)Auto Scalingグループ台数を増減EC2アプリが動くEC2アプリが動く振り分ける
利用者が渡すのはコードだけです。色の点線の中にあるロードバランサ・Auto Scalingグループ・EC2インスタンスは、Beanstalkが作って設定し、1つの環境としてまとめます。

Webアプリ向けの環境では、ロードバランサ・Auto Scalingグループ・1台以上のEC2インスタンスが作られます。ロードバランサはインスタンスの手前に置かれ、届いた通信を振り分けます。負荷が増えるとAuto Scalingがインスタンスを追加し、負荷が減ると停止します。ただし、最低1台は動かし続けます。

環境ごとに、Beanstalkが用意したURLが1つ付きます。このURLは、Route 53のCNAMEレコードでロードバランサを指しています。各インスタンスでは、ホストマネージャというBeanstalkのソフトウェアが動きます。ホストマネージャは、アプリの配置や、ログをS3に保存する作業を受け持ちます。

Elastic Beanstalkの主な用語(AWS Elastic Beanstalk開発者ガイド、2026-10-30時点)
用語意味
アプリケーション環境やアプリのバージョンなどをまとめる入れ物
アプリケーションバージョンデプロイできるコードの1つの版。S3に置いたZIPなどを指す
環境1つのバージョンを動かすAWSのリソースの集まり。同時に動かす版は1つ
プラットフォームOS・言語のランタイム・Webサーバなどの組み合わせ

インスタンスタイプや台数の下限と上限は、環境の設定で変更できます。オンデマンドのほかに、リザーブドインスタンスやスポットインスタンスも使えます。インスタンスを1台だけ動かす環境も作れます。その場合は、ロードバランサを置きません。

データベースが必要なときは、Amazon RDSのDBインスタンスを環境に追加できます。選べるエンジンは、MySQL・PostgreSQL・Oracle・SQL Serverです。Beanstalkは、接続先のホスト名やパスワードなどを環境変数にしてアプリに渡します。

環境に追加したデータベースは、その環境と一体で管理されます。本番に移行するときは、データベースを環境から切り離せます。Beanstalkの外のRDSとして使う方法を、開発者ガイドが示しています。切り離すと、複数の環境から同じデータベースに接続できます。切り離すときや環境を削除するときに、データベースを残すか、スナップショットを取って削除するかなどを選べます。

Beanstalkには、この記事で扱うStandardのほかに、Clusterという動かし方もあります。Clusterでは、BeanstalkがAmazon EKSのクラスターを作って運用します。アプリはコンテナとして動きます。EKSとECSの違いは、Amazon ECSの記事を読むと分かります。

Webサーバ環境とワーカー環境の違いは、処理の受け取り方

Beanstalkの環境を作るときは、最初に環境の種類を選びます。HTTPの要求に応答するアプリは、Webサーバ環境で動かします。キューからタスクを取り出して処理するアプリは、ワーカー環境で動かします。前の節で説明した構成は、Webサーバ環境のものです。

Webサーバ環境ワーカー環境利用者WebのアプリHTTPの要求仕事を送るロードバランサSQSのキュー振り分ける取りに行くEC2アプリEC2デーモン渡すアプリ
Webサーバ環境では、HTTPの要求がロードバランサを通ってアプリに届きます。ワーカー環境では、色の付いたデーモンがSQSのキューへ仕事を取りに行き、HTTPのPOSTでアプリに渡します。

ワーカー環境は、時間のかかる処理をWebのアプリから切り離すために使います。画像や動画の加工・メールの送信・ZIPファイルの作成などが、その例です。WebのアプリはタスクをAmazon SQSのキューに入れ、すぐに利用者へ応答を返します。

ワーカー環境の各インスタンスでは、Beanstalkのデーモンが動きます。デーモンはキューからタスクを取り出します。その内容を、HTTPのPOSTで同じインスタンスのアプリに送ります。アプリが200 OKを返すと、デーモンはキューからそのタスクを削除します。

200 OK以外が返ったときは、設定した時間がたってから、タスクがキューに戻ります。そのため、処理に失敗したタスクは、あとで再び取り出されます。ワーカー環境では、cronの書式で指定した日時にタスクをキューへ入れる、定期的なタスクも実行できます。

対応する言語と、新しい版を配置するデプロイの方法

Beanstalkが対応する言語は、Go・Java・.NET・Node.js・PHP・Python・Rubyです。Dockerのコンテナにも対応していて、その場合は言語やライブラリを自分で選べます。言語ごとに、OSとランタイムとWebサーバを組み合わせたプラットフォームが用意されています。

コードは、ZIPかWARの1つのファイルにまとめて渡します。このファイルをソースバンドルと呼びます。大きさは500MBまでです。渡したソースバンドルはS3に置かれ、アプリケーションバージョンとして記録されます。

操作には、Beanstalkのコンソールのほか、AWS CLIや専用のEB CLIを使えます。環境の構成をテンプレートに書いて、CloudFormationで作ることもできます。

動いている環境に新しい版を配置することを、デプロイと呼びます。デプロイの方式は、新しい版を既存のインスタンスに配置するか、新しいインスタンスに配置するかで分かれます。既定の方式は、すべてのインスタンスに一度に配置する方式です。EB CLIで作った、台数を増やせる環境では、既定がローリングになります。

Elastic Beanstalkのデプロイの方式(AWS Elastic Beanstalk開発者ガイド、2026-10-30時点)
方式新しい版の配置先動作
一度に全部(All at once)今のインスタンス最も速い。すべてのインスタンスが短時間止まる
ローリング(Rolling)今のインスタンス数台ずつ入れ替える。その間は台数が減る
追加バッチ付きのローリング新しいインスタンスと今のインスタンス先に数台を追加してから入れ替えるので、台数が減らない
イミュータブル(Immutable)新しいインスタンス別のAuto Scalingグループに新しい版を起動する。ヘルスチェックに失敗すれば新しいほうを削除する
トラフィック分割(Traffic splitting)新しいインスタンス指定した割合の通信だけを新しい版に送って評価する
ブルー/グリーン別の環境新しい版を別の環境で動かし、2つの環境のURLを入れ替える

一度にすべて配置する方式は速い代わりに、入れ替えの間はアプリが止まることがあります。止めたくなければ、ローリングかイミュータブルを選びます。トラフィック分割を使えるのは、ロードバランサにApplication Load Balancerを使う環境です。

ブルー/グリーンは、Beanstalkの設定項目ではなく、環境を2つ使うやり方です。新しい版を別の環境で動かして確認します。そのあと2つの環境のURLを入れ替えて、通信を新しい版に移します。DNSのキャッシュが古い情報を返す期間があるので、古い環境はすぐに削除せずに残しておきます。

料金は、Beanstalk自体は無料で、作られたリソースの料金を払う

Elastic Beanstalkそのものには、追加料金がかかりません。かかるのは、環境のために作られたEC2インスタンスやロードバランサ、S3のバケットなどの料金です。最低料金や前払いはなく、使った分だけを払います。

そのため、同じ構成をEC2で構築した場合と、リソースの料金の決まり方は変わりません。たとえば、インスタンス2台とロードバランサ1つの環境なら、その2台と1つの料金がかかります。インスタンスの基本的なメトリクスは無料です。詳細な監視やログの保存には、CloudWatchの料金がかかります。

インスタンスを安く使う購入方法は、AWSの料金の記事にまとめています。単価は、Elastic Beanstalkの料金ページと、各リソースの料金ページで確認してください。

EC2・ECS・Lambdaとの使い分けは、管理したい範囲で決まる

AWSでアプリを動かす方法は、利用者が自分で管理する範囲の広さで並べられます。EC2は、OSから利用者が管理します。Lambdaは、関数のコードだけを管理します。Beanstalkは、その間でWebアプリのコードと環境の設定を管理する方法です。

次の図で自分で管理したい範囲を選ぶと、向いている選択肢と担当の分かれ方が表示されます。

自分で管理したい範囲
向く選択肢:AWS Elastic Beanstalk
Webアプリを、サーバの構築なしで動かしたいときに向きます。作られたEC2などの設定は、あとから変えられます。
AWS側が受け持つ
  • EC2・ロードバランサ・Auto Scalingの作成と設定
  • アプリの配置と健康状態の監視
  • プラットフォームの更新版を出すこと
利用者が決める
  • アプリのコード
  • 言語などのプラットフォームの選択
  • インスタンスタイプや台数の範囲
EC2・Elastic Beanstalk・ECS(Fargate)・Lambdaの違い(各サービスの開発者ガイドと料金ページ、2026-10-30時点)
項目EC2Elastic BeanstalkECS(Fargate)Lambda
利用者が渡すものOSの上に自分で配置するアプリZIPなどにまとめたコードコンテナのイメージ関数のコード
ロードバランサと台数の調整自分で組み合わせる環境を作ると用意されるサービスに組み合わせるAWSが実行の数を増減する
向く処理OSから細かく決めたい処理一般的なWebアプリやAPIコンテナにまとめたアプリイベントのたびに短く動く処理
料金がかかるものインスタンスを動かした時間など作られたリソースの分要求したvCPUとメモリの量と時間リクエストの数と実行時間

アプリをコンテナにまとめているなら、ECSも候補になります。イベントのたびに短く動く処理なら、Lambdaが向きます。月額の料金が決まっているAmazon Lightsailも選択肢です。AWSの決定ガイドは、Beanstalk・EC2と並べて挙げています。

参考にした資料

練習問題(全5問)

Q1AWS Elastic Beanstalkの説明として正しいものはどれ?
Q2Elastic Beanstalkの料金の説明として正しいものはどれ?(2026年10月30日時点の料金ページ)
Q3Elastic Beanstalkのワーカー環境で、アプリがタスクを受け取る方法として正しいものはどれ?
Q4新しい版を別のAuto Scalingグループの新しいインスタンスに配置し、ヘルスチェックに失敗すれば新しいほうだけを削除する。このデプロイの方式はどれ?
Q5Elastic Beanstalkが作ったEC2インスタンスの説明として正しいものはどれ?

選んでから「採点する」を押すと、解説つきで答え合わせができます。

関連記事

AWSの記事を続けて読む

AWS 全38本中9本目