Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Stop and Start Elastic Beanstalk Services

I wanted to know if there is an option to STOP Amazon Elastic Beanstalk as an atomic unit as I can do with EC2 servers instead of going through each service (e.g. load balancer, EC2..) and STOP (and START) them independently?

like image 480
Idan Shechter Avatar asked Dec 05 '13 10:12

Idan Shechter


People also ask

What is service role in Elastic Beanstalk?

A service role is the IAM role that Elastic Beanstalk assumes when calling other services on your behalf. For example, Elastic Beanstalk uses a service role when it calls Amazon Elastic Compute Cloud (Amazon EC2), Elastic Load Balancing, and Amazon EC2 Auto Scaling APIs to gather information.

Is Elastic Beanstalk good for Microservices?

You can use Elastic Beanstalk to deploy your microservices. When you use Elastic Beanstalk, in the backend Elastic Beanstalk creates the required EC2 instances and Load balancers to run and deploy your application. Hence you don't need to create an EC2 instance.


2 Answers

The EB command line interface has an eb stop command. Here is a little bit about what the command actually does:

The eb stop command deletes the AWS resources that are running your application (such as the ELB and the EC2 instances). It however leaves behind all of the application versions and configuration settings that you had deployed, so you can quickly get started again. Eb stop is ideal when you are developing and testing your application and don’t need the AWS resources running over night. You can get going again by simply running eb start.

EDIT:

As stated in the below comment, this is no longer a command in the new eb-cli.

like image 146
EFeit Avatar answered Oct 08 '22 22:10

EFeit


If you have a load-balanced environment you can try the following trick

$ aws autoscaling update-auto-scaling-group \
--auto-scaling-group-name my-auto-scaling-group \
--min-size 0 --max-size 0 --desired-capacity 0

It will remove all instances from the environment but won't delete the environment itself. Unfortunately you still will pay for elastic load balancer. But usually EC2 is the most "heavy" part.

Does it work for 0?

yes, it does

$ aws autoscaling describe-auto-scaling-groups --region us-east-1 \
--auto-scaling-group-name ASG_NAME \
--query "AutoScalingGroups[].{DesiredCapacity:DesiredCapacity,MinSize:MinSize,MaxSize:MaxSize}"

[
    {
        "MinSize": 2, 
        "MaxSize": 2, 
        "DesiredCapacity": 2
    }
]

$ aws autoscaling update-auto-scaling-group --region us-east-1 \
--auto-scaling-group-name ASG_NAME \
--min-size 0 --max-size 0 --desired-capacity 0

$ aws autoscaling describe-auto-scaling-groups --region us-east-1 \
--auto-scaling-group-name ASG_NAME \
--query "AutoScalingGroups[].{DesiredCapacity:DesiredCapacity,MinSize:MinSize,MaxSize:MaxSize}"

[
    {
        "MinSize": 0, 
        "MaxSize": 0, 
        "DesiredCapacity": 0
    }
]

And then you can check environment status

$ eb status -v
Environment details for: test
  Application name: TEST
  Region: us-east-1
  Deployed Version: app-170925_181953
  Environment ID: e-1234567890
  Platform: arn:aws:elasticbeanstalk:us-east-1::platform/Multi-container Docker running on 64bit Amazon Linux/2.7.4
  Tier: WebServer-Standard
  CNAME: test.us-east-1.elasticbeanstalk.com
  Updated: 2017-09-25 15:23:22.980000+00:00
  Status: Ready
  Health: Grey
  Running instances: 0

In the beanstalk webconsole you will see the following message

INFO Environment health has transitioned from Ok to No Data. 
There are no instances. Auto Scaling group desired capacity is set to zero.
like image 39
ALex_hha Avatar answered Oct 09 '22 00:10

ALex_hha