Amazon S3 là gì và tại sao bạn nên dùng nó

Bạn đang muốn làm website về chia sẽ hình ảnh hoặc chia sẽ video, nhưng đang băng khăng không biết nên sử dụng giải pháp nào cho việc đó, có nhiều bạn sẽ dùng Imgur để chứa hình ảnh vì nó là miễn phí.

Nhưng bạn cần phải xem xét lại việc dùng nó nếu như bạn thật sự nghiêm túc khi phát triển sản phẩm của bạn, tôi cũng từng có ý tưởng như bạn, tôi đã muốn làm một website chia sẽ hình ảnh về thú cưng lúc đầu tôi lấy Imgur làm hosting mọi thứ ban đầu có vẻ ổn. Nhưng khi bạn website bạn lớn lên có nhiều lượng truy cập, cũng như tôi muốn xây dựng một cái app thì hàng tá rắc rối xảy ra.

Vì vậy mình khuyên các bạn nên xây dựng một store(server) để lưu trữ hình ảnh ngay lúc này giải pháp này không khả thi, vì khá là tốn tiền, và mở rộng nó là khó khăn nếu như bạn không có đội ngũ Devops chuyên nghiệp.

Trong bài viết này tôi sẽ giới thiệu bạn dịch vụ Amazon S3 là gì, và giải thích tại sao bạn nên dùng nó.

Vậy giải pháp cho phần đề này là gì?

Sau một hồi tìm hiểu trên google thì thấy có nhiều nhà cung cấp dịch vụ trên thế có thể làm chuyện đó giúp bạn với chi phí là thấp nhất, mà điển hình là dịch vu S3 của Amazon. Vậy Amazon S3 là cái quái gì?

Amazon S3

Amazon S3 là viết tắt của cụm từ Amazon Simple Storage Service: Là dịch vụ đám mây lưu trữ do đó bạn có thể tải lên các tệp, các tài liệu, các dữ liệu tải về của người dùng hoặc các bản sao lưu.

Với lợi ích là khả năng mở rộng, đáng tin cậy và với mức chi phí thấp nhất cho việc lưu trữ.

Tại sao chọn Amazon S3

Trước tiên tôi tin tưởng Amazon bởi vì nó là một công ty cực kỳ lớn, và có thể nói là đỉnh của đỉnh trong công nghệ điện toán đám mây:

Tính ổn định: Nó được thiết kế để chịu được các hỏng hóc và phục hồi hệ thống rất nhanh với thời gian tối thiểu. Amazon cung cấp một thỏa thuận cấp dịch vụ (service-level agreement – SLA) để duy trì tính sẵn sàng ở mức 99.99 phần trăm.

Đơn giản: Dễ dùng S3 được xây dụng trên các khái niệm đơn giản và cung cấp tính mềm dẻo cao cho việc phát triển các ứng dụng của bạn. Bạn có thể xây dựng các lược đồ lưu trữ phức tạp hơn, nếu cần, bằng cách thêm các hàm vào các thành phần của S3.

Tính mở rộng: Thiết kế của S3 cung cấp một cấp độ cao về tính mở rộng và cho phép sự điều chỉnh dễ dàng trong dịch vụ khi lượng truy cập vào ứng dụng web của bạn tăng đột biến với lưu lượng khổng lồ.

Rất Rẻ: Chi phí sử dụng S3 rất cạnh tranh với các giải pháp của công ty và cá nhân khác trên thị trường.

Ngay tại thời điểm này chi phí của Website Lackky chỉ có tốn phí là 1.9$ cho 1 tháng và bạn càng dùng nhiều thì càng rẻ, bạn có thể xem hoá đơn của tôi bên dưới:

Cơ bản về Amazon S3

Để hiểu về Amazon S3, bạn cần nắm 1 số khái niệm cơ bản. Amazon S3 lưu trữ dữ liệu như các object trong các bucket. Một object gồm 1 file và metadata mô tả cho file (tùy chọn).

Bucket

Để lưu 1 object trong Amazon S3, bạn tải file lên 1 bucket. Khi đã tải file, bạn có thể gán quyền cho đối tượng cũng như bổ sung metadata.

Bucket là các thùng chứa cho các object. Bạn có thể tạo 1 hay nhiều bucket. Với mỗi bucket, bạn có thể điều khiển việc truy xuất đến nó (ai có thể tạo, xóa và xem các object trong bucket).

Tên của Buckets

Chú ý là mỗi một tài khoản chỉ tạo được tối đa là 100 buckets, và Bucket có tên là duy nhất do đó nếu bạn tạo một Bucket có tên giống nhau thì bạn sẽ gặp lỗi như sau:

[code lang=text] BucketAlreadyExists

[/code]

và đặt tên nó nên tuân theo luật sau:

  • Bucket có thể chứa các ký tự như chữ cái, hoặc số, dấu gạch dưới(__), dấu chấm, dấu phảy hoặc dấu gạch trên(-)

  • Bucket cần phải bắt đầu số hoặc ký tự

  • Bucket không quá ngắn cần phải đặt tên trên 3 và không quá dài ký tự nên dưới 255

  • Bucket không thể chứa dạng địa chỉ IP, ví dụ 192.168.1.1 sẽ không hợp lệ

