SonTran's avatar
Son Tran
AWS

Tổng quan về Amazon S3

Tổng quan về Amazon S3
0 views
15 min read
#AWS

Giới thiệu về Amazon S3

Amazon S3 (Simple Storage Service) là dịch vụ lưu trữ đám mây được cung cấp bởi Amazon Web Services (AWS), mang đến một nền tảng mạnh mẽ để lưu trữ và quản lý dữ liệu trực tuyến. Được ra mắt lần đầu vào năm 2006, Amazon S3 nhanh chóng trở thành một trong những dịch vụ lưu trữ đám mây phổ biến nhất trên thế giới, phục vụ hàng triệu khách hàng từ các doanh nghiệp lớn đến các nhà phát triển độc lập.

Các trường hợp sử dụng Amazon S3

  1. Sao lưu và Lưu trữ

Amazon S3 cung cấp một nền tảng tin cậy để sao lưu và lưu trữ dữ liệu quan trọng. Khả năng bền vững và khả dụng cao giúp đảm bảo dữ liệu luôn an toàn và sẵn sàng truy cập.

  1. Phục hồi sau Thảm họa

Là một phần của chiến lược phục hồi sau thảm họa, Amazon S3 cho phép tổ chức sao chép dữ liệu qua các khu vực hoặc trong cùng một khu vực, đảm bảo tính sẵn sàng của dữ liệu khi có sự cố hệ thống hoặc thảm họa xảy ra.

  1. Lưu trữ lâu dài (Archive)

Amazon S3 là nền tảng hiệu quả cho việc lưu trữ dữ liệu lâu dài. Tổ chức có thể ###u trữ dữ liệu cần giữ lại nhưng truy cập ít với chi phí lưu trữ thấp hơn.

  1. Lưu trữ Đám mây Kết hợp (Hybrid Cloud Storage)

Kết hợp mượt mà với cơ sở hạ tầng nội địa, Amazon S3 cho phép tích hợp dữ liệu g### đám mây và cơ sở hạ tầng trên nền tảng đám mây.

  1. Host Ứng dụng

Amazon S3 cung cấp khả năng lưu trữ tệp tĩnh và tài nguyên cho các ứng dụng web và di động, hỗ trợ cho việc phân phối phần mềm và dịch vụ.

  1. Host Phương tiện truyền thông (Media Hosting)

Dễ dàng lưu trữ và phân phối nội dung đa phương tiện như hình ảnh, video và âm thanh với khả năng truy cập cao và tốc độ truyền tải nhanh chóng.

  1. Hồ sơ dữ liệu và phân tích dữ liệu lớn (Data Lakes & Big Data Analytics)

Amazon S3 là nền tảng lưu trữ lý tưởng cho các hồ sơ dữ liệu và phân tích dữ liệu lớn, cho phép tổ chức lưu trữ và phân tích các tập dữ liệu lớn một cách hiệu quả.

  1. Phân phối phần mềm (Software Delivery)

Dễ dàng phân phối và cập nhật phần mềm thông qua việc lưu trữ và phân phối tài sản tĩnh trên Amazon S3.

  1. Website Tĩnh (Static Website)

Amazon S3 cung cấp khả năng lưu trữ và phục vụ các trang web tĩnh một cách hiệu quả, giúp các tổ chức xây dựng và quản lý các trang web đơn giản và dễ dàng.

Những tính năng đa dạng và tính linh hoạt của Amazon S3 làm cho nó trở thành một giải pháp quan trọng không thể thiếu trong việc lưu trữ và quản lý dữ liệu của các tổ chức và doanh nghiệp hiện đại.

Amazon S3 - Buckets

Amazon S3 cho phép lưu trữ các đối tượng (files) trong các “buckets” (thư mục).

  1. Đặc điểm của Buckets
  • Tên duy nhất toàn cầu: Mỗi bucket phải có một tên duy nhất trên toàn cầu.
  • Định nghĩa theo vùng: Buckets được tạo và tồn tại trong một vùng (region) cụ thể.
  • Quy ước đặt tên:
    • Không sử dụng chữ hoa hoặc dấu gạch dưới.
    • Độ dài từ 3 đến 63 ký tự.
    • Không được giống địa chỉ IP.
    • Bắt đầu bằng chữ cái thường hoặc số.
    • Không bắt đầu bằng tiền tố "xn--".
    • Không kết thúc bằng hậu tố "-s3alias".
  • Một số lưu ý:
    • Hiệu suất và chi phí: Chọn vùng gần người dùng để tối ưu.
    • Quản lý quyền truy cập: Sử dụng chính sách và ACLs để kiểm soát truy cập.
    • Tuân thủ quy định: Đảm bảo tuân thủ các quy định và tiêu chuẩn bảo mật.

