(AWS) S3 cơ bản- Phần 1 :Khái quát về S3 và những keyword quan trọng

BrSE Jul 06, 2021

Nguồn tham khảo:

*aws-certified-solutions-architect-official-study-guide

*AWS Document

Mình sẽ dựa vào dàn ý của quyển study-guide kết hợp với  AWS Document và sẽ giải thích thêm những ý hiểu của mình về dịch vụ này, hi vọng sẽ có ích cho các bạn.

Khi tìm hiểu về AWS Service, thì một trong những dịch vụ quan trọng bạn không thể không tìm hiểu đó chính là S3 (Simple Cloud Storage), một trong những dịch vụ đầu tiên mà phía AWS cung cấp cho người dùng.

Vì mình thấy cũng có khá nhiều bạn đang tìm hiểu về AWS, và đặc biệt là những dịch vụ quan trọng và cơ bản như S3 nên mình sẽ làm một loạt bài viết về S3:Từ lý thuyết cơ bản đến những bài thực hành đơn giản. Bao gồm những phần sau:

■Phần 1: Khái quát về S3 và những keyword quan trọng. (Chính là bài này)

■Phần 2: Các Storage Classes mà S3 cung cấp và một số chức năng advance

■Phần 3: Thực hành các thao tác cơ bản trên S3

Vậy ở phần 1 mình chúng mình cùng tìm hiểu Khái quát về S3 và những keyword quan trọng nhé.

1.Khái quát về S3

