Các phương thức truy cập Amazon S3
Amazon S3 hỗ trợ nhiều phương thức truy cập khác nhau, phù hợp với nhu cầu của cả người dùng kỹ thuật và không kỹ thuật. Việc hiểu rõ các cách này giúp bạn chọn phương án phù hợp cho từng tình huống.
AWS Management Console
Đây có lẽ là phương thức đơn giản và trực quan nhất cho người dùng AWS.
- Giao diện web trực quan do AWS cung cấp.
- Cho phép tạo bucket, upload/download object, cấu hình policy, lifecycle, replication.
- Phù hợp với thao tác thủ công, quản trị nhanh hoặc demo.
Ưu điểm: Dễ dùng, không cần cài đặt.
Nhược điểm: Không phù hợp cho thao tác tự động hoặc xử lý dữ liệu số lượng lớn.
AWS Command Line Interface (CLI)
- Công cụ dòng lệnh mạnh mẽ để thao tác S3.
- Cài đặt: AWS CLI
- Ví dụ:
# Upload file
aws s3 cp file.txt s3://my-bucket/
# Download file
aws s3 cp s3://my-bucket/file.txt .
# Đồng bộ thư mục
aws s3 sync ./local-folder s3://my-bucket/AWS SDK
Với phương thức này cần có kiến thức nhất định về lập trình.
- AWS cung cấp SDK cho nhiều ngôn ngữ: Python (Boto3), JavaScript, Java, Go, .NET…
- Phù hợp khi tích hợp S3 vào ứng dụng.
Ví dụ về upload 1 file bằng Javascript:
import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3";
import fs from "fs";
const s3 = new S3Client({ region: "us-east-1" });
async function uploadFile() {
await s3.send(new PutObjectCommand({
Bucket: "my-bucket-name",
Key: "uploads/myfile.txt",
Body: fs.createReadStream("./localfile.txt"),
ContentType: "text/plain",
}));
console.log("✅ Upload done");
}
uploadFile().catch(console.error);
Pre-signed URL là gì
- URL tạm thời cho phép truy cập một object mà không cần IAM credentials.
- Dùng để chia sẻ dữ liệu an toàn trong thời gian ngắn.
Ví dụ tạo bằng AWS CLI:
aws s3 presign s3://my-bucket/file.zip --expires-in 600-
URL này sẽ hết hạn sau số giây bạn chỉ định.
-
Ưu điểm: Chia sẻ an toàn, không cần tài khoản AWS.
-
Nhược điểm: Bị giới hạn thời gian, không thích hợp cho quyền truy cập lâu dài.
S3 Access Points là gì
Amazon S3 Access Points là một tính năng giúp bạn quản lý quyền truy cập dữ liệu S3 ở quy mô lớn bằng cách tạo ra một endpoint riêng cho từng nhóm người dùng hoặc ứng dụng.
Mỗi Access Point có:
- Tên duy nhất trong account và region
- Endpoint DNS riêng (ví dụ:
my-ap-123456789012.s3-accesspoint.us-east-1.amazonaws.com) - Policy riêng độc lập với bucket policy
- Giới hạn mạng (network restriction): Chỉ qua Internet hoặc chỉ từ một VPC cụ thể
Vì sao cần Access Points?
Trước đây, nếu nhiều ứng dụng hoặc nhóm người dùng cùng truy cập một bucket, bạn phải dùng bucket policy phức tạp để phân quyền.
Access Points giúp đơn giản hóa bằng cách:
- Tách riêng policy cho từng nhóm hoặc ứng dụng
- Tạo endpoint riêng giúp kiểm soát tốt hơn nguồn truy cập
- Dễ mở rộng khi số lượng người dùng/ứng dụng tăng
So sánh IAM Role, Bucket Policy và Access Point
| Đặc điểm | IAM Role | Bucket Policy | S3 Access Point |
|---|---|---|---|
| Mục tiêu | Xác định ai có quyền gì | Xác định dữ liệu nào được truy cập, từ đâu | Quản lý truy cập theo nhóm ứng dụng/người dùng |
| Cấp áp dụng | Người dùng/Dịch vụ | Bucket/Objects | Endpoint truy cập dữ liệu |
| Network restriction | ❌ Không | ✅ Có thể | ✅ Mỗi Access Point cấu hình riêng |
| Endpoint riêng | ❌ Không | ❌ Không | ✅ Có |
| Dễ chia nhỏ quyền | Trung bình | Khó nếu bucket policy phức tạp | Rất dễ, mỗi nhóm 1 Access Point |
Ví dụ thực tế
Công ty có bucket shared-data:
- Nhóm Data Analytics: Chỉ đọc dữ liệu từ VPC nội bộ
- Nhóm Mobile App: Chỉ ghi dữ liệu qua internet
Giải pháp:
- Tạo Access Point
analytics-ap→ policy chỉ cho phéps3:GetObjecttừ VPC nội bộ - Tạo Access Point
mobile-ap→ policy chỉ cho phéps3:PutObjectqua internet