AWS S3 - 从 URL 访问私有文件
AWS S3 - access private file from URL
我正在使用 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)
但我只想从 url 访问文件,前提是我登录到我开发的 asp.net 网络应用程序。
有办法吗?
要访问 'private' 文件,您需要使用包含身份验证信息的 API 调用 或者您可以使用 预签名URL.
Pre-signed URL 是一个有时间限制的 URL,它包含一个加密的授权字符串,允许访问私有对象。
预签名 URL 可以通过几行代码生成,并且需要具有访问私有文件权限的 IAM 用户的访问凭证。
查看文档:Generate a Pre-signed Object URL using AWS SDK for .NET
我正在使用 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)
但我只想从 url 访问文件,前提是我登录到我开发的 asp.net 网络应用程序。
有办法吗?
要访问 'private' 文件,您需要使用包含身份验证信息的 API 调用 或者您可以使用 预签名URL.
Pre-signed URL 是一个有时间限制的 URL,它包含一个加密的授权字符串,允许访问私有对象。
预签名 URL 可以通过几行代码生成,并且需要具有访问私有文件权限的 IAM 用户的访问凭证。
查看文档:Generate a Pre-signed Object URL using AWS SDK for .NET