Немного упрощая процесс, AWS использует HMAC для генерации подписи.
Одним из ключевых принципов является то, что HMAC не шифрует сообщение.Сообщение должно быть отправлено вместе с хешем HMAC.Принимающая сторона снова рассчитает HMAC и проверит результаты.
AWS явно говорит об этом в документации Signature :
Когда сервис AWSПолучив запрос, он выполняет те же действия, что и вы, чтобы вычислить подпись, отправленную вами в вашем запросе.Затем AWS сравнивает рассчитанную подпись с той, которую вы отправили с запросом.Если подписи совпадают, запрос обрабатывается.Если подписи не совпадают, запрос отклоняется.
Чтобы ответить на ваш явный вопрос: строка, которую они показывают вам, которую они использовали для генерации «канонической строки», получена из HTTPзапрос сам.Тип HTTP как «GET» в первой строке, путь, переданный GET во второй строке и т. Д.
Другими словами, они ожидают, что вызывающая сторона поймет, как будет выглядеть запросзаранее сгенерируйте строку Canonical String, запустите на ней алгоритм подписи и общий секрет секретного ключа доступа и включите полученный хеш в запрос.Затем, со своей стороны, они берут элементы из HTTP-запроса, снова запускают этот процесс и проверяют правильность результата.
В случае вашей неудачи, если вы опубликуете, как вы генерируете заданный URL-адрес, мы могли быдиагностировать, где происходит сбой.