Amazon S3 - Objects

Objects trong Amazon S3 là các tệp tin được lưu trữ trong buckets và được xác định bằng một key.

  1. Đặc điểm của Objects:
  • Key là đường dẫn đầy đủ: Mỗi object có một key là đường dẫn đầy đủ tới tệp tin, ví dụ:

    • s3://my-bucket/my_file.txt
    • s3://my-bucket/my_folder1/another_folder/my_file.txt
  • Cấu trúc của key: Key bao gồm tiền tố (prefix) và tên đối tượng (object name), ví dụ:

    • s3://my-bucket/my_folder1/another_folder/my_file.txt
    • Trong đó, my_folder1/another_folder/ là prefix và my_file.txt là object name.
  • Không có thư mục thực sự: S3 không có khái niệm thư mục (directories) như hệ thống tệp truyền thống. Mặc dù giao diện người dùng có thể khiến bạn nghĩ rằng có thư mục, thực chất chỉ là các keys với tên dài có chứa dấu gạch chéo “/”.

Objects trong Amazon S3 không chỉ có key mà còn chứa nhiều thông tin khác.

  1. Nội dung và kích thước của Object:
  • Giá trị của Object: Là nội dung của tệp tin.
  • Kích thước tối đa: Tối đa 5TB (5000GB) cho mỗi object.
  • Tải lên trên 5GB: Phải sử dụng phương pháp “multi-part upload”.
  1. Metadata:
  • Metadata: Là danh sách các cặp key/value bằng văn bản. Có hai loại:
    • System metadata: Do hệ thống AWS tạo ra và quản lý.
    • User metadata: Do người dùng tự định nghĩa và gắn vào object.
  1. Tags:
  • Tags: Là các cặp key/value Unicode, tối đa 10 cặp mỗi object. Tags rất hữu ích cho việc quản lý bảo mật và vòng đời của object.
  1. Version ID:
  • Version ID: Nếu tính năng versioning được bật, mỗi phiên bản của object sẽ có một ID duy nhất.

Amazon S3 - Security

Bảo mật trong Amazon S3 được thực hiện qua nhiều lớp, từ người dùng đến tài nguyên.

  1. Bảo mật dựa trên người dùng
  • IAM Policies: Các chính sách IAM xác định các lệnh API nào được phép thực hiện đối với một người dùng cụ thể trong IAM.
  1. Bảo mật dựa trên tài nguyên
  • Bucket Policies: Các quy tắc áp dụng cho toàn bộ bucket, có thể được cấu hình từ giao diện S3 console. Cho phép quyền truy cập chéo tài khoản.
  • Object Access Control List (ACL): Kiểm soát truy cập chi tiết cho từng object (có thể bị vô hiệu hóa).
  • Bucket Access Control List (ACL): Ít phổ biến hơn và cũng có thể bị vô hiệu hóa.
  1. Quy tắc truy cập

Một IAM principal có thể truy cập vào một object trong S3 nếu:

  • IAM permissions cho phép HOẶC resource policy cho phép
  • VÀ không có lệnh DENY rõ ràng.
  1. Mã hóa
  • Mã hóa: Mã hóa các objects trong Amazon S3 bằng cách sử dụng các khóa mã hóa (encryption keys).

Như vậy, quản lý bảo mật trong Amazon S3 yêu cầu hiểu rõ các cơ chế bảo mật và quyền truy cập để đảm bảo dữ liệu luôn an toàn và được bảo vệ.

Amazon S3 - Bucket Policies

Bucket Policies trong Amazon S3 cho phép bạn quản lý quyền truy cập và hành vi của các buckets và objects thông qua các chính sách dựa trên JSON.

  1. Cấu trúc của Bucket Policies
  • JSON based policies: Các chính sách được viết dưới dạng JSON và bao gồm các thành phần sau:
    • Resources: Xác định buckets và objects mà chính sách áp dụng.
    • Effect: Quy định hành động cho phép (Allow) hoặc từ chối (Deny).
    • Actions: Tập hợp các lệnh API mà chính sách cho phép hoặc từ chối.
    • Principal: Tài khoản hoặc người dùng mà chính sách áp dụng.
  1. Ứng dụng của Bucket Policies

Sử dụng bucket policies để:

  • Grant public access: Cấp quyền truy cập công khai cho bucket.
  • Force encryption: Bắt buộc các objects phải được mã hóa khi tải lên.
  • Cross-account access: Cấp quyền truy cập cho một tài khoản khác.

Ví dụ về một bucket policy cho phép truy cập công khai:

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

