Bởi Shyam Sunder Rakhecha và Rohit Kapoor vào ngày 28 tháng 04 năm 2025 trong Thực tiễn tốt nhất, Giải pháp khách hàng, Tăng tốc dựa trên trải nghiệm, Cách hướng dẫn kỹ thuật Permalink Chia sẻ
Giới thiệu
Duy trì Amazon Machine Images (AMI) luôn được cập nhật trong các Auto Scaling Groups (ASG) là rất quan trọng để đảm bảo hiệu quả vận hành và bảo mật. Bài đăng trên blog này phác thảo một giải pháp tự động để cập nhật ASG bằng golden AMI mới nhất sau khi triển khai mã hoặc vá lỗi hệ thống. Bằng cách tận dụng các sự kiện AWS Step Functions và AWS Backup, chúng tôi đề xuất một quy trình thay thế AMI tinh gọn, do đó giảm thiểu rủi ro liên quan đến các AMI lỗi thời.
Ví dụ sau liệt kê một loạt các tác vụ cần tự động hóa:
- Tạo AMI dựa trên Microsoft Windows ban đầu
- Triển khai mã
- Cập nhật AMI bất cứ khi nào có phiên bản mới của mã ứng dụng và cấu hình
- Tạo một golden AMI mới đã được tăng cường bảo mật (hardened).
- Cập nhật ASG bằng golden AMI mới nhất đã được tăng cường bảo mật.
AWS Step Functions cung cấp một cách tiếp cận đáng tin cậy, phi máy chủ để tự động hóa các bản cập nhật cơ sở hạ tầng. Dịch vụ điều phối (orchestration service) này giúp đơn giản hóa quy trình cập nhật, từ đó nâng cao hiệu quả vận hành. Việc triển khai Step Functions giúp giảm khả năng xảy ra lỗi của con người và đảm bảo cơ sở hạ tầng được cập nhật nhất quán với các phiên bản ứng dụng mới nhất.
Điều kiện tiên quyết
Để truy cập mã AWS Lambda function và định nghĩa Step Function, hãy lấy (clone) kho lưu trữ Git tại https://github.com/aws-samples/example-code-for-automation-with-amazon-ec2-auto-scaling. Việc sử dụng Step Functions nâng cao hiệu quả vận hành, đảm bảo triển khai và bảo trì cơ sở hạ tầng nhất quán với các phiên bản ứng dụng mới nhất.
Quy trình làm việc tự động hóa
Quá trình này tuân theo các bước chính sau:
- Tác vụ AWS Backup kích hoạt quy trình ban đầu
- Việc tạo AMI sẽ kích hoạt quy tắc EventBridge, quy tắc này sẽ khởi chạy Step Function
- Step Function điều phối nhiều hàm Lambda:
– GetASGAndLaunchTemplate: Truy xuất chi tiết cấu hình
– Sysprep: Chuẩn bị các instance để tạo AMI
– UpdateASG: Cập nhật các phiên bản của launch template
– Chức năng kiểm tra trạng thái: Giám sát trạng thái instance và AMI
– Dọn dẹp: Loại bỏ các tài nguyên không sử dụng
Hình 1 cho thấy kiến trúc của tự động hóa trong giải pháp của chúng tôi.

