0

I have been trying to upload file to AWS S3 , below is the code that I am trying

private static void UploadToAWS(string localFilePath, string bucketName, string subDirectoryInBucket, string fileNameInS3)
{
    string accessKey = ConfigurationManager.AppSettings["AMAZON_S3_ACCESSKEY"].ToString();
    string secretKey = ConfigurationManager.AppSettings["AMAZON_S3_SECRETKEY"].ToString();

    AmazonS3Config asConfig = new AmazonS3Config()
    {
        ServiceURL = "http://test.s3.amazonaws.com",

    };
    IAmazonS3 client = Amazon.AWSClientFactory.CreateAmazonS3Client(accessKey,secretKey,asConfig);


    TransferUtility utility = new TransferUtility(client);

    TransferUtilityUploadRequest request = new TransferUtilityUploadRequest();

    if (subDirectoryInBucket == "" || subDirectoryInBucket == null)
    {
        request.BucketName = bucketName; //no subdirectory just bucket name
    }
    else
    {   // subdirectory and bucket name
        request.BucketName = bucketName + @"/" + subDirectoryInBucket;
    }
    request.Key = fileNameInS3; //file name up in S3
    request.FilePath = localFilePath; //local file name
    request.Headers.CacheControl = "public";
    request.Headers.Expires = DateTime.Now.AddYears(3);
    request.Headers.ContentEncoding = "gzip";
    utility.Upload(request); //commensing the transfer
}


  UploadToAWS(@"D:\core_gz.min.js", "test123", "test/build/", "core_gz.min.js");

When I execute this I get the following error

The request signature we calculated does not match the signature you provided. Check your key and signing method.

Can any one help me here, what am I doing wrong here

SoftwareNerd
  • 1,875
  • 8
  • 29
  • 58

1 Answers1

0

I just wanted to post the answer if in case it might help some one else who has the same issue

      private static void UploadToAWS(string localFilePath, string bucketName, string subDirectoryInBucket, string fileNameInS3)
      {
         string accessKey = ConfigurationManager.AppSettings["AMAZON_S3_ACCESSKEY"].ToString();
         string secretKey = ConfigurationManager.AppSettings["AMAZON_S3_SECRETKEY"].ToString();

         AmazonS3Config asConfig = new AmazonS3Config()
          {
    ServiceURL = "http://test.s3.amazonaws.com",
    RegionEndpoint = Amazon.RegionEndpoint.APSoutheast1 // this line fixed the issue
          };
         IAmazonS3 client = Amazon.AWSClientFactory.CreateAmazonS3Client(accessKey,secretKey,asConfig);


       TransferUtility utility = new TransferUtility(client);

       TransferUtilityUploadRequest request = new TransferUtilityUploadRequest();

      if (subDirectoryInBucket == "" || subDirectoryInBucket == null)
       {
         request.BucketName = bucketName; //no subdirectory just bucket name
       }
      else
      {   // subdirectory and bucket name
       request.BucketName = bucketName + @"/" + subDirectoryInBucket;
     }
      request.Key = fileNameInS3; //file name up in S3
      request.FilePath = localFilePath; //local file name
      request.Headers.CacheControl = "public";
      request.Headers.Expires = DateTime.Now.AddYears(3);
      request.Headers.ContentEncoding = "gzip";
      utility.Upload(request); //commensing the transfer
   }

Adding this line in the config fixed my issue

    RegionEndpoint = Amazon.RegionEndpoint.APSoutheast1
SoftwareNerd
  • 1,875
  • 8
  • 29
  • 58