Chính sách này cho phép mọi người truy cập đọc (GetObject) tất cả các objects trong bucket example-bucket.

Việc sử dụng đúng các bucket policies giúp bạn kiểm soát tốt hơn quyền truy cập và bảo mật cho dữ liệu trong Amazon S3.

Amazon S3 - Static Website Hosting

Amazon S3 cho phép bạn lưu trữ các trang web tĩnh và truy cập chúng trên Internet. Đây là một cách đơn giản và hiệu quả để triển khai các trang web tĩnh như HTML, CSS, và JavaScript.

Cấu hình hosting website tĩnh trên S3:

  1. Tạo bucket: Tạo một bucket với tên giống với tên miền mà bạn muốn sử dụng.
  2. Tải lên các tệp tin: Tải lên các tệp tin HTML, CSS, và JavaScript của bạn vào bucket.
  3. Cấu hình bucket để làm website tĩnh:
    • Truy cập vào Properties của bucket.
    • Tìm và bật tùy chọn Static website hosting.
    • Chỉ định tệp tin index document (ví dụ: index.html) và error document (ví dụ: error.html).

URL truy cập website:

Tùy thuộc vào vùng (region), URL của trang web sẽ có dạng:

  • http://bucket-name.s3-website-aws-region.amazonaws.com HOẶC
  • http://bucket-name.s3-website.aws-region.amazonaws.com

Lỗi 403 Forbidden:

Nếu bạn gặp lỗi 403 Forbidden, hãy kiểm tra và chắc chắn rằng bucket policy cho phép đọc công khai. Ví dụ về bucket policy cho phép truy cập công khai:

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

Chính sách này cho phép mọi người đọc tất cả các objects trong bucket your-bucket-name.

Amazon S3 - Versioning

Amazon S3 cho phép bạn quản lý phiên bản của các tệp tin, giúp bảo vệ dữ liệu và dễ dàng khôi phục lại các phiên bản trước đó khi cần thiết.

  1. Đặc điểm của Versioning:
  • Bật tính năng versioning ở cấp độ bucket: Tính năng này được kích hoạt trên toàn bộ bucket.
  • Thay đổi phiên bản khi ghi đè: Khi một tệp tin có cùng key được ghi đè, số phiên bản sẽ thay đổi (ví dụ: 1, 2, 3,...).
  1. Lợi ích của việc sử dụng Versioning:
  • Bảo vệ chống xóa nhầm: Có khả năng khôi phục lại phiên bản trước đó nếu tệp tin bị xóa nhầm.
  • Dễ dàng khôi phục: Có thể nhanh chóng quay lại phiên bản trước đó của tệp tin khi cần.
  1. Lưu ý khi sử dụng Versioning:
  • Phiên bản "null": Bất kỳ tệp tin nào chưa được phiên bản hóa trước khi bật tính năng versioning sẽ có phiên bản "null".
  • Tạm ngưng phiên bản hóa không xóa các phiên bản trước: Khi bạn tạm ngưng tính năng versioning, các phiên bản trước đó vẫn được giữ nguyên và không bị xóa.
  1. Ví dụ về quản lý phiên bản:

Giả sử bạn có một tệp tin example.txt trong bucket my-bucket:

  1. Ban đầu: Tệp example.txt được tải lên.
  2. Phiên bản 1: Bạn chỉnh sửa và ghi đè example.txt, tạo ra phiên bản 1.
  3. Phiên bản 2: Bạn tiếp tục chỉnh sửa và ghi đè, tạo ra phiên bản 2.

Nếu cần khôi phục lại phiên bản ban đầu hoặc phiên bản 1, bạn có thể dễ dàng thực hiện qua giao diện S3 hoặc sử dụng API.

  1. Bật Versioning:

Để bật tính năng versioning cho bucket my-bucket, bạn có thể làm theo các bước sau:

  1. Truy cập vào Properties của bucket.
  2. Chọn Versioning và kích hoạt tính năng này.

Sử dụng tính năng versioning giúp bạn bảo vệ dữ liệu quan trọng và dễ dàng quản lý các thay đổi trong Amazon S3.

Amazon S3 - Replication (CRR & SRR)

Replication trong Amazon S3 cho phép bạn tự động sao chép các đối tượng từ một bucket nguồn sang một bucket đích, giúp cải thiện khả năng phục hồi dữ liệu và tăng tính khả dụng.

Các loại Replication:

  1. Cross-Region Replication (CRR):

    • Sao chép dữ liệu giữa các vùng khác nhau.
    • Sử dụng cho các trường hợp như tuân thủ quy định, giảm độ trễ truy cập, và sao chép dữ liệu giữa các tài khoản khác nhau.
  2. Same-Region Replication (SRR):

    • Sao chép dữ liệu trong cùng một vùng.
    • Thích hợp cho việc tổng hợp nhật ký, sao chép dữ liệu trực tiếp giữa các tài khoản sản xuất và thử nghiệm.

