[AWS - S3] Amazon Simple Storage Service

Amazon Simple Storage Service tạo bucket upload object hoặc file lên s3

    S3 được viết tắt của từ Simple Storage Service  ( Dịch vụ lưu trữ đơn giản =)) ). S3 giống như một ổ đĩa ảo online để lưu trữ và truy xuất dữ liệu. Theo định nghĩa của AWS, “Bạn có thể sử dụng Amazon S3 để lưu trữ và truy xuất bất kỳ dữ liệu nào vào bất kỳ lúc nào, từ bất kỳ đâu trên web”.


Một số từ khoá bạn có thể muốn biết khi đọc bài viết này:
  • Bucket: Nó như là 1 folder trên ổ đĩa các bạn
  • Object: File(đối tượng) bạn cần lưu trữ như là hình ảnh, âm thanh, video,...
  • Object key: Để tham chiếu tới một Object bạn cần đường dẫn của nó, bạn có thể hiểu ở đây là đường dẫn tới Object, với GUI của amazon s3 thì nó chính là các thư mục, nhưng trên thực tế nó không phải là thư mục :D nó chỉ là 1 đoạn string gọi là key thôi..... Cái này nếu bạn nào không hiểu có thể comment để mình giải thích thêm nhé :D

1. Để lưu trữ thì S3 sẽ tổ chức như sau:

  • Mỗi một File(Object) trên s3 sẽ được lưu trong 1 Bucket
  • Bạn có thể lưu bất cứ thứ gì trên s3.
  • Mỗi một Bucket sẽ có 1 tên duy nhất và nó  không được trùng với bất cứ tên nào, dù là của bạn hay là của người khác. Và thường thì nó có dạng như sau: https://<ten-bucket>.<vi-tri-bucket>.amazonaws.com/<object-key>
  • Về vị trí đặt Bucket thì bạn nên đặt càng gần càng tốt, ví dụ mình ở Việt Nam thì nên đặt Bucket ở Singapore, Hong Kong,... để truy xuất file nhanh hơn.
  • Mỗi một Object có một Object Key duy nhất trên trong toàn bộ Bucket. Bạn có thể đặt tên theo /forder1/foder2/file.type hoặc là randomstring thì khi truy xuất bạn hoàn toàn có thể lấy các file đó một cách dễ dàng, đối với cách đầu tiên thì sẽ dễ hơn khi bạn dùng GUI của amazon s3 để thao tác với file, GUI của s3 sẽ tự động nhận diện các dấu "/" để chia ra các "thự mục" cho bạn. Mình muốn note lại xíu là s3 không có thư mục nhé.

2. Tạo S3 Bucket

    Đầu tiên bạn phải có 1 tài khoản Amazon Webservice. Sau đó đăng nhập vào AWS Console và đi vào S3 bằng cách chọn Service -> Storage -> S3. Hoặc đơn giản bạn click vào link này :D

aws console
    Sau khi bạn mở S3 của mình, đây là cách trang tổng quan S3 của bạn trông như thế này và bấm Create Bucket để tạo một bucket mới, ở đây số lượng bucket là không giới hạn, nên bạn hãy tạo tuỳ thuộc vào vị trí mà bạn hướng tới.

màn hình s3 console


    Sau khi  nhấp vào Create Bucket, nó sẽ mở ra một cửa sổ mới, ở đây chúng phải nhập tên Bucket, chọn khu vực để lưu trữ dữ liệu của mình ngoài ra còn có lựa chọn có thể sao chép cài đặt từ các Bucket trước đó.
màn hình đầu tiên khi tạo Bucket

    Bước tiếp theo là cấu hình tùy chọn như thiết lập các version của object nếu mà nó object key, ghi nhật ký truy cập vào Bucket, và còn rất nhiều tuỳ chọn khác nhưng hiện tại chúng ta hãy giữ chúng mặc định và chuyển sang bước tiếp theo để thiết lập quyền truy cập vào s3. Về các tuy chọn này mình sẽ các bài viết khác nhau dự trên các project thực tế để thiết lập.

    Bước tiếp theo là cấp quyền cho Bucket. Theo mặc định, chcket chặn tất cả quyền truy cập công khai bởi vì nếu cấp quyền công khai, mọi người dùng có thông tin của bucket đều có thể đọc, lưu và xoá dữ liệu. Ở đây tuỳ thuộc vào nhu cầu của các bạn để cài đặt quyền, nhưng mình khuyên các bạn nên để mặc định và block tất cả các truy cập công khai. Mình sẽ có một bài viết khác nói chi tiết hơn về việc này cũng như cách dùng trong project thực tế. Ở phạm vi của bài viết này, mình tập trung vào lưu trữ dữ liệu và truy xuất dữ liệu trực tiếp từ aws console.

