Cloud

Hướng dẫn tạo website tĩnh trên AWS S3

Bạn vừa gia nhập một nhóm kỹ sư điện toán đám mây và được giao nhiệm vụ tạo một website tĩnh. Thử thách đặt ra là host website này bằng Amazon S3, một dịch vụ lưu trữ đám mây linh hoạt và chi phí hợp lý. Mục tiêu là giúp nhóm của bạn hiểu rõ sức mạnh của việc host website trên một giải pháp lưu trữ đám mây. Bài viết này sẽ hướng dẫn bạn các bước cụ thể để sử dụng AWS S3 làm nơi lưu trữ website tĩnh. Nội dung bài viết này phù hợp cho người mới bắt đầu với AWS, system admin muốn mở rộng kỹ năng cloud computing, cũng như những ai đang ôn luyện cho các kỳ thi chứng chỉ AWS. Vậy chúng ta sẽ lần lượt thực hiện việc tạo bucket S3 (bucket có thể hiểu như một “thư mục” đặc biệt trên S3 dùng để chứa dữ liệu), upload lên các files cho trang web, thiết lập quyền truy cập công khai, kích hoạt tính năng Static Website Hosting và cuối cùng là kiểm tra website trên Internet. Hãy cùng bắt đầu nào! #AWSS3 #WebsiteTinh #CloudComputing #DevOps #AWSVietnam

Bước 1: Tạo S3 Bucket mới

Trước tiên, chúng ta cần tạo một bucket S3 để chứa các file của website tĩnh. Mỗi website trên S3 sẽ được lưu trữ trong một bucket riêng. Thực hiện như sau:

  • Đăng nhập vào tài khoản AWS của bạn và mở trang quản lý S3 (S3 console) tại địa chỉ https://console.aws.amazon.com/s3/.

  • Tại giao diện S3, nhấn nút Create bucket (Tạo bucket).

  • Trong màn hình “Create bucket” nhập một tên bucket phải là duy nhất cho S3 bucket của bạn. Bạn nên đặt tên bucket trùng với tên miền mà bạn dự định sử dụng cho website (ví dụ: www.example.com) để sau này có thể dễ dàng gán tên miền cho bucket. (Lưu ý: Tên bucket chỉ cho phép ký tự thường, số, dấu chấm và gạch ngang, không có khoảng trắng, và không được trùng với bất kỳ bucket nào đã tồn tại trên toàn cầu.)

  • Chọn Region (Khu vực) gần nhất với đối tượng người dùng truy cập của bạn để tối ưu hiệu xuất tải trang. Ví dụ, nếu phần lớn khách truy cập ở Việt Nam, bạn có thể chọn khu vực Đông Nam Á (Singapore) để giảm độ trễ.

  • Bỏ chọn tùy chọn Block all public access (Chặn mọi truy cập công khai từ bên ngoài internet) và đánh dấu xác nhận rằng bạn hiểu bucket sẽ cho phép truy cập công khai. Bước này rất quan trọng vì mặc định AWS sẽ khóa truy cập công khai để đảm bảo bảo mật, nhưng ở đây chúng ta cần mở quyền công khai để website có thể được truy cập qua Internet. Giữ các thiết lập khác theo mặc định.

  • Chọn “I acknowledge that the current settings might result in this bucket and the objects within becoming public”.

  • Cuối cùng, click Create bucket để hoàn tất việc tạo bucket.

Sau vài giây, bucket S3 mới của bạn sẽ được tạo ra. Hãy đảm bảo bạn nhớ tên bucket vừa tạo, vì chúng ta sẽ sử dụng nó trong các bước tiếp theo.

Bước 2: Tải file trang web tĩnh lên bucket

