AWS SNS – HTTP(S) Subscription: manual confirmation

When creating an HTTP/HTTPS subscription in AWS SNS, you can observe that the subscription is hanging in the status: “Pending confirmation


SNS to the specified URL makes a POST request in which it sends data in JSON format and expects to receive a key value in response: “SubscribeURL“. But if the application does not know how to respond to SNS, then you can enter the confirmation URL manually, but for this you need to find out.

To do this, you can use Nginx and its access_log.

Since the body of the POST request is written to the log only when using “proxy_pass“, we model proxing to the backend.


user  nginx;
worker_processes  1;

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

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://$server_port/success;
            add_header X-Body $request_body;
            access_log  /var/log/nginx/post.log postdata;


In the example, the configuration is for the HTTP protocol, if you have HTTPS, add the parts of the configuration that are related to SSL.


Reload the Nginx configuration:

systemctl reload nginx


After we return to the AWS console and select the necessary one in SNS subscriptions and make a one more request  “Request Confirmation


Follow to Nginx log:

cat /var/log/nginx/post.log


Interested in the value of the key: “SubscribeURL“, it will be of the form:



We copy it and return to AWS SNS. Select “Confirm Subscription


Insert the value “SubscribeURL” and confirm.


Tagged: Tags

Notify of

Inline Feedbacks
View all comments