【问题标题】:Amazon S3 Multipart Upload Using Query String Authentication and .Net SDK使用查询字符串身份验证和 .Net 开发工具包的 Amazon S3 分段上传
【发布时间】:2014-01-17 18:58:27
【问题描述】:

我们的要求是upload objects in Amazon S3 using a browser based interface。为此,我们使用Query String Authentication 机制(在上传过程中我们没有最终用户的凭据,我们正在使用 ASP.Net 编写代码来执行此操作。我在尝试做多部分时遇到了问题上传。

我正在使用 AWS .Net SDK(版本 2.0.2.5)使用以下代码创建查询字符串:

            GetPreSignedUrlRequest request = new GetPreSignedUrlRequest()
            {
                BucketName = bucketName,
                Key = objectKey,
                Expires = expiryTime,
                Protocol = Amazon.S3.Protocol.HTTP,
                Verb = Amazon.S3.HttpVerb.PUT,
                ContentType = "application/octet-stream,
            };

var url = AWSClientFactory.CreateAmazonS3Client(credentials, region).GetPreSignedURL(request);

如果我不进行多部分上传,这将非常有用。但是我无法弄清楚如何使用查询字符串进行分段上传。

我遇到的问题是:

  1. 为了进行分段上传,我需要先获得一个UploadId。但是获取UploadId 的方法是POST HTTP 请求,而GetPreSignedUrlRequest 方法不将POST 作为HTTP 动词。
  2. 我最终制定了一个存储桶策略,在其中授予我的 Amazon S3 帐户对相关存储桶(不属于我)的权限,并使用该帐户执行 HTTP POST 以获取 UploadId
  3. 现在根据我的理解,在创建查询字符串身份验证 URL 时,查询字符串必须包含 UploadIdPartNumber 参数,但查看 GetPreSignedUrlRequest 对象属性,我无法弄清楚如何在此处指定这些参数.

我倾向于相信 .Net SDK 不支持这种情况,我不得不求助于原生 REST API 来创建查询字符串。我的理解正确吗?

对此的任何见解都将受到高度赞赏。

提前祝大家新年快乐。

【问题讨论】:

  • 你的信念是正确的。适用于 .NET 的 AWS 开发工具包目前不支持为分段上传创建预签名 URL。
  • 谢谢。您能否发布与答案相同的内容,以便我接受。如果有人阅读此线程并感兴趣,我写了一篇关于使用 Amazon S3 REST API 使用 C# 进行多部分上传的博客文章:gauravmantri.com/2014/01/06/…

标签: amazon-s3 amazon


【解决方案1】:

你的信念是正确的。适用于 .NET 的 AWS 开发工具包目前不支持为分段上传创建预签名 URL

【讨论】:

  • 嗨,如何使用 java sdk 为分段上传创建预签名 URL?谢谢。
猜你喜欢
  • 2013-09-14
  • 1970-01-01
  • 1970-01-01
  • 2016-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-08
  • 2021-11-17
相关资源
最近更新 更多