AWS Elastic Beanstalk là dịch vụ của AWS cho phép bạn deploy ứng dụng của bạn lên cloud mà không phải tốn quá nhiều công setup. Đã từng có 1 thời nó được so sánh với Heroku. Bản thân mình thì phải nói thật về trải nghiệm cá nhân là mình thích deploy ứng dụng lên Heroku hơn vì tính nhanh gọn, còn với AWS Beanstalk thì tại thời điểm mình thử(cuối 2021 tới năm 2022), có 1 số lỗi liên quan tới việc khác version của ngôn ngữ, công nghệ mình sử dụng nên dẫn tới chưa deploy được lên Elastic Beanstalk lần nào. Dù vậy, mình vẫn quyết tâm phải thử bằng được và sẽ bắt đầu từ bước đơn giản nhất: Deploy 1 app container lên Elastic Beanstalk.
Và sau bước này thì mình sẽ deploy app Rails của mình
Chuẩn bị
Cài sẵn những công cụ sau trên máy
- Docker
- Elastic Beanstalk CLI
- AWS access keys
Lấy 1 ứng dụng container về máy
Lần này chúng ta chú trọng vào việc deploy nên tuỳ các bạn có thể tự làm 1 ứng dụng single-container hay là kéo nhanh 1 image về cũng được.
Nếu các bạn lựa chọn kéo image có sẵn về thì có 2 nguồn:
Với mình thì mình chọn nguồn lần này từ ECR Public Library. Và cụ thể hơn mình chọn container của trò chơi 2048. Các bạn thích dùng container nào cứ tự nhiên tải nhé.
Sau khi chọn được container thì mình tạo thư mục có cấu trúc thư mục
1 2 3 | 2048-container/ └── docker-compose.yml |
Trong docker-compose.yml
, mình sẽ định nghĩa như sau
1 2 3 4 5 6 7 | <span class="token key atrule">version</span><span class="token punctuation">:</span> <span class="token string">'2.4'</span> <span class="token key atrule">services</span><span class="token punctuation">:</span> <span class="token key atrule">app</span><span class="token punctuation">:</span> <span class="token key atrule">image</span><span class="token punctuation">:</span> public.ecr.aws/awsandy/docker<span class="token punctuation">-</span>2048<span class="token punctuation">:</span>latest <span class="token key atrule">ports</span><span class="token punctuation">:</span> <span class="token punctuation">-</span> <span class="token string">"80:80"</span> |
Sau đó là chạy docker-compose up
để thử nghiệm. Và chúng ta có app như trong ảnh ở đường dẫn localhost
Chạy được rồi! Đóng bài và đi ch…. Ủa mà khoan, tiêu đề gì mà lạ vậy :v
Thế là mình lại ngồi vào viết tiếp bước tiếp theo.
Deploy lên AWS Beanstalk
Các cách để deploy lên AWS Beanstalk
Elastic Beantstalk cho chúng ta 2 cách để deploy lên đó.
Cách 1 là bạn nén .zip
toàn bộ source code của bạn sau đó chọn deploy via Upload.
Cách 2 là bạn sẽ deploy bằng CLI. Đó là lý do bạn cần chuẩn bị AWS Elastic Beanstalk CLI và Access Keys.
Còn trong thực tế, ai cũng mong muốn high tech theo cách 2, nhưng tuỳ vào 1 số quy chuẩn của tổ chức nào đó mà sẽ deploy với cách 1. Đây là cái không chỉ nằm riêng với deploy trên Elastic Beanstalk mà còn các hệ thống to hơn phải setup Fargate + RDS + 1 số dịch vụ khác.
Mình chỉ định nêu cách 2 nhưng có lẽ để demo tử tế, mình sẽ làm cả 2 cách cho các bạn xem
Cách 1: Deploy bằng upload
Trước tiên bạn sẽ tạo 1 môi trường EB mới. Khi tạo hãy chọn Web server environment. Worker server environment sẽ dành cho các tác vụ chạy background. Còn đây là case chúng ta chạy ứng dụng web nên chọn Web environment.
Sau khi tới bước tiếp theo chúng ta sẽ điền form như bình thường
Tại bước này, chúng ta có thể chọn giữa Docker và ECS. Theo đúng như tôn chỉ deploy lười của dịch vụ thì mình chọn Docker :v ECS sẽ là 1 nghiên cứu lúc khác nếu có :v
Tới phần Application Code, chúng ta sẽ chọn “Upload your code” và tải folder zip source code ứng dụng ta vừa chạy thử ở local
Vẫn chú ý ở ảnh trên giúp mình. Ngày xưa AWS cho phép tạo EC2 không cần nằm trong VPC. Hiện tại thì nó đã có tên là Legacy EC2 và không hay sử dụng nữa. Vì vậy, bạn phải config VPC cho ứng dụng trước khi tạo môi trường, nếu không chắc chắn sẽ xảy ra lỗi. Hãy bấm hộp khoanh đỏ “Configure more options”
Form mở ra như ảnh dưới. Cuộn tới phần network và click vào config VPC.
Vào config VPC, bạn sẽ tạo 1 VPC mới hoặc có VPC nào có thể để mặc định thì dùng luôn. Sau khi có VPC thì bước tiếp theo bạn chỉ cần chọn instance subnets và database instance và lưu lại.
Cuối cùng là tạo và đợi
Ôi không lỗi rồi :v
Điều tra lỗi thì hoá ra mình đã nén nhầm. Nhưng tin tốt là chúng ta có thể upload để cập nhật ứng dụng.
Chạy vào trong folder và nén như này
Sau đó bấm upload and deploy và up lại file zip lên
Và cuối cùng là chạy được
Click vào URL thì chúng ta sẽ có ngay web được deploy. Hãy chú ý đường dẫn nữa để thấy rằng mình không bật localhost lên để lấp liếm với các bạn :v
Trước khi sang cách 2 thì làm ván game đã các bạn ơi.
Cách 2: CLI và 1 chút setup kiểu coding
Quay lại thư mục, chúng ta sẽ chạy lệnh eb init
và chọn như dưới
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 | $ eb init Select a default region <span class="token number">1</span><span class="token punctuation">)</span> us-east-1 <span class="token builtin class-name">:</span> US East <span class="token punctuation">(</span>N. Virginia<span class="token punctuation">)</span> <span class="token number">2</span><span class="token punctuation">)</span> us-west-1 <span class="token builtin class-name">:</span> US West <span class="token punctuation">(</span>N. California<span class="token punctuation">)</span> <span class="token number">3</span><span class="token punctuation">)</span> us-west-2 <span class="token builtin class-name">:</span> US West <span class="token punctuation">(</span>Oregon<span class="token punctuation">)</span> <span class="token number">4</span><span class="token punctuation">)</span> eu-west-1 <span class="token builtin class-name">:</span> EU <span class="token punctuation">(</span>Ireland<span class="token punctuation">)</span> <span class="token number">5</span><span class="token punctuation">)</span> eu-central-1 <span class="token builtin class-name">:</span> EU <span class="token punctuation">(</span>Frankfurt<span class="token punctuation">)</span> <span class="token number">6</span><span class="token punctuation">)</span> ap-south-1 <span class="token builtin class-name">:</span> Asia Pacific <span class="token punctuation">(</span>Mumbai<span class="token punctuation">)</span> <span class="token number">7</span><span class="token punctuation">)</span> ap-southeast-1 <span class="token builtin class-name">:</span> Asia Pacific <span class="token punctuation">(</span>Singapore<span class="token punctuation">)</span> <span class="token number">8</span><span class="token punctuation">)</span> ap-southeast-2 <span class="token builtin class-name">:</span> Asia Pacific <span class="token punctuation">(</span>Sydney<span class="token punctuation">)</span> <span class="token number">9</span><span class="token punctuation">)</span> ap-northeast-1 <span class="token builtin class-name">:</span> Asia Pacific <span class="token punctuation">(</span>Tokyo<span class="token punctuation">)</span> <span class="token number">10</span><span class="token punctuation">)</span> ap-northeast-2 <span class="token builtin class-name">:</span> Asia Pacific <span class="token punctuation">(</span>Seoul<span class="token punctuation">)</span> <span class="token number">11</span><span class="token punctuation">)</span> sa-east-1 <span class="token builtin class-name">:</span> South America <span class="token punctuation">(</span>Sao Paulo<span class="token punctuation">)</span> <span class="token number">12</span><span class="token punctuation">)</span> cn-north-1 <span class="token builtin class-name">:</span> China <span class="token punctuation">(</span>Beijing<span class="token punctuation">)</span> <span class="token number">13</span><span class="token punctuation">)</span> cn-northwest-1 <span class="token builtin class-name">:</span> China <span class="token punctuation">(</span>Ningxia<span class="token punctuation">)</span> <span class="token number">14</span><span class="token punctuation">)</span> us-east-2 <span class="token builtin class-name">:</span> US East <span class="token punctuation">(</span>Ohio<span class="token punctuation">)</span> <span class="token number">15</span><span class="token punctuation">)</span> ca-central-1 <span class="token builtin class-name">:</span> Canada <span class="token punctuation">(</span>Central<span class="token punctuation">)</span> <span class="token number">16</span><span class="token punctuation">)</span> eu-west-2 <span class="token builtin class-name">:</span> EU <span class="token punctuation">(</span>London<span class="token punctuation">)</span> <span class="token number">17</span><span class="token punctuation">)</span> eu-west-3 <span class="token builtin class-name">:</span> EU <span class="token punctuation">(</span>Paris<span class="token punctuation">)</span> <span class="token number">18</span><span class="token punctuation">)</span> eu-north-1 <span class="token builtin class-name">:</span> EU <span class="token punctuation">(</span>Stockholm<span class="token punctuation">)</span> <span class="token number">19</span><span class="token punctuation">)</span> eu-south-1 <span class="token builtin class-name">:</span> EU <span class="token punctuation">(</span>Milano<span class="token punctuation">)</span> <span class="token number">20</span><span class="token punctuation">)</span> ap-east-1 <span class="token builtin class-name">:</span> Asia Pacific <span class="token punctuation">(</span>Hong Kong<span class="token punctuation">)</span> <span class="token number">21</span><span class="token punctuation">)</span> me-south-1 <span class="token builtin class-name">:</span> Middle East <span class="token punctuation">(</span>Bahrain<span class="token punctuation">)</span> <span class="token number">22</span><span class="token punctuation">)</span> af-south-1 <span class="token builtin class-name">:</span> Africa <span class="token punctuation">(</span>Cape Town<span class="token punctuation">)</span> <span class="token punctuation">(</span>default is <span class="token number">3</span><span class="token punctuation">)</span>: <span class="token number">9</span> Select an application to use <span class="token number">1</span><span class="token punctuation">)</span> <span class="token number">2048</span>-game-upload <span class="token number">2</span><span class="token punctuation">)</span> Gryqhon lyrics site <span class="token number">3</span><span class="token punctuation">)</span> <span class="token punctuation">[</span> Create new Application <span class="token punctuation">]</span> <span class="token punctuation">(</span>default is <span class="token number">3</span><span class="token punctuation">)</span>: Enter Application Name <span class="token punctuation">(</span>default is <span class="token string">"2048-container"</span><span class="token punctuation">)</span>: <span class="token number">2048</span>-game-cli Application <span class="token number">2048</span>-game-cli has been created. Select a platform. <span class="token number">1</span><span class="token punctuation">)</span> .NET Core on Linux <span class="token number">2</span><span class="token punctuation">)</span> .NET on Windows Server <span class="token number">3</span><span class="token punctuation">)</span> Docker <span class="token number">4</span><span class="token punctuation">)</span> Go <span class="token number">5</span><span class="token punctuation">)</span> Java <span class="token number">6</span><span class="token punctuation">)</span> Node.js <span class="token number">7</span><span class="token punctuation">)</span> PHP <span class="token number">8</span><span class="token punctuation">)</span> Packer <span class="token number">9</span><span class="token punctuation">)</span> Python <span class="token number">10</span><span class="token punctuation">)</span> Ruby <span class="token number">11</span><span class="token punctuation">)</span> Tomcat <span class="token punctuation">(</span>make a selection<span class="token punctuation">)</span>: <span class="token number">3</span> Select a platform branch. <span class="token number">1</span><span class="token punctuation">)</span> Docker running on 64bit Amazon Linux <span class="token number">2</span> <span class="token number">2</span><span class="token punctuation">)</span> ECS running on 64bit Amazon Linux <span class="token number">2</span> <span class="token punctuation">(</span>default is <span class="token number">1</span><span class="token punctuation">)</span>: <span class="token number">1</span> Cannot setup CodeCommit because there is no Source Control setup, continuing with initialization Do you want to <span class="token builtin class-name">set</span> up SSH <span class="token keyword">for</span> your instances? <span class="token punctuation">(</span>Y/n<span class="token punctuation">)</span>: n |
Sau đó thì game đã lên rồi mọi người nhé. Mình đặt là 2048-game-cli
Phía source code cũng có sự thay đổi về cấu trúc thư mục
1 2 3 4 5 6 | 2048-container/ ├── .elasticbeanstalk/ │ └── config.yml ├── .gitignore └── docker-compose.yml |
Và config.yml
của mình hiện tại
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <span class="token key atrule">branch-defaults</span><span class="token punctuation">:</span> <span class="token key atrule">default</span><span class="token punctuation">:</span> <span class="token key atrule">environment</span><span class="token punctuation">:</span> <span class="token null important">null</span> <span class="token key atrule">group_suffix</span><span class="token punctuation">:</span> <span class="token null important">null</span> <span class="token key atrule">global</span><span class="token punctuation">:</span> <span class="token key atrule">application_name</span><span class="token punctuation">:</span> 2048<span class="token punctuation">-</span>game<span class="token punctuation">-</span>cli <span class="token key atrule">branch</span><span class="token punctuation">:</span> <span class="token null important">null</span> <span class="token key atrule">default_ec2_keyname</span><span class="token punctuation">:</span> <span class="token null important">null</span> <span class="token key atrule">default_platform</span><span class="token punctuation">:</span> Docker running on 64bit Amazon Linux 2 <span class="token key atrule">default_region</span><span class="token punctuation">:</span> ap<span class="token punctuation">-</span>northeast<span class="token punctuation">-</span><span class="token number">1</span> <span class="token key atrule">include_git_submodules</span><span class="token punctuation">:</span> <span class="token boolean important">true</span> <span class="token key atrule">instance_profile</span><span class="token punctuation">:</span> <span class="token null important">null</span> <span class="token key atrule">platform_name</span><span class="token punctuation">:</span> <span class="token null important">null</span> <span class="token key atrule">platform_version</span><span class="token punctuation">:</span> <span class="token null important">null</span> <span class="token key atrule">profile</span><span class="token punctuation">:</span> <span class="token null important">null</span> <span class="token key atrule">repository</span><span class="token punctuation">:</span> <span class="token null important">null</span> <span class="token key atrule">sc</span><span class="token punctuation">:</span> <span class="token null important">null</span> <span class="token key atrule">workspace_type</span><span class="token punctuation">:</span> Application |
Đang chọn cách deploy lười nên mình sẽ không giải thích chi tiết các trường trên nghĩa là gì mà giải thích qua loa.
branch-defaults
: Đây là nơi bạn sẽ setup các môi trường bạn muốn deploy- Sau đó là môi trường tên
default
. Saudefault
thì bạn có thể định nghĩa thêm 1 số cái nhưdevelop
haystaging
tuỳ thích. Chúng ta sẽ nghịch option này ở phần sau. environment
: Tên môi trường. Hiện đang lànull
application_name
,default_platform
,default_region
là lúc chạyeb create
đã được đưa thông tin vào
Sửa và lưu lại thì tới bước tiếp theo: deploy. Đây là lần deploy mới nên mình sẽ dùng eb create
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 | $ eb create Enter Environment Name <span class="token punctuation">(</span>default is <span class="token number">2048</span>-game-cli-dev<span class="token punctuation">)</span>: Enter DNS CNAME prefix <span class="token punctuation">(</span>default is <span class="token number">2048</span>-game-cli-dev<span class="token punctuation">)</span>: Select a load balancer <span class="token builtin class-name">type</span> <span class="token number">1</span><span class="token punctuation">)</span> classic <span class="token number">2</span><span class="token punctuation">)</span> application <span class="token number">3</span><span class="token punctuation">)</span> network <span class="token punctuation">(</span>default is <span class="token number">2</span><span class="token punctuation">)</span>: <span class="token number">2</span> Would you like to <span class="token builtin class-name">enable</span> Spot Fleet requests <span class="token keyword">for</span> this environment? <span class="token punctuation">(</span>y/N<span class="token punctuation">)</span>: N Creating application version archive <span class="token string">"app-221104_000725360971"</span><span class="token builtin class-name">.</span> Uploading <span class="token number">2048</span>-game-cli/app-221104_000725360971.zip to S3. This may take a while. Upload Complete. Environment details for: <span class="token number">2048</span>-game-cli-dev Application name: <span class="token number">2048</span>-game-cli Region: ap-northeast-1 Deployed Version: app-221104_000725360971 Environment ID: e-9kmsjd6dmy Platform: arn:aws:elasticbeanstalk:ap-northeast-1::platform/Docker running on 64bit Amazon Linux <span class="token number">2</span>/3.5.0 Tier: WebServer-Standard-1.0 CNAME: <span class="token number">2048</span>-game-cli-dev.ap-northeast-1.elasticbeanstalk.com Updated: <span class="token number">2022</span>-11-03 <span class="token number">15</span>:07:28.390000+00:00 Printing Status: <span class="token number">2022</span>-11-03 <span class="token number">15</span>:07:26 INFO createEnvironment is starting. <span class="token number">2022</span>-11-03 <span class="token number">15</span>:07:28 INFO Using elasticbeanstalk-ap-northeast-1-068450627380 as Amazon S3 storage bucket <span class="token keyword">for</span> environment data. <span class="token number">2022</span>-11-03 <span class="token number">15</span>:07:50 INFO Created target group named: arn:aws:elasticloadbalancing:ap-northeast-1:068450627380:targetgroup/awseb-AWSEB-FHV1U31AV15V/a612bbe50fa43fc9 <span class="token number">2022</span>-11-03 <span class="token number">15</span>:07:50 INFO Created security group named: sg-0ebefd86262401bf7 <span class="token number">2022</span>-11-03 <span class="token number">15</span>:08:06 INFO Created security group named: awseb-e-9kmsjd6dmy-stack-AWSEBSecurityGroup-1UHGPZBDMAA9T <span class="token number">2022</span>-11-03 <span class="token number">15</span>:08:06 INFO Created Auto Scaling launch configuration named: awseb-e-9kmsjd6dmy-stack-AWSEBAutoScalingLaunchConfiguration-8p5WgymZ3i3K <span class="token number">2022</span>-11-03 <span class="token number">15</span>:09:08 INFO Created Auto Scaling group named: awseb-e-9kmsjd6dmy-stack-AWSEBAutoScalingGroup-1L1OLTCBCC5T6 <span class="token number">2022</span>-11-03 <span class="token number">15</span>:09:08 INFO Waiting <span class="token keyword">for</span> EC2 instances to launch. This may take a few minutes. <span class="token number">2022</span>-11-03 <span class="token number">15</span>:09:08 INFO Created Auto Scaling group policy named: arn:aws:autoscaling:ap-northeast-1:068450627380:scalingPolicy:64c17e07-35cc-4020-a33e-d4607b7261d6:autoScalingGroupName/awseb-e-9kmsjd6dmy-stack-AWSEBAutoScalingGroup-1L1OLTCBCC5T6:policyName/awseb-e-9kmsjd6dmy-stack-AWSEBAutoScalingScaleDownPolicy-1jRJwqp6AnxD <span class="token number">2022</span>-11-03 <span class="token number">15</span>:09:23 INFO Created Auto Scaling group policy named: arn:aws:autoscaling:ap-northeast-1:068450627380:scalingPolicy:ee2595ac-9904-41ff-bb26-c4ff09db7ba0:autoScalingGroupName/awseb-e-9kmsjd6dmy-stack-AWSEBAutoScalingGroup-1L1OLTCBCC5T6:policyName/awseb-e-9kmsjd6dmy-stack-AWSEBAutoScalingScaleUpPolicy-jyL5yL67tnEy <span class="token number">2022</span>-11-03 <span class="token number">15</span>:09:23 INFO Created CloudWatch alarm named: awseb-e-9kmsjd6dmy-stack-AWSEBCloudwatchAlarmLow-K8BNS9GYUQZ1 <span class="token number">2022</span>-11-03 <span class="token number">15</span>:09:23 INFO Created CloudWatch alarm named: awseb-e-9kmsjd6dmy-stack-AWSEBCloudwatchAlarmHigh-S4AOPXOEV9OE <span class="token number">2022</span>-11-03 <span class="token number">15</span>:09:58 INFO Created load balancer named: arn:aws:elasticloadbalancing:ap-northeast-1:068450627380:loadbalancer/app/awseb-AWSEB-MVH2KVZYQKSV/836f20b80840fe60 <span class="token number">2022</span>-11-03 <span class="token number">15</span>:09:58 INFO Created Load Balancer listener named: arn:aws:elasticloadbalancing:ap-northeast-1:068450627380:listener/app/awseb-AWSEB-MVH2KVZYQKSV/836f20b80840fe60/69d2cc05017dd6e1 <span class="token number">2022</span>-11-03 <span class="token number">15</span>:10:17 INFO Instance deployment completed successfully. <span class="token number">2022</span>-11-03 <span class="token number">15</span>:10:24 INFO Application available at <span class="token number">2048</span>-game-cli-dev.ap-northeast-1.elasticbeanstalk.com. <span class="token number">2022</span>-11-03 <span class="token number">15</span>:10:25 INFO Successfully launched environment: <span class="token number">2048</span>-game-cli-dev |
Và môi trường của mình đã deploy xong
Link cũng có luôn
DLC cho cách 2
Và mình sẽ tạo ra môi trường thứ 2 ở trong config.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | <span class="token key atrule">branch-defaults</span><span class="token punctuation">:</span> <span class="token key atrule">default</span><span class="token punctuation">:</span> <span class="token key atrule">environment</span><span class="token punctuation">:</span> 2048<span class="token punctuation">-</span>game<span class="token punctuation">-</span>cli<span class="token punctuation">-</span>prod <span class="token key atrule">group_suffix</span><span class="token punctuation">:</span> <span class="token null important">null</span> <span class="token key atrule">development</span><span class="token punctuation">:</span> <span class="token key atrule">environment</span><span class="token punctuation">:</span> 2048<span class="token punctuation">-</span>game<span class="token punctuation">-</span>cli<span class="token punctuation">-</span>dev <span class="token key atrule">group_suffix</span><span class="token punctuation">:</span> <span class="token null important">null</span> <span class="token key atrule">global</span><span class="token punctuation">:</span> <span class="token key atrule">application_name</span><span class="token punctuation">:</span> 2048<span class="token punctuation">-</span>game<span class="token punctuation">-</span>cli <span class="token key atrule">branch</span><span class="token punctuation">:</span> <span class="token null important">null</span> <span class="token key atrule">default_ec2_keyname</span><span class="token punctuation">:</span> <span class="token null important">null</span> <span class="token key atrule">default_platform</span><span class="token punctuation">:</span> Docker running on 64bit Amazon Linux 2 <span class="token key atrule">default_region</span><span class="token punctuation">:</span> ap<span class="token punctuation">-</span>northeast<span class="token punctuation">-</span><span class="token number">1</span> <span class="token key atrule">include_git_submodules</span><span class="token punctuation">:</span> <span class="token boolean important">true</span> <span class="token key atrule">instance_profile</span><span class="token punctuation">:</span> <span class="token null important">null</span> <span class="token key atrule">platform_name</span><span class="token punctuation">:</span> <span class="token null important">null</span> <span class="token key atrule">platform_version</span><span class="token punctuation">:</span> <span class="token null important">null</span> <span class="token key atrule">profile</span><span class="token punctuation">:</span> <span class="token null important">null</span> <span class="token key atrule">repository</span><span class="token punctuation">:</span> <span class="token null important">null</span> <span class="token key atrule">sc</span><span class="token punctuation">:</span> <span class="token null important">null</span> <span class="token key atrule">workspace_type</span><span class="token punctuation">:</span> Application |
Do 2048-game-cli-prod
là môi trường mới nên mình vẫn phải chạy eb create
. Lúc này ta có 2 môi trường.
Tiếp đó, giả sử có 1 chỉnh sửa code và deploy lại, chúng ta sẽ chạy eb deploy
. Và khi kiểm tra, chúng ta sẽ thấy chỉ có môi trường default được modify
Vậy là muốn chạy môi trường dev phải chạy thêm eb deploy 2048-game-cli-dev
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | $ eb deploy Creating application version archive <span class="token string">"app-221104_002840882829"</span><span class="token builtin class-name">.</span> Uploading <span class="token number">2048</span>-game-cli/app-221104_002840882829.zip to S3. This may take a while. Upload Complete. <span class="token number">2022</span>-11-03 <span class="token number">15</span>:28:42 INFO Environment update is starting. <span class="token number">2022</span>-11-03 <span class="token number">15</span>:28:46 INFO Deploying new version to instance<span class="token punctuation">(</span>s<span class="token punctuation">)</span>. <span class="token number">2022</span>-11-03 <span class="token number">15</span>:29:15 INFO Instance deployment completed successfully. <span class="token number">2022</span>-11-03 <span class="token number">15</span>:29:24 INFO New application version was deployed to running EC2 instances. <span class="token number">2022</span>-11-03 <span class="token number">15</span>:29:24 INFO Environment update completed successfully. $ eb deploy <span class="token number">2048</span>-game-cli-dev Creating application version archive <span class="token string">"app-221104_003158965629"</span><span class="token builtin class-name">.</span> Uploading <span class="token number">2048</span>-game-cli/app-221104_003158965629.zip to S3. This may take a while. Upload Complete. <span class="token number">2022</span>-11-03 <span class="token number">15</span>:32:00 INFO Environment update is starting. <span class="token number">2022</span>-11-03 <span class="token number">15</span>:32:04 INFO Deploying new version to instance<span class="token punctuation">(</span>s<span class="token punctuation">)</span>. <span class="token number">2022</span>-11-03 <span class="token number">15</span>:32:33 INFO Instance deployment completed successfully. <span class="token number">2022</span>-11-03 <span class="token number">15</span>:32:41 INFO New application version was deployed to running EC2 instances. <span class="token number">2022</span>-11-03 <span class="token number">15</span>:32:41 INFO Environment update completed successfully. |
Thế nên nếu các bạn muốn deploy 2 môi trường trở lên, nếu ít thì có thể viết câu command liền eb deploy default & eb deploy 2048-game-cli-dev
hoặc là với nhiều file hơn hãy làm 1 file script
Kết
Như vậy mình đã giới thiệu cho các bạn sơ sơ về deploy ứng dụng lên AWS Elastic Beanstalk. Cảm ơn các bạn đã đọc bài