hình ảnh thiết lập quyền cho Bucket, nên chọn block all

    Bước tiếp theo là xem lại tất cả cài đặt và tạo Bucket. Nếu một bucket được tạo, chúng ta có thể thấy nó trên S3 Console. Bây giờ chúng ta đã có thể mở Bucket ra và thêm một Object nhé.


chọn bucket để thao tác với object

3. Upload object

    Chúc mừng các bạn đã tới bước này :D . Khi đã tạo được Bucket rồi thì việc tiếp theo là upload object hoặc tạo các "thư mục" thôi.
chọn nút Upload để tải file lên

    Sau khi tải các object của bạn lên bucket. Bây giờ chúng ta phải cấp quyền cho các tệp. Khi bạn tải object lên, nó không có quyền truy cập công khai. Bạn chỉ có thể truy cập hoặc tải object xuống ở GUI của s3 console. Nếu bạn muốn cho phép mọi người cùng tải xuống thì phải cài đặt permisison cho bucket rồi sau đó tới bước này bạn mới có thể cài permisison cho file. Ở hướng dẫn phần 2 mình đã chặn toàn bộ quyền công khai của object nên ở phần này object của bạn cũng vậy, không có quyền công khai và sẽ bị hiển thị chữ này như mình: ''The block public access settings turned on for this bucket prevent granting public access.".
chọn quyền cho file, nhưng không có quyền public.
    Sau khi chọn xong quyền của object các bạn bấm Next. Bước tiếp theo là kiểu lưu trữ. Ở màn hình này có rất nhiều kiểu lưu trữ khác nhau. Chúng ta chưa thảo luận về các loại tùy chọn này, mặt khác cũng tuỳ thuộc vào các kiểu object chúng ta có thể chọn các kiểu lưu trữ khác nhau, cùng với đó là giá lưu trữ cũng khác nhau. Tuy nhiên ở bài này các bạn cứ chọn Standard và review rồi finish upload file nhé.
    Sau khi upload object thành công, bạn có thể thấy object của mình được hiện thị trong bucket, bạn có thể tải file xuống, hoặc bấm vào object chọn xem thông tin như địa chỉ link để chia sẻ công khai, dung lượng, tag, version,....

    Và tới đây là xong, bạn có thể chia sẻ object mà bạn muốn, nhưng phải cập nhập lại các quyền. Hoặc bạn có thể tải xuống trực tiếp.

4. Kết luận

    Cảm ơn các bạn đã kiên nhẫn và đọc tới đây. Mình rất mong các bạn comment góp ý cho những bài sau nữa của mình. phần kết luận này mình muốn tòm tắt một số ý chính trong bài viết của mình.
  • Mình đã hướng dẫn các bạn tạo bucket và upload object lên
  • Các bucket và  object đều thuộc chế độ private tức là chỉ bạn có thể download hoặc view được, bạn không chia sẻ cho ai để tải nó xuống được. Nếu như bạn muốn chia sẻ công khai thì bạn phải set lại các quyền cho bucket và object (Phần này mình muốn có một bài viết chi tiết hơn vì nó liên quan tới bảo mật cho s3 của các bạn để không bị kẻ gian lợi dụng)
  • Về chi phí lưu trữ s3 thì tuỳ thuộc vào kiểu lưu trữ như trong mục 3 mình đề cập, tại thời điểm mình viết bài này thì chi phí đang là 0.025$ ~ 600 đồng cho 1GB lưu trữ. Giá này trên thực tế sẽ bao gồm phí yêu cầu như là upload/download object, phí băng thông khi bạn tải 1 object.... Nói chung nó có rất nhiều chi phí đi kèm ngoài chi phí lưu trữ các bạn có thể tham khảo tại đây
    Một lần nữa chân thành cảm ơn các bạn đã đọc bài. Chúc các bạn một ngày làm việc vui vẻ.... Thân ái!