不带路径的S3预签名URL [英] S3 pre signed url without path

查看:25
本文介绍了不带路径的S3预签名URL的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要一种让客户端将数据上传到S3而不向他们显示文件的完整位置(路径)的方法。AWS S3预签名URL是否可以做到这一点?

我就是这样使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