【クラウド】【AWS】AWS Elastic Beanstalk(ビーンストーク) - j-komatsu/myCheatSheet GitHub Wiki
AWS Elastic Beanstalk(ビーンストーク)入門と実践
読み方
エーダブリューエス・エラスティック・ビーンストーク
🌱 初学者向けガイド
📘 Elastic Beanstalkとは?
Elastic Beanstalkは、アプリケーションを簡単にデプロイ・管理できるAWSのサービスです。
サーバーやOSの細かい設定を気にせず、コードをアップロードするだけでアプリが動きます。
🧾 たとえ話:
Elastic Beanstalkは「定食屋の注文端末」みたいなもの
メニュー(アプリ)を選ぶだけで、厨房(サーバー)や調理(デプロイ)は自動でやってくれる!
💡 特徴(表)
特徴 | 内容 |
---|---|
対応言語 | Java, Python, Node.js, .NET, PHP, Ruby, Go など |
インフラ管理 | 自動(EC2, ELB, Auto Scaling, RDSなどを自動構築) |
スケーリング | 自動スケーリング対応 |
モニタリング | CloudWatch統合 |
デプロイ方法 | ZIPファイル or Gitからアップロード |
簡易設定 | .ebextensions でカスタマイズ可能 |
📦 初期セットアップ(例:Node.jsアプリ)
# AWS CLIとEB CLIが必要(事前にインストール)
pip install awsebcli
# 初期化(対話式)
eb init
# 環境作成
eb create my-env
# デプロイ
eb deploy
# ステータス確認
eb status
✅ 入出力イメージ(Node.js例)
📥 入力:Node.jsアプリ(app.js)
const express = require('express');
const app = express();
app.get('/', (req, res) => res.send('Hello from Beanstalk!'));
app.listen(3000);
📤 出力:ブラウザ表示
Hello from Beanstalk!
🔁 デプロイフロー(Mermaid.js)
flowchart TD
A[ローカルでアプリ開発] --> B[eb initで初期化]
B --> C[eb createで環境作成]
C --> D[eb deployでデプロイ]
D --> E[URLでアクセス&確認]
👨💻 専門者向け:設定と拡張
⚙️ より細かい設定
.ebextensions
ディレクトリを作成し、YAMLファイルで設定
📄 .ebextensions/01_packages.config
packages:
yum:
git: []
📄 .ebextensions/02_env.config
option_settings:
aws:elasticbeanstalk:application:environment:
NODE_ENV: production
🛠️ カスタムデプロイ例(Javaアプリ)
# WARファイルを生成して配置
mvn package
eb deploy
.elasticbeanstalk/config.yml
📄 branch-defaults:
default:
environment: java-env
global:
application_name: MyJavaApp
default_platform: Java 8 running on 64bit Amazon Linux
default_region: ap-northeast-1
🔍 トラブルシューティング
症状 | 原因例 | 対応方法 |
---|---|---|
デプロイ失敗 | .ebextensions のYAMLエラー |
スペースや記述を確認 |
アプリが表示されない | ポートが違う(例:3000でなく80が必要) | process.env.PORT を使用 |
環境が削除できない | RDSが外部にある | RDSの削除オプションを確認 |
📚 まとめ
観点 | 初心者向け | 専門者向け |
---|---|---|
セットアップ | eb init で簡単 |
.ebextensions や config.yml |
管理方法 | 自動スケーリング任せ | カスタムAMIや独自ALB設定も可能 |
利用シーン | 学習アプリやテストデプロイ | 小中規模プロダクションにも対応 |
🎁 おまけ:無料利用枠は?
- 無料枠対象サービス:Elastic Beanstalkそのものは無料
- ただし、裏で動くEC2やS3、RDSなどは別料金なので注意!