Quy trình xây dựng và quản lý hình ảnh máy ảo (AMI) trên AWS bằng EC2 Image Builder

Quy trình xây dựng và quản lý hình ảnh máy ảo (AMI) trên AWS bằng EC2 Image Builder

avatar

Long Ngo

2025.06.24

Hướng dẫn chi tiết cách sử dụng EC2 Image Builder để tự động hóa việc tạo, tùy chỉnh và phân phối hình ảnh máy ảo (AMI) trên AWS, đảm bảo tính nhất quán và bảo mật cho các ứng dụng.

Hướng dẫn xây dựng và quản lý hình ảnh máy ảo với EC2 Image Builder

Lab Introduction

  • AWS experience: Trung bình, yêu cầu kiến thức cơ bản về AWS EC2
  • Time to complete: 1-2 giờ
  • Cost: Dưới 1$. Có thể phát sinh chi phí từ EC2 và các dịch vụ liên quan (xem chi tiết tại AWS Pricing)
  • Services used: EC2, EC2 Image Builder

Tóm tắt

Hướng dẫn này cung cấp quy trình chi tiết để xây dựng và quản lý hình ảnh máy ảo (AMI) trên AWS bằng EC2 Image Builder. EC2 Image Builder giúp tự động hóa việc tạo, tùy chỉnh và phân phối AMI, giảm thiểu công việc thủ công và đảm bảo tính nhất quán. Bài lab này thuộc Section 2 của workshop SOA AWS, tập trung vào việc tạo pipeline, phát triển thành phần (components), và kiểm tra kết quả.

Architect

Task Details

Mục tiêu

  • Tạo một pipeline EC2 Image Builder để tự động hóa quy trình xây dựng AMI.
  • Tùy chỉnh AMI bằng cách thêm các thành phần như Amazon CloudWatch Agent và Apache Web Server.
  • Kiểm tra AMI bằng cách khởi chạy một instance và xác minh hoạt động của ứng dụng.
  • Cấu hình cơ sở hạ tầng và phân phối AMI để sử dụng trong môi trường AWS.

Các bước chính

  1. Tạo Image Pipeline: Thiết lập pipeline trong EC2 Image Builder với lịch trình thủ công và các thông số cơ bản.
  2. Tạo Recipe: Định nghĩa recipe với hình ảnh cơ sở (Amazon Linux 2023) và các thành phần tùy chỉnh.
  3. Thêm Thành phần: Tích hợp Amazon CloudWatch Agent và một thành phần tùy chỉnh để cài đặt Apache Web Server.
  4. Cấu hình Cơ sở hạ tầng: Sử dụng IAM Role, VPC, subnet, và security group phù hợp.
  5. Cấu hình Phân phối: Thiết lập cài đặt phân phối để AMI sẵn sàng sử dụng.
  6. Chạy và Kiểm tra Pipeline: Thực thi pipeline và xác minh AMI bằng cách khởi chạy instance và kiểm tra ứng dụng web.

Prerequisites

Trước khi bắt đầu bài lab này, bạn cần chuẩn bị:

  • Tài khoản AWS: Đăng ký và đăng nhập vào AWS Management Console.
  • Kiến thức cơ bản về EC2: Hiểu cách khởi chạy và quản lý instance EC2.
  • IAM Role: Đảm bảo bạn có quyền tạo và quản lý IAM Role (hoặc sử dụng tài khoản có quyền AdministratorAccess để đơn giản hóa).
  • Cấu hình mạng: Có sẵn VPC, public subnet, và security group cho phép truy cập qua cổng 22 (SSH) và 80 (HTTP).
  • Trình duyệt web: Để kiểm tra trang web sau khi khởi chạy instance từ AMI.
  • AWS CLI (tùy chọn): Nếu muốn thực hiện các thao tác qua dòng lệnh, cài đặt và cấu hình AWS CLI trên máy local.

Tạo Pipeline EC2 Image Builder

2.1 Tạo Image Pipeline

Điều hướng đến AWS CloudFormation Console

  1. Trong thanh tìm kiếm phía trên cùng của AWS Management Console, nhập và chọn EC2 Image Builder.

    EC2 Image Builder

    Mẹo!
    Bạn có thể nhấn vào biểu tượng ⭐ để thêm EC2 Image Builder vào danh sách yêu thích. Điều này sẽ ghim dịch vụ vào thanh điều hướng phía trên.

    Vì chúng ta sẽ truy cập trang này thường xuyên, tôi khuyên bạn nên thêm nó vào mục yêu thích.

  2. Chọn Create Image Pipeline.

    Thao tác này sẽ đưa bạn đến màn hình Specify pipeline details.

