📝

今から始める Elastic Beanstalk 入門 #2

2025/02/22に公開

今から始める Elastic Beanstalk 入門シリーズの 2 回目です。
各回については以下のリンクからご覧ください。

  1. 今から始める Elastic Beanstalk 入門 #1

前回はコンソールから Elastic Beanstalk 環境を作成し、どのようなリソースが作成されるかを確認しました。
今回は座学中心に Elastic Beanstalk を紹介します。

https://youtu.be/971WbTRr_H4

Elastic Beanstalk とは

よくある質問 - AWS Elastic Beanstalk | AWS

AWS Elastic Beanstalk により、開発者は AWS クラウドのアプリケーションを迅速にデプロイし管理することがより簡単になります。開発者は単にそのアプリケーションをアップロードするだけで、Elastic Beanstalk が自動的に容量のプロビジョニング、負荷分散、Auto-Scaling、およびアプリケーション状態モニタリングといったデプロイの詳細を処理します。

What is AWS Elastic Beanstalk? - AWS Elastic Beanstalk

With Elastic Beanstalk you can quickly deploy and manage applications in the AWS Cloud without having to learn about the infrastructure that runs those applications.

一言でまとめると、アプリケーションのデプロイと管理を簡潔にできるサービスです。
上記よくある質問からポイントをピックアップしてみました。

  • Platform as a Service である
  • アプリケーションをアップロードするだけでデプロイできる
  • EC2 などのサービス利用経験がなくても短時間で AWS にデプロイできる
  • 複数のプログラミング言語がサポートされている
  • 仮想サーバーの台数管理や負荷分散を自動的に行ってくれる

類似サービスとの違い

「アプリケーションをアップロードするだけでデプロイできる」という点は Amplify との類似点ですが、私見では最大の違いは「サーバレスかどうか」であると考えています。

  • Elastic Beanstalk: サーバレスではない
  • Amplify: サーバレス

その他、Amplify はフロントエンドやモバイル向けのプラットフォームという考え方もあります。
20200520_AWSBlackBelt_Amplify.pdf

AWS Amplify は Web フロントエンド、モバイルアプリの開発を加速させるために作られたプラットフォーム

[AWS Black Belt Online Seminar] AWS Amplify 資料及び QA 公開 | Amazon Web Services ブログ

Q9. AWS Amplify に向かない WEB アプリはどういったものがございますでしょうか?
A. Web の Amplify Framework は SPA (Single Page Application) や静的サイトのでの利用が想定されています。バックエンドで HTML の構築を行う Web アプリケーションの場合、Amplify Framework の利用シーンは限定的になる可能性があります。Amplify Framework を使わない場合であっても、Amplify CLI でバックエンドの構築のみ行うといった部分的な利用は可能です。
...
Q11. AWS Amplify でできないことを教えてください。結構制限があるように見受けられます。たとえば、Amazon Neptune は使えますか?
A. Amazon Nepture は現時点で Amplify のカテゴリとして対応しておりません。Amplify CLI のカテゴリとして対応しないバックエンドの構築には、カスタムカテゴリの利用をご検討ください。

アプリケーションやシステムがどちらのサービスに適しているかについては一概に答えがないので、各サービスで検証してできることとできないことを確認しながらサービスを選定することをおすすめします。

以下は考え方の一例です。

  • サーバーの管理観点
    • サーバーのカスタマイズなどができた方がよい → Elastic Beanstalk
    • サーバーの管理はしたくない → Amplify
  • アプリケーションの特性
    • バックエンドアプリケーション中心 → Elastic Beanstalk
    • フロントエンドアプリケーション中心 → Amplify
  • コスト観点
    • コストを抑えたい → Amplify

Elastic Beanstalk で使用できる OS

よくある質問 - AWS Elastic Beanstalk | AWS

AWS Elastic Beanstalk は、Amazon Linux AMI および Windows Server AMI で実行されます。

以前はカスタムプラットフォームとして RHEL や Ubuntu もサポートされていましたが、現在はサポートされていません。
Elastic Beanstalk custom platforms (retired) - AWS Elastic Beanstalk

In the past, Elastic Beanstalk custom platforms supported building an AMI from Amazon Linux AMI, RHEL 7, RHEL 6, or Ubuntu 16.04 base AMIs.

カスタム AMI を使用することもできますが、Amazon Linux 以外は公式にサポートされておらず、Amazon Linux 以外の Linux ディストリビューションが必要な場合は Docker プラットフォームでの構築が推奨されています。
Using a custom Amazon machine image (AMI) in your Elastic Beanstalk environment - AWS Elastic Beanstalk

Other Linux distributions might work with some troubleshooting but are not officially supported. If your application requires a specific Linux distribution, one alternative is to create a Docker image and run it on the Elastic Beanstalk Docker platform or Multicontainer Docker platform.