Dịch vụ S3 của AWS (Nguồn: https://www.pcmag.com/reviews/amazon-s3)

S3 là một trong những dịch vụ lâu đời nhất của AWS. S3 là viết tắt của  (Simple Cloud Storage), đây là dịch vụ giúp bạn lưu trữ các file của mình. Giúp bạn có thể lưu khối lượng file khổng lồ (không giới hạn) và có thể lấy được data đó từ bất kỳ đâu trên Thế Giới (Miễn là bạn có internet).

S3 sẽ chỉ tính tiền số dung lượng file mà bạn đã lưu, điều này cực kỳ có lợi cho người dùng.

Ví dụ:

Mình có một cửa hàng bán quần áo online, để cất được chỗ quần áo mà mình nhập về trong thực tế mình cần ước lượng trước số quần áo mà mình định nhập kho, sau đó sẽ tìm một cái nhà kho có diện tích tương xứng với khối lượng hàng đó. Nếu nhà kho quá to mà hàng định lưu kho quá nhỏ thì diện tích còn sẽ rất lãng phí, và quan trọng là diện tích bạn không dùng như vẫn phải trả tiền cho nó?.

Chưa kể trường hợp ngược lại, khi bạn thuê một nhà kho quá nhỏ, mà số lượng hàng cần lưu kho thi quá lớn, lúc đó bạn phải làm sao? Lại chạy đi tìm rồi thuê một cái nhà kho mới? Rất mất thời gian đúng không?.

Bạn hãy tưởng tượng S3 như 1 cái nhà kho để bạn lưu các file của mình, nhưng điểm khác biệt là bạn không cần phải trả tiền trước cho khối lượng data mà bạn định lưu. Bạn lưu lên S3 bao nhiêu, thì bạn trả tiền bấy nhiêu thôi.  Việc này không chỉ giúp bạn tối ưu hóa được chi phí, mà khi xảy ra trường hợp đột nhiên bạn cần lưu một lượng file lớn thì S3 vẫn ở đó để bạn lưu file, lưu bao nhiêu cũng được (Việc mở rộng này còn được gọi là : Dễ scale).

Không chỉ ưu việt ở khía cạnh giá thành và khả năng scale không giới hạn, S3 còn rất linh hoạt và có thể được ứng dụng trong rất nhiều Uscase như sau:

・Dùng để back-up data cho on-premise server (on-premise server  là server do chính chúng ta tự dựng, tự maintain. Ví dụ như ở Miichisoft cũng có on-premise server, và server đó đang nằm ở góc phòng trên tầng 4 đó, suốt ngày được quạt mát và kêu rè rè ở góc phòng).

・Content, media, software storage distribution

・Big data analytics

・Static website hosting (Bạn có thể host 1 static web chỉ dùng S3 mà không cần dựng cả một server)
・Đề phòng rủi ro do thiên tai (Động đất, sóng thần...)

S3 cung cấp rất nhiều storage class (Gói dịch vụ) để phục vụ được cho nhiều mục đích cũng như nhiều nhu cầu khác nhau của khách hàng (Sẽ tùy xem file được lưu trên S3 có hay được retrieve hay không? Lúc retrieve cần nhanh hay chậm?...mà sẽ có giá thành khác nhau)

Vậy là chúng ta đã hiểu khái quát về S3 rồi, giờ chúng mình sẽ tìm hiểu thêm những keyword quan trọng trong S3 nhé.

2.Những keyword quan trọng

Những keyword quan trọng về S3 (Nguồn: https://pixabay.com/)

■Buckets

S3 bucket (Nguồn: https://www.sentinel-hub.com/bring-your-own-data/)

Từ Bucket được S3 dùng với nghĩa là "Folder", nơi này chính là chỗ để lưu các object (Các file) của bạn. Một điểm khá quan trọng mà bạn nên biết đó là tên của một Bucket cần phải unique trên toàn Thế Giới.

Ví dụ: Giờ mình muốn đặt bucket tên là MiichiSoft, tuy nhiên tên này đã được tài khoản AWS nào đó dùng cho bucket cho S3 rồi thì mình sẽ không thể dùng tên đó được nữa.

Bạn có thể tạo nhiều bucket trong một tài khoản AWS, tuy nhiên tối đa là 100 bucket. (Các bạn chú ý là mỗi dịch vụ mà AWS cung cấp luôn có giới hạn trên, vì thế khi dùng dịch vụ nào các bạn nên tìm hiểu kỹ).

Phía dưới này là ví dụ về bucket mà mình đã tạo trên AWS

Ví dụ về bucket mình đã tạo trên AWS account của mình

■AWS Regions

Mặc dù tên của bucket là unique trên toàn Thế Giới, nhưng khi bạn tạo một bucket trên S3 thì sẽ chọn Region cho bucket: Điều này có nghĩa là bạn sẽ được chọn xem những file của mình sẽ được lưu ở vùng địa lý nào trên Trái Đất.

AWS có các data center trên toàn Thế Giới, vì vậy bạn có thể chọn vùng địa lý để lưu file của mình. Nếu như file của bạn càng được lưu trữ ở gần user, thì file của bạn sẽ càng mất ít thời gian để có thể đến được tay user.

Cũng giống như bạn đang ở Hà Nội, nếu web của bạn được host ở Hà Nội thì sẽ có tốc độ truy cập nhanh hơn với web đang được host ở Hồ Chí Minh.

Hiện tại AWS chưa có data center ở Việt Nam, và Region gần Việt Nam nhất có lẽ là Singapore.

List Region của AWS

■Objects

Object chính là những file mà chúng ta lưu tại các Bucket của S3. Bạn có thể lưu bất kỳ loại file nào/định dạng nào.

Các file có thể lưu giới hạn từ 0byte~5TB (Giới hạn cho mỗi file được lưu). Tuy nhiên bạn có thể lưu với số lượng không giới hạn.

Mỗi object trong bucket sẽ chứa data của file và metadata  (Thông tin về chính file đó, ví dụ như: date last modified, object size, MD5 digest, and HTTP Content-Type...)

■Keys

Mỗi một object trong S3 được định danh bởi 1 key, nó có chức năng tương đương với tên file. Điểm quan trọng là, trong 1 bucket các key không được trùng nhau.

■Object URL

Tất cả các object trong bucket đều có URL định danh mình. Chúng ta có thể dùng URL đó để truy cập file đó từ internet (Miễn là bạn cấu hình S3 để object có thể được truy cập một cách public từ internet)

Ảnh phía dưới này minh họa về key và Object URL của một ảnh trong bucket của mình.

Hình ảnh thực tế về key và object URL

■Durability (Độ bền) và Availability (Độ sẵn có)

S3 là một dịch vụ cam kết về Durability (Độ bền) và Availability (Độ sẵn có) rất cao. Cụ thể là: Có độ bền đến 99.999999999%, độ có sẵn đến 99.99%.

Vậy Durability (Độ bền) và Availability (Độ sẵn có) là gì?

*Durability (Độ bền) để miêu tả về tỉ lệ mà  file của chúng ta lưu trên S3 có tồn tại trong tương lai nữa hay không? Vậy 99.999999999% chính là cam kết cho việc data của bạn sẽ tồn tại gần như là mãi mãi (Nếu bạn vẫn còn dùng dịch vụ của S3)

*Availability (Độ sẵn có) để miêu tả về tỉ lệ khi bạn muốn get file từ S3 ra, thì có thể nhận về ngay lập tức hay không? Có luôn có sẵn ở đó để bạn lấy hay không?

■Access Control

Những resource S3 như Bucket và Object (Các file được lưu trong Bucket)  sẽ được setting mặc định là: chỉ được người tạo ra những resource đó nhìn thấy.

Vì thế nếu bạn muốn public những file trong S3 ra bên ngoài thì cần thực hiện một số setting cần thiết.

Để setting xem ai được truy cập vào những Object nào? Hay nói cách khác, setting những Object nào được truy cập bởi ai? thì bạn sẽ định nghĩa các policy và gán nó cho user hoặc Bucket mà bạn chỉ định.

Ở S3, có 2 loại Policy chính đó là: Resource-base Policies và User Policies.

Trong đó Resource-base Policies là các policies bạn sẽ gán cho các Object trong bucket hoặc Bucket chỉ định, còn User Policies là các policies mà bạn sẽ gán nó cho một IAM user nào đó. Nhiều khi chúng ta dùng kết hợp cả Resource-base Policies và User Policies để có được cài đặt chặt chẽ và đúng với ý của mình hơn.

Các bạn có thể xem hình ảnh minh họa phía dưới này để có cái nhìn chung hơn về việc setting access cho các Object, Bucket ở S3.

Resource-based policies

Minh họa về : Resource-based policies (Nguồn: https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-control-overview.html)

Như các bạn quan sát trong hình minh họa phía trên, thì Resource-based policies sẽ gồm Bucket policies và access control lists (ACLs), những policy này có thể được định nghĩa ở dạng file JSON hoặc XML.

User policies

Minh họa về : User policies (Nguồn: https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-control-overview.html)

Với User policies chúng ta dùng dạng file JSON để định nghĩa.

Về cách định nghĩa policy các bạn có thể tham khảo thêm tài liệu của AWS nhé, ở bài viết này mình chỉ xin dừng lại ở mức giới thiệu về khái niệm cơ bản.

Tổng kết

Vậy là mình đã giới thiệu với các bạn overview về S3 rồi, hi vọng sau khi đọc được bài này các bạn sẽ hiểu:

・AWS S3 là dịch vụ dùng để làm gì?

・Những khái niệm cơ bản về S3 mà bạn nên biết trước khi tìm hiểu sâu hơn: Như Bucket, Object, Region...

・Để control được việc access vào các Object trong Bucket trên S3, chúng ta có thể setting bằng cách nào?

Ở bài sau chúng ta sẽ tìm hiểu kỹ hơn về các gói dịch vụ mà S3 đang cung cấp và một số chức năng Advance của S3 nhé.

Tags

Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.