AWS Elastic Beanstalkは「インフラ設定をAWSに任せてアプリ開発に集中する」ためのPaaSサービスですが、本番運用ではローリングデプロイの設定・マルチAZ構成・VPC統合を適切に設計しないと、ダウンタイムが発生したり、プライベートサブネットに配置すべきEC2がインターネットに直接さらされたりします。
この記事では、Amazon Linux 2023 / EB CLI 3.21.x / AWS CLI v2.15.x で動作確認した実機手順をもとに、eb init から始まり、ローリングデプロイ設定・マルチAZ構成・VPC統合・カスタムAMI活用まで、Elastic Beanstalkの本番設計パターンを解説します。
この記事のポイント
・eb init → eb create の2ステップで環境が作成できる
・ローリングデプロイは .ebextensions/deploy.config の DeploymentPolicy で制御する
・マルチAZ構成は Availability Zones と MinSize を組み合わせて設計する
・VPC統合は eb create --vpc.id / --vpc.ec2subnets / --vpc.elbsubnets で指定する
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
AWS Elastic Beanstalkとは何か(EC2・ALB・Auto Scalingを束ねる仕組み)
Elastic Beanstalkは、EC2インスタンス・ALB(Application Load Balancer)・Auto Scalingグループ・セキュリティグループ・CloudWatch監視をひとまとめに自動プロビジョニングするPaaSサービスです。開発者はアプリケーションコードとデプロイ設定を渡すだけで、インフラの作成・更新・ロールバックをAWSが管理します。ただし「自動で作ってくれる」からこそ、設定を省略すると意図しない構成になりやすいという落とし穴があります。
Elastic Beanstalkが作成する主なリソースは以下のとおりです。
・EC2インスタンス: アプリを動かすサーバー本体(AMI・インスタンスタイプを指定可)
・ALB(またはCLB/NLB): トラフィックをEC2に分散するロードバランサー
・Auto Scalingグループ: インスタンス数を自動で増減させる仕組み
・S3バケット: アプリのバージョン(zipアーカイブ)を保存するストレージ
・CloudWatchアラーム: Auto Scalingのトリガー監視
これらが連携して動いているため、「VPCを指定しない」「サブネットを指定しない」といった設定の省略がトラブルの原因になります。次のセクションから具体的な手順を見ていきましょう。
事前準備とeb initで環境を初期化する
1. EB CLIのインストール
EB CLIはpipでインストールします。Amazon Linux 2023で確認した手順は以下のとおりです。# Python 3がインストール済みであることを前提とする $ pip3 install awsebcli --upgrade
$ eb --version EB CLI 3.21.0 (Python 3.11.4)
2. eb initでアプリを初期化する
プロジェクトのルートディレクトリで eb init を実行します。対話形式でリージョン・アプリ名・プラットフォームを選択します。$ eb init Select a default region 1) us-east-1 : US East (N. Virginia) ... 11) ap-northeast-1 : Asia Pacific (Tokyo) (default is 3): 11 Enter Application Name (default is "myapp"): my-linux-app Application my-linux-app has been created. Select a platform. 1) .NET Core on Linux 2) Docker 3) Go 4) Node.js 5) PHP 6) Python ... (make a selection): 6 Select a platform branch. 1) Python 3.11 running on 64bit Amazon Linux 2023 2) Python 3.9 running on 64bit Amazon Linux 2023 (default is 1): 1
eb createで環境を作成する
1. 基本的な環境作成コマンド
eb create は環境名を指定して実行します。`--elb-type application` でALBを選択し、`--instance-types` でEC2インスタンスタイプを指定します。$ eb create my-env \ --region ap-northeast-1 \ --elb-type application \ --instance-types t3.small
Creating application version archive "app-v1.0". Uploading my-linux-app/app-v1.0.zip to S3. This may take a while. Upload Complete. Environment details for: my-env Application name: my-linux-app Region: ap-northeast-1 Deployed Version: app-v1.0 Environment ID: e-xxxxxxxxxxxx Platform: Python 3.11 running on 64bit Amazon Linux 2023/4.0.8 Tier: WebServer-Standard-1.0 CNAME: my-env.eba-xxxxxxxxxx.ap-northeast-1.elasticbeanstalk.com 2026-09-19 06:28:15 INFO Successfully launched environment: my-env
2. 環境URLの確認
環境のエンドポイントURL(CNAME)は eb status コマンドで確認できます。$ eb status my-env Environment details for: my-env Application name: my-linux-app Region: ap-northeast-1 CNAME: my-env.eba-xxxxxxxxxx.ap-northeast-1.elasticbeanstalk.com Updated: 2026-09-19 06:28:15.000000+00:00 Status: Ready Health: Green
ローリングデプロイとBlue/Greenデプロイの設定
本番環境でダウンタイムなくデプロイするには、デプロイポリシー(DeploymentPolicy)の設定が必須です。1. .ebextensionsでデプロイポリシーを設定する
プロジェクトルートの `.ebextensions/` ディレクトリに設定ファイルを置くことで、デプロイポリシーをコードで管理できます。# .ebextensions/deploy.config option_settings: aws:elasticbeanstalk:command: DeploymentPolicy: Rolling BatchSizeType: Percentage BatchSize: "30" MinInstancesInService: 1
・AllAtOnce: 全インスタンスを一括更新。高速だが更新中はダウンタイムが発生する
・Rolling: BatchSizeで指定した割合ずつ順番に更新。MinInstancesInServiceで最小稼働数を保証
・RollingWithAdditionalBatch: 更新中も全容量を維持する(追加のEC2を起動してから更新)
・Immutable: 新しいAuto Scalingグループを作成して切り替え。最も安全だが時間がかかる
本番環境では「Rolling」または「Immutable」を選択するのが一般的です。
2. Blue/Greenデプロイ(eb swap)
より安全にデプロイするなら、別の環境(Green)を作成して切り替えるBlue/Greenデプロイが使えます。# Greenの環境(v2)を作成 $ eb create my-env-green \ --region ap-northeast-1 \ --elb-type application \ --instance-types t3.small # Green環境へデプロイして動作確認後、CNAMEをBlueとSwap $ eb swap my-env --destination_name my-env-green
マルチAZ構成とAuto Scalingの設計
単一AZ構成では、そのAZに障害が発生すると全インスタンスが停止します。本番環境では必ず複数AZに分散させます。1. 複数AZ設定
# .ebextensions/autoscaling.config option_settings: aws:autoscaling:asg: MinSize: 2 MaxSize: 4 Availability Zones: Any 2 aws:autoscaling:trigger: MeasureName: CPUUtilization Unit: Percent UpperThreshold: 70 LowerThreshold: 30 UpperBreachScaleIncrement: 1 LowerBreachScaleIncrement: -1
2. ヘルスチェックの閾値設定
Auto Scalingの動作に影響するヘルスチェックも設定します。option_settings: aws:elasticbeanstalk:environment:process:default: HealthCheckPath: /health HealthCheckInterval: 30 HealthyThresholdCount: 3 UnhealthyThresholdCount: 5
VPC・サブネット・セキュリティグループとの統合設計
Elastic Beanstalkをデフォルトで作成すると、AWSのデフォルトVPCのパブリックサブネットにEC2が配置されます。本番環境では既存のVPCのプライベートサブネットにEC2を配置し、ALBだけパブリックサブネットに置く設計が標準的です。1. VPCを指定してeb createする
$ eb create my-env-prod \ --vpc.id vpc-0a1b2c3d4e5f6a7b8 \ --vpc.ec2subnets subnet-priv-1a,subnet-priv-1c \ --vpc.elbsubnets subnet-pub-1a,subnet-pub-1c \ --vpc.elbpublic \ --vpc.publicip false \ --elb-type application \ --instance-types t3.medium \ --region ap-northeast-1
・--vpc.id: 配置先VPCのID
・--vpc.ec2subnets: EC2を配置するプライベートサブネットのID(カンマ区切りで複数AZ分指定)
・--vpc.elbsubnets: ALBを配置するパブリックサブネットのID(カンマ区切りで複数AZ分指定)
・--vpc.elbpublic: ALBにパブリックIPを割り当て(インターネット向け)
・--vpc.publicip false: EC2にパブリックIPを割り当てない(プライベート配置)
`--vpc.ec2subnets` と `--vpc.elbsubnets` に複数AZのサブネットIDを指定することで、EC2とALBがそれぞれマルチAZに分散配置されます。
2. セキュリティグループの分離設計
セキュリティグループは「ALB用」と「EC2用」を分離して作成し、EC2はALBのSGからのみポートを許可する設計にします。# .ebextensions/securitygroups.config option_settings: aws:autoscaling:launchconfiguration: SecurityGroups: sg-ec2-for-beanstalk aws:elbv2:loadbalancer: SecurityGroups: sg-alb-for-beanstalk
AWSのVPC基礎から習得したい方は、AWSマスターセミナー初級編で体系的に学べます。VPCのサブネット設計・ルーティング・NAT Gatewayまでハンズオンで習得できる内容です。
カスタムAMIとプラットフォームの活用
Elastic Beanstalkではデフォルトで用意されたAmazon Linux 2023ベースのAMIを使いますが、カスタムAMIを使うことで初期化時間の短縮・セキュリティ設定の統一が実現できます。1. カスタムAMIを指定する
option_settings: aws:autoscaling:launchconfiguration: ImageId: ami-0abc1234567890def
2. eb platform listでプラットフォームを確認する
利用可能なプラットフォームのARNは eb platform list で確認できます。$ eb platform list --region ap-northeast-1 2>&1 | grep "Python 3.11" arn:aws:elasticbeanstalk:ap-northeast-1::platform/Python 3.11 running on 64bit Amazon Linux 2023/4.0.8
トラブルシュート(デプロイ失敗・ヘルスチェック異常の対処)
1. eb logsでエラーを確認する
デプロイ失敗時はまず eb logs でログを取得します。$ eb logs my-env ============= i-0a1b2c3d4e5f6a7b8 ============== /var/log/eb-engine.log ----- [2026-09-19T06:32:00.000Z] INFO [PID 1234] - Executing deployment script. [2026-09-19T06:32:15.000Z] ERROR [PID 1234] - Command failed: /var/app/staging/.platform/hooks/prebuild/01_setup.sh [2026-09-19T06:32:15.000Z] ERROR [PID 1234] - Error: command failed with exit code 1 /var/log/web.stdout.log ----- ModuleNotFoundError: No module named 'requests'
2. よくある失敗パターンと対処
・ヘルスチェック失敗(Degraded/Severe): アプリが `HealthCheckPath` に HTTP 200 を返しているか確認する。起動に時間がかかるアプリでは `HealthCheckInterval` と `UnhealthyThresholdCount` を増やす・Command failed (exit code 1): `.platform/hooks/` に置いたシェルスクリプトのパーミッション(chmod +x)や構文エラーを確認する
・timeout during deployment: `aws:elasticbeanstalk:command` の `Timeout` パラメータ(デフォルト600秒)を延ばす
・No healthy instances in the auto scaling group: セキュリティグループのインバウンドルールでALBからEC2の通信ポートが許可されているか確認する
3. eb healthで詳細ステータスを確認する
$ eb health my-env --refresh id status cause ────────────────────────────────────────────────────────────────── i-0a1b2c3d4e5f Ok - i-0f9e8d7c6b5a Ok -
本記事のまとめ
| やりたいこと | コマンドまたは設定 |
|---|---|
| EB CLIをインストールする | pip3 install awsebcli --upgrade |
| アプリを初期化する | eb init |
| ALB付き環境を作成する | eb create 環境名 --elb-type application |
| ローリングデプロイを設定する | .ebextensions/deploy.config の DeploymentPolicy: Rolling |
| マルチAZ構成にする | .ebextensions/autoscaling.config の Availability Zones: Any 2 |
| 既存VPCに配置する | eb create --vpc.id / --vpc.ec2subnets / --vpc.elbsubnets |
| Blue/Greenデプロイを実施する | eb swap 元環境 --destination_name 新環境 |
| デプロイ失敗の原因を調べる | eb logs 環境名 |
| インスタンスのヘルスを確認する | eb health 環境名 --refresh |
Elastic Beanstalkの設計は、AWSインフラの「型」を知っていれば迷わない
Elastic Beanstalkの設定を正しく組むには、VPC・サブネット・セキュリティグループ・Auto ScalingといったAWSインフラの基本設計を理解していることが前提になります。独学で断片的に覚えるより、現場で実際に使われる設計パターンを一度体系的に身につけることで、トラブルなく本番運用できるようになります。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、AWSを含む現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら
- 前のページへ:AWSのVPC CIDRプランニング入門|IPアドレスを枯渇させない設計パターンとIPAM活用
- この記事の属するカテゴリ:AWS(Amazon Linux)へ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。
登録無料・いつでも解除できます