File size: 44,331 Bytes
49a5af2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9cab4b9
 
 
49a5af2
9cab4b9
49a5af2
9cab4b9
49a5af2
9cab4b9
49a5af2
9cab4b9
 
 
 
 
 
 
 
 
 
 
 
 
 
49a5af2
9cab4b9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49a5af2
9cab4b9
49a5af2
9cab4b9
49a5af2
9cab4b9
 
49a5af2
9cab4b9
 
 
 
 
49a5af2
9cab4b9
 
 
 
 
 
49a5af2
9cab4b9
 
 
49a5af2
9cab4b9
49a5af2
9cab4b9
49a5af2
9cab4b9
49a5af2
9cab4b9
49a5af2
9cab4b9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49a5af2
9cab4b9
49a5af2
9cab4b9
49a5af2
9cab4b9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49a5af2
9cab4b9
49a5af2
9cab4b9
49a5af2
9cab4b9
 
 
 
49a5af2
9cab4b9
 
 
 
 
 
 
49a5af2
9cab4b9
49a5af2
9cab4b9
49a5af2
9cab4b9
49a5af2
9cab4b9
49a5af2
9cab4b9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49a5af2
9cab4b9
49a5af2
9cab4b9
49a5af2
9cab4b9
 
 
 
 
 
 
 
 
 
 
 
49a5af2
9cab4b9
 
 
 
 
 
 
49a5af2
9cab4b9
49a5af2
9cab4b9
49a5af2
9cab4b9
49a5af2
9cab4b9
 
49a5af2
9cab4b9
 
49a5af2
9cab4b9
 
49a5af2
9cab4b9
 
49a5af2
9cab4b9
 
49a5af2
9cab4b9
 
49a5af2
9cab4b9
49a5af2
9cab4b9
49a5af2
9cab4b9
 
49a5af2
9cab4b9
49a5af2
9cab4b9
 
 
 
 
49a5af2
9cab4b9
49a5af2
9cab4b9
49a5af2
9cab4b9
49a5af2
9cab4b9
49a5af2
9cab4b9
49a5af2
9cab4b9
 
49a5af2
9cab4b9
 
49a5af2
9cab4b9
 
49a5af2
9cab4b9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49a5af2
 
 
 
 
9cab4b9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49a5af2
 
 
 
 
9cab4b9
 
 
 
49a5af2
9cab4b9
49a5af2
9cab4b9
49a5af2
9cab4b9
49a5af2
9cab4b9
49a5af2
9cab4b9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49a5af2
9cab4b9
49a5af2
9cab4b9
49a5af2
9cab4b9
49a5af2
9cab4b9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49a5af2
9cab4b9
49a5af2
9cab4b9
49a5af2
9cab4b9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49a5af2
 
 
 
 
9cab4b9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49a5af2
9cab4b9
49a5af2
9cab4b9
49a5af2
9cab4b9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49a5af2
9cab4b9
49a5af2
9cab4b9
49a5af2
9cab4b9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49a5af2
9cab4b9
 
 
 
49a5af2
9cab4b9
49a5af2
9cab4b9
49a5af2
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
AWS Elastic Beanstalk

Developer Guide

What is AWS Elastic Beanstalk?
With Elastic Beanstalk you can deploy web applications into the AWS Cloud on a variety of
supported platforms. You build and deploy your applications. Elastic Beanstalk provisions Amazon
EC2 instances, configures load balancing, sets up health monitoring, and dynamically scales your
environment.
In addition to web server environments, Elastic Beanstalk also provides worker environments which
you can use to process messages from an Amazon SQS queue, useful for asynchronous or longrunning tasks. For more information, see Elastic Beanstalk worker environments.

1

AWS Elastic Beanstalk

Developer Guide

Supported platforms
Elastic Beanstalk supports applications developed in Go, Java, .NET, Node.js, PHP, Python,
and Ruby. Elastic Beanstalk also supports Docker containers, where you can choose your own
programming language and application dependencies. When you deploy your application, Elastic
Supported platforms

2

AWS Elastic Beanstalk

Developer Guide

Beanstalk builds the selected supported platform version and provisions one or more AWS
resources, such as Amazon EC2 instances, in your AWS account to run your application.
You can interact with Elastic Beanstalk through the Elastic Beanstalk console, the AWS Command
Line Interface (AWS CLI), or the EB CLI, a high-level command line tool designed specifically for
Elastic Beanstalk.
You can perform most deployment tasks, such as changing the size of your fleet of Amazon
EC2 instances or monitoring your application, directly from the Elastic Beanstalk web interface
(console).
To learn more about how to deploy a sample web application using Elastic Beanstalk, see Learn
how to get started with Elastic Beanstalk.

