Amazon S3: странная ошибка - "иногда" SignatureDoesNotMatch, иногда это так
Я разрабатываю код для salesforce. Мы используем 'Force.com для приложения Amazon Web Services от Appexchange. Приложение предоставляется Amazon.
я загружаю файлы с Amazon S3 на компьютер.
иногда я получаю ниже упомянутых ошибок. Интересно, что только иногда я получаю эту ошибку, в остальное время она работает, даже для одного и того же файла.
<Error>
<Code>SignatureDoesNotMatch</Code>
<Message>
The request signature we calculated does not match the signature you provided. Check your key and signing method.
</Message>
Я попытался использовать оба шаблона URL, предоставленные Amazon. Срок действия установлен на 1 час после генерации ссылки, следовательно, не может быть проблемой.
URL1:- http://adminportal.s3.amazonaws.com/sample.pdf?AWSAccessKeyId=AKIAIRUZSRRCVSLXZCIA&Expires=1372653478&Signature=RvMJ1gJL+qNKmnRkqzuytmlUTGQ=
URL2:- http://s3.amazonaws.com/adminportal/sample.pdf?AWSAccessKeyId=AKIAIRUZSRRCVSLXZCIA&Expires=1372658253&Signature=%2FmI0m0PTlHJpJ%2FP5d%2FX3OApqzcI%3D
подпись генерируется классом, предоставленным Amazon, я думаю, что он должен работать хорошо все время.
может кто-то уточнить, почему S3 дает эту ошибку только иногда?
2 ответов
наконец-то я смог решить эту проблему, вот как?
пример URL для файла на Amazon S3 -
http://adminportal.s3.amazonaws.com/sample.pdf?AWSAccessKeyId=AKIAIRUZSRRCVSLXZCIA&Expires=1372653478&Signature=RvMJ1gJL+qNKmnRkqzuytmlUTGQ=
здесь подпись создается классами, предоставляемыми Amazon.
по неизвестным причинам, 'Force.com для приложения Amazon Web Services создавалась подпись, содержащая пробелы.
например. В данном URL-адресе пробел заменяется на"+".
чтобы избавиться от проблемы, просто URL-адрес кодирует подпись. Кодирование заменит пробелы со специальным характером и проблемой будут решены.
вы используете Java SDK? Какая версия?
баг в версии 1.4.4 я думаю, и была исправлена в последних версиях. Как только я обновился до багги-версии, у меня возникли проблемы с периодической подписью при использовании SQS, и я видел сообщение на форумах AWS некоторых людей, сообщающих о той же проблеме с DynamoDB. Сейчас я обновил до версии 1.4.7 и ошибка исчезла.
может быть, вы видите ту же ошибку!