AWS S3 - 从URL访问私有文件

时间:2017-02-21 17:14:44

标签: asp.net amazon-s3 private aws-sdk bucket

我正在使用ASP.NET AWS SDK将文件从我的Web应用程序上传到S3存储桶。

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

但是,如果我登录到我开发的asp.net Web应用程序,我只想从url访问该文件。

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:0)

要访问“私人”文件,您需要使用包含身份验证信息的 API调用,或者您可以使用预签名网址

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

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

请参阅文档:Generate a Pre-signed Object URL using AWS SDK for .NET