Jmeter иногда дает сбой с ошибкой 403 - PullRequest
0 голосов
/ 28 июня 2019

Я новичок в Jmeter; Я пользуюсь им только две недели, и у меня возникают проблемы с созданным мною тестом.

Тест нацелен на лямбду в AWS, чтобы сгенерировать URL предварительной подписи через вызов API, который необходим для помещения объекта в корзину S3, для успешной работы требуется подпись.

Ниже приведен тест Jmeter:

Bzm - группа потоков параллелизма:

User Defined Variables

HTTP Header Manager

Jp@gc- throughput shaping timer

HTTP-запрос:

JSR223 PreProcessor (Generate a random guid for the object)

JSR223 PreProcessor (Generates the required signature)

Я использую вышеупомянутое, чтобы выполнить следующее нагрузочное тестирование, начните с базовой линии 1 запроса в секунду и каждые 20 минут увеличивайте запрос в секунду до 30 в течение двух минут, затем возвращайтесь к 1 запросу в секунду, этот цикл повторяется в течение 2 часов.

Этот тест выполняется для 10 задач fargate, поэтому общее количество запросов, которые должны попадать в лямбду, составляет 10 запросов в секунду при базовой линии и 300 запросов в секунду во время пакета.

Моя проблема в том, что, когда я добираюсь до своего третьего пакета в цикле, мой тест возвращает ошибку 403, при проверке Jmeter появляется следующее сообщение об ошибке 403: «Срок действия подписи истек раньше, чем».

Мне неясно, по какой причине мой запрос неожиданно начал сбой с этой ошибкой после успешного выполнения в течение часа. Единственная информация, которую мне удалось найти, касающаяся первопричины этого, была проблема перекоса часов; однако, поскольку тест успешно выполняется в течение часа до того, как это произойдет, и все размещается в AWS, я не верю, что это проблема с перекосом часов, и если это то, как я могу решить эту проблему.

Кто-нибудь еще сталкивался с подобными проблемами?

1 Ответ

0 голосов
/ 01 июля 2019

Согласно запросам на аутентификацию (AWS Signature Version 4) артикул:

Защита от повторного использования подписанных частей запроса - Подписанные (с использованием AWS Signatures) части запросов действительны в течение 15 минут после отметки времени в запросе .Неавторизованная сторона, имеющая доступ к подписанному запросу, может изменить неподписанные части запроса, не влияя на действительность запроса в 15-минутном окне.В связи с этим мы рекомендуем максимально усилить защиту, подписав заголовки и текст запроса, отправив HTTPS-запросы в Amazon S3 и используя ключ условия s3: x-amz-content-sha256 (см. Раздел «Ключи политики для проверки подлинности при подписи Amazon S3 версии 4»).) в политиках AWS, требуя от пользователей подписывать тела запросов S3.

Поэтому вам необходимо проверить поле отметки времени вашего запроса и сравнить его с текущим временем на машине.

Также помните, что вы можете создать GUID с помощью функции __UUID () , поэтому нет необходимости писать собственный код.

Убедитесь, что используете язык Groovy и отметьте галочкой Cache compiled script if available, и избегайте встраивания функций или переменных JMeter в тело вашего скрипта.

Пример генерации подписи AWS приведен в Как работать с динамическим AWS SigV4 в JMeter для тестирования API статья

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