为什么在Amazon SDK中为不存在的文件请求预先签名的URL会返回URL?

时间:2013-12-31 20:51:48

标签: c# .net amazon-web-services amazon-s3

今天我遇到了一点点奇怪,我一直无法找到任何关于它的东西,所以我希望有人可以提供帮助。我正在尝试使用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的请求?感谢您提前全力以赴!

1 个答案:

答案 0 :(得分:3)

签名URL纯粹是客户端操作(使用加密) 没有理由为此添加网络请求。

首先,您可以在上传网址之前对其进行签名。