Hướng dẫn tạo Presign URL với AWS SDK

Cập nhật lần cuối: 2025/07/01 14:52:12

ĐIỀU KIỆN

  • Máy chủ đã cài đặt công cụ SDK phù hợp.
  • Đã thu thập đủ thông tin xác thực như Endpoint, Access Key Secret key.

Presigned URL trong S3 là một URL tạm thời được tạo ra để cấp quyền truy cập an toàn, có thời hạn vào một object cụ thể trong S3 bucket mà không cần chia sẻ thông tin xác thực AWS.

  • Cách hoạt động: Sử dụng AWS SDK, tạo URL với khóa truy cập và chữ ký (signature) dựa trên thông tin xác thực của bạn. URL này bao gồm thông tin về bucket, object, và thời gian hết hạn.
  • Mục đích: Cho phép người dùng hoặc ứng dụng truy cập (đọc/ghi) object mà không cần quyền trực tiếp vào S3, ví dụ: tải lên/tải xuống file.
  • Thời hạn: URL có thời gian hiệu lực (mặc định tối đa 7 ngày), sau đó không thể sử dụng.
  • Ứng dụng: Chia sẻ file an toàn, tải lên file từ client, hoặc truy cập tạm thời vào tài nguyên.

Ví dụ: Một presigned URL cho phép người dùng tải file từ S3 trong 1 giờ mà không cần S3 account.



 

  1. User wants to upload a file: Người dùng trên web bắt đầu quá trình bằng cách chọn file và yêu cầu upload.
  2. Request to API for S3 URL: Web gửi yêu cầu đến API ( xây dựng với AWS SDK) để lấy presigned URL. API sử dụng thông tin xác thực CMC S3 để tạo URL có thời hạn, liên kết với bucket và object cụ thể.
  3. User uploads file directly to S3: Web nhận presigned URL từ API và sử dụng nó để upload file trực tiếp lên S3 mà không qua server trung gian, giảm tải cho server.
  4. File waits for verification: Sau khi upload, file được lưu trong S3 nhưng chưa sẵn sàng. Hệ thống chờ quá trình xác minh (có thể do server hoặc quy trình tự động kiểm tra file).
  5. File is verified?: Hệ thống kiểm tra file (ví dụ: định dạng, kích thước, nội dung hợp lệ). Nếu "No", quy trình quay lại chờ hoặc xử lý lỗi; nếu "Yes", tiếp tục.
  6. File is marked as published: Nếu file được xác minh thành công, nó được đánh dấu là đã công khai hoặc sẵn sàng, có thể bao gồm cập nhật metadata hoặc trạng thái trong cơ sở dữ liệu.
  7. File is ready for viewing: Cuối cùng, file có thể được truy cập hoặc xem bởi người dùng thông qua URL công khai hoặc các cơ chế khác.

Lưu ý: Hiện tại, S3 presigned URLs không hỗ trợ sử dụng các thuật toán tổng kiểm tra tính toàn vẹn dữ liệu( data-integrity checksum algorithms) sau (CRC32, CRC32C, SHA-1, SHA-256) khi upload object. Để xác minh tính toàn vẹn của object sau khi upload, bạn có thể cung cấp MD5 digest của object khi upload bằng presigned URLs. Để biết thêm thông tin, tham khảo link sau: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html


Hướng dẫn sử dụng AWS SDK for go để tạo presign URL

 

Repo: https://github.com/aws/aws-sdk-go

Link tham khảo: https://aws.amazon.com/vi/sdk-for-go/

Ví dụ: presigned URL có thể sử dụng để get object. URL mẫu này sẽ không hợp lệ vì thời gian được thiết lập đã hết hạn.

https://gobucket.s3.hn-1.cloud.cmctelecom.vn/folder1/test%201.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=3GEZ5XVSU112FU7KRXTD%2F20241112%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20241112T031138Z&X-Amz-Expires=180&X-Amz-SignedHeaders=host&x-id=GetObject&X-Amz-Signature=9dec2d93ea1312054cf826c638aee08834e63ea24edede0b3cb71f0206f5b07b

 

    back to top

    logo

    © 2023, CMC Cloud. All rights reserved.

    Business Registration Certificate

    Giấy ĐKKD: 0102900049. Nơi cấp: Sở Kế hoạch & Đầu tư Thành phố Hà Nội

    Chịu trách nhiệm nội dung: Đặng Tùng Sơn