Chi tiết Pipeline

  1. Trong phần General (Thông tin chung), nhập tên pipeline. Ở đây, chúng ta sẽ sử dụng tên my-first-pipeline.

  2. KHÔNG chọn tùy chọn Image Security Scan. Bỏ chọn tùy chọn này.

  3. Trong phần Build schedule (Lịch trình xây dựng), bạn có thể cấu hình khoảng thời gian để xây dựng hình ảnh. Chọn là manual.

    Lưu ý:
    Biểu thức (expression) xác định tần suất EC2 Image Builder đánh giá điều kiện bắt đầu thực thi pipeline của bạn (Execution Start Condition). Khi sử dụng console, giá trị mặc định là EXPRESSION_MATCH_ONLY. Điều này khiến EC2 Image Builder tạo một hình ảnh mới mỗi khi biểu thức CRON khớp với thời gian hiện tại. Ở bài lab này chúng ta mong muốn build ami khi cần nên sẽ không chọn expression mà chọn là manual.

  4. Ở cuối trang, chọn Next (Tiếp theo).

2.2 Chọn Recipe

Recipe hình ảnh là một tài liệu định nghĩa các thành phần sẽ được áp dụng lên hình ảnh cơ sở để tạo cấu hình mong muốn cho hình ảnh đầu ra. Sau khi một recipe được tạo, nó không thể được chỉnh sửa. Bạn cần tạo một phiên bản mới để thay đổi các thành phần.

  1. Chọn Create new recipe (Tạo recipe mới).

  1. Đối với Image type (Loại hình ảnh), chọn Amazon Machine Image (AMI).

Loại đầu ra

  1. Trong phần General (Thông tin chung), nhập các thông tin sau cho recipe:

    • Name: my-first-recipe
    • Description: My first image recipe
    • Version: 1.0.0

  2. Trong phần Base image (Hình ảnh cơ sở):

    • Chọn managed images (hình ảnh được quản lý) và Amazon Linux.
    • Chọn Quick start (Amazon Managed).
    • Đối với Image Name, chọn Windows Server 2019 English Full Base x86.
    • Cuối cùng, chọn Use latest available OS version (Sử dụng phiên bản hệ điều hành mới nhất có sẵn).

    Điều này sẽ sử dụng hình ảnh Amazon Linux 2023 x86 làm cơ sở. Nếu phiên bản ngữ nghĩa của hình ảnh được cấu hình là x.x.x, EC2 Image Builder sẽ luôn sử dụng hình ảnh mới nhất có sẵn khi pipeline bắt đầu.

Cảnh báo:
Bỏ qua các phần Instance configuration (Cấu hình phiên bản) và Working directory (Thư mục làm việc).

  1. Tiếp tục cấu hình các thành phần xây dựng. Cuộn xuống phần Components (Thành phần).

2.3 Thêm Thành phần (Components)

Bây giờ chúng ta sẽ thêm các thành phần vào AMI. Trong ví dụ này, chúng ta sẽ sử dụng các thành phần do AWS cung cấp và cả do chúng ta tạo ra.

Hãy bắt đầu bằng cách thêm Amazon CloudWatch Agent vào hình ảnh.

  1. Trong trường tìm kiếm, nhập amazon-cloudwatch-agent-windows.

** Chúng ta sẽ sử dụng custome component để cài đặt application **

  1. Chọn Create Components .

  2. Nhập như trong hình :

  1. Ở mục Content nhập như bên dưới :
name: InstallWebApp
description: Install Apache Web Server and create a sample HTML page
schemaVersion: 1.0
phases:
  - name: build
    steps:
      - name: InstallApacheStep
        action: ExecuteBash
        inputs:
          commands:
            - sudo yum update -y
            - sudo yum install -y httpd
            - sudo systemctl enable httpd
            - sudo systemctl start httpd
            - sudo bash -c 'echo "<h1>Welcome to EC2 Image Builder Lab</h1>" > /var/www/html/index.html'

  1. Ấn nút create component
  2. Chọn Build component như hình . Mục **Owned by me **

  1. Để đảm bảo phiên bản khởi động thành công và có thể tạo mật khẩu, trong phần Test components (Thành phần kiểm thử), chọn simple-boot-test-linux.

  2. Bỏ qua các tùy chọn cho Storage (Lưu trữ) và Tags (Thẻ), sau đó chọn Next (Tiếp theo).

