Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
S3使用预先签名的url进行golang多部分上传_Go_Amazon S3_Aws Sdk - Fatal编程技术网

S3使用预先签名的url进行golang多部分上传

S3使用预先签名的url进行golang多部分上传,go,amazon-s3,aws-sdk,Go,Amazon S3,Aws Sdk,我们正在用“go”语言编写一个应用程序,其中我从我的服务生成一个预签名的url(使用PutObjectRequest()和Presign()),并将其传递给一个外部服务,以便外部服务可以执行较大文件的多部分上传到S3(使用预签名的url)。我们不希望将AWS凭据提供给外部服务,这就是我们计划提供预签名url的原因。此外,由于文件很大,我们需要使用AWS SDK提供的多部分上传功能 我做了一个快速搜索,在aws sdk中找不到任何这样做的函数。 AWS sdk for go语言是否支持使用预先签名

我们正在用“go”语言编写一个应用程序,其中我从我的服务生成一个预签名的url(使用PutObjectRequest()和Presign()),并将其传递给一个外部服务,以便外部服务可以执行较大文件的多部分上传到S3(使用预签名的url)。我们不希望将AWS凭据提供给外部服务,这就是我们计划提供预签名url的原因。此外,由于文件很大,我们需要使用AWS SDK提供的多部分上传功能

我做了一个快速搜索,在aws sdk中找不到任何这样做的函数。
AWS sdk for go语言是否支持使用预先签名的url进行多部分上载?有什么方法可以实现这一点吗?

我不确定是否有任何官方SDK支持这种开箱即用的方式,但根据我们的经验,它是可以实现的。如果外部服务支持它,这是可能的。我使用ExpresseJS完成,对于每个部分,它都会向我的服务发送一个请求,我在那里签名,然后将其返回给外部服务,以便它可以上传该部分。ExpresseJS是开源的,所以你可以看看它是如何实现的,在Go示例中你可以看到如何签署请求。在我的例子中,外部服务也是一个用golang编写的应用程序。如果你熟悉多部分API,你就会看到问题。多部分上传需要至少n+2个唯一的签名URL,n个部分各一个,一个用于启动,一个用于完成多部分操作,并且每个URL都需要在过程进行时生成。感谢大家的输入。我还试图探索是否可以使用http或其他任何选项实现多部分上传或流式传输行为,将文件上传到S3?有人建议我(,但这似乎不适用于将文件上载到S3。您知道有任何类似的机制可以将文件上载到S3吗?