Hình 1: Sơ đồ luồng của quy trình tự động hóa
Chi tiết thực hiện
Hàm Lambda 1: GetASGAndLaunchTemplate
Hàm Lambda này xử lý thiết lập ban đầu bằng cách:
- Trích xuất instance ID từ ARN
- Truy xuất chi tiết instance
- Đọc cấu hình ASG
- Quản lý thông tin launch template
- Tạo các AMI sao lưu
{"resourceArn": "arn:aws:ec2:region:account-id:instance/i-0123456789abcdef0" } # Get the resource ARN from the event
resource_arn = event['resourceArn'] # Extract the instance ID from the resource ARN
Instance_id = resource_arn.split('/')[-1]
Để tạo hàm này, hãy sử dụng các bước sau:
- Mở AWS Lambda Console
- Chọn Create function
- Chọn Author from scratch
- Đặt tên cho hàm (ví dụ: GetASGAndLaunchTemplate),
- Chọn runtime là Python
- Trong trình soạn thảo mã, thêm mã hàm. Sử dụng tập lệnh get-asg-and-launch-template_v3.py từ kho lưu trữ GitHub mà bạn đã sao chép trước đó
- Xác định quyền cho Lambda function bằng một execution role. Thêm các quyền sau thông qua AWS Identity and Access Management (IAM) Console hoặc đính kèm inline policy.
- Đảm bảo vai trò thực thi hàm Lambda có quyền sử dụng AWS Systems Manager (SSM). Vai trò phải có các chính sách sau:
- AmazonEC2ReadOnlyAccess
- AmazonAutoScalingReadOnlyAccess
Hàm Lambda 2: Sysprep:
Hàm Lambda này quản lý việc chuẩn bị hệ điều hành bằng cách:
- Khởi tạo Amazon Elastic Compute Cloud (EC2) và client AWS Systems Manager
- Thực thi các lệnh sysprep bằng cách sử dụng Run Command, một công cụ trong AWS Systems Manager
- Quản lý cấu hình thời gian chờ
Lặp lại các bước từ 1 đến 7 như được hiển thị trước đó để tạo một hàm AWS Lambda mới, sau đó, trong trình chỉnh sửa mã, thêm mã hàm. Sử dụng tập lệnh sysprep_v1.py từ kho lưu trữ GitHub mà bạn đã sao chép trước đó.
Đảm bảo vai trò thực thi Lambda có quyền sử dụng SSM. Vai trò phải có các chính sách sau:
- AmazonEC2RoleforSSM
- AmazonSSMFullAccess
Hàm Lambda 3: UpdateASG:
Hàm Lambda này xử lý các bản cập nhật ASG thông qua:
- Cập nhật Auto Scaling Group bằng AMI mới
- Trích xuất tham số từ các sự kiện đầu vào và xác thực
- Quản lý phiên bản của launch template
- So sánh và cập nhật AMI
- Cập nhật cấu hình ASG
Lặp lại các bước từ 1 đến 7 như được hiển thị trước đó để tạo một hàm AWS Lambda mới, sau đó, trong trình chỉnh sửa mã, thêm mã hàm. Sử dụng tập lệnh updateASG_v1.py từ kho lưu trữ GitHub mà bạn đã sao chép trước đó.
Thêm các quyền sau thông qua IAM Console hoặc đính kèm một inline policy:
- ec2:DescribeLaunchTemplateVersions
- ec2:CreateLaunchTemplateVersion
- ec2:ModifyLaunchTemplate
- autoscaling:UpdateAutoScalingGroup
Các hàm Lambda 4 và 5: Các hàm kiểm tra trạng thái
Hai hàm để đảm bảo hoạt động trơn tru:
- check-instance-state: Giám sát tính khả dụng của instance
- check-ami-status-function: Theo dõi trạng thái tạo AMI
Lặp lại các bước từ 1 đến 7 như được hiển thị trước đó để tạo hàm AWS Lambda mới, sau đó, trong trình chỉnh sửa mã, thêm mã hàm. Sử dụng tập lệnh check-instance-state_v1.py từ kho lưu trữ GitHub mà bạn đã sao chép trước đó.
Làm theo các bước trước để tạo một hàm khác (ví dụ: check-ami-status). Trong trình soạn thảo mã, thêm mã hàm. Sử dụng tập lệnh check-ami-status-function_v1.py từ kho lưu trữ GitHub mà bạn đã sao chép trước đó.
Đảm bảo vai trò thực thi Lambda từ hai hàm này bao gồm chính sách AmazonEC2ReadOnlyAccess.
Hàm Lambda 6: Dọn dẹp
Quản lý việc dọn dẹp tài nguyên bằng cách xóa:
- Các instance tạm thời
- AMI không sử dụng
- Tài nguyên còn lại khác
Lặp lại các bước từ 1 đến 7 như đã hiển thị trước đó để tạo hàm AWS Lambda, sau đó, trong trình chỉnh sửa mã, thêm mã hàm. Sử dụng Cleanup_v1.py từ kho lưu trữ GitHub mà bạn đã sao chép trước đó.
Đảm bảo vai trò thực thi Lambda có quyền gọi terminate_instances và deregister_image bằng cách bao gồm các quyền sau:
- ec2:TerminateInstances
- ec2:DeregisterImage
Thiết lập cơ sở hạ tầng
Cấu hình AWS Step Functions
Tạo một máy trạng thái (state machine) điều phối các hàm Lambda bằng cách sử dụng mẫu JSON ASL (Amazon State Language) được cung cấp.
Mở AWS Step Functions Console và điều hướng đến State Machines ở menu bên trái. Chọn Create state machine. Trong trình soạn thảo mã, thêm mã hàm. Sử dụng tệp JSON ASL (ngôn ngữ Amazon State) “StepFunction_v4” từ kho lưu trữ GitHub mà bạn đã sao chép trước đó. Tập lệnh này sẽ tạo ra một máy trạng thái như trong Hình 2.

