以下の記事を参考に進めます。
Express アプリケーションを Elastic Beanstalk にデプロイする - AWS Elastic Beanstalk
検証環境
MacOS 10.15.4です。
eb
コマンドさえ実行できれば、他のOSでも問題ありません。
EB CLI のインストール
brew update
brew install awsebcli
eb --version
> EB CLI 3.18.1 (Python 3.8.2)
eb init コマンドを使用してリポジトリを作成
mkdir node-express
cd node-express
eb init --platform node.js --region ap-northeast-1
> You have not yet set up your credentials or your credentials are incorrect
> You must provide your credentials.
(aws-access-id):
(aws-secret-key):
IAMユーザーを未作成の場合はIAMユーザーを作成します。
IAMユーザの作成
これを先ほど聞かれたアクセスID、アクセスキーに入力する。
(aws-access-id):
(aws-secret-key):
eb create コマンドを使用して、サンプルアプリケーションを実行する環境を作成
以下のコマンドで、Node.jsと以下のリソースで負荷分散環境を作成します。
eb create --sample node-express-env
出力結果は以下の通り。
Environment details for: node-express-env
Application name: node-express
Region: ap-northeast-1
Deployed Version: Sample Application
Environment ID: e-8ipq7n7qmh
Platform: arn:aws:elasticbeanstalk:ap-northeast-1::platform/Node.js running on 64bit Amazon Linux/4.14.3
Tier: WebServer-Standard-1.0
CNAME: UNKNOWN
Updated: 2020-05-26 12:19:11.692000+00:00
Printing Status:
INFO createEnvironment is starting.
INFO Using elasticbeanstalk-ap-northeast-1-421146132732 as Amazon S3 storage bucket for environment data.
INFO Created security group named: sg-01af1a0ddcfd9d7ca
INFO Created load balancer named: awseb-e-8-AWSEBLoa-2E65Q23TKP6X
INFO Created security group named: awseb-e-8ipq7n7qmh-stack-AWSEBSecurityGroup-T1U98MDMFMSA
INFO Created Auto Scaling launch configuration named: awseb-e-8ipq7n7qmh-stack-AWSEBAutoScalingLaunchConfiguration-19I5UVFLE902H
INFO Created Auto Scaling group named: awseb-e-8ipq7n7qmh-stack-AWSEBAutoScalingGroup-QY68AJ6H91M9
INFO Waiting for EC2 instances to launch. This may take a few minutes.
INFO Created Auto Scaling group policy named: arn:aws:autoscaling:ap-northeast-1:421146132732:scalingPolicy:45a700e3-bae8-437c-8d5b-d40e0c980cfd:autoScalingGroupName/awseb-e-8ipq7n7qmh-stack-AWSEBAutoScalingGroup-QY68AJ6H91M9:policyName/awseb-e-8ipq7n7qmh-stack-AWSEBAutoScalingScaleDownPolicy-18EMVJIJ45S9Z
INFO Created Auto Scaling group policy named: arn:aws:autoscaling:ap-northeast-1:421146132732:scalingPolicy:178550d0-fc58-4642-a2bd-73013ffc9612:autoScalingGroupName/awseb-e-8ipq7n7qmh-stack-AWSEBAutoScalingGroup-QY68AJ6H91M9:policyName/awseb-e-8ipq7n7qmh-stack-AWSEBAutoScalingScaleUpPolicy-FTL8NRNS0CWG
INFO Created CloudWatch alarm named: awseb-e-8ipq7n7qmh-stack-AWSEBCloudwatchAlarmLow-J8O5Z6ANTH8O
INFO Created CloudWatch alarm named: awseb-e-8ipq7n7qmh-stack-AWSEBCloudwatchAlarmHigh-92OFURDBRAE5
INFO Application available at node-express-env.eba-giwvvptw.ap-northeast-1.elasticbeanstalk.com.
INFO Successfully launched environment: node-express-env
リソース | 説明 |
---|---|
EC2 インスタンス | 説明省略 |
インスタンスセキュリティグループ | ポート 80 上のインバウンドトラフィックを許可するように設定された Amazon EC2 セキュリティグループ |
ロードバランサー | 説明省略 |
ロードバランサーセキュリティグループ | ポート 80 上のインバウンドトラフィックを許可するように設定された Amazon EC2 セキュリティグループ。 |
Auto Scaling グループ | インスタンスが終了されたか利用不可になった場合にそのインスタンスを置き換えるように設定された Auto Scaling グループ |
Amazon S3 バケット | Elastic Beanstalk の使用時に作成されるソースコード、ログ、その他のアーティファクトの保存場所 |
Amazon CloudWatch アラーム | 環境内のインスタンスの負荷をモニタリングし、負荷が高すぎたり低すぎたりするとトリガーする 2 つの CloudWatch アラーム |
AWS CloudFormation スタック | Elastic Beanstalk はAWS CloudFormation を使用して環境内のリソースを起動し、設定の変更を伝達します |
ドメイン名 | ウェブアプリケーションまでのルートとなるドメイン名であり、subdomain.region.elasticbeanstalk.com の形式です。 |
作成した環境を開く
eb open
サイトの表示が確認できた。
ちなみにこの時点でのディレクトリ構成は以下の通り、config.ymlがあるだけ。
.
├── .elasticbeanstalk
│ └── config.yml
└── .gitignore
branch-defaults:
default:
environment: node-express-env
group_suffix: null
global:
application_name: node-express
branch: null
default_ec2_keyname: null
default_platform: Node.js
default_region: ap-northeast-1
include_git_submodules: true
instance_profile: null
platform_name: null
platform_version: null
profile: eb-cli
repository: null
sc: null
workspace_type: Application
express環境の作成&デプロイ
npm install -g express-generator
express && npm install
option_settings:
aws:elasticbeanstalk:container:nodejs:
NodeCommand: "npm start"
eb deploy
数分後、環境が更新されます。環境が緑色で示されていて準備完了したら、URLを再表示して正しく動作することを確認します。
別環境を作成する
- マネコンから新規作成
- マネコンから既存の環境をクローン
- eb createで作成
開発環境にデプロイして、その後はAWSのマネコンから本番へデプロイなどもできます。
今回はeb create
で作成しました。
eb create node-express-production
これによりマネコンにnode-express-productionが作成されています。
git commitのメッセージを確認&選択して、デプロイをクリック。
node-express-productionを選択すると、無事本番環境にも反映されます。
環境変数を設定する
設定から環境変数を設定することができます。
各環境の読み込み方法については以下のリンクを参照