当使用ASP.NET Core与AWS S3进行请求签名时,出现"我们计算的请求签名与您提供的签名不匹配"错误可能是由于签名计算不正确引起的。以下是一个可能的解决方案,包含代码示例:
var credentials = new BasicAWSCredentials(accessKey, secretKey);
var region = RegionEndpoint.GetBySystemName("your-region");
var s3Config = new AmazonS3Config
{
RegionEndpoint = region,
ServiceURL = "https://s3.your-region.amazonaws.com"
};
var signingAlgorithm = SigningAlgorithm.HmacSHA256;
var signatureVersion = "AWS4-HMAC-SHA256";
var expiration = DateTime.UtcNow.AddMinutes(5);
var signer = new AWS4Signer();
var signRequest = new DefaultRequest
{
Endpoint = new Uri("https://s3.your-region.amazonaws.com"),
HttpMethod = HttpMethod.Get,
RequestUri = new Uri("/your-bucket/your-object")
};
signer.Sign(signRequest, s3Config, signingAlgorithm, credentials, expiration);
var request = new HttpRequestMessage(HttpMethod.Get, "https://s3.your-region.amazonaws.com/your-bucket/your-object");
request.Headers.Add("Authorization", signRequest.Headers["Authorization"]);
request.Headers.Add("x-amz-date", signRequest.Headers["x-amz-date"]);
通过以上步骤,您应该能够正确计算并设置AWS S3请求的签名,从而解决"我们计算的请求签名与您提供的签名不匹配"错误。