Application deploy workflow
To use Elastic Beanstalk, you create an application, then upload your application source bundle
to Elastic Beanstalk. Next, you provide information about the application, and Elastic Beanstalk
automatically launches an environment and creates and configures the AWS resources needed to
run your code.
After you create and deploy your application and your environment is launched, you can manage
your environment and deploy new application versions. Information about the application—
including metrics, events, and environment status—is made available through the Elastic Beanstalk
console, APIs, and Command Line Interfaces.
The following diagram illustrates Elastic Beanstalk workflow:

Pricing
There is no additional charge for Elastic Beanstalk. You pay only for the underlying AWS resources
that your application consumes. For details about pricing, see the Elastic Beanstalk service detail
page.
Application deploy workflow

3

AWS Elastic Beanstalk

Developer Guide

Next steps
We recommend the tutorial, Getting started tutorial, to start using Elastic Beanstalk. The tutorial
steps you through creating, viewing, and updating a sample Elastic Beanstalk application.

Next steps

4

AWS Elastic Beanstalk

Developer Guide

Learn how to get started with Elastic Beanstalk
With Elastic Beanstalk you can deploy, monitor, and scale web applications and services. Typically,
you will develop your code locally then deploy it to Amazon EC2 server instances. Theses instances,
also called environments, run on platforms that can be upgraded through the AWS console or the
command line.
To get started, we recommend deploying a pre-built sample application directly from the console.
Then, you can learn how to develop locally and deploy from the command line in the the section
called “QuickStart for PHP”.
There is no cost for using Elastic Beanstalk, but standard fees do apply to AWS resources that you
create during the course of this tutorial until you delete them at the end. The total charges are
typically less than a dollar. For information about how to minimize charges, see AWS free tier.
After completing this tutorial, you will understand the basics of creating, configuring, deploying,
updating, and monitoring an Elastic Beanstalk application with environments running on Amazon
EC2 instances.
Estimated duration: 35-45 minutes

5

AWS Elastic Beanstalk

Developer Guide

What you will build
Your first Elastic Beanstalk application will consist of a single Amazon EC2 environment running
the PHP sample on a PHP managed platform.
Elastic Beanstalk application
An Elastic Beanstalk application is a container for Elastic Beanstalk components, including
environments where your application code runs on platforms provided and managed by Elastic
Beanstalk, or in custom containers that you provide.
Environment
An Elastic Beanstalk environment is a collection of AWS resources running together including
an Amazon EC2 instance. When you create an environment, Elastic Beanstalk provisions the
necessary resources into your AWS account.
Platform
A platform is a combination of an operating system, programming language runtime, web
server, application server, and additional Elastic Beanstalk components. Elastic Beanstalk
provides manged platforms, or you can provide your own platform in a container.
Elastic Beanstalk supports platforms for different programming languages, application servers,
and Docker containers. When you create an environment, you must choose the platform. You can
upgrade the platform, but you cannot change the platform for an environment.
Switching platforms
If you need to change programming languages, you must create and switch to a new
environment on a different platform.

Step 1 - Create an application
To create your example application, you'll use the Create application console wizard. It creates an
Elastic Beanstalk application and launches an environment within it.
Reminder: an environment is a collection of AWS resources required to run your application code.
What you will build

7

AWS Elastic Beanstalk

Developer Guide

To create an application
1.

Open the Elastic Beanstalk console.

2.

Choose Create application.

3.

For Application name enter getting-started-app.

The console provides a six step process for creating an application and configuring an environment.
For this quick start, you'll only need to focus on the first two steps, then you can skip ahead to
review and create your application and environment.
To configure an environment
1.

In Environment information, for Environment name enter: gs-app-web-env.

2.

For Platform, choose the PHP platform.

3.

For Application code and Presets, accept the defaults (Sample application and Single instance),
then choose Next.

To configure service access
Next, you need two roles. A service role allows Elastic Beanstalk to monitor your EC2 instances and
upgrade you environment’s platform. An EC2 instance profile role permits tasks such as writing logs
and interacting with other services.
To create the Service role
1.

For Service role, choose Create role.

2.

For Trusted entity type, choose AWS service.

Step 1 - Create an application

8

AWS Elastic Beanstalk

3.

For Use case, choose Elastic Beanstalk – Environment.

4.

Choose Next.

5.

Verify that Permissions policies include the following, then choose Next:

Developer Guide

• AWSElasticBeanstalkEnhancedHealth
• AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy
6.

Choose Create role.

7.

Return to the Configure service access tab, refresh the list, then select the newly created
service role.

To create the EC2 instance profile
1.

Choose Create role.

2.

For Trusted entity type, choose AWS service.

3.

For Use case, choose Elastic Beanstalk – Compute.

4.

Choose Next.

5.

Verify that Permissions policies include the following, then choose Next:
• AWSElasticBeanstalkWebTier
• AWSElasticBeanstalkWorkerTier
• AWSElasticBeanstalkMulticontainerDocker

6.

Choose Create role.

