Sau một thời gian, tham gia vào các khóa AWS Academy do AWS tổ chức, mình có note được một số nội dung và xin phép được chia sẻ lại bằng Tiếng Việt giành cho các anh em chưa có cơ hội tham gia hoặc muốn hiểu thêm về AWS. Một số nội dung như html, css, js,... mình xin sử dụng lại của AWS luôn cho lẹ nhé anh em :D :D Theo chân mình để đi một chuỗi hand-on AWS nhé
Bài hôm nay, ngoài việc storage các objects thì S3 còn có thêm một tính năng là giúp user có thể hosting website một các dễ dàng. Hy vọng bài viết dưới đây có thể giúp bạn hiểu hơn về nó.
Task 1: Tạo 1 bucket trên S3
Trong task này, bạn sẽ tạo ra 1 bucket trên S3 và mình lưu trữ bản static website của mình.
- Vào AWS Management Console, chọn Services trên menu, chọn S3.
- Chọn Create bucket, chỗ S3 bucket name sẽ là một tên gọi cho bucket, lưu ý nó là duy nhất trên global, không được chứa khoảng trắng hoặc chữ hoa. Sau khi bạn tạo một bucket, tên của bucket đó không thể được sử dụng bởi một tài khoản AWS khác trong bất kỳ Khu vực AWS nào trừ khi bạn xóa bucket đó. Do đó, đối với phòng lab này, bạn sẽ sử dụng tên chứa bao gồm một số ngẫu nhiên, chẳng hạn như: website-1233
- Bucket name nhập vào website-1233 (nhớ thay 1233 thành 1 random number). Public access to buckets bị chặn theo mặc định. Vì các tệp trong trang web tĩnh của bạn sẽ cần có thể truy cập được qua internet nên bạn phải cho phép truy cập công khai.
- Trong Object Ownership, chọn ACLs enabled, sau đó kiểm tra lại Bucket owner preferred rằng đã được chọn.
- Bỏ chọn Block all public access, sau đó chọn vào “I acknowledge that the current settings may result in this bucket and the objects within becoming public.“
- Chọn Create bucket
Bạn có thể sử dụng tag để thêm thông tin bổ sung vào bucket, chẳng hạn như mã dự án, hoặc chủ sở hữu. - Chọn vào tên bucket bạn vừa tạo
- Chọn tab Properties.
- Cuộn xuống đến Tags.
- Chọn Edit sau đó Add tag và nhấn enter:
Key:Department
Value:Marketing
- Chọn Save changes để lưu tag. Tiếp theo, bạn sẽ cấu hình bucket cho dịch vụ lưu trữ trang web tĩnh.
- Vẫn ở màn hình tab Properties .
- Cuộn xuống Static website hosting.
- Chọn Edit
- Cấu hình các cài đặt sau:
- Static web hosting: Enable
- Hosting type: Host a static website
- Index document:
index.html
- Lưu ý: Bạn phải nhập giá trị này, mặc dù nó đã được hiển thị.
- Error document:
error.html
- Chọn Save changes
- Vào mục Static website hosting, chọn liên kết dưới Bucket website endpoint. Bạn sẽ nhận được lỗi “403 Forbidden message” bởi vì các quyền của bucket chưa được cấu hình. Đừng tắt tab này, mở trong trình duyệt web của bạn để bạn có thể quay lại sau.
Vậy là xong, bucket của bạn hiện đã được cấu hình để lưu trữ một trang web tĩnh.
Task 2: Uploading content lên bucket
Trong task này, bạn sẽ tải các tệp sẽ đóng vai trò là trang web tĩnh của mình lên bucket.
- 3 mục này mình để ở github mình
- Quay lại Amazon S3 console và vào
website-<1233>
bạn đã tạo trước đó, hãy chọn Objects tab. - Chọn Upload
- Chọn Add files
- Xác định vị trí thư mục và chọn ba tệp mà bạn đã tải xuống.
- Chọn Upload Các tệp của bạn được tải lên bộ chứa.
- Chọn Close
Task 3: Cho phép truy cập vào các objects
Theo mặc định, các objects được lưu trữ trong Amazon S3 là private. Điều này đảm bảo rằng dữ liệu của bạn vẫn an toàn.
Trong task này, bạn sẽ làm cho các đối tượng được tải lên có thể truy cập công khai từ bên ngoài.
Trước tiên, hãy xác nhận rằng các objects hiện đang ở chế độ private trước đã 😀
- Quay lại tab trình duyệt đã hiển thị 403 Forbidden message.
- Refresh cái webpage. Nhưng mà lỡ đóng tab web này rồi thì vào tab Properties, và trong Static website hosting chọn Endpoint. Bạn vẫn sẽ thấy một “403 Forbidden message”. Vậy là đã private như mong đợi. Hiểu sơ qua thì thông báo này ý là cho biết rằng trang web tĩnh của bạn đang được Amazon S3 lưu trữ, nhưng nội dung đó là riêng tư. Bạn có thể công khai cácobjects Amazon S3 thông qua hai cách khác nhau:
- Để public toàn bộ bucket hoặc một thư mục cụ thể trong bucket, hãy sử dụng “bucket policy“.
- Để public các object riêng lẻ trong bucket, mình sẽ sử dụng access control list (ACL).
- Thông thường sẽ an toàn hơn thì thường người ta sẽ dùng cách 2, vì nó tránh việc mình public nhưng object khác không mong muốn trong bucket. Tuy nhiên, nếu bạn biết rằng toàn bộ nhóm không chứa thông tin nhạy cảm, bạn có thể sử dụng “bucket policy“.
Bây giờ bạn sẽ cấu hình các object riêng lẻ để có thể truy cập công khai. - Quay lại tab trình duyệt web với bảng điều khiển Amazon S3 (nhưng không đóng tab trang web).
- Chọn cả 3 objects
- Trong Actions menu, chọn Make public via ACL. Một danh sách của ba đối tượng được hiển thị.
- Chọn Make public => Trang web tĩnh của bạn hiện có thể truy cập công khai.
- Quay trở lại tab trình duyệt web có 403 Forbidden message.
- F5 lại webpage.
Thế là xong
Task 4: Updating the website
Trong task này, mình sẽ hướng dẫn cách để update trang web khi có source code mới
Amazon S3 là một object storage service, vì vậy bạn phải tải lên toàn bộ files. Hành động này sẽ thay thế objects hiện có trong bucket của bạn. Bạn không thể chỉnh sửa nội dung của một object—thay vào đó, toàn bộ objects phải được thay thế.
- Trên máy tính của bạn, tải tệp index.html vào trình soạn thảo văn bản (vd: Notepad or TextEdit).
- Tìm khúc Served from Amazon S3 và thay thế bằng ““
- Lưu file.
- Quay lại bảng điều khiển Amazon S3 và tải lên tệp index.html mà bạn vừa chỉnh sửa.
- Chọn index.html và sử dụng menu Actions để chọn lại tùy chọn Đặt công khai qua ACL.
- Quay lại tab trình duyệt web có trang web tĩnh và làm mới trang.
Done, tên của bạn bây giờ sẽ có trên trang. Trang web tĩnh của bạn hiện có thể truy cập được trên internet. Vì được lưu trữ trên Amazon S3 nên trang web có tính sẵn sàng cao và có thể phục vụ lưu lượng truy cập lớn mà không cần sử dụng bất kỳ máy chủ nào. Bạn cũng có thể sử dụng tên miền của riêng mình để hướng người dùng đến một trang web tĩnh được lưu trữ trên Amazon S3. Để thực hiện điều này, bạn có thể sử dụng dịch vụ Hệ thống tên miền (DNS) Amazon Route 53 kết hợp với Amazon S3.
Chúc các bạn thành công!!!! Và hẹn gặp lại trong bài viết khác!
Reference: AWS Academy Cloud Arichitect