AWS S3 createPresignedPost 与 getSignedUrl。我应该使用哪一个从客户端上传各种文件?

Posted

技术标签:

【中文标题】AWS S3 createPresignedPost 与 getSignedUrl。我应该使用哪一个从客户端上传各种文件?【英文标题】:AWS S3 createPresignedPost vs getSignedUrl. Which one should I use for uploading various files from client side? 【发布时间】:2019-03-10 09:34:01 【问题描述】:

在S3文档上,有createPresignedPost和getSignedUrl。

在 getSignedUrl 上:

注意:使用预签名时,并非所有操作参数都受支持 网址。某些参数,例如 SSECustomerKey、ACL、Expires、 发送内容时,必须将 ContentLength 或 Tagging 作为标头提供 要求。如果您使用预签名 URL 从浏览器上传,并且 需要使用这些字段,请参见 createPresignedPost()。

createPresignedPost 只是更可定制的 getSignedUrl 版本吗? 它在下面做同样的事情吗?

【问题讨论】:

根据文档,createPresignedPostgetSignedUrl 更具可定制性。大多数时候我宁愿使用getSignedUrl 【参考方案1】:

如果你想限制用户上传超过一定大小的文件,你应该使用createPresigendPost,并指定ContentLength

使用 getSignedUrl,没有限制对象大小,用户可以将 5TB 对象(当前对象限制)上传到 s3


请注意,如果您可以在调用 getSignedUrl('putObject',params, callback) 时在 params 中指定 ContentLength 你会被扔掉

Presigning post data encountered an error  UnexpectedParameter: ContentLength is not supported in pre-signed URLs.

关于这个主题有一个issue

【讨论】:

我只是不明白getSignedUrl 背后的基本原理。如果你不能限制你的用户上传文件的大小,那有​​什么意义.. 可以回答这个问题 [***.com/q/71004360/14580983](this).我们可以验证通过signedURL上传的文件类型吗

以上是关于AWS S3 createPresignedPost 与 getSignedUrl。我应该使用哪一个从客户端上传各种文件?的主要内容,如果未能解决你的问题,请参考以下文章

AWS S3

使用默认 aws/S3 KMS 密钥对解密对象进行跨账户访问

json AWS S3 Bucket策略#aws#aws-s3

AWS Lambda S3 访问被拒绝

aws s3 存储桶策略

我如何通过AWS SNS设置有关上传事件的AWS S3?