Thông thường bạn đặt tên bucket theo website, ví dụ tôi có website chia sẽ hình ảnh tên là Lackky thì tôi sẽ tạo là lackky, hoặc images.lackky, thì URL nó có dạng như http://s3.amazonaws.com/images.lackky

Cách dùng và cách hoạt động của S3

Tôi sẽ không hướng dẫn chi tiết cách dùng nó trong bài viết này, mà tôi chỉ muốn chỉ bạn sử dụng nó như thế nào vào dự án của bạn.

Ví dụ khi bạn vào trang web chia sẽ hình ảnh thú cưng Lackky sau đó bạn tải lên một hình ảnh với tên là dog-troll.jpg thì lúc này trên Bucket của Lackky sẽ lưu trữ hình đó, tuỳ cách bạn cho tập tin này lưu ở đâu nhưng trong dự án của tôi thì tôi sẽ lưu nó theo thư mục(yyyy/mm/dd/tên-tập-tin) như trong trường hợp này là 2017/03/11/dog-troll.jpg

Do đó bạn truy cập thông qua URL http://s3.amazonaws.com/images.lackky/2017/03/11/dog-troll.jpg bạn sẽ thấy được tập tin(đối tượng) mà bạn đã tải lên.

Tóm lại những thao tác trên đây gọi là thêm một object vào một bucket, trong trường hợp của tôi object là một cái hình, nhưng bạn cần chú ý rằng object có thể là bất kỳ tập tin nào: text file, photo, video,… Khi thêm tập tin vào Amazon S3, có thể tùy chọn thêm metadata và gán quyền điều khiển việc truy cập vào tập tin.

Cấu hình CNAME và Cloudfront

Trước khi bắt đầu phần này, thì bạn cần hiểu hai khái niệm CNAME và Cloufront

CNAME Bản ghi CNAME cho phép một server có thể có nhiều tên. Nói cách khác bản ghi CNAME cho phép nhiều tên miền cùng trỏ đến một địa chỉ IP cho trước.

Cú pháp của bản ghi CNAME: alias-domain IN CNAME canonical domain. Ví dụ: Trỏ bản ghi CNAME cho tên miền s3.amazonaws.com/images.lackky về cdn.lackky.com

Amazon Cloudfront là mạng CDN phân phối nội dung tĩnh và streaming toàn cầu của Amazon. Khi bạn sử dụng CDN sẽ giúp cho khách truy cập nhanh vào dữ liệu máy chủ web gần họ nhất thay vì phải truy cập vào trung tâm dữ liệu của nhà cung cấp hosting bạn đang dùng.

Bởi vì dự án của tôi là toàn cầu do đó tôi dùng Cloufront giúp cho việc tải hình ảnh đến client nhanh hơn, để dùng nó bạn chỉ vào trình quảng lý của AWS thêm là xong, bạn cũng có thể muốn xem bài viết này để hiểu Cách dùng Amazon Cloudfront làm CDN, kết quả của việc tạo Cloufront sẽ trong như thế này.

Sau khi cấu hình xong Cloufront việc làm cuối cùng là thây đổi URL. Mặc định của Amazon S3 http://s3.amazonaws.com/images.lackky làm việc tốt rồi nhưng bạn muốn một URL chứa tên website của bạn để trong chuyên nghiệp hơn cũng như SEO tốt hơn thì bạn cần phải CNAME nó. Ví dụ tôi muốn dùng URL http://cdn.lackky.com để thây cho http://s3.amazonaws.com/images.lackky thì làm thế nào?

Chúng ta có nhiều cách để làm chuyện này, trong trường hợp của tôi thì tôi chỉ việc thêm nó vào phần cấu hình Cloufront thế là xong:

sau khi bạn thêm CNAME trên AWS thì bạn chỉ việc vào trong chỗ quản lý DNS domain của bạn thêm vào cấu hình nữa là xong, trong trường hợp của tôi là như thế này.

bạn chờ khoảng 1h hay 30 phút gì đó để cho AWS cũng như DNS cập nhật sau đó bạn thử truy cập CDN của bạn, như trong ví dụ này:

[code lang=text] ##http://s3.amazonaws.com/images.lackky/2017/03/11/dog-troll.jpg
## tobe replace below URL

https://cdn.lackky.com/2017/03/11/dog-troll.jpg

[/code]

Pretty cool, right?

Kết luận

Trên đây là cảm nhận của tôi khi dùng các dịch vụ của Amazon trong vòng 6 tháng mà cụ thể là Amazon S3, chỉ muốn chia sẽ quan điểm tại sao bạn nên dùng nó cho các dự án hiện tại cũng như kế tiếp của bạn.

Bài viết trên đây có sự tham khảo từ trang IBMdinhnn.com do đó nếu có thiếu xót gì mong các bạn thông cảm. Thanks

Leave a Reply

Your email address will not be published. Required fields are marked *