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 и ошибка исчезла.

может быть, вы видите ту же ошибку!