Как сгенерировать мою подпись запроса для загрузки AWS S3 с использованием .NET API? - PullRequest
2 голосов
/ 01 апреля 2011

Я использую .NET API прямо из Amazon для загрузки некоторых файлов на S3.

Однако я получаю сообщение об исключении: The request signature we calculated does not match the signature you provided. Check your key and signing method.

Мой кодследует:

    AmazonS3 s3Client = AWSClientFactory.CreateAmazonS3Client("myaccessid","mysecretid");
    List<string> allFileNames = ProcessFiles(@"c:\Dev\pktest\");
    foreach (string file in allFileNames)
    {                   

        PutObjectRequest putObjectRequest = new PutObjectRequest
        {
            BucketName = "rhspktest",
            FilePath = file,
            Key = file,
            Timeout = 3600000                       
         };

         try
         {
             using (S3Response response = s3Client.PutObject(putObjectRequest)) { };
         }
         catch (AmazonS3Exception ex)
         {
             Console.WriteLine(ex.Message);
         }

            Console.WriteLine(file);

      }
      Console.Read();

Есть ли что-то сразу очевидное, что я делаю не так?

Метод ProcessFiles просто возвращает список имен файлов в этом каталоге.

1 Ответ

11 голосов
/ 02 апреля 2011

ProcessFiles возвращает только имя файла или полный путь? Несмотря на это, маловероятно, что FilePath и Key должны быть установлены на одно и то же.

FilePath должен быть указан полный путь к локальному файлу для загрузки. например, c:\Dev\pktest\myfile.txt

Key - имя файла для хранения на S3. например, myfile.txt. Или, если вы хотите сохранить ту же структуру пути: Dev/pktest/myfile.txt (обратите внимание на косую черту)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...