Sử dụng Amazon S3 với Amazon EC2 | Cloud Native Viet

Amazon S3 là một kho lưu trữ (repository) cho dữ liệu internet. Amazon S3 cung cấp quyền truy cập vào
cơ sở hạ tầng lưu trữ dữ liệu đáng tin cậy, nhanh chóng và không tốn kém. Nó được thiết kế để làm cho
việc tính toán ở quy mô web trở nên dễ dàng hơn bằng cách cho phép ta lưu trữ và truy xuất (retrieve)
bất kỳ lượng dữ liệu nào, bất kỳ lúc nào, từ bên trong Amazon EC2 hoặc bất kỳ nơi nào trên web.
Amazon S3 lưu trữ dự phòng các đối tượng dữ liệu trên nhiều thiết bị trên nhiều cơ sở (facility)
và cho phép đọc (read) hoặc ghi (write) đồng thời vào các đối tượng dữ liệu này bởi nhiều client
hoặc thread ứng dụng riêng biệt. Ta có thể sử dụng dữ liệu dự phòng được lưu trữ trong Amazon S3
để khôi phục một cách nhanh chóng và đáng tin cậy khỏi các lỗi ứng dụng hoặc lỗi instance.

Amazon EC2 sử dụng Amazon S3 để lưu trữ AMI. Ta sử dụng AMI để khởi chạy các EC2 instance. Trong trường hợp
xảy ra lỗi, ta có thể sử dụng AMI được lưu trữ để khởi chạy ngay một instance khác, do đó cho phép khôi phục
nhanh và đáp ứng nhu cầu kinh doanh liên tục (business continuity)

Amazon EC2 cũng sử dụng Amazon S3 để lưu trữ snapshot (bản sao dự phòng) của data volume. Ta có thể
sử dụng snapshot để khôi phục dữ liệu nhanh chóng và đáng tin cậy trong trường hợp ứng dụng hoặc hệ thống
bị lỗi. Ta cũng có thể sử dụng snapshot làm cơ sở để tạo nhiều data volume mới, mở rộng kích thước của
data volume hiện có hoặc di chuyển data volume qua nhiều Availability zone, do đó làm cho việc sử dụng
dữ liệu của ta có khả năng mở rộng cao. Để biết thêm thông tin về cách sử dụng data volume và snapshot, hãy xem
Amazon Elastic Block Store

Đối tượng (object) là các thực thể cơ bản được lưu trữ trong Amazon S3. Mọi đối tượng được lưu trữ trong
Amazon S3 đều được chứa trong một bucket. Bucket tổ chức (organize) Amazon S3 namespace ở cấp cao nhất
và xác định tài khoản chịu trách nhiệm về bộ lưu trữ đó. Amazon S3 bucket là tương tự như tên miền
(domain name) internet. Các đối tượng được lưu trữ trong bucket có giá trị key duy nhất và được truy xuất
bằng URL. Ví dụ: nếu một đối tượng có giá trị key /photos/mygarden.jpg được lưu trữ trong DOC-EXAMPLE-BUCKET1
bucket, thì nó có thể được đánh địa chỉ bằng cách sử dụng URL https://DOC-EXAMPLE-BUCKET1.s3.amazonaws.com/photos/mygarden.jpg.

Để biết thêm thông tin về các tính năng của Amazon S3, hãy xem trang
sản phẩm Amazon S3

Ví dụ sử dụng

Với những lợi ích của Amazon S3 đối với việc lưu trữ, ta có thể quyết định sử dụng dịch vụ này để lưu trữ
các file và data set để sử dụng với các EC2 instance. Có nhiều cách để di chuyển dữ liệu đến và từ Amazon S3
sang các instance. Ngoài các ví dụ được thảo luận bên dưới, có rất nhiều công cụ mà mọi người đã viết mà
ta có thể sử dụng để truy cập dữ liệu của mình trong Amazon S3 từ máy tính hoặc instance của mình.
Một số vấn đề phổ biến đã được thảo luận trong các diễn đàn AWS.

Nếu có đủ quyền, ta có thể copy file đến hoặc từ Amazon S3 và instance bằng một trong các phương pháp sau.

GET hoặc wget

Tiện ích wget là một HTTP và FTP client cho phép ta tải xuống các public object từ Amazon S3. Nó được
cài đặt theo mặc định trong Amazon Linux và hầu hết các bản phân phối khác và có sẵn để tải xuống trên
Windows. Để tải xuống Amazon S3 object, hãy sử dụng lệnh sau, thay thế URL của đối tượng để tải xuống.

$ wget https://my_bucket.s3.amazonaws.com/path-to-file

Phương pháp này bắt buộc đối tượng ta request phải là công khai (public); nếu đối tượng không phải là
công khai thì ta sẽ nhận được thông báo “ERROR 403: Forbidden”. Nếu gặp lỗi này, hãy mở Amazon S3 console
và thay đổi quyền thao tác của đối tượng thành công khai. Để biết thêm thông tin, hãy xem
Hướng dẫn dành cho nhà phát triển Amazon Simple Storage Service

Giao diện dòng lệnh AWS

Giao diện dòng lệnh AWS (AWS CLI) là một công cụ thống nhất để quản lý các dịch vụ AWS. AWS CLI cho phép
người dùng tự xác thực và tải xuống các items bị hạn chế từ Amazon S3 và cũng có thể upload các items.
Để biết thêm thông tin, chẳng hạn như cách cài đặt và cấu hình các công cụ, hãy xem trang chi tiết
Giao diện dòng lệnh AWS

Lệnh aws s3 cp tương tự như lệnh Unix cp. Ta có thể sao chép file từ Amazon S3 vào instance của mình,
sao chép file từ instance sang Amazon S3 và sao chép file từ vị trí Amazon S3 này sang vị trí khác.

Sử dụng lệnh sau để sao chép một đối tượng từ Amazon S3 sang instance:

$ aws s3 cp s3://my_bucket/my_folder/my_file.ext my_copied_file.ext

Sử dụng lệnh sau để sao chép một đối tượng từ instance trở lại Amazon S3:

$ aws s3 cp my_copied_file.ext s3://my_bucket/my_folder/my_file.ext

Lệnh aws s3 sync có thể đồng bộ hóa toàn bộ Amazon S3 bucket với một vị trí thư mục cục bộ. Điều này có thể
hữu ích cho việc tải xuống data set và giữ cho bản sao cục bộ luôn cập nhật với remote set. Nếu có quyền
thích hợp trên Amazon S3 bucket, ta có thể đẩy (push) thư mục cục bộ của mình trở lại đám mây khi ta đã
hoàn tất bằng cách đảo ngược vị trí nguồn và đích trong lệnh trên.

Sử dụng lệnh sau để tải xuống toàn bộ Amazon S3 bucket vào một thư mục cục bộ trên instance:

$ aws s3 sync s3://remote_S3_bucket local_directory

Amazon S3 API

Nếu là developer, ta có thể sử dụng API để truy cập dữ liệu trong Amazon S3. Để biết thêm thông tin, hãy xem
Amazon Simple Storage Service Developer Guide. Ta có thể
sử dụng API này và các ví dụ của nó để giúp phát triển ứng dụng của mình và tích hợp nó với các API và SDK khác,
chẳng hạn như bôt Python interface

Link gốc