Site logo
Authors
  • avatar Nguyễn Đức Xinh
    Name
    Nguyễn Đức Xinh
    Twitter
Published on
Published on

Các Lệnh Thông Dụng của EB CLI với AWS Elastic Beanstalk

AWS Elastic Beanstalk (EB) là một nền tảng PaaS (Platform as a Service) mạnh mẽ tự động hóa việc triển khai và mở rộng quy mô các ứng dụng web và dịch vụ được phát triển bằng Java, .NET, PHP, Node.js, Python, Ruby, Go và Docker. Elastic Beanstalk Command Line Interface (EB CLI) là một công cụ dòng lệnh cho phép bạn tương tác với Elastic Beanstalk một cách lập trình.

Trong bài viết này, chúng ta sẽ khám phá một số lệnh EB CLI phổ biến nhất mà bạn có thể sử dụng để quản lý môi trường Elastic Beanstalk của mình.

Yêu cầu

Trước khi bắt đầu, hãy đảm bảo bạn có những điều sau:

  • Tài khoản AWS: Bạn cần một tài khoản AWS để sử dụng Elastic Beanstalk.
  • AWS CLI: AWS CLI là một công cụ dòng lệnh cho phép bạn tương tác với các dịch vụ AWS. Bạn có thể tải xuống và cài đặt nó từ trang web chính thức của AWS.
  • EB CLI: EB CLI là một plugin cho AWS CLI. Hướng Dẫn Cài Đặt AWS Elastic Beanstalk CLI

Cách EB CLI hoạt động

  • Lệnh eb init dùng để khởi tạo ứng dụng và cài đặt thư mục elastic beanstalk bao gồm các thông tin config.
  • Các lệnh còn lại thì bạn cần di chuyển đến ứng dụng của bạn. Lưu ý là đã init và chứa file .elasticbeanstalk/config.yml. EB CLI sẽ sử dụng thông tin config này để tương tác với ứng dụng Elastic Beanstalk

Khởi Tạo Ứng Dụng Elastic Beanstalk

Để bắt đầu làm việc với EB CLI, khởi tạo ứng dụng của bạn bằng lệnh:

eb init

Lệnh này:

  • Tạo một ứng dụng Elastic Beanstalk.
  • Cho phép bạn cấu hình vùng (region), nền tảng (platform), và thông tin xác thực (credentials) mặc định. Ví dụ:
eb init

# Chỉ định luôn platform, profile, region và tên ứng dụng
eb init -p node.js --profile <your-profile> --region ap-northeast-1 <app-name>

Lưu ý:

  • Bạn cần di chuyển đến thư mục root của ứng dụng của bạn.
  • Khi chạy xong sẽ tạo ra file cấu hình: .elasticbeanstalk/config.yml

Tạo Môi Trường Mới

Sau khi ứng dụng đã được khởi tạo, tạo một môi trường mới để triển khai:

eb create

Bạn có thể chỉ định tên và loại môi trường:

eb create my-environment-name
  • Khi tạo xong sẽ tạo ra file cấu hình của môi trường: .elasticbeanstalk/[env-name].env.yml

Clone Môi Trường

Clone môi trường mới từ môi trường hiện tại.

eb clone

# Hoặc
eb clone <environment_name> (-n CLONE_NAME)

Liệt kê các môi trường hiện tại

eb list
* test-environment

Liệt kê các Phiên bản.

eb appversion
test-environment  Application Name: sample-001
Environment Status: Ready Health Green
Current version # deployed: 3

#   Version Label             Date Created       Age        Description                                                                                                                                                         appversion  
3   app-241219_170320446983   2024/12/19 17:03   16 hours   EB-CLI deploy  
2   app-241219_165510037311   2024/12/19 16:55   16 hours   EB-CLI deploy  
1   app-241219_163835234208   2024/12/19 16:38   17 hours   EB-CLI deploy 

Triển Khai Ứng Dụng

Triển khai ứng dụng của bạn lên môi trường Elastic Beanstalk:

eb deploy

Lệnh này đóng gói ứng dụng và tải lên môi trường đã chỉ định. Khi thay đổi code thì bạn cần sử dụng lệnh này để triển khai code mới.

Kiểm Tra Trạng Thái Môi Trường

Để xem trạng thái hiện tại của môi trường:

eb status
Environment details for: test-environment
  Application name: sample-001
  Region: ap-northeast-1
  Deployed Version: app-241219_170320446983
  Environment ID: e-wppmimmywb
  Platform: arn:aws:elasticbeanstalk:ap-northeast-1::platform/Node.js 22 running on 64bit Amazon Linux 2023/6.4.0
  Tier: WebServer-Standard-1.0
  CNAME: test-environment.eba-tpctzeqf.ap-northeast-1.elasticbeanstalk.com
  Updated: 2024-12-19 10:03:44.618000+00:00
  Status: Ready
  Health: Green

Bạn sẽ nhận được thông tin chi tiết về tình trạng (health), phiên bản (version), và trạng thái (state) của môi trường.

Theo Dõi Log của Môi Trường

Để lấy log phục vụ việc xử lý lỗi:

eb logs

Lệnh này sẽ hiển thị với output format tail đối với các nguồn Log như:

  • Webserver log: Nginx access log, error log
  • App log: Nodejs, PHP, Python, Ruby,...
  • EB engine log
============= i-04ec870caf2489311 ==============
----------------------------------------
/var/log/nginx/access.log
----------------------------------------
172.31.1.167 - - [19/Dec/2024:23:41:42 +0000] "GET / HTTP/1.1" 200 34 "-" "ELB-HealthChecker/2.0" "-"
172.31.27.230 - - [19/Dec/2024:23:41:50 +0000] "GET / HTTP/1.1" 200 34 "-" "ELB-HealthChecker/2.0" "-"