7.

Return to the Configure service access tab, refresh the list, then select the newly created EC2
instance profile.

To finish configuring and creating your application
1.

Skip over EC2 key pair.
We'll show you other ways to connect to your Amazon EC2 instances through the Console.

2.

Choose Skip to Review to move over several optional steps.
Optional steps: networking, databases, scaling parameters, advanced configuration for updates,
monitoring, and logging.

3.

On the Review page which shows a summary of your choices, choose Submit.

Step 1 - Create an application

9

AWS Elastic Beanstalk

Developer Guide

Congratulations!
You have created an application and configured an environment! Now you need to wait for
the resources to deploy.

Step 2 - Deploy your application
When you create an application, Elastic Beanstalk sets up the environments for you. You just need
to sit back and wait.
The initial deploy can take up to five minutes to create the resources. Updates will take less time
because only changes will be deployed to your stack.

When you create the example application, Elastic Beanstalk creates the following resources:
• EC2 instance – An Amazon EC2 virtual machine configured to run web apps on the platform you
selected.
Every platform runs a different set of software, configuration files, and scripts to support a
specific language version, framework, web container, or combination thereof. Most platforms
use either Apache or nginx as a reverse proxy to forward web traffic to your web app, serve static
assets, and generate access and error logs. You can connect to your Amazon EC2 instances to
view configuration and logs.

Step 2 - Deploy your application

10

AWS Elastic Beanstalk

Developer Guide

• Instance security group – An Amazon EC2 security group will be created to allow incoming
requests on port 80, so inbound traffic on a load balancer can reach your web app.
• Amazon S3 bucket – A storage location for your source code, logs, and other artifacts.
• Amazon CloudWatch alarms – Two CloudWatch alarms are created to monitor the load on your
instances and scale them up or down as needed.
• AWS CloudFormation stack – Elastic Beanstalk uses AWS CloudFormation to deploy the
resources in your environment and make configuration changes. You can view the resource
definition template in the AWS CloudFormation console.
• Domain name – A domain name that routes to your web app in the form :
subdomain.region.elasticbeanstalk.com.
Elastic Beanstalk creates your application, launches an environment, makes an application version,
then deploys your code into the environment. During the process, the console tracks progress and
displays event status in the Events tab.

Step 2 - Deploy your application

11

AWS Elastic Beanstalk

Developer Guide

Your application is ready!
After you see your application health change to Ok, you can browse to your web
application's website.

Step 3 - Explore the Elastic Beanstalk environment
You'll start exploring your deployed application environment from the Environment overview
page in the console.
To view the environment and your application
1.

Open the Elastic Beanstalk console, and in the Regions list, select your AWS Region.

2.

In the navigation pane, choose Environments, and then choose the name of your environment
from the list.

3.

Choose Go to environment to browse your application!
(You can also choose the URL link listed for Domain to browse your application.)
The connection will be HTTP (not HTTPS), so you might see a warning in your browser.

Step 3 - Explore the environment

13

AWS Elastic Beanstalk

Developer Guide

Back in the Elastic Beanstalk console, the upper portion shows the Environment overview with
top level information about your environment, including name, domain URL, current health status,
running version, and the platform that the application is running on. The running version and
platform are essential for troubleshooting your currently deployed application.
After the overview pane, you will see recent environment activity in the Events tab.

Step 3 - Explore the environment

14

AWS Elastic Beanstalk

Developer Guide

While Elastic Beanstalk creates your AWS resources and launches your application, the environment
is in a Pending state. Status messages about launch events are continuously added to the list of
Events .
The environment's Domain is the URL for your deployed web application. In the left navigation
pane, Go to environment also takes you to your domain. Similarly, the left navigation pane has
links that correspond to the various tabs.
Take note of the Configuration link in the left navigation pane. which displays a summary of
environment configuration option values, grouped by category.

Environment configuration settings
Take note of the Configuration link in the left navigation pane. You can view and edit
detailed environment settings, such as service roles, networking, database, scaling,
managed platform updates, memory, health monitoring, rolling deployment, logging, and
more!

The various tabs contain detailed information about your environment:

Step 3 - Explore the environment

15

AWS Elastic Beanstalk

Developer Guide

Understanding concepts in Elastic Beanstalk
Becoming familiar with the concepts and terms will help you gain an understanding needed for
deploying your applications with Elastic Beanstalk.

142

AWS Elastic Beanstalk

Developer Guide

Application
An Elastic Beanstalk application is a container for Elastic Beanstalk components, including
environments, versions, and environment configurations. Within an Elastic Beanstalk application,
you manage all the resources relevant to running your code.

Application version
In Elastic Beanstalk, an application version refers to a specific, labeled iteration of deployable code
for a web application. An application version points to an Amazon Simple Storage Service (Amazon
S3) object that contains the deployable code, such as a Java WAR file.
An application version is part of an application. Applications can have many versions and each
application version is unique. In a running environment, you can deploy any application version you
already uploaded to the application, or you can upload and immediately deploy a new application
version. For example, you could upload multiple application versions to test differences between
them.

