Khoảng 10 phút
Cách tải tệp lên Amazon S3 và chia sẻ liên kết công khai
Amazon S3 là dịch vụ lưu trữ đối tượng nguyên bản và dùng được với thiết lập sẵn Amazon S3 của Aktar. Phần duy nhất cần lưu ý là quyền truy cập công khai: S3 chặn nó theo mặc định, nên bạn cần thêm bucket policy cho phép đọc công khai hoặc đặt CloudFront trước bucket.
Bạn cần gì
- Một tài khoản AWS
- Quyền tạo bucket S3 và IAM user
- Aktar đã được cài trên máy Mac
Từng bước
- 1
Tạo bucket
Trong S3 console, nhấp Create bucket, chọn một tên duy nhất trên toàn cầu và vùng gần bạn nhất, ví dụ
eu-central-1. Bạn có thể giữ object ownership mặc định là “Bucket owner enforced”: Aktar không dùng ACL. - 2
Cho phép đọc công khai
Cách A, bucket policy: trong tab Permissions của bucket, tắt các thiết lập “Block public access” đang chặn bucket policy công khai, rồi thêm bucket policy này (thay
YOUR-BUCKET):{ "Version": "2012-10-17", "Statement": [{ "Sid": "PublicRead", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::YOUR-BUCKET/*" }] }Cách B, CloudFront: giữ bucket ở chế độ riêng tư và tạo một CloudFront distribution với bucket làm origin (dùng Origin Access Control). Cách này cho bạn HTTPS trên tên miền riêng và có bộ nhớ đệm.
- 3
Tạo IAM user cho Aktar
Trong IAM, tạo một user và gắn policy chỉ cho phép những gì Aktar cần trên bucket đó:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::YOUR-BUCKET" }, { "Effect": "Allow", "Action": ["s3:PutObject", "s3:GetObject", "s3:DeleteObject"], "Resource": "arn:aws:s3:::YOUR-BUCKET/*" } ] }Sau đó tạo một access key cho user này và sao chép Access Key ID cùng Secret Access Key.
- 4
Thêm đích trong Aktar
Trong Cài đặt → Đích → Thêm đích, chọn Amazon S3 và nhập các giá trị bên dưới. Endpoint và vùng phải khớp với vùng của bucket.
- 5
Kiểm tra và lưu
Nhấp Kiểm tra kết nối để xác nhận bucket ghi được và URL công khai phục vụ được tệp, rồi nhấp Lưu.
Cài đặt trong Aktar
Nhập các giá trị này trong Cài đặt → Đích → Thêm đích. Tên trường giống hệt trong ứng dụng.
| Trường | Giá trị ví dụ |
|---|---|
| Nhà cung cấp | Amazon S3 |
| Endpoint | https://s3.eu-central-1.amazonaws.comDùng vùng của bucket. |
| Vùng | eu-central-1 |
| Access Key ID | AKIA…Lấy từ IAM user. |
| Secret Access Key | •••••••• |
| Bucket | your-bucket |
| URL cơ sở công khai | your-bucket.s3.eu-central-1.amazonaws.comHoặc tên miền CloudFront của bạn. |
Mẹo
- Nên dùng CloudFront với tên miền riêng nếu bạn chia sẻ liên kết công khai: bạn có bộ nhớ đệm và vẫn giữ được bucket ở chế độ riêng tư.
- Giới hạn IAM policy trong một bucket duy nhất. Aktar không bao giờ cần quyền trên toàn tài khoản.
- Chọn vùng gần bạn để tải lên nhanh hơn, và gần người xem nếu bạn không dùng CDN.
- Để tệp tải lên tự xóa, IAM user cũng cần
s3:GetLifecycleConfigurationvàs3:PutLifecycleConfigurationtrên bucket, hoặc bạn tự thêm quy tắc vòng đời. Xem tệp tải lên tự xóa.
Khắc phục sự cố
Kiểm tra kết nối báo lỗi về vùng hoặc chuyển hướng
Endpoint và vùng phải khớp với vùng đã tạo bucket, ví dụ https://s3.eu-central-1.amazonaws.com với eu-central-1.
Tải lên thất bại với lỗi Access Denied
IAM user cần s3:PutObject trên YOUR-BUCKET/* và s3:ListBucket trên chính bucket.
Liên kết trả về 403
Bucket policy bị thiếu hoặc vẫn bị “Block public access” chặn, hoặc CloudFront không đọc được bucket. Xem lỗi Access Denied.
Vẫn chưa được?Xem phần Hỏi đáp hoặc hỏi trên GitHub.