はじめに
AWSのElastic Beanstalkを試してみたいと思います。
特徴はChatGPTに聞いたらこう教えてくれました。
Beanstalkは、AWSでウェブアプリケーションを立ち上げて稼働させるのに最も速い方法です。以下のような特徴があります。
多彩なアプリケーションプラットフォーム(Java、.NET、PHP、Node.jsなど)
- アプリケーションデプロイの多様な選択肢(ZIPファイル、Git、Dockerなど)
 - モニタリング(AWS Management ConsoleやAmazon CloudWatchでアプリケーションの状態やメトリクスを確認できる)
 - 管理と更新(AWS CLIやSDKを使ってアプリケーションや環境の設定を変更できる)
 - スケーリング(オートスケーリンググループやロードバランサーを使ってトラフィックに応じてインスタンス数を調整できる)
 - カスタマイズ(設定ファイルや拡張機能を使ってインフラストラクチャの詳細を変更できる)
 - コンプライアンス(PCI DSS、HIPAA、ISO 27001などの規制に準拠している)
 
サンプルアプリのダウンロード
まずは使用するサンプルアプリをこちらからダウンロードします。
今回はNode.jsを使ってみたいと思います。
Zipファイルを解凍すると、こうなっています。
% ls nodejs
EBSampleApp-Nodejs.iml	cron.yaml		package.json
app.js			index.html
Beanstalkの設定
アプリケーションを作成して、そのアプリを動かす環境を作成します。
アプリケーションの作成
AWSのコンソールからCreate Applicationをクリック
ここではこのように設定してより多くのオプションの設定をクリック

ここでアプリケーションの作成をクリックすると、アプリケーションと環境が同時に作成されてしまうようです。
この時点でアプリケーションのみ作成されます。
環境の作成
環境を作っていきます。
このように設定してより多くのオプションの設定をクリック
ソースコードはサンプルコードそのままをZip形式でアップロードします。
ここでは開発環境を想定しているので、単一インスタンスにチェックが入っていることを確認して、一番下の環境の作成をクリック

設定内容の確認
作成された構成の設定内容を確認してみます。左メニューの設定をクリックします。
新環境の作成
開発が終わったと想定して、本番環境を作っていきます。
今回は本番環境を想定しているので、高可用性を選択して環境の作成をクリック

同様にURLをクリックすると、変更したソースコードで画面が表示されます。

設定内容の確認
設定内容を確認します。
ロードバランサーがプロビジョニングされていて、オートスケールも設定されていますね。

EC2はDev環境と同様に1インスタンスプロビジョニングされています。

(参考)
本番用のソースコードはサンプルの色をいじっただけですが、圧縮する際にこのようにソースの親ディレクトリで圧縮すると、Beanstalkの環境作成時にエラーとなりました。相対パスが入ってるのがダメみたいです。
% zip nodejs-prod.zip nodejs-prod/*
  adding: nodejs-prod/EBSampleApp-Nodejs.iml (deflated 47%)
  adding: nodejs-prod/app.js (deflated 52%)
  adding: nodejs-prod/cron.yaml (deflated 24%)
  adding: nodejs-prod/index.html (deflated 72%)
  adding: nodejs-prod/package.json (deflated 23%)
このようにコードと同じディレクトリで圧縮することによって成功しました。
% zip ../nodejs-prod.zip -r .
  adding: EBSampleApp-Nodejs.iml (deflated 47%)
  adding: cron.yaml (deflated 24%)
  adding: index.html (deflated 72%)
  adding: package.json (deflated 23%)
  adding: .ebextensions/ (stored 0%)
  adding: .ebextensions/logging.config (deflated 53%)
  adding: app.js (deflated 52%)
