Environment
An environment is a collection of AWS resources running an application version. Each environment
runs only one application version at a time, however, you can run the same application version
or different application versions in many environments simultaneously. When you create an
environment, Elastic Beanstalk provisions the resources needed in your AWS account to run the
application version you specified.

Environment tier
When you launch an Elastic Beanstalk environment, you first choose an environment tier. The
environment tier designates the type of application that the environment runs and determines
what resources Elastic Beanstalk provisions to support it. An application that serves HTTP requests
runs in a web server environment tier. A backend environment that pulls tasks from an Amazon
Simple Queue Service (Amazon SQS) queue runs in a worker environment tier.

Environment configuration
An environment configuration identifies a collection of parameters and settings that define
how an environment and its associated resources behave. When you update an environment’s
Application

143

AWS Elastic Beanstalk

Developer Guide

configuration settings, Elastic Beanstalk automatically applies the changes to existing resources or
deletes and deploys new resources (depending on the type of change).

Saved configuration
A saved configuration is a template that you can use as a starting point for creating unique
environment configurations. You can create and modify saved configurations, and apply them to
environments, using the Elastic Beanstalk console, EB CLI, AWS CLI, or API. The API and the AWS
CLI refer to saved configurations as configuration templates.

Platform
A platform is a combination of an operating system, programming language runtime, web server,
application server, and Elastic Beanstalk components. You design and target your web application
to a platform. Elastic Beanstalk provides a variety of platforms on which you can build your
applications.
For details, see Elastic Beanstalk platforms.

Elastic Beanstalk web server environments
The following diagram shows an example Elastic Beanstalk architecture for a web server
environment tier, and shows how the components in that type of environment tier work together.

Saved configuration

144

AWS Elastic Beanstalk

Developer Guide

The environment is the heart of the application. In the diagram, the environment is shown within
the top-level solid line. When you create an environment, Elastic Beanstalk provisions the resources
required to run your application. AWS resources created for an environment include one elastic
load balancer (ELB in the diagram), an Auto Scaling group, and one or more Amazon Elastic
Compute Cloud (Amazon EC2) instances.
Every environment has a CNAME (URL) that points to a load balancer. The environment
has a URL, such as myapp.us-west-2.elasticbeanstalk.com. This URL is aliased in
Amazon Route 53 to an Elastic Load Balancing URL—something like abcdef-123456.uswest-2.elb.amazonaws.com—by using a CNAME record. Amazon Route 53 is a highly available
and scalable Domain Name System (DNS) web service. It provides secure and reliable routing to
your infrastructure. Your domain name that you registered with your DNS provider will forward
requests to the CNAME.
The load balancer sits in front of the Amazon EC2 instances, which are part of an Auto Scaling
group. Amazon EC2 Auto Scaling automatically starts additional Amazon EC2 instances to
accommodate increasing load on your application. If the load on your application decreases,
Amazon EC2 Auto Scaling stops instances, but always leaves at least one instance running.
The software stack running on the Amazon EC2 instances is dependent on the container type.
A container type defines the infrastructure topology and software stack to be used for that
environment. For example, an Elastic Beanstalk environment with an Apache Tomcat container uses
the Amazon Linux operating system, Apache web server, and Apache Tomcat software. For a list of
supported container types, see Elastic Beanstalk supported platforms. Each Amazon EC2 instance
that runs your application uses one of these container types. In addition, a software component
called the host manager (HM) runs on each Amazon EC2 instance. The host manager is responsible
for the following:
• Deploying the application
• Aggregating events and metrics for retrieval via the console, the API, or the command line
• Generating instance-level events
• Monitoring the application log files for critical errors
• Monitoring the application server
• Patching instance components
• Rotating your application's log files and publishing them to Amazon S3

Web server environments

145

AWS Elastic Beanstalk

Developer Guide

The host manager reports metrics, errors and events, and server instance status, which are
available via the Elastic Beanstalk console, APIs, and CLIs.
The Amazon EC2 instances shown in the diagram are part of one security group. A security group
defines the firewall rules for your instances. By default, Elastic Beanstalk defines a security
group, which allows everyone to connect using port 80 (HTTP). You can define more than one
security group. For example, you can define a security group for your database server. For more
information about Amazon EC2 security groups and how to configure them for your Elastic
Beanstalk application, see EC2 security groups.

