今天我遇到了一点点奇怪,我一直无法找到任何关于它的东西,所以我希望有人可以提供帮助。我正在尝试使用AWS SDK for C#.NET在我的S3存储桶中获取图像的预签名URL。我通过执行以下操作来提出请求:
string url = string.Empty;
using (s3Client = new AmazonS3Client("aws-access-key",
"aws-secret-key",
RegionEndpoint.USEast1))
{
GetPreSignedUrlRequest request1 = new GetPreSignedUrlRequest()
{
BucketName = BUCKET_NAME,
Key = "whatever.jpg",
Expires = DateTime.Now.AddMinutes(1)
};
try
{
url = s3Client.GetPreSignedURL(request1);
}
catch (AmazonS3Exception amazonS3Exception)
{
}
}
“Whatever.jpg”在我的存储桶中不存在,但它仍然返回一个URL。如果我尝试访问该URL,它只是告诉我指定的密钥不存在。这对我来说似乎有点奇怪。为什么它会返回一个URL而不是抛出一些异常?
最好先查看S3上的文件是否存在,然后创建预签名URL的请求?感谢您提前全力以赴!
答案 0 :(得分:3)
签名URL纯粹是客户端操作(使用加密) 没有理由为此添加网络请求。
首先,您可以在上传网址之前对其进行签名。