gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 07:22:44 29 4
gpt4 key购买 nike

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

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

如果有删除 KMS key 的可能链接,您也可以将其包含在您的答案中。

//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 我们计算出的请求签名与您提供的签名不匹配。检查您的 key 和签名方法。 AKIA347A6YXQ3XM4JQ7A

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

最佳答案

我知道已经过去几年了,但是这个问题有答案吗?您的代码片段似乎缺少的一件事是 V4 签名标志设置为 true:

AWSConfigsS3.UseSignatureVersion4 = true;

资料来源: https://aws.amazon.com/blogs/developer/generating-amazon-s3-pre-signed-urls-with-sse-part-1/ https://aws.amazon.com/blogs/developer/generating-amazon-s3-pre-signed-urls-with-sse-kms-part-2/

您还需要确保提供 x-amz-server-side-encryptionx-amz-server-side-encryption-aws-kms-key-id 上传请求的 header

关于c# - 无法使用适用于 .NET 的 AWS 开发工具包获取预签名对象 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56429558/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com