不带路径的S3预签名URL [英] S3 pre signed url without path
问题描述
我就是这样使用boto3
s3.client.generate_presigned_url(
ClientMethod='put_object',
ExpiresIn=7200,
Params={'Bucket': BUCKET, 'Key': name}
)
但结果将是:
https://s3.amazonaws.com/MY_BUCKET/upload/xxxx-xxxx/file-name.bin?AWSAccessKeyId=XXXX&Signature=XXXX&Expires=XXXX
我需要这样的内容,它不会在路径(/upload/xxxx-xxxx/file-name.bin
)中显示密钥名称。
如果不是预签名的URL,我还有什么其他解决方案?
推荐答案
我认为最好的方式是使用AWS CloudFront分发文件。您可以将CloudFront分发的原点设置为MY_BUCKET.s3.amazonaws.com
。也可以使用像MY_BUCKET.s3.amazonaws.com/upload
这样的子文件夹作为源文件夹。
CloudFront将使用生成的CDN端点域在S3源内为您的文件提供服务,也可以设置和使用自定义域。
https://d111111abcdef8.cloudfront.net/upload/xxxx-xxxx/file-name.bin https://uploads.example.com/upload/xxxx-xxxx/file-name.bin
如果使用子文件夹作为源:
https://uploads.example.com/xxxx-xxxx/file-name.bin
有关在CloudFront上将S3存储桶设置为原点的详细信息:https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/DownloadDistS3AndCustomOrigins.html#concept_S3Origin
有关使用S3 Bucket的目录路径作为源的详细信息:https://aws.amazon.com/about-aws/whats-new/2014/12/16/amazon-cloudfront-now-allows-directory-path-as-origin-name/
有关自定义URL的详细信息:https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/CNAMEs.html
这篇关于不带路径的S3预签名URL的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!