Quy trình này sẽ làm gì?
Image Builder sẽ thực hiện các giai đoạn xây dựng (build), xác thực (validate) và kiểm thử (test). Giai đoạn xây dựng và xác thực được chạy trên một phiên bản EC2 được tạo từ hình ảnh gốc của recipe. Khi các giai đoạn này hoàn tất thành công, Image Builder sẽ tạo một AMI. Từ AMI này, một phiên bản EC2 mới sẽ được khởi chạy để chạy các bài kiểm thử. Nếu các bài kiểm thử được thông qua, hình ảnh sẽ được phân phối thông qua cấu hình phân phối (distribution configuration).

  1. Chọn workflow như hình

Chú ý role

2.4 Cấu hình Cơ sở hạ tầng

Cuối cùng, chúng ta cần thiết lập Cấu hình Cơ sở Hạ tầng.

  1. Chọn Create a new infrastructure configuration (Tạo cấu hình cơ sở hạ tầng mới).

  2. Đặt tên cho cấu hình, ví dụ: Section-2-infra-config.

  3. Chọn Role IAM phù hợp: EC2InstanceProfileForImageBuilder

  1. Tiếp theo, chúng ta cần cấu hình các cài đặt cơ sở hạ tầng AWS. Mặc dù các cài đặt này là tùy chọn, nhưng khuyến nghị sử dụng các loại phiên bản hiện đại.

    Thêm loại phiên bản t2.nano. (aws giới hạn quotas cho account default là 1 vcpu nên các bạn chú ý chọn instance type nếu không sẽ bị lỗi)

  2. Cuối cùng, cấu hình VPC, Subnet, và Security Group như sau:

    • Chọn VPC bạn tự tạo có thể dùng default vpc.
    • Chọn Public subnet.
    • Chọn Security group cho phép port 22 và 80 từ internet.

Hãy chuyển sang bước cuối cùng và tạo cấu hình phân phối (distribution configuration).

2.5 Cấu hình Phân phối

Để mặt định như hình AMI tạo ra sẽ default là private.

Ấn Next

2.6 Review

Kiểm tra lại config một lượt nếu không có vấn đề thì ấn Create pipeline

Sơ đồ của Pipeline chúng ta vừa tạo:

2.7 Chạy và kiểm tra :

  1. Quay lại EC2 Image Builder Console.

  2. Chọn Image pipelines (Các pipeline hình ảnh).

  3. Chọn pipeline mà bạn đã tạo.

  4. Chọn Actions (Hành động) -> Run pipeline (Chạy pipeline).

  5. Quay lại trang Image pipelines và chọn pipeline của bạn.

    Lúc này, bạn sẽ thấy pipeline ở trạng thái pending (đang chờ) hoặc building (đang xây dựng).

  6. Điều hướng đến EC2 Console. (đợi tầm 15-20 min tùy nhân phẩm ^^!)

    Tại đây, bạn sẽ sớm thấy một phiên bản EC2 đang được sử dụng để xây dựng hình ảnh.

  7. Confirm build thành công

3.1 Kiểm tra Thành phần

Kiểm tra kết quả:

  • Khởi chạy một instance từ AMI được tạo.

  • Ở phần config launch nhớ config vpc và public subnet, security group alow port 22 và 80 để test nhá các Bạn

  • Xác minh rằng Apache đã được cài đặt và hoạt động:

    • Lấy Public IP của instance từ AWS Console (EC2 > Instances > chọn instance).

    • Mở trình duyệt và truy cập: http://<instance-public-ip> (thay <instance-public-ip> bằng địa chỉ IP thực tế, ví dụ: http://3.123.456.789).
    • Kết quả mong đợi: Trang web hiển thị nội dung HTML:
    • <h1>Welcome to EC2 Image Builder Lab</h1>```
      

    • Nếu không thấy nội dung, kiểm tra:
      • Security Group: Đảm bảo cổng 80 (HTTP) được mở.
      • Trạng thái Apache: SSH vào instance và chạy systemctl status httpd để kiểm tra dịch vụ.
      • File HTML: Chạy cat /var/www/html/index.html để xác minh nội dung file.

3.2 Lưu ý

  • Đảm bảo kiểm tra chi phí trước khi triển khai lab, đặc biệt khi sử dụng các tài nguyên EC2.
  • Nếu gặp lỗi khi truy cập IP, kiểm tra lại cấu hình Security Group và trạng thái dịch vụ Apache.

4.1 Clean up (quan trọng)

    1. Terminal instance

    1. Chọn AMI
    1. Deregister Ami và delete snapshot


Hết