Sau khi có bucket, bước tiếp theo là tải các file website tĩnh của bạn lên bucket đó. Một website tĩnh thường gồm các tệp HTML, CSS, JavaScript và hình ảnh (nếu có). Trong hướng dẫn này, chúng ta sẽ sử dụng hai file HTML mẫu là index.html (giả sử đây là trang chủ) và error.html (trang lỗi tùy chỉnh cho mã 404). Bạn có thể sử dụng hai file mẫu này để thực hành (download từ GitHub Repo của mình tại địa chỉ: https://github.com/phuongluuho/amazonS3staticwebs ), hoặc dùng các file trang web của riêng bạn nếu đã chuẩn bị sẵn.

Thực hiện upload files lên S3 như sau:

  • Truy cập vào bucket bạn vừa tạo bằng cách click vào tên bucket trong danh sách bucket trên S3 console.

  • Trong giao diện chi tiết của bucket, click Upload (Tải lên).

  • Ở cửa sổ Upload, click Add files (Thêm file) và chọn các tệp trang web tĩnh của bạn từ máy tính (ví dụ chọn file newstory.htmlerror.html đã chuẩn bị ở trên).

  • Sau khi chọn xong, click nút Upload để bắt đầu tải các file lên bucket. Quá trình tải lên sẽ diễn ra trong vài giây (hoặc lâu hơn nếu file của bạn lớn, nhưng các file HTML thường rất nhẹ).

Khi upload hoàn tất, bạn sẽ thấy các file trang web xuất hiện trong danh sách đối tượng (objects) bên trong bucket S3. Tới đây, website của bạn đã nằm trên AWS S3, nhưng chưa thể truy cập được từ Internet do còn thiếu thiết lập quyền truy cập và cấu hình host. Hãy tiếp tục với bước quan trọng tiếp theo để cấu hình quyền truy cập công khai.

Bước 3: Mở quyền truy cập công khai cho nội dung bucket

Theo mặc định, mọi nội dung trong một bucket S3 đều bị chặn truy cập công khai nhằm đảm bảo bảo mật. Điều này có nghĩa là dù bạn đã tải file lên, người dùng vẫn không thể truy cập chúng qua HTTP nếu không có thiết lập đặc biệt. Để website của chúng ta hoạt động, cần thiết lập để các file trong bucket có quyền Public Read (đọc công khai). Cách thực hiện là thêm một Bucket Policy (chính sách cho bucket) cho phép mọi người đọc các đối tượng trong bucket. Thực hiện như sau:

  • Mở tab Permissions (Phân quyền) của bucket trên giao diện S3.

  • Cuộn xuống phần Bucket policy và click nút Edit để chỉnh sửa/thiết lập policy cho bucket.

  • Thêm nội dung policy JSON cho phép quyền đọc công khai. Bạn có thể sử dụng mẫu chính sách sau đây và chỉnh sửa cho phù hợp. (Hãy thay thế your-bucket-name bằng tên bucket thật của bạn trong đoạn JSON này):

{
"Version": "2012-10-17",
"Statement": [
{
    "Sid": "PublicReadGetObject",
    "Effect": "Allow",
    "Principal": "*",
    "Action": "s3:GetObject",
    "Resource": "arn:aws:s3:::your-bucket-name/*"
     }
  ]
}

  • Click Save changes để lưu lại Bucket Policy vừa thêm.

Chính sách bucket ở trên có ý nghĩa là cho phép tất cả mọi người (Principal là "*") được quyền thực hiện hành động s3:GetObject (đọc đối tượng) trên mọi đối tượng trong bucket của bạn (Resource là arn:aws:s3:::your-bucket-name/*). Nói cách khác, sau khi gắn policy này, toàn bộ nội dung trong bucket đã được mở quyền đọc công khai. Đây là bước cần thiết để các file HTML, CSS, JS của website có thể được người dùng truy cập thông qua trình duyệt. (Lưu ý: việc mở quyền công khai nghĩa là bất kỳ ai có đường dẫn URL tới file đều có thể truy cập file đó. Do vậy, hãy cẩn trọng và chỉ nên bật khi bạn thực sự muốn nội dung được public. Trong trường hợp này, website tĩnh của chúng ta cần public nên điều này là chấp nhận được.)

Bước 4: Kích hoạt tính năng Static Website Hosting cho bucket

Bucket S3 của bạn hiện đã có nội dung trang web và đã cho phép truy cập công khai. Tuy nhiên, để S3 có thể phục vụ các file này như một website, chúng ta cần bật tính năng Static Website Hosting trên bucket. Việc kích hoạt tính năng này sẽ cung cấp cho bucket một điểm cuối (endpoint) HTTP đặc biệt, qua đó người dùng có thể truy cập website của bạn. Thực hiện bước này như sau:

  • Vẫn trong trang bucket của bạn, chuyển sang tab Properties (Thuộc tính).

  • Kéo xuống dưới tìm phần Static website hosting và click nút Edit (Chỉnh sửa).

  • Chọn tùy chọn Enable (Bật) để bật tính năng lưu trữ website tĩnh cho bucket.

  • Trong trường Index document, nhập tên file HTML dùng làm trang chủ (trang index) của bạn, ví dụ: index.html. Đây phải là tên chính xác của file trang chủ bạn đã upload (phân biệt chữ hoa thường).

  • Trong trường Error document, nhập tên file trang lỗi tùy chỉnh, ví dụ: error.html. Trường này không bắt buộc, nhưng nếu bạn đã có file trang lỗi (như trong ví dụ này) thì nên chỉ định để người dùng sẽ được chuyển đến trang thông báo lỗi thân thiện hơn nếu họ truy cập nhầm đường dẫn. (Nếu bạn không có trang lỗi tùy chỉnh, có thể bỏ trống, khi đó S3 sẽ hiển thị một thông báo lỗi mặc định khi gặp lỗi 404).

  • Cuộn xuống cuối trang và click Save changes để lưu lại cấu hình.

Sau khi lưu, tính năng Static Website Hosting đã được kích hoạt cho bucket. S3 sẽ tự động gán cho bucket một Bucket website endpoint – tức là một URL duy nhất đại diện cho website tĩnh của bạn trên S3. Ở bước kế tiếp, chúng ta sẽ lấy URL này để kiểm tra trang web.

Bước 5: Kiểm tra website tĩnh qua URL endpoint

Đến đây, bạn đã hoàn thành việc cấu hình hosting tĩnh trên S3. Bước cuối cùng là kiểm tra xem website của bạn có thể truy cập được hay chưa và trang lỗi tùy chỉnh hoạt động đúng không. Hãy làm như sau:

  • Vào lại tab Properties của bucket, tìm đến phần Static website hosting. Tại đây, bạn sẽ thấy trường Bucket website endpoint hiển thị một URL. URL này có dạng http://<tên-bucket>.s3-website-<Vùng>.amazonaws.com. Ví dụ minh họa: http://your-bucket-name.s3-website-ap-southeast-1.amazonaws.com (nếu bucket ở region ap-southeast-1, tức Singapore). Đây chính là địa chỉ web của website tĩnh mà bạn vừa cấu hình.

  • Sao chép URL Bucket website endpoint và dán vào trình duyệt web. Nếu mọi thứ được thiết lập đúng, trình duyệt sẽ tải trang chủ (index.html) của website tĩnh mà bạn đã upload (ví dụ nội dung của index.html sẽ hiển thị). Hãy kiểm tra xem trang web tĩnh của bạn có hiển thị đầy đủ không.

  • Tiếp theo, để thử nghiệm trang lỗi tùy chỉnh, bạn có thể cố tình truy cập một đường dẫn không tồn tại trên website. Cách đơn giản là thêm một chuỗi ký tự ngẫu nhiên vào cuối URL. Ví dụ: truy cập http://your-bucket-name.s3-website-<region>.amazonaws.com/abc123 (với <region> là region của bạn, tương tự URL ở trên). Vì không có file nào tên abc123 trong bucket, S3 sẽ trả về lỗi 404 và bạn nên được chuyển hướng đến trang lỗi tùy chỉnh error.html mà bạn đã cấu hình. Kiểm tra xem nội dung trang lỗi của bạn có được hiển thị đúng hay không.

Nếu trang chủ hiển thị tốt và trang lỗi tùy chỉnh cũng hoạt động, xin chúc mừng! Bạn đã thành công triển khai một website tĩnh trên Amazon S3.

Kết luận

Qua hướng dẫn trên, bạn đã thực hiện toàn bộ quy trình để host một website tĩnh trên AWS S3, từ việc tạo bucket, upload file lên S3 bucket, thiết lập quyền truy cập, kích hoạt Static Website Hosting cho đến kiểm tra website trên thực tế. Kết quả là bạn có một website tĩnh chạy trực tiếp từ dịch vụ lưu trữ S3 của AWS, mà không cần đến bất kỳ máy chủ web (server) truyền thống nào.

Giá trị nhận được sau khi hoàn thành bài thực hành này không chỉ là một trang web tĩnh sẵn sàng trực tuyến, mà quan trọng hơn, bạn đã nắm vững các khái niệm và kỹ năng cơ bản về AWS S3. Cụ thể, bạn hiểu cách tạo và cấu hình một bucket S3, cách quản lý bucket policy để cấp quyền truy cập phù hợp, và cách tận dụng tính năng Static Website Hosting của S3 để biến một bucket lưu trữ đơn thuần thành nơi phục vụ website. Những kiến thức này rất hữu ích cho công việc thực tế của một system admin hoặc kỹ sư DevOps khi triển khai các ứng dụng tĩnh, đồng thời cũng giúp củng cố nền tảng cho những ai đang chuẩn bị tham gia các kỳ thi chứng chỉ AWS (ví dụ: AWS Certified Cloud Practitioner, AWS Solutions Architect Associate, v.v.).

Tóm lại, Amazon S3 cung cấp một giải pháp đơn giản, mạnh mẽ và tiết kiệm để lưu trữ website tĩnh. Sau khi thực hành các bước trong bài hướng dẫn, bạn đã có thể tự tin triển khai một website tĩnh trên S3, trải nghiệm sự tiện lợi của điện toán đám mây và sẵn sàng khám phá thêm nhiều dịch vụ AWS khác. Hãy nhớ rằng bạn cũng có thể liên kết bucket S3 này với một tên miền tùy chỉnh (thông qua dịch vụ Amazon Route 53) và thậm chí tích hợp với CloudFront (CDN) để cải thiện hiệu xuất phân phối nội dung. Đó có thể là những bước tiếp theo để nâng cao kỹ năng của bạn.

Chúc bạn thành công trên hành trình học tập AWS!

#AWSS3 #WebsiteTinh #CloudComputing #DevOps #DavidClintonStyle #AWSVietnam

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *