使用适用于.NET的AWS开发工具包无法获取预签名的对象URL

时间:2019-06-03 14:36:08

标签: c# amazon-s3

我目前正在使用S3,并且需要提取一个S3资源,该资源具有流式传输超时,以便客户端在特定时间后不能使用URL。

  1. 我已经使用了文档中提供的“使用AWS SDK for .NET的预签名对象URL”中提供的一些代码。
  2. 该代码将提供一个临时URL,任何人都可以用来下载S3资源...但在特定时限内。
  3. 我还使用了Visual Studio的Amazon S3 Explorer,但它不支持为使用AWSKMS密钥嵌入的资源生成URL。
  4. 还尝试删除S3文件夹的KMS密钥,但这会引发错误。

如果存在删除KMS密钥的链接,您也可以将其包含在答案中。

//Code Start

using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;

namespace URLDownload
{
    public class Class1
    {
        private const string bucketName = "some-value";
        private const string objectKey = "some-value";
        // Specify your bucket region (an example region is shown).
        private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USEast1;
        private static IAmazonS3 s3Client;

        public static void Main()
        {
            s3Client = new AmazonS3Client(bucketRegion);
            string urlString = GeneratePreSignedURL();
            Console.WriteLine(urlString);
            Console.Read();
        }
        static string GeneratePreSignedURL()
        {
            string urlString = "";
            try
            {
                //ServerSideEncryptionMethod ssem = new ServerSideEncryptionMethod("AWSKMS");
                GetPreSignedUrlRequest request1 = new GetPreSignedUrlRequest
                {
                    BucketName = bucketName,
                    Key = objectKey,
                    Expires = DateTime.Now.AddMinutes(5),
                    Verb = 0,
                    ServerSideEncryptionKeyManagementServiceKeyId = "some-value",
                    ServerSideEncryptionMethod = ServerSideEncryptionMethod.AWSKMS
                };
                urlString = s3Client.GetPreSignedURL(request1);
            }
            catch (AmazonS3Exception e)
            {
                Console.WriteLine("Error encountered on server. Message:'{0}' when writing an object", e.Message);
            }
            catch (Exception e)
            {
                Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message);
            }
            return urlString;
        }
    }
}

    SignatureDoesNotMatch     我们计算出的请求签名与您提供的签名不匹配。检查您的密钥和签名方法。     AKIA347A6YXQ3XM4JQ7A

这是我尝试访问生成的URL时遇到的错误,这可能是因为AWSKMS身份验证出现问题。

0 个答案:

没有答案