Chuẩn bị

Trước khi đi vào nội dung chính của workshop, chúng ta cần thiết lập lại hạ tầng back-end và ứng dụng web front-end từ workshop trước.

Workshop này là phần tiếp theo của Workshop 000080 - Xây dựng Book Store Serverless. Chúng ta sẽ tái sử dụng cùng project SAM và front-end trên S3. Nếu đây là lần đầu tiên bạn thực hiện, hãy làm theo từng bước dưới đây.

1. Cấu hình AWS Credentials cho SAM CLI

Nếu bạn đã cấu hình AWS credentials (Access Key) từ các workshop trước, có thể bỏ qua bước 1 và đi thẳng đến bước 2. Nếu chưa, hãy làm theo bước 1 để thiết lập AWS credentials giúp SAM CLI có thể deploy tài nguyên trên AWS. Tham khảo hướng dẫn chi tiết tại đây: Chuẩn bị - Workshop 000080

  • Chạy lệnh sau trong terminal của bạn.

    aws configure
    

    Nhập thông tin từ file credentials của IAM user:

    • AWS Access Key ID: Nhập Access Key ID của bạn.
    • AWS Secret Access Key: Nhập Secret Access Key của bạn.
    • Default region name: ap-southeast-1 (Singapore — region được sử dụng xuyên suốt workshop này).
    • Default output format: Để trống và nhấn Enter.

    Cấu hình AWS credentials

2. Deploy Back-end bằng SAM CLI

  • Tải xuống mã nguồn dự án SAM bên dưới.

    📥 fcaj-book-shop.zip

  • Giải nén file zip, sau đó mở terminal và điều hướng đến thư mục chứa file template.yaml.

  • Cấu trúc thư mục dự án phải trông như sau:

    fcaj-book-shop/
    ├── fcaj-book-shop/
    │   ├── books_list/
    │   ├── book_create/
    │   └── book_delete/
    └── template.yaml
    
  • Đảm bảo bạn đang ở trong thư mục gốc fcaj-book-shop/ (nơi chứa template.yaml) trước khi chạy các lệnh SAM.

  • Validate và build ứng dụng SAM.

    sam validate
    sam build
    

    SAM validate và build

  • Deploy ứng dụng SAM lần đầu tiên bằng --guided để cấu hình các tham số deploy.

    sam deploy --guided
    

    Cấu hình SAM deploy –guided

  • Nhập các giá trị sau khi được hỏi. Để mặc định các tham số còn lại (nhấn Enter).

    • Stack Name: fcaj-book-shop
    • AWS Region: ap-southeast-1
    • Confirm changes before deploy: y
    • Allow SAM CLI IAM role creation: y
    • Disable rollback: n
    • Save arguments to configuration file: y

    SAM sẽ đóng gói và tải mã Lambda lên managed S3 bucket, sau đó bắt đầu quá trình deploy.

    Initiating deployment — tải artifacts lên S3

  • SAM hiển thị CloudFormation changeset và yêu cầu xác nhận. Nhập y để xác nhận.

    Xem trước CloudFormation changeset — Deploy? [Y/N]

    Sau lần sam deploy --guided đầu tiên, SAM sẽ lưu cấu hình vào file samconfig.toml. Cho tất cả các lần deploy tiếp theo, bạn chỉ cần chạy sam deploy mà không cần --guided.

  • Chờ CloudFormation hoàn tất việc tạo stack (khoảng 2–3 phút). Bạn sẽ thấy “Successfully created/updated stack” khi hoàn tất.

    SAM deploy thành công

3. Build và Deploy Front-end

  • Clone mã nguồn front-end về và cài đặt các dependencies.

    git clone https://github.com/tranvix0910/FCAJ_Workshop-Serverless.git
    cd FCAJ_Workshop-Serverless
    npm install --force
    

    Vì ứng dụng có thể được xây dựng từ khá lâu và không được cập nhật liên tục trong quá trình thực hiện workshop, một số dependency có thể đã bị lỗi thời hoặc không tương thích với các phiên bản mới hơn của Node.js packages. Flag --force bỏ qua các xung đột peer dependency và cho phép quá trình cài đặt tiếp tục. Đây là hành vi bình thường và không ảnh hưởng đến chức năng của ứng dụng.

    npm install –force

  • Build ứng dụng React.

    npm run build
    

    npm run build

  • Tải thư mục build lên S3 bucket của bạn.

    aws s3 cp build s3://fcaj-book-shop-by-tranvix --recursive
    

    Tải thư mục build lên S3

4. Kiểm tra Front-end trên S3

  • Truy cập Amazon S3 Console, mở bucket của bạn và xác nhận rằng các file build đã được upload thành công.

    S3 bucket objects

  • Chuyển sang tab Properties của bucket.

    Tab Properties của S3 bucket

  • Cuộn xuống phần Static website hosting và sao chép URL Bucket website endpoint.

    S3 static website endpoint

  • Mở URL trên trình duyệt để xác nhận ứng dụng FCJ Book Store đang chạy đúng.

    FCJ Book Store chạy trên S3

    Ở giai đoạn này, các nút Sign InSign Up trên ứng dụng chưa hoạt động. Chúng ta sẽ triển khai chức năng xác thực trong các phần tiếp theo bằng Amazon Cognito và AWS Lambda.

Chúng ta đã thiết lập thành công hạ tầng back-end và ứng dụng front-end. Bây giờ chúng ta sẵn sàng cho nội dung chính của workshop.