Elastic Beanstalk worker environments
AWS resources created for a worker environment tier include an Auto Scaling group, one or more
Amazon EC2 instances, and an IAM role. For the worker environment tier, Elastic Beanstalk also
creates and provisions an Amazon SQS queue if you don’t already have one. When you launch a
worker environment, Elastic Beanstalk installs the necessary support files for your programming
language of choice and a daemon on each EC2 instance in the Auto Scaling group. The daemon
reads messages from an Amazon SQS queue. The daemon sends data from each message that
it reads to the web application running in the worker environment for processing. If you have
multiple instances in your worker environment, each instance has its own daemon, but they all read
from the same Amazon SQS queue.
The following diagram shows the different components and their interactions across environments
and AWS services.

Worker environments

146

AWS Elastic Beanstalk

Developer Guide

Amazon CloudWatch is used for alarms and health monitoring. For more information, go to Basic
health reporting.
For details about how the worker environment tier works, see Elastic Beanstalk worker
environments.

Design considerations for your Elastic Beanstalk applications
Because applications deployed using AWS Elastic Beanstalk run on AWS Cloud resources, you
should keep several configuration factors in mind to optimize your applications: scalability, security,
persistent storage, fault tolerance, content delivery, software updates and patching, and connectivity.
Each of these are covered separately in this topic. For a comprehensive list of technical AWS
whitepapers, covering topics such as architecture, as well as security and economics, see AWS Cloud
Computing Whitepapers.

Design considerations

147

AWS Elastic Beanstalk

Developer Guide

Scalability
When operating in a physical hardware environment, in contrast to a cloud environment, you can
approach scalability in one of either two ways. Either you can scale up through vertical scaling
or you can scale out through horizontal scaling. The scale-up approach requires that you invest
in powerful hardware, which can support the increasing demands of your business. The scaleout approach requires that you follow a distributed model of investment. As such, your hardware
and application acquisitions can be more targeted, your data sets are federated, and your design
is service oriented. The scale-up approach can be expensive, and there's also the risk that your
demand could outgrow your capacity. In this regard, the scale-out approach is usually more
effective. However, when using it, you must be able to predict demand at regular intervals and
deploy infrastructure in chunks to meet that demand. As a result, this approach can often lead to
unused capacity and might require some careful monitoring.
By migrating to the cloud, you can make your infrastructure align well with demand by leveraging
the elasticity of cloud. Elasticity helps to streamline resource acquisition and release. With it,
your infrastructure can rapidly scale in and scale out as demand fluctuates. To use it, configure
your Auto Scaling settings to scale up or down based on the metrics for the resources in your
environment. For example, you can set metrics such as server utilization or network I/O. You can
use Auto Scaling for compute capacity to be added automatically whenever usage rises and for it
to be removed whenever usage drops. You can publish system metrics (for example, CPU, memory,
disk I/O, and network I/O) to Amazon CloudWatch. Then, you can use CloudWatch to configure
alarms to trigger Auto Scaling actions or send notifications based on these metrics. For instructions
on how to configure Auto Scaling, see Auto Scaling your Elastic Beanstalk environment instances.
We also recommend that you design all your Elastic Beanstalk applications as stateless as possible,
using loosely coupled, fault-tolerant components that can be scaled out as needed. For more
information about designing scalable application architectures for AWS, see AWS Well-Architected
Framework.

Security
Security on AWS is a shared responsibility. Amazon Web Services protects the physical resources
in your environment and ensures that the Cloud is a safe place for you to run applications. You're
responsible for the security of data coming in and out of your Elastic Beanstalk environment and
the security of your application.
Configure SSL to protect information that flows between your application and clients. To configure
SSL, you need a free certificate from AWS Certificate Manager (ACM). If you already have a
Scalability

148

AWS Elastic Beanstalk

Developer Guide

certificate from an external certificate authority (CA), you can use ACM to import that your
certificate. Otherwise, you can import it using the AWS CLI.
If ACM isn't available in your AWS Region, you can purchase a certificate from an external CA, such
as VeriSign or Entrust. Then, use the AWS Command Line Interface (AWS CLI) to upload a thirdparty or self-signed certificate and private key to AWS Identity and Access Management (IAM). The
public key of the certificate authenticates your server to the browser. It also serves as the basis for
creating the shared session key that encrypts the data in both directions. For instructions on how
to create, upload, and assign an SSL certificate to your environment, see Configuring HTTPS for
your Elastic Beanstalk environment.
When you configure an SSL certificate for your environment, data is encrypted between the client
and the Elastic Load Balancing load balancer for your environment. By default, encryption is
terminated at the load balancer, and traffic between the load balancer and Amazon EC2 instances
is unencrypted.

Persistent storage
Elastic Beanstalk applications run on Amazon EC2 instances that have no persistent local storage.
When the Amazon EC2 instances terminate, the local file system isn't saved. New Amazon EC2
instances start with a default file system. We recommend that you configure your application to
store data in a persistent data source. AWS offers a number of persistent storage services that you
can use for your application. The following table lists them.
Storage service

Service documentation

Elastic Beanstalk integration

Amazon S3