----------------------------------------
/var/log/nginx/error.log
----------------------------------------
2024/12/19 09:58:23 [warn] 2145#2145: could not build optimal types_hash, you should increase either types_hash_max_size: 1024 or types_hash_bucket_size: 64; ignoring types_hash_bucket_size

----------------------------------------
/var/log/web.stdout.log
----------------------------------------
Dec 19 09:58:24 ip-172-31-13-188 web[2141]: Server running at http://127.0.0.1:8080/

----------------------------------------
/var/log/eb-engine.log
----------------------------------------
2024/12/19 10:03:34.212076 [INFO] Executing instruction: stop proxy
2024/12/19 10:03:34.212113 [INFO] Running command: systemctl show -p PartOf httpd.service
2024/12/19 10:03:34.234064 [WARN] deregisterProcess Warning: process httpd is not registered, skipping...

----------------------------------------
/var/log/eb-hooks.log
----------------------------------------

Bạn cũng có thể yêu cầu log đầy đủ bằng lệnh:

eb logs --all

Lệnh này sẽ download hết log về local để bạn có thể xem đầy đủ.

Retrieving logs...
Logs were saved to /Users/xinhnd/sample-001/.elasticbeanstalk/logs/241220_065520
Logs were saved to /Users/xinhnd/sample-001/.elasticbeanstalk/logs/241220_065520
Updated symlink at /Users/xinhnd/sample-001/.elasticbeanstalk/logs/latest

Cập Nhật Cấu Hình Môi Trường

Sử dụng lệnh sau để chỉnh sửa cấu hình môi trường:

eb config

Lệnh này mở trình soạn thảo để bạn chỉnh sửa các thiết lập của môi trường. Lệnh này tương ứng với việc mở tệp config môi trường như sau:

vi .elasticbeanstalk/test-environment.env.yml

Mở Môi Trường trên Trình Duyệt

Để nhanh chóng mở URL của môi trường trên trình duyệt:

eb open

Mở Môi Trường trên AWS Elastic Beanstalk Management Console

eb console

Xóa Môi Trường

Khi bạn không còn cần sử dụng môi trường, hãy xóa nó:

eb terminate

Lệnh này sẽ xóa môi trường cùng với các tài nguyên liên quan.

Xem Sức khoẻ hệ thống của môi trường

eb health

eb-health

Xem Các Sự Kiện của Môi Trường

Theo dõi các sự kiện theo thời gian thực của môi trường:

eb events
2024-12-19 09:38:38    INFO    createEnvironment is starting.
2024-12-19 09:38:40    INFO    Using elasticbeanstalk-ap-northeast-1-851347696412 as Amazon S3 storage bucket for environment data.
2024-12-19 09:39:03    INFO    Created security group named: sg-061e342b2776fce28
2024-12-19 09:39:18    INFO    Created target group named: arn:aws:elasticloadbalancing:ap-northeast-1:851347696412:targetgroup/awseb-AWSEB-FULE9WLLQEFL/1ec81cbda76db585
2024-12-19 09:39:18    INFO    Created security group named: awseb-e-nkrfuxnt3r-stack-AWSEBSecurityGroup-qDTY2YqPuQbl
2024-12-19 09:39:29    INFO    Environment health has transitioned to Pending. Initialization in progress (running for 11 seconds). There are no instances.
2024-12-19 09:39:34    INFO    Created Auto Scaling group named: awseb-e-nkrfuxnt3r-stack-AWSEBAutoScalingGroup-NuYD2vc2u4WR
2024-12-19 09:39:34    INFO    Waiting for EC2 instances to launch. This may take a few minutes.
...

Thêm cờ --all để xem toàn bộ lịch sử sự kiện:

eb events --all

Hoán Đổi URL Giữa Các Môi Trường

Để hoán đổi URL giữa hai môi trường (ví dụ: triển khai blue-green):

eb swap

Trường hợp sử dụng: bạn có 2 môi trường UAT và Prod. Khi UAT ok và bạn muốn chuyển đổi sang Prod

Thay Đổi Quy Mô Ứng Dụng

Để tăng hoặc giảm số lượng instance:

eb scale 3

Ví dụ trên thiết lập số lượng instance là 3.

Sử dụng SSH để kết nối vào Ec2 Instance

eb ssh
INFO: Running ssh -i /Users/xinhnd/.ssh/xinhnd-demo.pem -o IdentitiesOnly yes ec2-user@18.181.223.102
The authenticity of host '18.181.223.102 (18.181.223.102)' can't be established.
ED25519 key fingerprint is SHA256:xxx+xxx.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

EB SSH

In các biến môi trường hiện tại

eb printenv

Set các biến môi trường

eb setenv -e <environment> VAR_NAME=KEY

Các lệnh về Platform

# Hiện thị tất cả các Platform khả dụng: php, python, ruby, docker, ecs, node.js, go,...
eb platform list

# Hiển thị platform hiện tại
eb platform show

# Chọn platform mặc định
eb platform select

# Hiển thị tình trạng của platform
eb platform status

# tạo platform version tuỳ chỉnh
eb platform create

# Xoá platform
eb platform delete

Set môi trường mặc định

eb use [environment_name]

Kết Luận

AWS Elastic Beanstalk EB CLI giúp đơn giản hóa việc triển khai và quản lý ứng dụng với các lệnh mạnh mẽ. Thành thạo các lệnh này sẽ giúp bạn quản lý các môi trường AWS hiệu quả hơn và tối ưu hóa quy trình phát triển. Bằng cách tận dụng EB CLI, bạn sẽ tiết kiệm được thời gian và tập trung nhiều hơn vào việc xây dựng và cải tiến ứng dụng của mình.