Mục lục
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.
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.