Amazon Simple Storage
Service Documentation

Using Elastic Beanstalk with
Amazon S3

Amazon Elastic File
System

Amazon Elastic File System
Documentation

Using Elastic Beanstalk with
Amazon Elastic File System

Amazon Elastic Block
Store

Amazon Elastic Block Store

Amazon DynamoDB

Amazon DynamoDB
Documentation

Persistent storage

Feature Guide: Elastic Block
Store
Using Elastic Beanstalk with
Amazon DynamoDB
149

AWS Elastic Beanstalk

Developer Guide

Storage service

Service documentation

Elastic Beanstalk integration

Amazon Relational
Database Service (RDS)

Amazon Relational Database
Service Documentation

Using Elastic Beanstalk with
Amazon RDS

Note
Elastic Beanstalk creates a webapp user for you to set up as the owner of application
directories on EC2 instances. For Amazon Linux 2 platform versions that are released on
or after Feburary 3, 2022, Elastic Beanstalk assigns the webapp user a uid (user id) and gid
(group id) value of 900 for new environments. It does the same for existing environments
following a platform version update. This approach keeps consistent access permission for
the webapp user to permanent file system storage.
In the unlikely situation that another user or process is already using 900, the operating
system defaults the webapp user uid and gid to another value. Run the Linux command
id webapp on your EC2 instances to verify the uid and gid values that are assigned to the
webapp user.

Fault tolerance
As a rule of thumb, you should be a pessimist when designing architecture for the cloud. Leverage
the elasticity that it offers. Always design, implement, and deploy for automated recovery from
failure. Use multiple Availability Zones for your Amazon EC2 instances and for Amazon RDS.
Availability Zones are conceptually like logical data centers. Use Amazon CloudWatch to get more
visibility into the health of your Elastic Beanstalk application and take appropriate actions in case
of hardware failure or performance degradation. Configure your Auto Scaling settings to maintain
your fleet of Amazon EC2 instances at a fixed size so that unhealthy Amazon EC2 instances are
replaced by new ones. If you're using Amazon RDS, then set the retention period for backups, so
that Amazon RDS can perform automated backups.

Content delivery
When users connect to your website, their requests may be routed through a number of individual
networks. As a result, users might experience poor performance due to high latency. Amazon
CloudFront can help ameliorate latency issues by distributing your web content, such as images
and video, across a network of edge locations around the world. Users' requests are routed to the
Fault tolerance

150

AWS Elastic Beanstalk

Developer Guide

nearest edge location, so content is delivered with the best possible performance. CloudFront
works seamlessly with Amazon S3, which durably stores the original, definitive versions of your
files. For more information about Amazon CloudFront, see the Amazon CloudFront Developer
Guide.

Software updates and patching
AWS Elastic Beanstalk regularly releases platform updates to provide fixes, software updates,
and new features. Elastic Beanstalk offers several options to handle platform updates. With
managed platform updates your environment automatically upgrades to the latest version of a
platform during a scheduled maintenance window while your application remains in service. For
environments created on November 25, 2019 or later using the Elastic Beanstalk console, managed
updates are enabled by default whenever possible. You can also manually initiate updates using
the Elastic Beanstalk console or EB CLI.

Connectivity
Elastic Beanstalk needs to be able to connect to the instances in your environment to complete
deployments. When you deploy an Elastic Beanstalk application inside an Amazon VPC, the
configuration required to enable connectivity depends on the type of Amazon VPC environment
you create:
• For single-instance environments, no additional configuration is required. This is because, with
these environments, Elastic Beanstalk assigns each Amazon EC2 instance a public Elastic IP
address that enables the instance to communicate directly with the internet.
• For load-balanced, scalable environments in an Amazon VPC with both public and private
subnets, you must do the following:
• Create a load balancer in the public subnet to route inbound traffic from the internet to the
Amazon EC2 instances.
• Create a network address translation (NAT) device to route outbound traffic from the Amazon
EC2 instances in private subnets to the internet.
• Create inbound and outbound routing rules for the Amazon EC2 instances inside the private
subnet.
• If you're using a NAT instance, configure the security groups for the NAT instance and Amazon
EC2 instances to enable internet communication.
• For a load-balanced, scalable environment in an Amazon VPC that has one public subnet, no
additional configuration is required. This is because, with this environment, your Amazon EC2
Software updates and patching

151

AWS Elastic Beanstalk

Developer Guide

instances are configured with a public IP address that enables the instances to communicate with
the internet.
For more information about using Elastic Beanstalk with Amazon VPC, see Using Elastic Beanstalk
with Amazon VPC.

Connectivity

152

AWS Elastic Beanstalk

Developer Guide

