feat: add PresignURL method for existing objects
storage / test (pull_request) Successful in 1m44s
storage / vulnerabilities (pull_request) Successful in 1m37s
pre-commit / pre-commit (pull_request) Successful in 6m14s

Generate presigned download URLs for objects already stored in S3,
valid for 15 minutes. Needed by document-service to serve document
download links.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-16 08:26:45 +02:00
parent c3eeaddc10
commit 066850eb7f
+13
View File
@@ -92,6 +92,19 @@ func (s *S3) storeWithDirectUpload(path string, content io.Reader, contentType s
return req.URL, nil
}
// PresignURL generates a presigned download URL for an existing object.
// The URL is valid for 15 minutes.
func (s *S3) PresignURL(ctx context.Context, key string) (string, error) {
req, err := s.presigner.PresignGetObject(ctx, &s3.GetObjectInput{
Bucket: aws.String(s.bucket),
Key: aws.String(key),
}, s3.WithPresignExpires(15*time.Minute))
if err != nil {
return "", err
}
return req.URL, nil
}
// New creates a new S3 storage instance using the upload manager
// This loads AWS config from the default locations and is suitable for most use cases
func New(bucket string) (*S3, error) {