Hình 2: Sơ đồ trực quan của State Machine
Thiết lập quy tắc Amazon EventBridge:
Định cấu hình EventBridge để:
- Giám sát các sự kiện AWS Backup
- Kích hoạt quy trình làm việc Step Function
- Chuyển đổi và truyền dữ liệu đầu vào có liên quan
Sau khi tạo Step Function, bạn sẽ tạo một Amazon EventBridge Rule để gọi nó. Mở Amazon EventBridge console và chọn Rules từ menu điều hướng bên trái.
Chọn Tạo quy tắc. Nhập tên quy tắc, mô tả và bus sự kiện (mặc định) như trong Hình 3, sau đó chọn Tiếp theo.

Hình 3: Trang Create rule
Trong phần Build event pattern, sử dụng mã sau (ở định dạng JSON) để định cấu hình mẫu nguồn.
{
"source": ["aws.backup"],
"detail-type": ["Backup Job State Change"]
}
Trong phần Target, chọn AWS Service cho Target Type và máy trạng thái Step Functions trong mục tiêu. (như trong Hình 4)

Hình 4: cấu hình mẫu Target trong EventBridge Rule
Chọn tên của state machine bạn đã tạo. Trong Additional settings, chọn Input transformer cho Configure target input. (như trong Hình 5)

Hình 5: Input Transformer của EventBridge Rule
Ở đây, chúng tôi sử dụng Input Transformer sau. (như trong Hình 6)

Hình 6: Input Transformer của EventBridge Rule
Bỏ qua bước Configure tags, đi tới Review and create và chọn Create rule để tạo EventBridge Rule.
Sao lưu AWS
Lên lịch sao lưu thường xuyên hoặc tạo bản sao lưu theo yêu cầu của máy chủ ứng dụng. Hoàn thành sao lưu thành công sẽ kích hoạt quy trình tự động hóa, như trong hình sau.

