AWS SNS — HTTP(S) Subscription: ручное подтверждение

При создании подписки на HTTP/HTTPS в AWS SNS можно наблюдать, что подписка повисла в статусе: "Pending confirmation"

 

SNS на указанный URL делает POST запрос, в котором отправляет данные в формате JSON, и ожидает в ответ получить значение ключа: "SubscribeURL". Но если приложение не умеет ответить SNS'у, то можно ввести URL подтверждения вручную, но для этого его нужно узнать.

Для этого можно воспользоваться Nginx'ом и его access_log.

Так как тело POST запроса записывается в лог, только при использовании "proxy_pass", то смоделируем проксирование на бэкенд.

nginx.conf

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}

http {
    log_format postdata escape=json '"$request_body"';

    server {
        listen       80;
        server_name  _;

        location /success {
            return 200;
        }

        location / {
            proxy_redirect off;
            proxy_pass_request_body on;
            proxy_pass $scheme://127.0.0.1:$server_port/success;
            add_header X-Body $request_body;
            access_log  /var/log/nginx/post.log postdata;
        }
    }
}

 

В примере конфигурация приведена для HTTP протокола, если у вас HTTPS, добавьте части конфигурации, которые относятся к SSL.

 

Перечитаем конфигурацию Nginx'а:

systemctl reload nginx

 

После возвращаемся в консоль AWS и в SNS подписках выбираем нужную и делаем повторный запрос "Request Confirmation"

 

Смотрим лог Nginx'а:

cat /var/log/nginx/post.log

 

Интересует значение ключа: "SubscribeURL", оно будет вида:

https://sns.{REGION}.amazonaws.com/?Action=ConfirmSubscription&TopicArn=arn:aws:sns:{REGION}:{YOUR_ACCOUNT_ID}:{YOUR_TOPIC_NAME}&Token={YOUR_TOKEN}

 

Копируем его и возвращаемся к AWS SNS. Выбираем подтверждение подписки "Confirm Subscription"

 

Вставляем значение "SubscribeURL" и подтверждаем.

 

0 0 vote
Article Rating

Метки: Метки

Подписаться
Уведомление о
guest
0 Комментарий
Inline Feedbacks
View all comments