¿Cómo soluciono los problemas al suscribir un punto de conexión HTTP(S) a mi tema de Amazon SNS?
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 enlace HTTP(S) a un tema de SNS, debe confirmar que el punto de enlace 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
Validación del encabezado de respuesta de su punto de enlace
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 enlace recibe una solicitud no autenticada, devuelve 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 enlace recibe una solicitud no autenticada, devuelve una respuesta de encabezado no autorizada de HTTP/1.1 401 junto con un encabezado «WWW-Authenticate». El valor del encabezado debe contener lo siguiente:
- la palabra clave Digest
- un valor de un solo uso generado aleatoriamente llamado «nonce»
- un dominio de autenticación
- otros parámetros opcionales admitidos en 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"
Configuración del registro del estado de entrega
Siga estos pasos:
- Configure registros de estado de entrega para su tema de SNS.
- Visualice 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 enlace HTTP(S).
Los registros de errores, si los hay, se generan 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.
Comprobación del certificado SSL de su punto de enlace HTTPS
Si utiliza un punto de enlace HTTPS, complete los siguientes pasos para la solución de problemas:
-
Confirme que el certificado SSL devuelto por el punto de enlace es válido y está firmado por una entidad de certificación en la que Amazon SNS confíe.
-
Compruebe que su punto de enlace 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 enlace 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 enlace 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 enlace 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" }
Cómo comprobar si un firewall está bloqueando su punto de enlace 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 su punto de enlace está suscrito pero no recibe notificaciones de temas, siga estos pasos:
- Compruebe si su punto de enlace 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.
- Para confirmar que sus mensajes de SNS se están filtrando, compruebe las siguientes métricas de CloudWatch: NumberOfNotificationsFilteredOut, NumberOfNotificationsFilteredOut-InvalidAttributes y NumberOfNotificationsFilteredOut-NoMessageAttributes.
Contenido relevante
- OFICIAL DE AWSActualizada hace 2 años
- OFICIAL DE AWSActualizada hace 10 meses
- OFICIAL DE AWSActualizada hace 3 años