Tag: amazon s3

如何在通过Amazon s3 API上传时设置文件权限

有没有办法在通过Amazon S3 API上传文件时设置文件权限。 在我目前的解决方案中,我能够将文件上传到我的存储桶,但我无法通过文件属性部分中提到的URL查看该文件。 当我在查询字符串中传递访问键时它正在打开。 是否需要在Amazon S3中进行任何设置,或者我需要在上载时为所有文件设置权限。 提前致谢。 Kamal Kant Pansari

没有使用.net S3获取客户端加密

我已经开始使用AWS的sdk for S3,一切都说我应该为上传获得客户端加密,但是当我用S3浏览器检查它时它只显示服务器端加密,我做错了什么? 我正在使用amazon的加密密钥服务,用户拥有使用这些密钥加密的完全权限。 谢谢! static string bucketName = “mybucket”; static EncryptionMaterials encryptionMaterials = new EncryptionMaterials(RSA.Create()); static AmazonS3EncryptionClient client = new AmazonS3EncryptionClient(Amazon.RegionEndpoint.USWest2, encryptionMaterials); static void Main(string[] args) { using (client) { try { PutObjectRequest putRequest1 = new PutObjectRequest { BucketName = bucketName, FilePath = @”C:\abc\def.pdf”, Key = “def.pdf”, ServerSideEncryptionMethod = ServerSideEncryptionMethod.AWSKMS }; client.PutObject(putRequest1);

在AmazonS3 Bucket内部处理文件夹(c#)

我想将一个文件夹(包含其中的所有现有文件)复制到AmazonS3的同一个Bucket中的另一个文件夹中。 我可以复制一个对象,但我需要的是将包含所有文件的文件夹复制到另一个文件夹中。

有没有办法在“公开可读的存储桶”上使用Amazon .NET AWS SDK的AmazonS3客户端而无需指定AWS凭据?

我想使用Amazon的.NET SDK访问公共可读存储桶,但用于创建AmazonS3的AWSClientFactory.CreateAmazonS3Client方法AmazonS3强制您输入AwsAccessKey和AwsSecretAccessKey。 我不想在客户端应用程序中包含这些,但我仍然希望使用Amazon提供的SDK来访问S3上的这些公共可读对象。 这可能吗?

处理完响应后,使用Amazon S3响应流

我正在使用亚马逊SDK,我有一个方法可以返回存储在Amazon S3服务中的对象的Stream。 它包含这样的东西: var request = new GetObjectRequest().WithBucketName(bucketName).WithKey(keyName); using (var response = client.GetObject(request)) { return response.ResponseStream; } 显然,在执行此操作时,流不能从调用方法中读取,因为已经处理了请求对象,并且当完成此操作时,它将关闭流。 我不想将文件下载到MemoryStream或FileStream。 如果我不使用using子句,垃圾收集器将在某个时候处置请求对象,所以我不能不使用它。 我要问的是,有没有办法将Stream包装或复制到另一个Stream然后返回它而不必下载文件? 我正在使用.NET 3.5。 编辑:该方法inheritance自抽象类,调用方法不知道它与Amazon一起使用。 所以它有一个返回流。

如何在“AmazonS3”对象中关闭自动代理检测?

在应用程序启动后第一次使用AmazonS3对象时,会有大约14秒的大延迟。 所有后续呼叫都不存在这种大的时间延迟。 我之前遇到过这个与其他HTTP相关的类的确切延迟问题,并且当有问题的类试图确定本地机器的代理设置以及是否使用它们时,会导致它。 要阻止WebClient发生这种情况,请设置WebClient.Proxy = null; 并且它不会尝试自动检测代理设置,但我无法弄清楚如何禁用AmazonS3对象的代理检测function。 我特意尝试将ProxyHost设置为null : _s3Client = AWSClientFactory.CreateAmazonS3Client(awsAccessKey, awsSecretAccessKey, new AmazonS3Config { ProxyHost = null }); 哪个没用。 我们目前正在使用Amazon .NET SDK“v1.3.17.0”。 有没有办法关闭代理检测?

如何使用amazon sdk为虚拟域生成预签名的Amazon S3url?

我有一个名为foo.example.com的s3存储桶,它正确地都是CNAMEd。 我正在切换到最新的AWS .net SDK。 我希望生成预先签名的url: http://foo.example.com/myfile.txt?s3_params_here 注意那里的虚荣名称。 我有: string bucketName = “foo.example.com”; AmazonS3Client s3Client = new AmazonS3Client(“bar”, “xxx”, new AmazonS3Config { ServiceURL = bucketName, CommunicationProtocol = Protocol.HTTP }); string key = “myfile.txt”; GetPreSignedUrlRequest request = new GetPreSignedUrlRequest() .WithBucketName(bucketName) .WithKey(key) .WithExpires(DateTime.Now.AddMinutes(5)) .WithProtocol(Protocol.HTTP); string url = s3Client.GetPreSignedURL(request); 我得到的url是这样的: http://foo.example.com.foo.example.com/myfile.txt?AWSAccessKeyId=bar&Expires=1331069777&Signature=234KoUUvfE1nCcs2vLj9RQUhqF8%3D 这显然是错的。 我已经尝试了ServiceURL,bucketname等不同的变种,但似乎没有任何效果。 我找不到任何好的文档 – 这样做的正确方法是什么? 谢谢。

在C#中通过AWS.NET从S3存储中检索二进制数据

我已经在AWS SDK for .NET中测试了大多数包含的示例,它们都运行良好。 我可以在存储桶中PUT对象,LIST对象和DELETE对象,但是……我想删除原始文件并想要同步本地丢失的文件吗? 我想创建一个GET对象(通过键/名称和存储桶)。 我可以找到该对象,但如何通过API从S3读取二进制数据? 我是否必须为此编写自己的SOAP包装器,或者是否有“此处”的样本? :O) 希望有一个样本。 它不需要处理exception等等。我只需要看到连接,转发并将文件存储回我的ASP.net或C#项目的主要部分。 任何人???

CompleteMultipartUploadResponse中的EntityTooSmall

使用.NET SDK v.1.5.21.0 我正在尝试上传一个大文件(63Mb),我正在关注以下示例: http://docs.aws.amazon.com/AmazonS3/latest/dev/LLuploadFileDotNet.html 但是使用帮助器代替孔代码并使用jQuery文件上传 https://github.com/blueimp/jQuery-File-Upload/blob/master/basic-plus.html 我拥有的是: string bucket = “mybucket”; long totalSize = long.Parse(context.Request.Headers[“X-File-Size”]), maxChunkSize = long.Parse(context.Request.Headers[“X-File-MaxChunkSize”]), uploadedBytes = long.Parse(context.Request.Headers[“X-File-UloadedBytes”]), partNumber = uploadedBytes / maxChunkSize + 1, fileSize = partNumber * inputStream.Length; bool lastPart = inputStream.Length < maxChunkSize; // http://docs.aws.amazon.com/AmazonS3/latest/dev/LLuploadFileDotNet.html if (partNumber == 1) // initialize upload { iView.Utilities.Amazon_S3.S3MultipartUpload.InitializePartToCloud(fileName, bucket); } try { […]

IIS虚拟目录获取带有过期的预签名URL

在IIS中,有没有办法定义某种过滤规则来拒绝访问虚拟目录中的文件,除非请求是由某种加密查询字符串“预先签名”的? 还有一种方法可以使请求过期吗? 我无法找到控制这个的方法。 我正在寻找的东西与Amazon S3 Amazon.S3.Model.GetPreSignedUrlRequest.Expires属性提供的内容非常类似,但在IIS中。 以下是Amazon S3示例代码的链接。 期望目标的情景: 请求: http://MyServerName/MyFolderThatIsAddedAsAVirtualDirectoryToDefaultWebsiteInIIS/MyImage.jpg默认情况下应始终导致“拒绝访问”。 但是,将特定查询字符串附加到请求URL应该可以访问该文件。 此外,我需要URL在一段时间后过期,直到提供新的有效查询字符串。