我们的要求是使用基于浏览器的界面在 Amazon S3 中上传对象
。为此,我们利用查询字符串身份验证
机制(我们在上传过程中没有最终用户的凭据,我们使用 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);
如果我不进行分段上传,这非常有用。但是我无法弄清楚如何使用查询字符串进行分段上传。
我遇到的问题是:
- 为了进行分段上传,我需要首先获取
UploadId
。但是,获取UploadId
的方法是一个POST
HTTP 请求,并且GetPreSignedUrlRequest
方法不将POST
作为 HTTP 谓词. - 我最终制定了一个存储桶策略,向我的 Amazon S3 账户授予了对相关存储桶(不属于我)的权限,并使用该账户执行 HTTP POST 来获取
UploadId
. - 现在根据我的理解,在创建查询字符串身份验证 URL 但查看
GetPreSignedUrlRequest
时,查询字符串必须包含UploadId
和PartNumber
参数对象属性,我不知道如何在那里指定这些参数。
我倾向于认为.Net SDK不支持这种情况,我必须求助于 native REST API来创建查询字符串。我的理解正确吗?
对此的任何见解都将受到高度赞赏。
提前祝大家新年快乐。
最佳答案
你的信念是正确的。适用于 .NET 的 AWS 开发工具包当前不支持为分段上传创建预签名 URL
关于amazon-web-services - 使用查询字符串身份验证和 .Net SDK 的 Amazon S3 分段上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20847196/