Elastic Beanstalk で使用できるプログラミング言語

What is AWS Elastic Beanstalk? - AWS Elastic Beanstalk

Elastic Beanstalk supports applications developed in Go, Java, .NET, Node.js, PHP, Python, and Ruby. Elastic Beanstalk also supports Docker platforms. With Docker containers you can choose your own programming language and application dependencies that may not be supported by the other Elastic Beanstalk platforms.

  • Go
  • Java
  • .NET
  • Node.js
  • PHP
  • Python
  • Ruby

プログラミング言語としては上記 7 つがサポートされていますが、Docker プラットフォームを使用すれば上記以外のプログラミング言語での構築も可能です。

主な用語

Elastic Beanstalk concepts - AWS Elastic Beanstalk

  • ランタイム
    • アプリケーションコードを実行するために必要なプログラミング言語固有のランタイムソフトウェア
    • フレームワーク、ライブラリ、インタープリター、vm など
  • Elastic Beanstalk コンポーネント
    • Elastic Beanstalk 機能を有効にするためにプラットフォームに追加するソフトウェアコンポーネント
    • ヘルス情報を収集してレポートするための拡張ヘルスエージェントなど
  • プラットフォーム
    • OS、ランタイム、Web サーバー、アプリケーションサーバー、Elastic Beanstalk コンポーネントの組み合わせ
  • プラットフォームバージョン
    • OS、ランタイム、Web サーバー、アプリケーションサーバー、Elastic Beanstalk コンポーネントの特定のバージョンの組み合わせ
  • プラットフォームブランチ
    • OS、ランタイム、Elastic Beanstalk コンポーネントなど、一部のコンポーネントの特定のバージョンを共有する一連のプラットフォームバージョン
  • プラットフォームアップデート
    • プラットフォームの一部のコンポーネントの更新を含む新しいプラットフォームバージョンのリリース
  • 管理された更新
    • Elastic Beanstalk でサポートされているプラットフォームバージョンの OS、ランタイム、ウェブサーバー、アプリケーションサーバー、Elastic Beanstalk コンポーネントにパッチおよびマイナーな更新を自動的に適用する Elastic Beanstalk の機能

コンソールで確認してみる

文字ではイメージしづらい部分もあると思いますので、コンソールで各用語が指す内容を確認してみましょう。

  • プラットフォーム
    どのプログラミング言語で構築するかというイメージです。

  • プラットフォームブランチ
    OS の種類と言語のバージョンを選択するイメージです。

  • プラットフォームバージョン
    Elastic Beanstalk から提供されているバージョンを選択するイメージです。
    バージョンによってプロキシサーバーや Git などのバージョンも異なります。
    Node.js platform history - AWS Elastic Beanstalk

  • 管理された更新
    Elastic Beanstalk で新しいバージョンがリリースされた際にアップデートできます。

プラットフォームなどは自分のアプリケーションとの互換性も考慮して選択しましょう。

プラットフォームのリタイアについて

Elastic Beanstalk platform support policy - AWS Elastic Beanstalk

When a component of a supported platform branch is marked End of Life (EOL) by its supplier, Elastic Beanstalk marks the platform branch as retired.

上述の通り、Elastic Beanstalk ではプラットフォームアップデートが行われます。
プラットフォームアップデートが進む中で、古いプラットフォームブランチがリタイアの対象となることがあります。

  • リタイア対象のプラットフォームブランチにはセキュリティ更新などのメンテナンスが提供されない
  • リタイア対象のプラットフォームブランチにはテクニカルサポートが提供されない
  • リタイアとしてマークされてから 90 日間の猶予期間がある
    • 猶予期間後にリソースが削除されることはない
    • 猶予期間後もアプリケーションへのアクセスは可能
    • 猶予期間後は AWS によるメンテナンスが行われないためセキュリティリスクが高まる

プラットフォームのリタイアの詳細については以下のドキュメントもご参照ください。
Platform retirement FAQ - AWS Elastic Beanstalk

リタイア後のトラブルとしては以下の例が考えられます。

  • セキュリティメンテナンスが適用されないため、既知の脆弱性を突いた攻撃対象になり得る
  • Elastic Beanstalk 環境やアプリケーションでエラーが発生しても AWS サポートから技術支援が受けられない
    • リタイアしたプラットフォームを使用し続けている限り、自力で解決する必要がある
  • Elastic Beanstalk API との互換性がなくなり、API での操作ができなくなる可能性がある

上記のリスクがあるため、リタイア前にサポートされているプラットフォームブランチへの移行を早い段階から検証し、スムーズに移行できるよう準備することをおすすめします。

まとめ

今回は今から始める Elastic Beanstalk 入門シリーズの 2 回目として、Elastic Beanstalk の概要を紹介しました。
次回は環境作成時の設定について紹介したいと思います。

参考資料

Discussion