Elastic Beanstalk platforms
AWS Elastic Beanstalk provides a variety of platforms on which you can build your applications.
You design your web application to one of these platforms, and Elastic Beanstalk deploys your
code to the platform version you selected to create an active application environment.
Elastic Beanstalk provides platforms for different programming languages, application servers, and
Docker containers. Some platforms have multiple concurrently-supported versions.
Topics
• Elastic Beanstalk platforms glossary
• Shared responsibility model for Elastic Beanstalk platform maintenance
• Elastic Beanstalk platform support policy
• Elastic Beanstalk platform release schedule
• Elastic Beanstalk supported platforms
• Elastic Beanstalk Linux platforms
• Extending Elastic Beanstalk Linux platforms

Elastic Beanstalk platforms glossary
Following are key terms related to AWS Elastic Beanstalk platforms and their lifecycle.
Runtime
The programming language-specific runtime software (framework, libraries, interpreter, vm,
etc.) required to run your application code.
Elastic Beanstalk Components
Software components that Elastic Beanstalk adds to a platform to enable Elastic Beanstalk
functionality. For example, the enhanced health agent is necessary for gathering and reporting
health information.
Platform
A combination of an operating system (OS), runtime, web server, application server, and
Elastic Beanstalk components. Platforms provide components that are available to run your
application.
Platforms glossary

742

AWS Elastic Beanstalk

Developer Guide

Platform Version
A combination of specific versions of an operating system (OS), runtime, web server, application
server, and Elastic Beanstalk components. You create an Elastic Beanstalk environment based
on a platform version and deploy your application to it.
A platform version has a semantic version number of the form X.Y.Z, where X is the major
version, Y is the minor version, and Z is the patch version.
A platform version can be in one of the following states:
• Recommended – The latest platform version in a supported platform branch. This version
contains the most up-to-date components and is recommended for use in production
environments.
• Not Recommended – Any platform version that is not the latest version in its platform
branch. While these versions may remain functional, we strongly recommend updating to
the latest platform version. You can use managed platform updates to help stay up-to-date
automatically.
You can verify if a platform version is recommended using the AWS CLI command describeplatform-version and checking the PlatformLifecycleState field.
Platform Branch
A line of platform versions sharing specific (typically major) versions of some of their
components, such as the operating system (OS), runtime, or Elastic Beanstalk components. For
example: Python 3.13 running on 64bit Amazon Linux 2023; IIS 10.0 running on 64bit Windows
Server 2025. Platform branches receive updates in the form of new platform versions. Each
successive platform version in a branch is an update to the previous one.
The recommended version in each supported platform branch is available to you
unconditionally for environment creation. A previous platform version is available to you if you
were using an environment with it at the time the platform version was superceded by a new
platform version. Previous platform versions lack the most up-to-date components and aren't
recommended for use.
A platform branch can be in one of the following states:
• Supported – A current platform branch. It consists entirely of supported components.
Supported components have not reached End of Life (EOL), as designated by their
suppliers. It receives ongoing platform updates, and is recommended for use in production
Platforms glossary

743

AWS Elastic Beanstalk

Developer Guide

environments. For a list of supported platform branches, see Elastic Beanstalk supported
platforms in the AWS Elastic Beanstalk Platforms guide.
• Beta – A preview, pre-release platform branch. It's experimental in nature. It may receive
ongoing platform updates for a while, but has no long-term support. A beta platform branch
isn't recommended for use in production environments. Use it only for evaluation. For a list
of beta platform branches, see Elastic Beanstalk Platform Versions in Public Beta in the AWS
Elastic Beanstalk Platforms guide.
• Deprecated – A platform branch where one or more components (such as the runtime or
operating system) are approaching End of Life (EOL) or have reached EOL, as designated
by their suppliers. While a deprecated platform branch continues to receive new platform
versions until its retirement date, components that have reached EOL don't receive updates.
For example, if a runtime version reaches EOL, the platform branch will be marked as
deprecated but will continue to receive operating system updates until the platform branch
retirement date. The platform branch will not continue to receive updates to the EOL runtime
version. A deprecated platform branch isn't recommended for use.
• Retired – A platform branch that no longer receives any updates. Retired platform branches
aren't available to create new Elastic Beanstalk environments using the Elastic Beanstalk
console. If your environment uses a retired platform branch, you must update to a supported
platform branch to continue receiving updates. A retired platform branch isn't recommended
for use. For more details about retired platform branches, see the section called “Platform
support policy”. For a list of platform branches scheduled for retirement, see Retiring
platform branch schedule. To see past retired platform branches, see Retired platform branch
history.
If your environment uses a deprecated or retired platform branch, we recommend that you
update it to a platform version in a supported platform branch. For details, see the section
called “Platform updates”.
You can verify the state of a platform branch using the AWS CLI command describe-platformversion and checking the PlatformBranchLifecycleState field.
Platform Update
A release of new platform versions that contain updates to some components of the platform
—OS, runtime, web server, application server, and Elastic Beanstalk components. Platform
updates follow semantic version taxonomy, and can have three levels:

