Аналогичный ответ Эндрю (принятый ответ), но мои пробелы были не на ключах, а на метаданных для загрузки S3:
using (AmazonS3Client client = new AmazonS3Client(region))
{
PutObjectRequest putObjectRequest = new PutObjectRequest
{
ServerSideEncryptionMethod = ServerSideEncryptionMethod.AES256,
InputStream = stream,
BucketName = s3Bucket,
Key = key,
ContentType = "application/octet-stream",
Timeout = TimeSpan.FromMinutes(60), //http timeout talking to S3, including upload time.
ReadWriteTimeout = TimeSpan.FromMinutes(5) //timeout reading the input stream
};
if (!string.IsNullOrEmpty(fileName))
putObjectRequest.Metadata.Add("Name", fileName);
PutObjectResponse putObjectResponse = client.PutObject(putObjectRequest);
// Exception in client.PutObject if fileName has leading spaces in Metadata!
}
Стек вызовов здесь:
The request signature we calculated does not match the signature you provided. Check your key and signing method.
at Amazon.Runtime.Internal.HttpErrorResponseExceptionHandler.HandleException(IExecutionContext executionContext, HttpErrorResponseException exception) in d:\Jenkins\jobs\v3-stage-release\workspace\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\ErrorHandler\HttpErrorResponseExceptionHandler.cs:line 116
at Amazon.Runtime.Internal.ExceptionHandler`1.Handle(IExecutionContext executionContext, Exception exception) in d:\Jenkins\jobs\v3-stage-release\workspace\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\ErrorHandler\ExceptionHandler.cs:line 38
[...]
at Amazon.Runtime.AmazonServiceClient.Invoke[TRequest,TResponse](TRequest request, IMarshaller`2 marshaller, ResponseUnmarshaller unmarshaller) in d:\Jenkins\jobs\v3-stage-release\workspace\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\AmazonServiceClient.cs:line 117
at Amazon.S3.AmazonS3Client.PutObject(PutObjectRequest request) in d:\Jenkins\jobs\v3-stage-release\workspace\AWSDotNetPublic\sdk\src\Services\S3\Generated\_bcl45\AmazonS3Client.cs:line 3646
at MoveDocumentDataToDisk.AwsRepository.PutObject(RegionEndpoint region, String s3Bucket, String key, String fileName, Stream stream) in C:\code\clarinetsupportfiles\MoveDocumentDataToDisk\MoveDocumentDataToDisk\Program.cs:line 314