AWS S3 - 从URL访问私人文件

AWS S3 - 从URL访问私人文件

问题描述:

我使用ASP.NET AWS SDK从我的Web应用程序上传文件到S3存储桶。AWS S3 - 从URL访问私人文件

public static void UploadFile(string filePath) 
{ 
     using (_client = Amazon.AWSClientFactory.CreateAmazonS3Client(_awsAccessKey, _awsSecretKey, Amazon.RegionEndpoint.USEast1)) 
     { 
      var request = new PutObjectRequest() 
      { 
       Key = String.Format("{0}{1}", Guid.NewGuid(), Path.GetExtension(filePath)), 
       BucketName = _bucketName, 
       CannedACL = S3CannedACL.Private,    
       FilePath = filePath 
      }; 

      _client.PutObject(request); 
     } 
} 

由于它是私人文件(CannedACL是私人文件),我无法从URL访问该文件。 (https://s3.amazonaws.com/mybucketname/image.png

但我想从URL访问文件只有当我登录到我开发的asp.net web应用程序。

有没有办法做到这一点?

要访问“私人”文件,您可能需要使用API调用包括认证信息,或者您可以使用预签名URL

A Pre-signed URL是一个受时间限制的URL,它包含一个加密的授权字符串,允许访问私人对象。

预签名的URL可以通过几行代码生成,并需要具有访问私有文件权限的IAM用户的访问凭证。

查看文档:Generate a Pre-signed Object URL using AWS SDK for .NET