Platforms glossary

744

AWS Elastic Beanstalk

Developer Guide

• Major update – An update that has changes that are incompatible with existing platform
versions. You may need to modify your application to run correctly on a new major version. A
major update has a new major platform version number.
• Minor update – An update that has changes that are backward compatible with existing
platform versions in most cases. Depending on your application, you may need to modify
your application to run correctly on a new minor version. A minor update has a new minor
platform version number.
• Patch update – An update that consists of maintenance releases (bug fixes, security updates,
and performance improvements) that are backward compatible with an existing platform
version. A patch update has a new patch platform version number.
Managed Updates
An Elastic Beanstalk feature that automatically applies patch and minor updates to the
operating system (OS), runtime, web server, application server, and Elastic Beanstalk
components for an Elastic Beanstalk supported platform version. A managed update applies a
newer platform version in the same platform branch to your environment. You can configure
managed updates to apply only patch updates, or minor and patch updates. You can also
disable managed updates completely.
For more information, see Managed platform updates.

Shared responsibility model for Elastic Beanstalk platform
maintenance
AWS and our customers share responsibility for achieving a high level of software component
security and compliance. This shared model reduces your operational burden.
For details, see the AWS Shared Responsibility Model.
AWS Elastic Beanstalk helps you perform your side of the shared responsibility model by providing
a managed updates feature. This feature automatically applies patch and minor updates for an
Elastic Beanstalk supported platform version. If a managed update fails, Elastic Beanstalk notifies
you of the failure to ensure that you are aware of it and can take immediate action.
For more information, see Managed platform updates.
In addition, Elastic Beanstalk does the following:
Shared responsibility model

745

AWS Elastic Beanstalk

Developer Guide

• Publishes its platform support policy and retirement schedule for the coming 12 months.
• Releases patch, minor, and major updates of operating system (OS), runtime, application server,
and web server components typically within 30 days of their availability. Elastic Beanstalk
is responsible for creating updates to Elastic Beanstalk components that are present on its
supported platform versions. All other updates come directly from their suppliers (owners or
community).
We announce all updates to our supported platforms in our release notes in the AWS Elastic
Beanstalk Release Notes guide. We also provide a list of all supported platforms and their
components, along with a platform history, in the AWS Elastic Beanstalk Platforms guide. For more
information see Supported platforms and component history.
You are responsible to do the following:
• Update all the components that you control (identified as Customer in the AWS Shared
Responsibility Model). This includes ensuring the security of your application, your data, and any
components that your application requires and that you downloaded.
• Ensure that your Elastic Beanstalk environments are running on a supported platform version,
and migrate any environment running on a retired platform version to a supported version.
• If you’re using a custom Amazon machine image (AMI) for your Elastic Beanstalk environment,
patch, maintain, and test your custom AMI so that it remains current and compatible with
a supported Elastic Beanstalk platform version. For more information about managing
environments with a custom AMI, see Using a custom Amazon machine image (AMI) in your
Elastic Beanstalk environment.
• Resolve all issues that come up in failed managed update attempts and retry the update.
• Patch the OS, runtime, application server, and web server yourself if you opted out of Elastic
Beanstalk managed updates. You can do this by applying platform updates manually or directly
patching the components on all relevant environment resources.
• Manage the security and compliance of any AWS services that you use outside of Elastic
Beanstalk according to the AWS Shared Responsibility Model.

Shared responsibility model

746

AWS Elastic Beanstalk

Developer Guide

Elastic Beanstalk platform support policy
Elastic Beanstalk supports platform branches that still receive ongoing minor and patch updates
from their suppliers (owners or community). For a complete definition of related terms, see Elastic
Beanstalk platforms glossary.

Retired platform branches
When a component of a supported platform branch is marked End of Life (EOL) by its supplier,
Elastic Beanstalk marks the platform branch as retired. Components of a platform branch include
the following: operating system (OS), runtime language version, application server, or web server.
Once a platform branch is marked as retired the following policies apply:
• Elastic Beanstalk stops providing maintenance updates, including security updates.
• Elastic Beanstalk no longer provides technical support for retired platform branches.
• Elastic Beanstalk no longer makes the platform branch available to new Elastic Beanstalk
customers for deployments to new environments. There is a 90 day grace period from the
published retirement date for existing customers with active environments that are running on
retired platform branches.

Note
A retired platform branch will not be available in the Elastic Beanstalk console. However, it
will be available through the AWS CLI, EB CLI and EB API for customers that have existing
environments based on the retired platform branch. Existing customers can also use the
Clone environment and Rebuild environment consoles.

For a list of platform branches that are scheduled for retirement see the Retiring platform branch
schedule in the Elastic Beanstalk platform schedule topic that follows.
For more information about what to expect when your environment’s platform branch retires, see
Platform retirement FAQ.

Platform support policy

747