#amazon-web-services #http #amazon-sns
Вопрос:
Я создал тест для заполнения своей очереди мертвых писем SNS, чтобы помочь мне разработать код для чтения из этой очереди. Короче говоря, я думал, что ошибка HTTP будет проще всего имитировать сбои, но, как ни удивительно, они, похоже, считаются успешными.
На случай, если я делаю это неправильно и в интересах кого-то еще, кто хочет попробовать это, вот моя методология. Я создал конечную точку HTTP/s специально для этого теста, используя один лайнер bash:
while true; do echo -e "HTTP/1.1 200 OKn" | nc -Nl 9078; echo "" amp;amp; date; done
Пока все хорошо. Я решил, что проще всего вернуть код 401. Захват вывода на 401 страницу с помощью netcat:
HTTP/1.1 401 Unauthorized
Server: nginx/1.21.0
Date: Wed, 01 Sep 2021 12:22:03 GMT
Content-Type: text/html
Content-Length: 179
Connection: keep-alive
WWW-Authenticate: Basic realm="Restricted example.com"
Strict-Transport-Security: max-age=31536000
<html>
<head><title>401 Authorization Required</title></head>
<body>
<center><h1>401 Authorization Required</h1></center>
<hr><center>nginx/1.21.0</center>
</body>
</html>
Я соответствующим образом изменил свой один лайнер:
while true; do echo -e "$(cat 401error)n" | nc -Nl 9078; echo "" amp;amp; date; done
Я проверил, что при посещении этой страницы в Firefox появится диалоговое окно с паролем.
Наступило время испытаний, SNS ошибается и передает сообщение без страха. Это сообщение никогда не появляется в DLQ:
POST /poot/testingevent HTTP/1.1
x-amz-sns-message-type: Notification
x-amz-sns-message-id: REDACTED
x-amz-sns-topic-arn: REDACTED
x-amz-sns-subscription-arn: REDACTED
x-amz-sns-rawdelivery: true
Content-Length: 24
Content-Type: text/plain; charset=UTF-8
Host: example.com:9078
Connection: Keep-Alive
User-Agent: Amazon Simple Notification Service Agent
Accept-Encoding: gzip,deflate
{"401 for sure man": 11}
Wed Sep 1 12:25:31 UTC 2021
Кто-нибудь знает? До сих пор ничего не было обнаружено в sns с «http-кодом» duckduck. Если я смогу захватить некоторые другие коды (403 500 и т. Д.) С помощью netcat,Я подумал, что было бы полезно узнать, какие из них, если таковые имеются, соблюдаются.
Ответ №1:
Любой код состояния, выходящий за пределы диапазона 200-499, будет рассматриваться как сбой и повторен в соответствии с вашей политикой повторных попыток в соответствии с https://docs.aws.amazon.com/sns/latest/dg/sns-message-delivery-retries.html. Как только максимальное количество повторных попыток будет исчерпано, сообщение будет доставлено в DLQ, если оно настроено.
Комментарии:
1. Я чувствую, что этого ответа недостаточно, чтобы отдать должное. Мне было достаточно легко просто отключить скрипт для генерации ошибок, но я хотел бы получить более полный список вместе с поведением. Я близок к завершению нескольких проектов, где у меня может быть время для выполнения этой работы и получения списка кода -> поведение
2. Конечно, я добавил некоторые дополнительные детали к ответу. Похоже, это больше соответствует тому, что вы ищете.
3. Это хорошая информация, но она была у меня, когда я настраивал DLQ. У вас есть ссылка на документ, который создает резервные копии 200-499? Я никогда не мог этого обнаружить, когда изначально проводил тестирование.