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. 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. 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. 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. 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. 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ườngGiá trị ví dụ
Nhà cung cấpAmazon S3
Endpointhttps://s3.eu-central-1.amazonaws.comDùng vùng của bucket.
Vùngeu-central-1
Access Key IDAKIA…Lấy từ IAM user.
Secret Access Key••••••••
Bucketyour-bucket
URL cơ sở công khaiyour-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:GetLifecycleConfiguration và s3:PutLifecycleConfiguration trê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.