Các yêu cầu và lưu ý:

  • Bật Versioning: Cần bật tính năng versioning trên cả bucket nguồn và bucket đích.
  • Tài khoản AWS khác nhau: Buckets có thể nằm trong các tài khoản AWS khác nhau.
  • Sao chép không đồng bộ: Việc sao chép dữ liệu diễn ra không đồng bộ.
  • Quyền IAM: Cần cung cấp các quyền IAM phù hợp cho S3 để thực hiện việc sao chép.

Trường hợp sử dụng:

  • CRR:

    • Tuân thủ quy định: Đáp ứng yêu cầu tuân thủ dữ liệu bằng cách lưu trữ bản sao dữ liệu ở các vùng khác nhau.
    • Giảm độ trễ truy cập: Người dùng có thể truy cập dữ liệu nhanh hơn từ các vùng khác nhau.
    • Sao chép giữa các tài khoản: Dữ liệu có thể được sao chép giữa các tài khoản AWS khác nhau để tăng cường bảo mật và quản lý.
  • SRR:

    • Tổng hợp nhật ký: Dữ liệu nhật ký từ các nguồn khác nhau có thể được tổng hợp vào một bucket duy nhất.
    • Sao chép trực tiếp: Dữ liệu có thể được sao chép trực tiếp giữa các tài khoản sản xuất và thử nghiệm để đảm bảo tính nhất quán.

Thiết lập Replication:

  1. Bật Versioning: Bật tính năng versioning trên cả bucket nguồn và bucket đích.
  2. Tạo IAM Role: Tạo IAM Role với các quyền cần thiết và gán role này cho S3.
  3. Cấu hình Replication:
    • Truy cập vào giao diện quản lý S3.
    • Chọn bucket nguồn và đi tới phần Management.
    • Chọn Replication và thiết lập quy tắc replication, chỉ định bucket đích và các tùy chọn khác.

Việc thiết lập và sử dụng replication trong Amazon S3 giúp bạn đảm bảo dữ liệu luôn được bảo vệ và sẵn sàng cho các nhu cầu khác nhau, từ tuân thủ quy định đến quản lý và sao chép dữ liệu giữa các tài khoản.

Amazon S3 - Storage Classes

Amazon S3 cung cấp nhiều lớp lưu trữ khác nhau để phù hợp với nhu cầu sử dụng và chi phí của bạn. Mỗi lớp lưu trữ có các đặc điểm và trường hợp sử dụng cụ thể.

Các lớp lưu trữ S3:

  1. Amazon S3 Standard - General Purpose:

    • Sử dụng cho các dữ liệu thường xuyên được truy cập.
    • Độ bền cao (99.999999999%) và khả dụng (99.99%).
  2. Amazon S3 Standard-Infrequent Access (IA):

    • Thích hợp cho các dữ liệu ít được truy cập nhưng cần truy cập nhanh khi cần.
    • Chi phí lưu trữ thấp hơn S3 Standard, nhưng chi phí truy cập cao hơn.
  3. Amazon S3 One Zone-Infrequent Access:

    • Dành cho dữ liệu ít được truy cập và không quan trọng về độ bền khu vực.
    • Chi phí lưu trữ thấp hơn S3 Standard-IA.
  4. Amazon S3 Glacier Instant Retrieval:

    • Sử dụng cho lưu trữ dữ liệu lâu dài, ít được truy cập nhưng cần truy xuất ngay lập tức.
    • Chi phí lưu trữ rất thấp với khả năng truy xuất nhanh.
  5. Amazon S3 Glacier Flexible Retrieval:

    • Lưu trữ dữ liệu lâu dài với chi phí thấp và truy xuất trong vài phút đến vài giờ.
    • Lựa chọn linh hoạt về thời gian và chi phí truy xuất.
  6. Amazon S3 Glacier Deep Archive:

    • Lưu trữ dữ liệu lâu dài nhất với chi phí thấp nhất.
    • Thời gian truy xuất từ 12 đến 48 giờ.
  7. Amazon S3 Intelligent Tiering:

    • Tự động di chuyển dữ liệu giữa các lớp lưu trữ dựa trên tần suất truy cập.
    • Không phí truy cập và phù hợp cho các dữ liệu có tần suất truy cập không ổn định.

Sử dụng các lớp lưu trữ phù hợp giúp bạn tối ưu chi phí và hiệu suất lưu trữ dữ liệu trên Amazon S3.