¿Cómo soluciono los problemas al suscribir un punto de conexión HTTP(S) a mi tema de Amazon SNS?

5 minutos de lectura
0

No puedo recibir una notificación de confirmación de suscripción cuando suscribo mi punto de conexión HTTP o HTTPS a un tema de Amazon Simple Notification Service (Amazon SNS).

Resolución

Antes de suscribir su punto de conexión HTTP(S) a un tema de SNS, debe confirmar que el punto de conexión HTTP(S) está preparado para procesar los mensajes de Amazon SNS.

**Nota:**Los siguientes pasos también se aplican a los casos en los que la suscripción HTTP(S) se encuentra en estado confirmado, pero sigue sin recibir notificaciones.

Compruebe que su punto de conexión HTTP(S) sea de acceso público antes de suscribirse a un tema de SNS

Amazon SNS no admite puntos de conexión HTTP(S) privados. Amazon SNS realiza una solicitud HTTP POST a su punto de conexión a través del Internet público cuando usted suscribe un punto de conexión HTTP(S) a un tema de SNS. Para obtener más información y ejemplos de solicitudes POST, consulte Analizar formatos de mensajes.

Para comprobar si su punto de conexión es de acceso público, realice una solicitud POST de muestra desde su máquina local. Por ejemplo:

curl -X POST your_HTTPS_endpoint -H "Content-Type:text/plain; charset=UTF-8" --data {"x":"y"} -v

Si su punto de conexión es de acceso público, el comando devuelve el siguiente código de estado HTTP:

200 OK

Si se suscribes a un punto de conexión HTTP al que no se puede acceder públicamente a un tema de SNS, recibirá el siguiente error:

An error occurred (InvalidParameter) when calling the Subscribe operation: Invalid parameter: Unreachable Endpoint

**Importante:**El nombre del host no debe incluir un guión bajo. Por ejemplo, no se permite el siguiente nombre de host: your\ _hostname

Valide el encabezado de respuesta de su punto de conexión

Complete los siguientes pasos según el tipo de autenticación que utilice: autenticación de acceso básica o resumida. Asegúrese de que su punto de conexión sea «https» y admita la respuesta de encabezado no autorizada HTTP/1.1 401.

Autenticación de acceso básica:

Cuando su punto de conexión reciba una solicitud no autenticada, devolverá la respuesta de encabezado no autorizada de HTTP/1.1 401 junto con el encabezado «WWW-Authenticate». El valor del encabezado debe contener la palabra clave «Basic» y otros parámetros opcionales admitidos en el RFC 2617 (del sitio web del editor de RFC). Por ejemplo:

WWW-Authenticate: Basic

Autenticación de acceso resumida:

Cuando su punto de conexión reciba una solicitud no autenticada, debería devolver una respuesta de encabezado no autorizada de HTTP/1.1 401 junto con un encabezado «WWW-Authenticate». El valor del encabezado debe contener la palabra clave «Digest», un valor de un solo uso generado aleatoriamente denominado «nonce», un dominio de autenticación y otros parámetros opcionales compatibles con el RFC 2617 (del sitio web del editor de RFC). Por ejemplo:

WWW-Authenticate: Digest realm="testrealm@host.com",
                        qop="auth,auth-int",
                        nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",
                        opaque="5ccc069c403ebaf9f0171e9517f40e41"

Configurar el registro del estado de entrega

1.Configure registros de estado de entrega para su tema de SNS. 

2.Vea los datos de registro de la entrega de notificaciones de confirmación de suscripción a SNS que se generan cuando intenta suscribirse a un punto de conexión HTTP(S).

Los registros de errores, si los hay, se generarán en un grupo de registros con el siguiente formato:

sns/your_aws_region/your_account_ID/your_topic_name/Failure

Nota: Para ver por qué no se pudo entregar la notificación de confirmación de la suscripción, consulte providerResponse en los registros de estado de entrega de Amazon CloudWatch.

Compruebe el certificado SSL de su punto de conexión HTTPS

Si utiliza un punto de conexión HTTPS, complete los siguientes pasos para la solución de problemas:

1.Confirme que el certificado SSL devuelto por el punto de conexión es válido y está firmado por una entidad de certificación en la que Amazon SNS confíe

2.Compruebe que su punto de conexión devuelva la cadena completa de certificados. La cadena completa incluye todos los certificados intermedios.

**Nota:**Puede utilizar herramientas de terceros para comprobar si el certificado SSL devuelto por su punto de conexión es de confianza y está completo. Por ejemplo, puede utilizar SSL Server Test desde el sitio web de SSL Labs.

O bien, para comprobar si el certificado SSL devuelto por su punto de conexión es de confianza y está completo, ejecute el siguiente comando de OpenSSL:

openssl s_client -connect yourHostname:443 -servername yourHostname -showcerts

Si el certificado SSL devuelto por el punto de conexión no es de confianza o no está completo, puede ver la siguiente providerResponse en sus registros de CloudWatch:

{
    "notification": {
        "messageId": "...",
        "topicArn": "arn:aws:sns:ap-northeast-1:***:***",
        "timestamp": "2021-05-12 06:41:20.778"
    },
    "delivery": {
        "deliveryId": "***",
        "destination": "https://***",
        "providerResponse": "SSLPeerUnverifiedException in HttpClient",
        "dwellTimeMs": 66171,
        "attempts": 4
    },
    "status": "FAILURE"
}

Compruebe si un firewall está bloqueando su punto de conexión HTTP(S)

Si un firewall impide la entrega de la notificación de confirmación de suscripción a SNS a sus puntos de conexión HTTP(S), habilite las direcciones IP específicas de la región de AWS.

Compruebe si su punto de conexión HTTP(S) tiene una política de filtrado de suscripciones

Si tu punto de conexión está suscrito pero no recibe notificaciones de temas, siga estos pasos:

1.Compruebe si su punto de conexión tiene configurada una política de filtro de suscripciones. Si su suscripción a HTTP(S) tiene una política de filtrado, es posible que se estén filtrando las notificaciones.

2.Para confirmar que sus mensajes de SNS se están filtrando, compruebe las siguientes métricas de CloudWatch: NumberOfNotificationsFilteredOutNumberOfNotificationsFilteredOut-InvalidAttributes y NumberOfNotificationsFilteredOut-NoMessageAttributes.


OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 3 años