amazon-web-services - 使用查询字符串身份验证和 .Net SDK 的 Amazon S3 分段上传

标签 amazon-web-services amazon-s3

我们的要求是使用基于浏览器的界面在 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);

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

我遇到的问题是:

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

我倾向于认为.Net SDK不支持这种情况,我必须求助于 native REST API来创建查询字符串。我的理解正确吗?

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

提前祝大家新年快乐。

最佳答案

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

关于amazon-web-services - 使用查询字符串身份验证和 .Net SDK 的 Amazon S3 分段上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20847196/

相关文章:

c# - 使用任务库的 Amazon S3 异步上传

node.js - MEAN堆栈应用程序的健康和诊断系统

amazon-web-services - 将 Firebase 用户迁移到 AWS Cognito

mysql - mysql 上什么更快?每列处理还是通过索引?

amazon-web-services - 用于处理 AWS S3 中文件访问权限管理的 AWS 架构

amazon-s3 - 使用 S3 + CloudFront 的维护模式

php - Amazon S3 客户使用 PHP SDK 提供加密

amazon-web-services - 将参数传递给 AWS Cloudwatch 事件目标 lambda 函数

javascript - 从 AWS S3 存储桶下载文件时如何避免出现 "Networking Error: Network Failure"?

amazon-web-services - aws s3 原子替换文件