Итак, мое приложение для iPhone успешно загружает фотографии в Amazon S3. Я использовал тот же код, что и пример проекта S3Uploader, с последней версией (версия 1.6.0) Amazon AWS SDK для iOS. Проблема в том, что я периодически получаю сообщение об ошибке SignatureDoesNotMatch (рассчитанная нами подпись запроса не соответствует предоставленной вами подписи. Проверьте свой ключ и метод подписи.). В нем нет шаблона. В настоящее время мое приложение работает над этой ошибкой, выполняя определенное количество повторных попыток вызова делегата didFailWithError:.
На данный момент в моих тестах было достаточно повторных попыток, поэтому пользователь не заметит ошибку, но очень неприятно знать, что я получаю ошибку ключа подписи, когда моя подпись явно верна, поскольку она иногда работает. Я не уверен, что это ошибка кодирования URL-адреса (в моем ключе подписи есть знак +), но, поскольку я использую iOS SDK, я не вижу, как обрабатываются URL-адреса PUT.
Кроме того, я убедился, что имя моей корзины написано строчными буквами, а имена файлов — это просто цифры и несколько букв алфавита. Я также пробовал разные регионы, и все они имеют одинаковый результат. Короче говоря, может потребоваться от 0 до 5 попыток, чтобы получить успешный PUT без ошибки SignatureDoesNotMatch. У кого-нибудь была похожая проблема? Любая помощь будет принята с благодарностью. Спасибо за чтение.