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 版本吗? 它在下面做同样的事情吗?
【问题讨论】:
根据文档,createPresignedPost
比getSignedUrl
更具可定制性。大多数时候我宁愿使用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 KMS 密钥对解密对象进行跨账户访问