AWS Elastic BeanstalkをCLIから動かし体験するのは簡単です。操作する時間は5分程度でした。
AWSのスライドにあったサンプルを参考に実施しましたが、若干CLIの操作感が違ったのでまとめてみました。
Elastic Beanstalkとは?は省略します。
まずは動かしたほうが良いと思いましたので概要が記載されている参考スライドのURLは最後に記載しました。
目次
-
- アプリケーションの作成、環境の作成(3分)
-
- コードを修正しデプロイ(1分)
-
- お片付け(1分)
1. アプリケーションの作成、環境の作成(3分)
- Elastic Beanstalk用のCLIをインストールしていない方はインストールします。
- サンプルコードを公式の
awslabs
からクローンします。
# ebcli
$ pip install --upgrade awsebcli
# clone sample code (awslabs)
$ git clone https://github.com/awslabs/eb-node-express-sample.git
$ cd eb-node-express-sample
-
eb init
でアプリケーションを作成していきます。 - 選択肢は基本デフォルトでEnterでOKです。
- コードの配置場所は
CodeCommit
を選択しました。
# Elastic Beanstalk アプリケーションの作成
$ eb init
Select a default region
1) us-east-1 : US East (N. Virginia)
2) us-west-1 : US West (N. California)
3) us-west-2 : US West (Oregon)
4) eu-west-1 : EU (Ireland)
5) eu-central-1 : EU (Frankfurt)
6) ap-south-1 : Asia Pacific (Mumbai)
7) ap-southeast-1 : Asia Pacific (Singapore)
8) ap-southeast-2 : Asia Pacific (Sydney)
9) ap-northeast-1 : Asia Pacific (Tokyo)
10) ap-northeast-2 : Asia Pacific (Seoul)
11) sa-east-1 : South America (Sao Paulo)
12) cn-north-1 : China (Beijing)
13) cn-northwest-1 : China (Ningxia)
14) us-east-2 : US East (Ohio)
15) ca-central-1 : Canada (Central)
16) eu-west-2 : EU (London)
17) eu-west-3 : EU (Paris)
18) eu-north-1 : EU (Stockholm)
19) ap-east-1 : Asia Pacific (Hong Kong)
20) me-south-1 : Middle East (Bahrain)
(default is 3): 9
Enter Application Name
(default is "eb-node-express-sample"):
Application eb-node-express-sample has been created.
Enter Application Name
(default is "eb-node-express-sample"):
Application eb-node-express-sample has been created.
It appears you are using Node.js. Is this correct?
(Y/n): y
Do you wish to continue with CodeCommit? (y/N) (default is n): y
Select a repository
1) icckblog
2) icck
3) [ Create new Repository ]
(default is 3):
Enter Repository Name
(default is "origin"): icck-beanstalk
Successfully created repository: icck-beanstalk
Enter Branch Name
***** Must have at least one commit to create a new branch with CodeCommit *****
(default is "master"):
Successfully created branch: master
Do you want to set up SSH for your instances?
(Y/n): y
Select a keypair.
1) icck-key
2) [ Create new KeyPair ]
(default is 1):
- マネジメントコンソールから見ると、アプリケーションが作成されていることが確認できます。
-
eb create
で作成されたアプリケーション上に環境を作成しデプロイしていきます。 - お試しの場合は、すべてEnterでOKです。
-
Created
のログに注目してください。何が作成されたのかがわかります。
# 環境作成、サンプルコードのデプロイ
$ eb create
Enter Environment Name
(default is eb-node-express-sample-dev):
Enter DNS CNAME prefix
(default is eb-node-express-sample-dev2):
Select a load balancer type
1) classic
2) application
3) network
(default is 2):
Starting environment deployment via CodeCommit
--- Waiting for Application Versions to be pre-processed ---
Finished processing application version app-f535-190912_072400
Setting up default branch
Environment details for: eb-node-express-sample-dev
Application name: eb-node-express-sample
Region: ap-northeast-1
Deployed Version: app-f535-190912_072400
Environment ID: e-dtmeq2z383
Platform: arn:aws:elasticbeanstalk:ap-northeast-1::platform/Node.js running on 64bit Amazon Linux/4.10.2
Tier: WebServer-Standard-1.0
CNAME: eb-node-express-sample-dev2.ap-northeast-1.elasticbeanstalk.com
Updated: 2019-09-11 22:24:12.301000+00:00
Printing Status:
2019-09-11 22:24:10 INFO createEnvironment is starting.
2019-09-11 22:24:12 INFO Using elasticbeanstalk-ap-northeast-1-XXXXXXXXXXXX as Amazon S3 storage bucket for environment data.
2019-09-11 22:24:34 INFO Created target group named: arn:aws:elasticloadbalancing:ap-northeast-1:XXXXXXXXXXXX:targetgroup/awseb-AWSEB-GPAQCKBZJMVS/e4cfeab1d55601ac
2019-09-11 22:24:34 INFO Created security group named: sg-02cccd100da94f25a
2019-09-11 22:24:50 INFO Created security group named: awseb-e-dtmeq2z383-stack-AWSEBSecurityGroup-1N7GST9R175WU
2019-09-11 22:24:50 INFO Created Auto Scaling launch configuration named: awseb-e-dtmeq2z383-stack-AWSEBAutoScalingLaunchConfiguration-1U0A0K88ZUI0F
2019-09-11 22:26:23 INFO Created Auto Scaling group named: awseb-e-dtmeq2z383-stack-AWSEBAutoScalingGroup-BTFZEF3R4W30
2019-09-11 22:26:23 INFO Waiting for EC2 instances to launch. This may take a few minutes.
2019-09-11 22:26:43 INFO Created load balancer named: arn:aws:elasticloadbalancing:ap-northeast-1:XXXXXXXXXXXX:loadbalancer/app/awseb-AWSEB-RCB8AUBQGVCD/1a1baa125599825e
2019-09-11 22:26:58 INFO Created Auto Scaling group policy named: arn:aws:autoscaling:ap-northeast-1:XXXXXXXXXXXX:scalingPolicy:39da1ac4-467e-4f75-9bf0-2ffc278599ae:autoScalingGroupName/awseb-e-dtmeq2z383-stack-AWSEBAutoScalingGroup-BTFZEF3R4W30:policyName/awseb-e-dtmeq2z383-stack-AWSEBAutoScalingScaleDownPolicy-1GV862ZC3IU9S
2019-09-11 22:26:58 INFO Created Auto Scaling group policy named: arn:aws:autoscaling:ap-northeast-1:XXXXXXXXXXXX:scalingPolicy:ea6ca9d9-70e0-4876-a8d1-ccd39f7fc792:autoScalingGroupName/awseb-e-dtmeq2z383-stack-AWSEBAutoScalingGroup-BTFZEF3R4W30:policyName/awseb-e-dtmeq2z383-stack-AWSEBAutoScalingScaleUpPolicy-E1P5UNOBBVLD
2019-09-11 22:26:58 INFO Created CloudWatch alarm named: awseb-e-dtmeq2z383-stack-AWSEBCloudwatchAlarmHigh-156QZDVGO8FLT
2019-09-11 22:27:14 INFO Created Load Balancer listener named: arn:aws:elasticloadbalancing:ap-northeast-1:XXXXXXXXXXXX:listener/app/awseb-AWSEB-RCB8AUBQGVCD/1a1baa125599825e/49b137eaa093e79f
2019-09-11 22:27:29 INFO Created CloudWatch alarm named: awseb-e-dtmeq2z383-stack-AWSEBCloudwatchAlarmLow-WLFI4PMSK7SB
2019-09-11 22:28:30 INFO Application available at eb-node-express-sample-dev2.ap-northeast-1.elasticbeanstalk.com.
2019-09-11 22:28:30 INFO Successfully launched environment: eb-node-express-sample-dev
- マネジメントコンソールから見ると、環境が作成されていることが確認できます。
-
eb open
でアプリケーションのURLでブラウザ表示されます。まずはアプリ完成です!
# ブラウザ表示
$ eb open
2. コードを修正しデプロイ(1分)
- 画面を簡単に修正し、デプロイをする流れを見ていきます。
-
index.ejs
の中のComming...
の後ろにin Japan
と追記してgitにpushしました。 -
eb deploy
でCodeCommit
にpushされた内容がデプロイされます。
# UIを変更してデプロイ
$ vim ./views/index.ejs
$ git commit -am "modefy UI"
$ eb deploy
Starting environment deployment via CodeCommit
--- Waiting for Application Versions to be pre-processed ---
Finished processing application version app-6635-190912_073920
2019-09-11 22:39:32 INFO Environment update is starting.
2019-09-11 22:39:38 INFO Deploying new version to instance(s).
2019-09-11 22:40:08 INFO New application version was deployed to running EC2 instances.
2019-09-11 22:40:08 INFO Environment update completed successfully.
# ブラウザ表示
$ eb open
- 表示画面が変更されました。
3. お片付け(1分)
- 最後に今回作成したものを全て削除していきます。
-
eb terminate --all
でアプリケーション名を入力して削除します。
# アプリケーションと環境の削除
$ eb terminate --all
The application "eb-node-express-sample" and all its resources will be deleted.
This application currently has the following:
Running environments: 1
Configuration templates: 0
Application versions: 2
To confirm, type the application name: eb-node-express-sample
Removing application versions from s3.
2019-09-11 22:43:23 INFO deleteApplication is starting.
2019-09-11 22:43:24 INFO Invoking Environment Termination workflows.
2019-09-11 22:46:37 INFO The environment termination step is done.
2019-09-11 22:46:38 INFO The application has been deleted successfully.
- CodeCommitは削除されないため、別途削除します。
# CodeCommitリポジトリの削除
$ aws codecommit delete-repository --repository-name icck-beanstalk
さいごに
-
EBコマンドリファレンスにより多くの便利コマンドが記載されています。
eb list
やeb ssh
などかなり便利なコマンドがたくさんあります。 - 今回は実施していませんが、
CodePipeline
を利用するとpush->deployを自動化することが出来ます。 - 最後に参考にしたスライドです。こちらで概要を正しくおさえることができます。
- 読んで頂きありがとうございました。