Ở bài trước chúng ta đã tìm hiểu sơ qua việc hosting website tĩnh lên S3 như nào. Bài này sẽ đi vào 1 website thật, theo chân mình để đi sâu hơn 1 tý về S3 nhé như Bucket Policy, Versionning, DR,..
Tổng quan và mục tiêu lab
Trong lab này, bạn sử dụng Amazon Simple Storage Service (Amazon S3) để xây dựng một trang web tĩnh và triển khai các phương pháp hay nhất về kiến trúc để bảo vệ và quản lý dữ liệu của bạn.
Sau khi hoàn thành lab này, bạn sẽ có thể:
- Lưu trữ một trang web tĩnh bằng cách sử dụng Amazon S3
- Triển khai một cách để bảo vệ dữ liệu của bạn với Amazon S3
- Triển khai chiến lược khôi phục thảm họa (DR) trong Amazon S3.
Ở cuối lab này, kiến trúc của bạn sẽ giống như ví dụ sau:
Public website thông qua Bucket Policy
Task 1: Hosting website thông qua source code có sẵn
Trong task này, bạn sẽ trích xuất các tệp mà bạn cần để tạo trang web tĩnh.
- Download the .zip file bạn cần cho lab này qua repo Github của mình.
- Trên máy tính của bạn, giải nén các tập tin. Lưu ý rằng bạn có tệp index.html và hai thư mục chứa Cascading Style Sheets (CSS) và tệp hình ảnh.
Task 2: Tạo S3 bucket để hosting static web
Trong task này bạn sẽ tạo 1 s3 bucket và hosting website, làm tương tự ở bài viết S3 – Guiled Lab lần trước. Lưu ý các điểm sau.
- Tạo bucket ở region N. Virginia (us-east-1).
- Bạn phải disable Block all public access.
- Kích hoạt tính năng lưu trữ trang web tĩnh trên bucket của bạn
Task 3: Tạo bucket policy để grant public read access
- Tạo chính sách nhóm cấp quyền read-only cho người dùng ẩn danh công khai bằng cách sử dụng trình chỉnh sửa Bucket Policy
Task 4: Bật chế độ versioning trên S3 bucket
Task 5: Cài đặt bucket policies
Thực thi câu lệnh dưới đây để public website thong qua bucket policy
aws s3api put-bucket-policy –bucket rmit-test312 –policy “{
\”Version\”: \”2012-10-17\”,
\”Statement\”: [
{
\”Sid\”: \”PublicReadGetObject\”,
\”Effect\”: \”Allow\”,
\”Principal\”: \”*\”,
\”Action\”: \”s3:GetObject\”,
\”Resource\”: \”arn:aws:s3:::rmit-test312/*\”
}
]
}”
Enhancing durability và lên kế hoạch cho phục hồi sau thảm họa (DR)
Để bảo vệ các tệp tĩnh của trang web khỏi bị vô tình ghi đè hoặc xóa. Bạn có thể sao chép giữa các region là một tính năng khác của Amazon S3 mà bạn cũng có thể sử dụng để sao lưu và lưu trữ dữ liệu quan trọng. Theo Well-Architected Framework, khởi đầu cho chiến lược DR của bạn là có sẵn các bản sao lưu và các thành phần khối lượng công việc dự phòng. Bạn nên sử dụng AWS hoặc các công cụ của bên thứ ba để tự động khôi phục hệ thống và định tuyến lưu lượng truy cập đến trang hoặc Khu vực DR.
Task 6: Tạo bucket đích
aws s3api create-bucket –bucket rmit-test312-us-west1 –region us-west-1 –create-bucket-configuration LocationConstraint=us-west-1
Task 7: Enable versioning trên bucket đích.
aws s3api put-bucket-versioning –bucket rmit-test312-us-west1 –versioning-configuration Status=Enabled
Task 8: Tạo IAM role. Role này sẽ được assumed bởi S3 để sao chép các đối tượng.
- Sao chép policy bên dưới và lưu nó vào tệp có tên s3-trust-policy.json.
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Effect”: “Allow”,
“Principal”: {
“Service”: “s3.amazonaws.com”
},
“Action”: “sts:AssumeRole”
}
]
}
- Tạo role bằng lệnh bên dưới.
aws iam create-role –role-name S3replicationRole –assume-role-policy-document file://s3-trust-policy.json
- Sao chép policy bên dưới và lưu nó vào tệp có tên s3-role-perms.json, thay thế tên bucket nguồn và tên bucket đích thành bucket nguồn và bucket đích của bạn.
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Effect”: “Allow”,
“Action”: [
“s3:GetObjectVersionForReplication”,
“s3:GetObjectVersionAcl”,
“s3:GetObjectVersionTagging”
],
“Resource”: [“arn:aws:s3:::rmit-test312/*”]
},
{
“Effect”: “Allow”,
“Action”: [“s3:ListBucket”, “s3:GetReplicationConfiguration”],
“Resource”: [“arn:aws:s3:::rmit-test312”]
},
{
“Effect”: “Allow”,
“Action”: [
“s3:ReplicateObject”,
“s3:ReplicateDelete”,
“s3:ReplicateTags”
],
“Resource”: “arn:aws:s3:::rmit-test312-us-west1/*”
}
]
}
- Tạo và đính kèm policy cho role bằng lệnh bên dưới
aws iam put-role-policy –role-name S3replicationRole –policy-document file://s3-role-perms.json –policy-name S3replicationRolePolicy
Task 9: Thêm cấu hình sao chép object vào bucket nguồn.
{
“Role”: “arn:aws:iam::668711278733:role/S3replicationRole”,
“Rules”: [
{
“Status”: “Enabled”,
“Priority”: 1,
“DeleteMarkerReplication”: { “Status”: “Disabled” },
“Filter”: { “Prefix”: “” },
“Destination”: {
“Bucket”: “arn:aws:s3:::rmit-test312-us-west1”
}
}
]
}
- Thêm cấu hình sao chép bằng lệnh bên dưới, thay thế tên bucket nguồn thành bucket nguồn của bạn.
aws s3api put-bucket-replication –replication-configuration file://replicationConf.json –bucket rmit-test312
Task 10: Test thử
- Truy xuất bản sao bằng lệnh bên dưới, thay thế tên bucket nguồn
aws s3api get-bucket-replication –bucket rmit-test312
Bạn sẽ lên bucket nguồn thử update hay thêm 1 object và mở bucket đích xem kết quả nhé. Ngoài ra chúng ta ban đầu muốn tất cả object từ nguồn sang đích cách bạn có thể sync qua câu lệnh sau
aws s3 sync s3://DOC-EXAMPLE-BUCKET-SOURCE s3:// DOC-EXAMPLE-BUCKET-TARGET –source-region SOURCE-REGION-NAME –region DESTINATION-REGION-NAME
Chúc các bạn thành công!!!