Hình 7: Tạo sao lưu theo yêu cầu
Sau khi job AWS Backup chạy cho EC2 instance của bạn và trạng thái job chuyển thành Completed, EventBridge sẽ thực thi quy trình sysprep. Hãy xác minh AMI ID trong launch template của ASG, tại phiên bản Latest version. ID này phải khớp với AMI sao lưu được tạo bởi Step Functions.
AWS Step Functions hỗ trợ các ứng dụng với khả năng tự động hóa mạnh mẽ, đảm bảo độ tin cậy, khả năng mở rộng và dễ quản lý. Điều này tạo điều kiện thuận lợi cho việc tạo quy trình làm việc phức tạp tích hợp các dịch vụ AWS đa dạng, cho phép các doanh nghiệp thích ứng nhanh chóng với các yêu cầu vận hành đang phát triển và tăng cường sự linh hoạt của họ trong hệ sinh thái đám mây.
Dọn dẹp
Quy trình Tự động hóa này sử dụng một AWS Step Function và sáu Lambda Function – bộ đôi mạnh mẽ giúp điều phối toàn bộ quy trình. Một trong những tính năng hấp dẫn nhất? Bạn chỉ trả tiền cho những gì bạn sử dụng. Các thành phần phi máy chủ này nằm yên trong tài khoản AWS của bạn, không làm hết ngân sách của bạn khi không hoạt động. Chúng chỉ tính phí khi tự động hóa chạy.
Nhưng còn tất cả những tài nguyên được tạo ra trong quá trình tự động hóa thì sao? Đây chính là điểm thú vị của giải pháp. Giải pháp triển khai cơ chế dọn dẹp bằng cách sử dụng hàm Lambda chuyên dụng để xóa tài nguyên sau khi chúng đã phục vụ mục đích của chúng. Cách tiếp cận này đảm bảo môi trường AWS của bạn luôn gọn gàng và tiết kiệm chi phí.
Và khi không còn cần đến quy trình tự động hóa này nữa? Bạn có thể dễ dàng xóa Step Function và các Lambda function thông qua AWS Console chỉ bằng vài cú nhấp chuột. Thao tác này cũng đơn giản như việc chọn các thành phần và nhấn nút Delete.
Kết thúc
AWS Step Functions cung cấp một giải pháp mạnh mẽ để tự động hóa việc tạo Amazon Machine Image (AMI) và việc cập nhật các Auto Scaling Group (ASG) sau đó. Dịch vụ điều phối này giảm thiểu sự can thiệp thủ công, dẫn đến tăng hiệu quả vận hành và cải thiện tính nhất quán trong cơ sở hạ tầng.
Quy trình làm việc tự động tạo điều kiện cho việc tạo và quản lý Amazon Machine Images (AMI) được chuẩn hóa, do đó giảm thiểu khả năng xảy ra lỗi do con người. Tích hợp liền mạch với các dịch vụ đa dạng của Amazon Web Services (AWS) cho phép cập nhật một cách tinh gọn các launch configuration và launch template, đảm bảo các Auto Scaling Group (ASG) luôn sử dụng những image mới nhất.
AWS Step Functions nâng cao tính ổn định và bền bỉ (robustness) của quy trình thông qua các tính năng giám sát và xử lý lỗi tích hợp, tạo điều kiện khắc phục nhanh chóng các sự cố mới phát sinh. Do đó, việc áp dụng dịch vụ này thúc đẩy một cơ sở hạ tầng đám mây có khả năng phục hồi tốt và linh hoạt hơn, giải phóng các nhóm phát triển tập trung vào các nỗ lực đổi mới thay vì can thiệp thủ công. Cuối cùng, việc tận dụng tính năng tự động hóa này góp phần nâng cao thời gian hoạt động và hiệu suất của ứng dụng.
Chiến lược tự động hóa được trình bày triển khai hiệu quả AWS Step Functions để quản lý quy trình làm việc phức tạp và tạo điều kiện tích hợp với các dịch vụ AWS đa dạng. Bằng cách tận dụng khả năng tự động hóa phi máy chủ, các tổ chức có thể tối ưu hóa hoạt động đám mây và nâng cao hiệu quả tổng thể.
Về tác giả
Shyam Sunder Rakhecha

Shyam Sunder Rakhecha là Chuyên gia Tư vấn Triển khai (Delivery Consultant) thuộc đội ngũ Professional Services của AWS, làm việc tại Hyderabad, Ấn Độ. Anh chuyên về các giải pháp di chuyển và hiện đại hóa, hỗ trợ khách hàng trong việc di chuyển và tối ưu hóa trên đám mây AWS. Với vai trò Kiến trúc sư đám mây (Cloud Architect), anh luôn tìm tòi, khám phá các công nghệ mới nổi.
Rohit Kapoor

Rohit Suraj Kapoor là Giám đốc Dự án (Engagement Manager) tại GCC Ấn Độ. Anh cũng từng là Chuyên gia Tư vấn Chính về Di chuyển Cơ sở dữ liệu (Lead Database Migration Consultant) của đội ngũ AWS Professional Services tại Ấn Độ, hỗ trợ khách hàng trên hành trình tiếp nhận và di chuyển lên đám mây thành công. Trong suốt sự nghiệp của mình, Rohit đã dành tâm huyết hỗ trợ khách hàng giải quyết các thách thức liên quan đến di chuyển, bao gồm cơ sở dữ liệu, thiết kế và tối ưu hóa hiệu năng. Anh là Chuyên gia về Hiện đại hóa và Di chuyển, đồng thời đã xây dựng nhiều giải pháp di chuyển cơ sở dữ liệu thành công, giải quyết các yêu cầu nghiệp vụ phức tạp.