Amazon Simple PDF
Amazon Simple PDF
Notification Service
Guía para desarrolladores
Amazon Simple Notification
Service Guía para desarrolladores
Las marcas comerciales y la imagen comercial de Amazon no se pueden utilizar en relación con ningún producto o
servicio que no sea de Amazon de ninguna manera que pueda causar confusión entre los clientes y que menosprecie
o desacredite a Amazon. Todas las demás marcas comerciales que no son propiedad de Amazon son propiedad de
sus respectivos propietarios, que pueden o no estar afiliados, conectados o patrocinados por Amazon.
Amazon Simple Notification
Service Guía para desarrolladores
Table of Contents
¿Qué es Amazon SNS? ...................................................................................................................... 1
Características y funciones básicas ............................................................................................... 3
Servicios relacionados de ............................................................................................................ 4
Acceso a Amazon SNS ............................................................................................................... 4
Precios de Amazon SNS ............................................................................................................. 5
Situaciones comunes de Amazon SNS .......................................................................................... 5
Integración de aplicaciones .................................................................................................. 5
Alertas de aplicación ........................................................................................................... 6
Notificaciones de usuario ..................................................................................................... 6
Notificaciones de inserción en móviles ................................................................................... 6
Uso de los AWS SDK ................................................................................................................. 6
Fuentes y destinos de eventos de Amazon SNS ..................................................................................... 8
Orígenes de eventos ................................................................................................................... 8
Análisis ............................................................................................................................. 8
Integración de aplicaciones .................................................................................................. 8
Administración de costos y facturación .................................................................................. 9
Aplicaciones empresariales .................................................................................................. 9
Cálculo .............................................................................................................................. 9
Contenedores ................................................................................................................... 10
Interacción con clientes ..................................................................................................... 11
Base de datos .................................................................................................................. 11
Herramientas para desarrolladores ...................................................................................... 12
Web y móvil front-end ....................................................................................................... 13
Desarrollo de videojuegos .................................................................................................. 13
Internet de las cosas ......................................................................................................... 13
Machine Learning ............................................................................................................. 14
Administración y gobernanza .............................................................................................. 14
Medios ............................................................................................................................ 16
Migración y transferencia ................................................................................................... 16
Redes y entrega de contenido ............................................................................................ 16
Seguridad, identidad y conformidad ..................................................................................... 17
Sin servidor ...................................................................................................................... 18
Almacenamiento ............................................................................................................... 18
Orígenes de fuentes adicionales ......................................................................................... 19
Destinos de eventos .................................................................................................................. 19
Destinos de A2A ............................................................................................................... 20
Destinos A2P ................................................................................................................... 20
Configuración ................................................................................................................................... 22
Cree de una cuenta y un usuario administrador de IAM .................................................................. 22
Cree de un usuario de IAM y obtenga las credenciales .................................................................. 22
Pasos siguientes ....................................................................................................................... 23
Introducción ..................................................................................................................................... 24
Requisitos previos ..................................................................................................................... 24
Paso 1: Crear un tema .............................................................................................................. 24
Paso 2: Crear una suscripción Crear una suscripción al tema .......................................................... 24
Paso 3: Publicar un mensaje en el tema ...................................................................................... 25
Paso 4: Eliminar la suscripción y el tema ..................................................................................... 25
Pasos siguientes ....................................................................................................................... 25
Configuración de Amazon SNS ........................................................................................................... 27
Creación de un tema ................................................................................................................. 27
AWS Management Console ................................................................................................ 27
AWS SDK ........................................................................................................................ 29
Suscripción de a un tema .......................................................................................................... 34
Para suscribir un punto de enlace a un tema de Amazon SNS, siga estos pasos: ........................ 35
iii
Amazon Simple Notification
Service Guía para desarrolladores
iv
Amazon Simple Notification
Service Guía para desarrolladores
v
Amazon Simple Notification
Service Guía para desarrolladores
vi
Amazon Simple Notification
Service Guía para desarrolladores
vii
Amazon Simple Notification
Service Guía para desarrolladores
1
Amazon Simple Notification
Service Guía para desarrolladores
2
Amazon Simple Notification
Service Guía para desarrolladores
Características y funciones básicas
Temas
• Características y funciones básicas (p. 3)
• Servicios relacionados de (p. 4)
• Acceso a Amazon SNS (p. 4)
• Precios de Amazon SNS (p. 5)
• Situaciones comunes de Amazon SNS (p. 5)
• Uso de Amazon SNS con un AWS SDK (p. 6)
La mensajería de aplicación a aplicación admite suscriptores como flujos de entrega de Amazon Kinesis
Data Firehose, funciones de Lambda, colas de Amazon SQS, puntos de enlace HTTP/S y canalizaciones
de bifurcación de eventos de AWS. Para obtener más información, consulte Mensajería de aplicación a
aplicación (A2A) (p. 120) .
• Notificaciones de aplicación a persona
Con las notificaciones de aplicación a persona, se ofrecen notificaciones de usuario a los suscriptores,
como aplicaciones móviles, números de teléfono móvil y direcciones de correo electrónico. Para obtener
más información, consulte Mensajería de aplicación a persona (A2P) (p. 187) .
• Temas estándar y FIFO
Utilice un tema FIFO para garantizar un pedido estricto de mensajes, definir grupos de mensajes y
evitar la duplicación de mensajes. Solo las colas FIFO de Amazon SQS pueden suscribirse a un tema
FIFO. Para obtener más información, consulte Ordenación y desduplicación de mensajes (temas
FIFO) (p. 46) .
Utilice un tema estándar cuando el pedido de entrega de mensajes y la posible duplicación de mensajes
no sean críticos. Todos los protocolos de entrega admitidos pueden suscribirse a un tema estándar.
• Durabilidad de los mensajes
En Amazon SNS, se utiliza una serie de estrategias que funcionan en conjunto para proporcionar
durabilidad a los mensajes:
• Los mensajes publicados se almacenan en varios servidores y centros de datos separados por zona
geográfica.
• Si no se dispone de un punto de enlace suscrito, Amazon SNS ejecuta una política de reintentos de
entrega (p. 108).
• Para conservar los mensajes que no se entreguen antes de que finalice la política de reintento de
entrega, puede crear una cola de mensajes fallidos (p. 112).
• Análisis y archivado de mensajes
Puede suscribir flujos de entrega de Kinesis Data Firehose a temas de SNS (p. 120), lo que le permite
enviar notificaciones otros puntos de enlace de archivado y análisis, como buckets de Amazon Simple
Storage Service (Amazon S3), tablas de Amazon Redshift y otros.
• Atributos de mensajes
Con los atributos de mensaje, se puede proporcionar cualquier metadato arbitrario sobre el mensaje. the
section called “Atributos de mensajes” (p. 78).
• Filtrado de mensajes
3
Amazon Simple Notification
Service Guía para desarrolladores
Servicios relacionados de
De forma predeterminada, cada suscriptor recibe todos los mensajes publicados en el tema. Para recibir
un subconjunto de los mensajes, un suscriptor debe asignar una política de filtro a la suscripción del
tema. Cuando los atributos del mensaje entrante coinciden con los atributos de la política de filtro, el
mensaje se entrega al punto de enlace suscrito. De lo contrario, el mensaje se filtra. Para obtener más
información, consulte Filtrado de mensajes (p. 84) .
• Seguridad de mensajes
Con el cifrado del lado del servidor, se protege el contenido de los mensajes almacenados en temas de
Amazon SNS mediante claves de cifrado proporcionadas por AWS KMS. Para obtener más información,
consulte the section called “Cifrado en reposo” (p. 395) .
También puede establecer una conexión privada entre Amazon SNS y Virtual Private Cloud (VPC). Para
obtener más información, consulte the section called “Privacidad del tráfico entre redes” (p. 404).
Servicios relacionados de
Puede utilizar los siguientes servicios con Amazon SNS:
• Con Amazon SQS , se ofrece una cola alojada segura, duradera y disponible que le permite integrar
y desacoplar sistemas y componentes de software distribuidos. Amazon SQS está relacionado con
Amazon SNS de las siguientes maneras:
• Con Amazon SNS, se ofrecen colas de mensajes fallidos (p. 112) impulsadas por Amazon SQS para
mensajes que no se pueden entregar.
• Puede suscribir una cola de Amazon SQS a un tema de SNS (p. 142).
• Puede suscribir una cola FIFO de Amazon SQS a un tema de Amazon SNS (p. 46) para recibir
mensajes en orden y sin duplicados.
• AWS Lambda le permite crear aplicaciones que responden rápidamente a nueva información.
Ejecute el código de su aplicación en funciones de Lambda en una infraestructura informática de alta
disponibilidad. Para obtener más información, consulte AWS Lambda Developer Guide. Puede suscribir
una función Lambda a un tema de SNS (p. 141).
• AWS Identity and Access Management (IAM)) le ayuda a controlar de forma segura el acceso a los
recursos de AWS para sus usuarios. Utilice IAM para controlar quién puede usar sus temas de Amazon
SNS (autenticación), los recursos que pueden usar y cómo pueden usarlos (autorización). Para obtener
más información, consulte Uso de políticas basadas en identidades con Amazon SNS (p. 433) .
• AWS CloudFormation le permite modelar y configurar sus recursos de AWS. Cree una plantilla en la que
se describan los recursos de AWS que desea, incluidos los temas de Amazon SNS y las suscripciones.
AWS CloudFormation se encargará del aprovisionamiento y la configuración de dichos recursos. Para
obtener más información, consulte la Guía del usuario de AWS CloudFormation.
• En la consola de Amazon SNS, se ofrece una interfaz de usuario conveniente para crear temas y
suscripciones, enviar y recibir mensajes, y monitorear eventos y registros.
• Con la AWS Command Line Interface (AWS CLI), se ofrece acceso directo a la API de Amazon SNS
para la configuración avanzada y casos de uso de automatización. Para obtener más información,
consulte Uso de Amazon SNS con la AWS CLI.
• AWS proporciona SDK en varios idiomas. Para obtener más información, consulte SDK y conjuntos de
herramientas.
4
Amazon Simple Notification
Service Guía para desarrolladores
Precios de Amazon SNS
Por ejemplo, puede desarrollar una aplicación que publique un mensaje en un tema del SNS cada vez que
se realice un pedido de un producto. Después, las colas de SQS que están suscritas a este tema de SNS
reciben notificaciones idénticas del nuevo pedido. Una instancia de servidor de Amazon Elastic Compute
Cloud (Amazon EC2) asociada a una de las colas de SQS puede controlar el procesamiento o la ejecución
del pedido. Además, puede adjuntar otra instancia de servidor de Amazon EC2 a un almacenamiento de
datos para analizar todos los pedidos recibidos.
También puede utilizar la distribución ramificada para replicar los datos enviados a su entorno de
producción con su entorno de prueba. Si profundizamos en el ejemplo anterior, puede suscribir otra cola de
SQS al mismo tema de SNS para los nuevos pedidos que entren. A continuación, si asocia esta nueva cola
de SQS a su entorno de prueba, puede seguir mejorando y probando su aplicación utilizando los datos
recibidos desde su entorno de producción.
Important
• Distribución ramificada a los flujos de entrega de Kinesis Data Firehose (p. 120)
• Distribución ramificada a las funciones Lambda (p. 141)
• Colas de distribución ramificada a Amazon SQS (p. 142)
• Distribución ramificada a puntos de enlace HTTP/S (p. 153)
5
Amazon Simple Notification
Service Guía para desarrolladores
Alertas de aplicación
• Informática basada en eventos con Amazon SNS y servicios de informática, almacenamiento, bases de
datos y redes de AWS
Alertas de aplicación
Las alertas de la aplicación y del sistema son notificaciones que se desencadenan mediante umbrales
predeterminados. Amazon SNS puede enviar estas notificaciones a usuarios especificados a través de
SMS y correo electrónico. Por ejemplo, puede recibir una notificación inmediata cuando se produce un
evento, como un cambio específico en su grupo de Amazon EC2 Auto Scaling, un archivo nuevo cargado
en un bucket de Amazon S3 o un umbral de métrica superado en Amazon CloudWatch. Para obtener más
información, consulte Configuración de notificaciones de Amazon SNS en la Guía del usuario de Amazon
CloudWatch.
Notificaciones de usuario
Amazon SNS puede enviar mensajes de correo electrónico push y mensajes de texto (mensajes SMS)
a personas o grupos. Por ejemplo, puede enviar confirmaciones de pedidos de comercio electrónico
como notificaciones de usuario. Para obtener más información sobre el uso de Amazon SNS para enviar
mensajes SMS, consulte Mensajería de texto móvil (SMS) (p. 187).
AWS SDK for C++ Ejemplos de código de AWS SDK for C++
AWS SDK for Java Ejemplos de código de AWS SDK for Java
AWS SDK for JavaScript Ejemplos de código de AWS SDK for JavaScript
AWS SDK for .NET Ejemplos de código de AWS SDK for .NET
AWS SDK for PHP Ejemplos de código de AWS SDK for PHP
AWS SDK for Python (Boto3) Ejemplos de código de AWS SDK for Python
(Boto3)
AWS SDK for Ruby Ejemplos de código de AWS SDK for Ruby
6
Amazon Simple Notification
Service Guía para desarrolladores
Uso de los AWS SDK
Para obtener ejemplos específicos de Amazon SNS, consulte Ejemplos de código de Amazon SNS con
SDK de AWS (p. 307).
Ejemplo de disponibilidad
¿No puede encontrar lo que necesita? Solicite un ejemplo de código mediante el enlace de
Provide feedback (Proporcionar comentarios) que se encuentra en la parte inferior de esta página.
7
Amazon Simple Notification
Service Guía para desarrolladores
Orígenes de eventos
Temas
• Fuentes de eventos de Amazon SNS (p. 8)
• Destinos de eventos de Amazon SNS (p. 19)
Servicios de análisis
Servicio de AWS Beneficio del uso de Amazon SNS
Amazon Athena: con este, puede analizar los datos Reciba notificaciones cuando se superen los
en Amazon S3 con SQL estándar. límites de control. Para obtener más información,
consulte Establecimiento de los límites de control
de uso de datos en la Guía del usuario de Amazon
Athena.
AWS Data Pipeline: describe cómo automatizar el Reciba notificaciones sobre el estado de los
movimiento y la transformación de los datos. componentes de canalización. Para obtener más
información, consulte SnsAlarm en la Guía para
desarrolladores de AWS Data Pipeline.
8
Amazon Simple Notification
Service Guía para desarrolladores
Administración de costos y facturación
AWS Step Functions: con este, puede combinar Reciba notificaciones de eventos de Step
funciones de AWS Lambda y otros servicios de Functions. Para obtener más información, consulte
AWS con el fin de crear aplicaciones críticas para Llamar a Amazon SNS con Step Functions en la
el negocio. Guía para desarrolladores de AWS Step Functions.
Amazon Chime: con este, puede conocer, Reciba notificaciones importantes de eventos de
conversar y realizar llamadas de empresa dentro y reuniones. Para obtener más información, consulte
fuera de la organización. Notificaciones de eventos del SDK de Amazon
Chime en la Guía para desarrolladores de Amazon
Chime.
Servicios de computación
Servicio de AWS Beneficio del uso de Amazon SNS
Con Amazon EC2 Auto Scaling, puede disponer Reciba notificaciones del momento en el que Auto
de la cantidad correcta de instancias de Amazon Scaling inicia o finaliza instancias de Amazon EC2
Elastic Compute Cloud (Amazon EC2) para en su grupo de Auto Scaling. Para obtener más
administrar la carga de la aplicación. información, consulte Obtener notificaciones de
Amazon SNS cuando su grupo de Auto Scaling
escala en la Guía del usuario de Amazon EC2 Auto
Scaling.
9
Amazon Simple Notification
Service Guía para desarrolladores
Contenedores
EC2 Image Builder: se utiliza para automatizar Reciba notificaciones cuando se completen
la creación, administración e implementación las creaciones. Para obtener más información,
de imágenes de servidor personalizadas, consulte Seguimiento de las últimas imágenes
seguras y actualizadas que estén preinstaladas y de servidor en las canalizaciones de EC2 Image
preconfiguradas con configuraciones de software Builder en el blog informático de AWS.
para que se ajusten a los estándares de TI
específicas.
AWS Elastic Beanstalk: se utiliza para administrar Reciba notificaciones de eventos importantes
los detalles del aprovisionamiento de capacidad, el que afecten su aplicación. Para obtener más
equilibrio de carga y el escalado de su aplicación, información, consulte Notificaciones de entorno
y para proporcionar el monitoreo del estado de la de Elastic Beanstalk con Amazon SNS en la Guía
aplicación. para desarrolladores de AWS Elastic Beanstalk.
AWS Lambda: con este, puede ejecutar código sin Reciba los datos de salida de la función mediante
aprovisionar ni administrar servidores. el establecimiento de un tema de SNS como
una cola de mensajes fallidos de Lambda o un
destino Lambda. Para obtener más información,
consulte Invocación asincrónica en la Guía para
desarrolladores de AWS Lambda.
Amazon Lightsail: se utiliza para que los Reciba notificaciones cuando una métrica de una
desarrolladores comiencen a usar AWS para crear de las instancias, bases de datos o balanceadores
sitios web o aplicaciones web. de carga cruza un umbral especificado. Para
obtener más información, consulte Agregar
contactos de notificación en Amazon Lightsail en la
Guía para desarrolladores de Amazon Lightsail.
Servicios de contenedores
Amazon EKS Distro: con este, puede crear Realice el seguimiento de actualizaciones y
clústeres de confianza y seguros dondequiera que parches de seguridad para clústeres creados con
se implementen sus aplicaciones. la distribución de Amazon EKS. Para obtener más
información, consulte Presentación de Amazon
EKS Distro: una distribución de código abierto de
Kubernetes utilizada por Amazon EKS.
Amazon Elastic Container Service (Amazon ECS): Reciba notificaciones cuando esté disponible una
con este, puede ejecutar, detener y administrar nueva AMI optimizada para Amazon ECS. Para
contenedores en un clúster. obtener más información, consulte Suscripción
a las notificaciones de actualización de AMI
optimizadas para Amazon ECS en la Guía para
desarrolladores de Amazon Elastic Container
Service.
10
Amazon Simple Notification
Service Guía para desarrolladores
Interacción con clientes
Amazon Connect: con este, puede configurar un Reciba alertas y validaciones. Para obtener
centro de contacto en la nube omnicanal para más información, consulte El poder de AWS con
captar clientes. Amazon Connect en la Guía para administradores
de Amazon Connect.
Amazon Pinpoint: con este, puede atraer a sus Configure los SMS bidireccionales, que le permiten
clientes enviándoles correo electrónico, SMS y recibir mensajes de sus clientes. Para obtener más
mensajes de voz, y notificaciones push. información, consulte Uso de la mensajería de
SMS bidireccional en Amazon Pinpoint en la Guía
del usuario de Amazon Pinpoint.
Amazon Simple Email Service (Amazon SES): Reciba notificaciones de rebotes, reclamos
se utiliza para proporcionar una forma rentable y entregas. Para obtener más información,
de enviar y recibir correos electrónicos a través consulte Configuración de las notificaciones de
de sus propios dominios y direcciones de correo Amazon SNS para Amazon SES en la Guía para
electrónico. desarrolladores de Amazon Simple Notification
Service.
AWS Database Migration Service: migra datos de Reciba notificaciones cuando se produzcan
bases de datos locales a la nube de AWS. eventos de AWS DMS, por ejemplo, cuando
se crea o elimina una instancia de replicación.
Para obtener más información, consulte Trabajo
con eventos y notificaciones en AWS Database
Migration Service en la Guía del usuario de AWS
Database Migration Service.
Amazon Neptune: con este, se puede crear y Reciba notificaciones cuando se produce un
ejecutar aplicaciones que funcionan con conjuntos evento Neptune. Para obtener más información,
de datos altamente conectados. consulte Uso de notificación de eventos de
Neptune en la Guía del usuario de Neptune.
11
Amazon Simple Notification
Service Guía para desarrolladores
Herramientas para desarrolladores
Amazon Relational Database Service: facilita la Reciba notificaciones de eventos de Amazon RDS.
configuración, la operación y la escala de una base Para obtener más información, consulte Uso de las
de datos relacional en la nube de AWS. notificaciones de eventos de Amazon RDS en la
Guía del usuario de Amazon RDS.
AWS CodeBuild: se utiliza para compilar el código Reciba notificaciones cuando las creaciones
fuente, ejecuta pruebas unitarias y produce tienen éxito, fallan o se mueven de una fase de
artefactos listos para implementarse. compilación a otra. Para obtener más información,
consulte Muestra de notificaciones de creación
para CodeBuild en la Guía del usuario de AWS
CodeBuild.
AWS CodeCommit: se utiliza para proporcionar Reciba notificaciones sobre eventos de repositorio
control de versiones para almacenar y administrar de CodeCommit. Para obtener más información,
activos de forma privada en la nube. consulte Ejemplo: cree un desencadenador de
AWS CodeCommit de un tema de Amazon SNS en
la Guía del usuario de AWS CodeCommit.
AWS CodePipeline: se utiliza para automatizar los Reciba notificaciones sobre las acciones de
pasos necesarios y liberar de manera continua los aprobación. Para obtener más información,
cambios de software. consulte Administración de acciones de aprobación
en CodePipeline en la Guía del usuario de AWS
CodePipeline.
AWS CodeStar: cree, administre y trabaje con Reciba notificaciones acerca de los eventos que
proyectos de desarrollo de software en AWS. se producen en los recursos que utiliza. Para
obtener más información, consulte Configure
temas de Amazon SNS para notificaciones en la
Guía del usuario de la consola de herramientas
para desarrolladores.
12
Amazon Simple Notification
Service Guía para desarrolladores
Web y móvil front-end
Amazon Pinpoint: con este, puede atraer a sus Configure los SMS bidireccionales, que le permiten
clientes enviándoles correo electrónico, SMS y recibir mensajes de sus clientes. Para obtener más
mensajes de voz, y notificaciones push. información, consulte Uso de la mensajería de
SMS bidireccional en Amazon Pinpoint en la Guía
del usuario de Amazon Pinpoint.
AWS IoT Core: se utiliza para proporcionar los Recibir notificaciones de eventos de AWS IoT
servicios en la nube que conectan sus dispositivos Core. Para obtener más información, consulte
IoT a otros dispositivos y servicios en la nube de Creación de una regla de Amazon SNS en la Guía
AWS. para desarrolladores de AWS IoT.
AWS IoT Device Defender: con este, puede auditar Recibe alarmas cuando un dispositivo infringe un
la configuración de los dispositivos, monitorear comportamiento. Para obtener más información,
los dispositivos conectados para detectar un consulte Uso de la detección de AWS IoT Device
comportamiento anormal y mitigar los riesgos de Defender en la Guía para desarrolladoras de AWS
seguridad. IoT.
AWS IoT Events: con este, puede monitorear sus Recibir notificaciones de eventos de AWS IoT
flotas de equipos y dispositivos para saber si se Events. Para obtener más información, consulte
producen errores o cambios en su operación, y Amazon Simple Notification Service en la Guía
para activar acciones cuando se produzcan estos para desarrolladores de AWS IoT Events.
eventos.
AWS IoT Greengrass: se utiliza para ampliar AWS Recibir notificaciones de eventos de AWS IoT
a dispositivos físicos de borde de manera sencilla, Greengrass. Para obtener información, consulte
de modo que puedan actuar a nivel local en
13
Amazon Simple Notification
Service Guía para desarrolladores
Machine Learning
Amazon DevOps Guru: se utiliza para generar Reenvíe información y confirmaciones. Para
información operativa mediante el machine obtener más información, consulte Ofrezca
learning para que pueda mejorar el rendimiento de información operativa impulsada por ML a sus
sus aplicaciones operativas. equipos de guardia a través de PagerDuty
con Amazon DevOps Guru en el Blog de
administración y gobernanza de AWS.
Amazon Lookout for Metrics: se utiliza para buscar Reciba notificaciones de anomalías. Para obtener
anomalías en los datos, determina sus causas raíz más información, consulte Uso de Amazon
y tomar medidas con rapidez. SNS con Lookout for Metrics en la Guía para
desarrolladores de Amazon Lookout for Metrics.
Amazon Rekognition: con este, puede agregar Reciba notificaciones de los resultados de la
con facilidad el análisis de imagen y video a sus solicitud. Para obtener más información, consulte
aplicaciones Referencia: notificación de resultados de análisis
de video en la Guía para desarrolladores de
Amazon Rekognition.
Amazon SageMaker: con este, los desarrolladores Reciba notificaciones cuando un objeto de datos
y los científicos de datos crean y perfeccionan está etiquetado. Para obtener más información,
modelos de machine learning de forma rápida consulte Creación de un trabajo de etiquetado
y sencilla y, a continuación, los implementan de streaming en la Guía para desarrolladores de
directamente un entorno alojado listo para su uso. Amazon SageMaker.
AWS Chatbot: con este, los equipos de Entregue notificaciones a salas de conversaciones.
DevOps y de desarrollo de software utilizar las Para obtener más información, consulte
conversaciones de Amazon Chime y Slack para Configuración de AWS Chatbot en la Guía para
monitorear y responder a los eventos operativos en administradores de AWS Chatbot.
la nube de AWS.
AWS CloudFormation: con este, puede crear y Reciba notificaciones cuando se crean y actualizan
aprovisionar implementaciones de infraestructura las pilas. Para obtener más información, consulte
de AWS de forma predecible y uniforme. Configuración de las opciones de pila de AWS
14
Amazon Simple Notification
Service Guía para desarrolladores
Administración y gobernanza
AWS CloudTrail: se utiliza para ofrecer el historial Reciba notificaciones cada vez que CloudTrail
de eventos de su actividad de Cuenta de AWS. publique nuevos archivos de registros en su bucket
de Amazon S3. Para obtener más información,
consulte Configuración de las notificaciones de
Amazon SNS para CloudTrail en la Guía del
usuario de AWS CloudTrail.
Amazon CloudWatch: se utiliza para monitorear los Reciba notificaciones cuando las alarmas cambian
recursos de AWS y las aplicaciones que ejecuta en de estado. Para obtener más información, consulte
AWS en tiempo real. Uso de las alarmas de Amazon CloudWatch en la
Guía del usuario de Amazon CloudWatch.
AWS Config: se utiliza para ofrecer una vista Reciba notificaciones cuando se actualicen los
detallada de la configuración de los recursos de recursos o cuando AWS Config evalúe las reglas
AWS de su Cuenta de AWS. personalizadas o administradas con respecto a sus
recursos. Para obtener más información, consulte
Notificaciones que AWS Config envía a un tema
de SNS y Ejemplo de notificaciones de cambio
de elementos de configuración en la Guía para
desarrolladores de AWS Config.
AWS Control Tower: con este, puede configurar Utilice alertas para evitar la desviación dentro
y controlar un entorno de AWS seguro con varias de su zona de destino y reciba notificaciones
cuentas y conforme. de conformidad. Para obtener más información,
consulte Amazon Simple Notification Service en la
Guía del usuario de AWS Control Tower.
AWS License Manager: con este, puede Reciba notificaciones y alertas de License
administrar sus licencias de software de Manager. Para obtener más información, consulte
proveedores de software de forma centralizada en Configuración de License Manager en la Guía
AWS y sus entornos en las instalaciones. del usuario de License Manager y Creación de
incidentes de ServiceNow para notificaciones de
AWS License ManagerNotificaciones en el Blog de
administración y gobernanza de AWS.
AWS Service Catalog: con este, los Reciba notificaciones sobre eventos de pila. Para
administradores de TI pueden crear, administrar obtener más información, consulte Restricciones
y distribuir carteras de productos aprobados para de notificación de AWS Service Catalog en la Guía
que los usuarios finales puedan obtener acceso a para administradores de AWS Service Catalog.
ellos a través de un portal personalizado.
AWS Systems Manager: con este, puede ver y Reciba notificaciones sobre el estado de los
controlar su infraestructura en AWS. comandos. Para obtener más información, consulte
Monitoreo de los cambios de estado de Systems
Manager mediante notificaciones de Amazon SNS
en la Guía del usuario de AWS Systems Manager.
15
Amazon Simple Notification
Service Guía para desarrolladores
Medios
Servicios multimedia
Servicio de AWS Beneficio del uso de Amazon SNS
Amazon Elastic Transcoder: con este, puede Reciba notificaciones cuando los trabajos cambian
convertir archivos de medios que haya guardado de estado. Para obtener más información,
en Amazon S3 en archivos de medios en los consulte Notificaciones del estado de trabajo en
formatos compatibles con los reproductores de la Guía para desarrolladores de Amazon Elastic
consumo. Transcoder.
AWS Application Discovery Service: con este, Reciba notificaciones de eventos mediante AWS
puede planificar su migración a la nube de AWS CloudTrail. Para obtener más información, consulte
mediante la recopilación de datos de uso y de Registro de llamadas a la API de Application
configuración de sus servidores locales. Discovery Service con AWS CloudTrail en la Guía
del usuario Application Discovery Service.
AWS Database Migration Service: migra datos de Reciba notificaciones cuando se produzcan
bases de datos locales a la nube de AWS. eventos de AWS DMS, por ejemplo, cuando
se crea o elimina una instancia de replicación.
Para obtener más información, consulte Trabajo
con eventos y notificaciones en AWS Database
Migration Service en la Guía del usuario de AWS
Database Migration Service.
Amazon API Gateway: con este, crear e Reciba mensajes publicados en un punto de
implementar sus propias API de REST y de enlace de API Gateway. Para obtener más
WebSocket a cualquier escala. información, consulte Tutorial: crear una API de
REST de API Gateway con integración de AWS en
la Guía para desarrolladores de API Gateway.
16
Amazon Simple Notification
Service Guía para desarrolladores
Seguridad, identidad y conformidad
AWS Direct Connect: se utiliza para vincular su red Reciba notificaciones cuando las alarmas
interna con una ubicación de AWS Direct Connect monitorean el estado de un estado de cambio de
a través de cable estándar Ethernet de fibra óptica. conexión de AWS Direct Connect. Para obtener
más información, consulte Crear alarmas de
CloudWatch para monitorear las conexiones de
AWS Direct Connect en la Guía del usuario de
AWS Direct Connect.
Elastic Load Balancing: se utiliza para distribuir de Reciba notificaciones de alarmas que haya creado
manera automática el tráfico entrante entre varios para eventos de balanceador de carga. Para
destinos, por ejemplo, instancias de Amazon EC2, obtener más información, consulte Crear alarmas
contenedores y direcciones IP en una o varias de CloudWatch para el balanceador de carga
zonas de disponibilidad. clásico en la Guía del usuario de balanceadores de
carga clásicos.
Amazon Route 53: se utiliza para proporcionar Reciba notificaciones cuando una comprobación
registro de dominio, enrutamiento de DNS y de estado es incorrecta. Para obtener más
comprobación de estado. información, consulte Recibir una notificación
de Amazon SNS cuando una comprobación de
estado es incorrecta (consola) en la Guía para
desarrolladores de Amazon Route 53.
Amazon Virtual Private Cloud (Amazon VPC): con Reciba notificaciones cuando se produzcan
este, puede lanzar recursos de AWS en una red eventos específicos en los puntos de enlace de
virtual que haya definido. interfaz. Para obtener más información, consulte
Cree y administre una notificación para un servicio
de punto de enlace en la Guía del usuario de
Amazon VPC.
AWS Directory Service: se utiliza para ofrecer Reciba correos electrónicos o mensajes de texto
varias formas de utilizar Microsoft Active Directory (SMS) cuando cambie el estado de su directorio.
(AD) con otros servicios de AWS. Para obtener más información, consulte Configure
notificaciones de estado de directorio en la Guía de
administración de AWS Directory Service.
Amazon GuardDuty: se utiliza para monitorear Reciba notificaciones sobre nuevos tipos de
la seguridad de forma continua con el fin resultados publicados, actualizaciones para los
de identificar actividades inesperadas y tipos de resultados existentes u otros cambios en
potencialmente no autorizadas o malintencionadas funcionalidades. Para obtener más información,
en su entorno de AWS. consulte Suscripción al tema de SNS de los
anuncios de GuardDuty en la Guía del usuario de
Amazon GuardDuty.
17
Amazon Simple Notification
Service Guía para desarrolladores
Sin servidor
AWS Lambda: con este, puede ejecutar código sin Reciba los datos de salida de la función mediante
aprovisionar ni administrar servidores. el establecimiento de un tema de SNS como
una cola de mensajes fallidos de Lambda o un
destino Lambda. Para obtener más información,
consulte Invocación asincrónica en la Guía para
desarrolladores de AWS Lambda.
Servicios de almacenamiento
Servicio de AWS Beneficio del uso de Amazon SNS
AWS Backup: se utiliza para centralizar y Recibir notificaciones de eventos de AWS Backup.
automatizar las copias de seguridad de datos en Para obtener más información, consulte Uso de
servicios de AWS en la nube y en el entorno local. Amazon SNS para seguir los eventos de AWS
Backup en la Guía para desarrolladores de AWS
Backup.
Amazon Elastic File System: se utiliza con el fin Reciba notificaciones de alarmas que haya creado
de ofrecer almacenamiento de archivos para las para eventos de Amazon EFS. Para obtener más
instancias de Amazon EC2. información, consulte Herramientas de monitoreo
automatizado en la Guía del usuario de Amazon
Elastic File System.
Amazon S3 Glacier: se utiliza con el fin de ofrecer Configure las notificaciones de un almacén para
almacenamiento para los datos que se utilizan con que, cuando se complete un trabajo, se envíe
poca frecuencia. un mensaje a un tema de SNS. Para obtener
más información, consulte Configuración de
notificaciones de almacén en Amazon S3 Glacier
en la Guía para desarrolladores de Amazon S3
Glacier.
18
Amazon Simple Notification
Service Guía para desarrolladores
Orígenes de fuentes adicionales
Amazon Simple Storage Service (Amazon S3): se Reciba notificaciones cuando se producen
utiliza para ofrecer almacenamiento de objetos. cambios en un bucket de Amazon S3 o en una rara
instancia cuando los objetos no se replican en su
región de destino. Para obtener más información,
consulte la Explicación: configuración de un bucket
para notificaciones (tema de SNS o cola de SQS) y
Monitoreo del progreso con métricas de replicación
y notificaciones de eventos de Amazon S3 en
la Guía del usuario de Amazon Simple Storage
Service.
Para obtener más información acerca de la informática basada en eventos, consulte las siguientes fuentes:
19
Amazon Simple Notification
Service Guía para desarrolladores
Destinos de A2A
Destinos de A2A
Destinos A2P
20
Amazon Simple Notification
Service Guía para desarrolladores
Destinos A2P
Note
Puede entregar eventos de AWS nativos y eventos personalizados a las aplicaciones de chat:
• Eventos de AWS nativos: puede usar AWS Chatbot para enviar eventos de AWS nativos, a
través de temas de Amazon SNS, a Amazon Chime y Slack. El conjunto admitido de eventos
de AWS nativos incluye eventos de AWS Billing and Cost Management, AWS Health, AWS
CloudFormation, Amazon CloudWatch y mucho más. Para obtener más información, consulte
Uso de AWS Chatbot con otros servicios en la Guía del administrador de AWS Chatbot.
• Eventos personalizados: también puede enviar sus eventos personalizados, a través de temas
de Amazon SNS, a Amazon Chime, Slack y Microsoft Teams. Para ello, publica eventos
personalizados en un tema de SNS, que entrega los eventos a una función Lambda suscrita. La
función Lambda utiliza el webhook de la aplicación de conversación para entregar los eventos
a los destinatarios. Para obtener más información, consulte ¿Cómo uso los webhooks para
publicar mensajes de Amazon SNS en Amazon Chime, Slack o Microsoft Teams?
21
Amazon Simple Notification
Service Guía para desarrolladores
Cree de una cuenta y un usuario administrador de IAM
Temas
• Paso 1: Crear una Cuenta de AWS y un usuario administrador de IAM (p. 22)
• Paso 2: Crear un usuario de IAM y obtener las credenciales de AWS (p. 22)
• Pasos siguientes (p. 23)
1. Vaya a la página de inicio de AWS y, a continuación, elija Crear una cuenta de AWS.
2. Siga las instrucciones.
Parte del procedimiento de inscripción consiste en recibir una llamada telefónica e introducir un
número PIN con el teclado del teléfono.
3. Cuando termine de crear su Cuenta de AWS, siga las instrucciones que se indican en la Guía del
usuario de IAM para crear su primer usuario administrador y grupo de IAM.
Para trabajar con Amazon SNS, necesita la política AmazonSNSFullAccess y las credenciales de AWS
asociadas a su usuario de IAM. Estas credenciales se componen de un ID de clave de acceso y una clave
de acceso secreta. Para obtener más información, consulte ¿Qué es IAM? en la Guía del usuario de IAM y
AWSCredenciales de seguridad de en la Referencia general de AWS.
22
Amazon Simple Notification
Service Guía para desarrolladores
Pasos siguientes
6. En la página Set permissions (Establecer permisos), elija Attach existing policies directly (Adjuntar
políticas existentes directamente).
7. Escriba AmazonSNS en el filtro, seleccione AmazonSNSFullAccess y, después, elija Next: Tags
(Siguiente: Etiquetas).
8. En la página Add tags (optional) (Añadir etiquetas [opcional]), elija Next: Review (Siguiente: Revisar).
9. En la página Review, elija Create user.
AKIAIOSFODNN7EXAMPLE
10. Para mostrar su clave de acceso secreta, elija Show (Mostrar), por ejemplo:
wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Important
Puede ver o descargar su clave de acceso secreta solo cuando crea sus credenciales (sin
embargo, puede crear nuevas credenciales en cualquier momento).
11. Para descargar sus credenciales, elija Download .csv (Descargar .csv). Mantenga este archivo en un
lugar seguro.
Pasos siguientes
Ahora que ya puede trabajar con Amazon SNS, primero (p. 24) establezca un tema, cree una
suscripción para el tema, publique un mensaje en el tema y elimine la suscripción y el tema.
23
Amazon Simple Notification
Service Guía para desarrolladores
Requisitos previos
Temas
• Requisitos previos (p. 24)
• Paso 1: Crear un tema (p. 24)
• Paso 2: Crear una suscripción Crear una suscripción al tema (p. 24)
• Paso 3: Publicar un mensaje en el tema (p. 25)
• Paso 4: Eliminar la suscripción y el tema (p. 25)
• Pasos siguientes (p. 25)
Requisitos previos
Antes de comenzar, complete los pasos de Configuración del acceso para Amazon SNS (p. 22).
24
Amazon Simple Notification
Service Guía para desarrolladores
Paso 3: Publicar un mensaje en el tema
9. En Amazon SNS, se abre su navegador web y se muestra una confirmación de suscripción con su ID
de suscripción.
4. En la sección Cuerpo del mensaje, elija Carga útil idéntica para todos los protocolos de entrega y, a
continuación, ingrese el cuerpo del mensaje, como, por ejemplo:
No puede eliminar una confirmación pendiente. Después de 3 días, Amazon SNS lo elimina
de manera automática.
3. En el cuadro de diálogo Eliminar suscripción, elija Eliminar.
Se elimina la suscripción.
4. En el panel de navegación, elija Topics (Temas).
5. En la página Temas, elija un tema y, a continuación, Eliminar.
Important
Se elimina el tema.
Pasos siguientes
Ahora que ha creado un tema con una suscripción y enviado mensajes a este, es posible que desee
probar lo siguiente:
25
Amazon Simple Notification
Service Guía para desarrolladores
Pasos siguientes
26
Amazon Simple Notification
Service Guía para desarrolladores
Creación de un tema
Temas
• Creación de un tema de Amazon SNS (p. 27)
• Suscripción a un tema de Amazon SNS (p. 34)
• Eliminación de una suscripción y un tema de Amazon SNS (p. 35)
• Etiquetado de temas de Amazon SNS (p. 40)
Para difundir los mensajes de un sistema productor de mensajes (por ejemplo, un sitio web de comercio
electrónico) que trabaja con otros servicios que requieren sus mensajes (por ejemplo, sistemas de pago y
tramitación), puede crear un tema para su sistema productor.
La primera tarea, y la más habitual, en Amazon SNS es la creación de un tema. En esta página, se
muestra cómo puede utilizar la AWS Management Console, el AWS SDK for Java y el AWS SDK for .NET
para crear un tema.
Durante la creación, elige un tipo de tema (estándar o FIFO) y asigna un nombre al tema. Después de un
tema, no podrá modificar el tipo o el nombre del tema. Todas las demás opciones de configuración son
opcionales durante la creación del tema y puede editarlas más adelante.
Important
Temas
• Para crear un tema mediante la AWS Management Console (p. 27)
• Para crear un tema mediante el SDK de AWS, siga estos pasos: (p. 29)
• Si no se han creado temas en su Cuenta de AWS, lea la descripción de Amazon SNS en la página
de inicio.
27
Amazon Simple Notification
Service Guía para desarrolladores
AWS Management Console
Se muestran los valores de Description (Descripción), Account (Cuenta) y CMK ARN (ARN de
CMK) de cada CMK.
Important
Si no es el propietario de la CMK o si ha iniciado sesión con una cuenta que no tiene los
permisos kms:ListAliases y kms:DescribeKey, no podrá ver la información sobre
la CMK en la consola de Amazon SNS.
Pida al propietario de la CMK que le conceda estos permisos. Para obtener más
información, consulte Permisos API de AWS KMS: referencia de recursos y acciones en
la Guía para desarrolladores de AWS Key Management Service.
• De forma predeterminada, se selecciona la CMK administrada por AWS en Amazon SNS alias/
aws/sns (predeterminado).
Note
28
Amazon Simple Notification
Service Guía para desarrolladores
AWS SDK
Note
El nombre del tema, el ARN, (opcional) el nombre para mostrar y el ID de la cuenta AWS del
propietario del tema se muestran en la sección Detalles.
11. Copie el ARN del tema en el portapapeles, por ejemplo:
arn:aws:sns:us-east-2:123456789012:MyTopic
En los siguientes ejemplos de código, se muestra cómo crear un tema de Amazon SNS.
.NET
/// <summary>
/// Creates a new SNS topic using the supplied topic name.
/// </summary>
/// <param name="client">The initialized SNS client object used to
/// create the new topic.</param>
/// <param name="topicName">A string representing the topic name.</param>
/// <returns>The Amazon Resource Name (ARN) of the created topic.</returns>
public static async Task<string>
CreateSNSTopicAsync(IAmazonSimpleNotificationService client, string topicName)
{
var request = new CreateTopicRequest
{
Name = topicName,
};
29
Amazon Simple Notification
Service Guía para desarrolladores
AWS SDK
return [Link];
}
C++
Aws::SDKOptions options;
Aws::InitAPI(options);
{
Aws::String topic_name = argv[1];
Aws::SNS::SNSClient sns;
Aws::SNS::Model::CreateTopicRequest ct_req;
ct_req.SetName(topic_name);
if (ct_out.IsSuccess())
{
std::cout << "Successfully created topic " << topic_name << std::endl;
}
else
{
std::cout << "Error creating topic " << topic_name << ":" <<
ct_out.GetError().GetMessage() << std::endl;
}
}
Aws::ShutdownAPI(options);
Go
SDK para Go V2
• Encuentre instrucciones y más código en GitHub.
• Para ver los detalles de la API, consulte CreateTopic en la Referencia de la API de AWS SDK
for Go.
Java
30
Amazon Simple Notification
Service Guía para desarrolladores
AWS SDK
try {
CreateTopicRequest request = [Link]()
.name(topicName)
.build();
result = [Link](request);
return [Link]();
} catch (SnsException e) {
[Link]([Link]().errorMessage());
[Link](1);
}
return "";
}
JavaScript
31
Amazon Simple Notification
Service Guía para desarrolladores
AWS SDK
Kotlin
Esta es una documentación preliminar para una característica en versión de vista previa.
Está sujeta a cambios.
PHP
require 'vendor/[Link]';
use Aws\Sns\SnsClient;
use Aws\Exception\AwsException;
/**
* Create a Simple Notification Service topics in your AWS account at the requested
region.
*
* This code expects that you have AWS credentials set up per:
* [Link]
guide_credentials.html
*/
$topicname = 'myTopic';
try {
$result = $SnSclient->createTopic([
'Name' => $topicname,
]);
var_dump($result);
} catch (AwsException $e) {
// output error message if fails
error_log($e->getMessage());
32
Amazon Simple Notification
Service Guía para desarrolladores
AWS SDK
Python
class SnsWrapper:
"""Encapsulates Amazon SNS topic and subscription functions."""
def __init__(self, sns_resource):
"""
:param sns_resource: A Boto3 Amazon SNS resource.
"""
self.sns_resource = sns_resource
Ruby
sns_client.create_topic(name: topic_name)
rescue StandardError => e
puts "Error while creating the topic named '#{topic_name}': #{[Link]}"
end
33
Amazon Simple Notification
Service Guía para desarrolladores
Suscripción de a un tema
region = 'REGION'
if topic_created?(sns_client, topic_name)
puts 'The topic was created.'
else
puts 'The topic was not created. Stopping program.'
exit 1
end
end
Rust
Esta documentación es para un SDK en versión preliminar. El SDK está sujeto a cambios
y no se debe utilizar en producción.
println!(
"Created topic with ARN: {}",
resp.topic_arn().unwrap_or_default()
);
Ok(())
}
En los puntos de enlace HTTP(S), las direcciones de correo electrónico y los recursos de AWS de
otras Cuentas de AWS, se debe confirmar la suscripción antes de poder recibir mensajes.
34
Amazon Simple Notification
Service Guía para desarrolladores
Para suscribir un punto de enlace a un
tema de Amazon SNS, siga estos pasos:
Temas
35
Amazon Simple Notification
Service Guía para desarrolladores
AWS Management Console
• Para eliminar una suscripción y un tema de Amazon SNS mediante la AWS Management Console,
siga estos pasos: (p. 36)
• Para eliminar una suscripción y un tema mediante la SDK de AWS, siga estos pasos: (p. 36)
Cuando se elimina un tema, Amazon SNS elimina las suscripciones asociadas a este.
Para eliminar un tema mediante la AWS Management Console, siga estos pasos:
En los siguientes ejemplos de código, se muestra cómo eliminar un tema de Amazon SNS y todas las
suscripciones a ese tema.
.NET
/// <summary>
/// This example deletes an existing Amazon Simple Notification Service
/// (Amazon SNS) topic. The example was created using the AWS SDK for .NET
/// version 3.7 and .NET Core 5.0.
/// </summary>
public class DeleteSNSTopic
36
Amazon Simple Notification
Service Guía para desarrolladores
AWS SDK
{
public static async Task Main()
{
string topicArn = "arn:aws:sns:us-east-2:704825161248:ExampleSNSTopic";
IAmazonSimpleNotificationService client = new
AmazonSimpleNotificationServiceClient();
C++
Aws::SDKOptions options;
Aws::InitAPI(options);
{
Aws::String topic_arn = argv[1];
Aws::SNS::SNSClient sns;
Aws::SNS::Model::DeleteTopicRequest dt_req;
dt_req.SetTopicArn(topic_arn);
if (dt_out.IsSuccess())
{
std::cout << "Successfully deleted topic " << topic_arn << std::endl;
}
else
{
std::cout << "Error deleting topic " << topic_arn << ":" <<
dt_out.GetError().GetMessage() << std::endl;
}
}
Aws::ShutdownAPI(options);
Java
try {
DeleteTopicRequest request = [Link]()
37
Amazon Simple Notification
Service Guía para desarrolladores
AWS SDK
.topicArn(topicArn)
.build();
} catch (SnsException e) {
[Link]([Link]().errorMessage());
[Link](1);
}
}
JavaScript
38
Amazon Simple Notification
Service Guía para desarrolladores
AWS SDK
Kotlin
Esta es una documentación preliminar para una característica en versión de vista previa.
Está sujeta a cambios.
PHP
require 'vendor/[Link]';
use Aws\Sns\SnsClient;
use Aws\Exception\AwsException;
/**
* Deletes a SNS topic and all its subscriptions.
*
* This code expects that you have AWS credentials set up per:
* [Link]
guide_credentials.html
*/
$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';
try {
$result = $SnSclient->deleteTopic([
'TopicArn' => $topic,
]);
var_dump($result);
} catch (AwsException $e) {
// output error message if fails
error_log($e->getMessage());
}
39
Amazon Simple Notification
Service Guía para desarrolladores
Etiquetado
Python
class SnsWrapper:
"""Encapsulates Amazon SNS topic and subscription functions."""
def __init__(self, sns_resource):
"""
:param sns_resource: A Boto3 Amazon SNS resource.
"""
self.sns_resource = sns_resource
def delete_topic(topic):
"""
Deletes a topic. All subscriptions to the topic are also deleted.
"""
try:
[Link]()
[Link]("Deleted topic %s.", [Link])
except ClientError:
[Link]("Couldn't delete topic %s.", [Link])
raise
Temas
• Etiquetado para asignación de costos (p. 40)
• Etiquetado para el control de acceso (p. 41)
• Etiquetado para búsqueda y filtrado de recursos (p. 42)
• Configuración de etiquetas para un tema de Amazon SNS (p. 42)
40
Amazon Simple Notification
Service Guía para desarrolladores
Etiquetado para el control de acceso
refleje su propia estructura de costos. Para ello, regístrese para obtener una factura de su cuenta de AWS
que incluya los valores y claves de etiquetas. Para obtener más información, consulte Configuración de un
informe de asignación de costos mensual en la Guía del usuario de Administración y facturación y costos
de AWS.
Por ejemplo, podría agregar etiquetas que representen el centro de costos y el objetivo de sus temas de
Amazon SNS, como se indica a continuación:
Aplicación Archivado
Este plan de etiquetado le permite agrupar dos temas relacionados con el rendimiento de las máquinas de
estado en el mismo centro de costos, mientras etiqueta una actividad no relacionada con una etiqueta de
asignación de costos distinta.
Puede restringir el acceso a una identidad de IAM. Por ejemplo, puede restringir a Publish y
PublishBatch el acceso a todos los temas de Amazon SNS que incluyan una etiqueta con la clave
environment y el valor production, al mismo tiempo que permite el acceso a todos los demás temas
de Amazon SNS. En el ejemplo siguiente, la política restringe la capacidad de publicar mensajes en temas
etiquetados con production, al tiempo que permite que los mensajes se publiquen en temas etiquetados
con development. Para obtener más información, consulte Control del acceso mediante etiquetas en la
Guía del usuario de IAM.
Note
La configuración del permiso de IAM para Publish establece permisos para Publish y
PublishBatch.
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Deny",
"Action": [
"sns:Publish"
],
"Resource": "arn:aws:sns:*:*:*",
"Condition": {
"StringEquals": {
"aws:ResourceTag/environment": "production"
}
41
Amazon Simple Notification
Service Guía para desarrolladores
Etiquetado para búsqueda y filtrado de recursos
}
},
{
"Effect": "Allow",
"Action": [
"sns:Publish"
],
"Resource": "arn:aws:sns:*:*:*",
"Condition": {
"StringEquals": {
"aws:ResourceTag/environment": "development"
}
}
}]
}
Por ejemplo, puede tener cientos de temas asociados a su entorno de producción. En lugar de tener que
buscar manualmente estos temas, puede consultarlos todos con una etiqueta determinada:
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
42
Amazon Simple Notification
Service Guía para desarrolladores
Configuraciones de etiquetas
Important
Temas
• Enumerar, agregar y quitar etiquetas de metadatos de un tema de Amazon SNS mediante la AWS
Management Console (p. 43)
• Agregar etiquetas a un tema mediante un SDK de AWS (p. 43)
• Administración de las etiquetas con las acciones de la API de Amazon SNS (p. 45)
• Acciones de API compatibles con ABAC (p. 45)
• Para agregar una etiqueta, elija Add tag (Agregar etiqueta) y, opcionalmente, ingrese las opciones
Key (Clave) y Value (Valor).
• Para eliminar una etiqueta, elija Remove tag (Quitar etiqueta) junto a un par clave-valor.
6. Elija Save changes.
En los siguientes ejemplos de código, se muestra cómo agregar etiquetas a un tema de Amazon SNS.
Java
try {
Tag tag = [Link]()
.key("Team")
.value("Development")
.build();
43
Amazon Simple Notification
Service Guía para desarrolladores
Configuraciones de etiquetas
.build();
[Link](tagResourceRequest);
[Link]("Tags have been added to "+topicArn);
} catch (SnsException e) {
[Link]([Link]().errorMessage());
[Link](1);
}
}
Kotlin
Esta es una documentación preliminar para una característica en versión de vista previa.
Está sujeta a cambios.
44
Amazon Simple Notification
Service Guía para desarrolladores
Configuraciones de etiquetas
• ListTagsForResource
• TagResource
• UntagResource
• AddPermission
• ConfirmSubscription
• DeleteTopic
• GetSubscriptionAttributes
• GetTopicAttributes
• ListSubscriptionsByTopic
• ListTagsForResource
• Publish
• PublishBatch
• RemovePermission
• SetSubscriptionAttributes
• SetTopicAttributes
• Subscribe
• TagResource
• Unsubscribe
• UntagResource
45
Amazon Simple Notification
Service Guía para desarrolladores
Caso de uso de temas FIFO
Ordenación y desduplicación de
mensajes (temas FIFO)
Puede utilizar los temas FIFO de Amazon SNS (primero en entrar, primero en salir) y las colas de Amazon
Simple Queue Service (Amazon SQS) juntos para proporcionar un orden estricto y una desduplicación
de mensajes. Las capacidades FIFO de cada uno de estos servicios funcionan en conjunto para actuar
como un servicio completamente administrado con el fin de integrar aplicaciones distribuidas que requieren
coherencia de datos casi en tiempo real.
Temas
• Ejemplo de caso de uso de temas FIFO (p. 46)
• Detalles de pedido de mensajes para temas FIFO (p. 48)
• Agrupación de mensajes para temas FIFO (p. 53)
• Entrega de mensajes para temas FIFO (p. 54)
• Filtrado de mensajes para temas FIFO (p. 55)
• Desduplicación de mensajes para temas FIFO (p. 57)
• Seguridad de mensajes para temas FIFO (p. 59)
• Durabilidad de mensajes para temas FIFO (p. 59)
• Ejemplos de código para temas FIFO (p. 62)
• Los administradores de inventarios utilizan una aplicación de administración de precios para establecer
el precio de cada elemento en stock. En esta empresa, los precios de los productos pueden cambiar en
función de la fluctuación del cambio de divisas, la demanda del mercado y los cambios en la estrategia
de ventas. La aplicación de administración de precios utiliza una función AWS Lambda que publica
actualizaciones de precios en un tema FIFO de SNS cada vez que cambian los precios.
• Con una aplicación mayorista, se proporciona el backend para un sitio web en el que los talleres de
carrocería de automóviles y fabricantes de automóviles pueden comprar partes de automóviles de la
compañía a granel. Para obtener notificaciones de cambio de precio, la aplicación mayorista suscribe su
cola de SQS FIFO al tema de SNS FIFO de la aplicación de administración de precios.
• Con una aplicación minorista, se proporciona el backend para otro sitio web en el que los propietarios de
automóviles y entusiastas de ajuste de automóviles pueden comprar partes de automóviles individuales
para sus vehículos. Para obtener notificaciones de cambio de precio, la aplicación minorista también
suscribe su cola FIFO de SQS al tema de SNS FIFO de la aplicación de administración de precios.
46
Amazon Simple Notification
Service Guía para desarrolladores
Caso de uso de temas FIFO
Para que las aplicaciones mayoristas y minoristas reciban actualizaciones de precios en el orden correcto,
en la aplicación de administración de precios se debe utilizar un sistema de distribución de mensajes
estrictamente ordenado. Si utiliza los temas FIFO de SNS y las colas FIFO SQS, podrá procesar los
mensajes en orden y sin duplicaciones. Para obtener más información, consulte Detalles de pedido de
mensajes para temas FIFO (p. 48). Para ver los fragmentos de código que implementan este caso de
uso, consulte Ejemplos de código para temas FIFO (p. 62).
47
Amazon Simple Notification
Service Guía para desarrolladores
Detalles de los pedidos de mensajes
48
Amazon Simple Notification
Service Guía para desarrolladores
Detalles de los pedidos de mensajes
Tenga en cuenta que no hay pedidos implícitos de los suscriptores. En el ejemplo siguiente, se muestra
que el mensaje m1 se entrega primero al suscriptor mayorista y, luego, al suscriptor minorista. El mensaje
m2 se entrega primero al suscriptor minorista y, luego, al suscriptor mayorista. Si bien los dos mensajes se
entregan a los suscriptores en un orden diferente, el orden de mensajes se conserva para cada suscriptor.
Cada suscriptor se percibe de forma aislada de cualquier otro suscriptor.
Si un suscriptor de cola FIFO de SQS se vuelve inaccesible, puede desconectarse. Por ejemplo,
supongamos que el propietario de la cola de aplicaciones mayorista cambia por error la política de colas
49
Amazon Simple Notification
Service Guía para desarrolladores
Detalles de los pedidos de mensajes
de Amazon SQS de forma que se impida que la entidad principal de servicio de Amazon SNS entregue
mensajes a la cola. En este caso, las actualizaciones de precios mayoristas no se entregan, pero las
actualizaciones de precios minoristas sí, lo que provoca que los suscriptores no estén sincronizados.
Cuando el propietario de la cola de aplicaciones mayoristas corrige la política de colas, Amazon SNS
reanuda la entrega de mensajes a la cola suscrita. Todos los mensajes que se publicaron en el tema
mientras la cola estaba mal configurada se eliminan, a menos que la suscripción tenga una cola de
mensajes fallidos (p. 112) configurada.
50
Amazon Simple Notification
Service Guía para desarrolladores
Detalles de los pedidos de mensajes
Puede tener varias aplicaciones (o varios subprocesos dentro de la misma aplicación) que publiquen
mensajes en un tema FIFO SNS en paralelo. Al hacerlo, delega con eficacia la secuenciación de mensajes
en el servicio Amazon SNS. Para determinar la secuencia establecida de mensajes, puede verificar el
número de secuencia.
El número de secuencia es un número grande, no consecutivo y cada vez mayor que Amazon SNS asigna
a cada mensaje que publique. El número de secuencia se pasa a las colas FIFO SQS suscritas como
parte del cuerpo del mensaje. Sin embargo, si habilita la entrega de mensajes sin procesar (p. 97), el
mensaje que se entrega a la cola FIFO de SQS no incluye el número de secuencia ni ningún otro metadato
de mensajes SNS.
51
Amazon Simple Notification
Service Guía para desarrolladores
Detalles de los pedidos de mensajes
Los temas FIFO de Amazon SNS definen el pedido en el contexto de un grupo de mensajes. Para obtener
más información, consulte Agrupación de mensajes para temas FIFO (p. 53).
52
Amazon Simple Notification
Service Guía para desarrolladores
Agrupación de mensajes
Al publicar mensajes en un tema de FIFO de Amazon SNS, debe establecerse el ID del grupo de
mensajes. El ID de grupo es un token obligatorio con el que se especifica que un mensaje pertenece a
un grupo de mensajes específico. El tema de SNS FIFO pasa el ID de grupo a las colas FIFO de Amazon
SQS suscritas. No hay límite para la cantidad de ID de grupo en temas de SNS FIFO o colas FIFO de
SQS.
No hay afinidad entre un grupo de mensajes y una suscripción. Por lo tanto, los mensajes que se publican
en cualquier grupo de mensajes se entregan a todas las colas suscritas, sujeto a las políticas de filtro
adjuntas a las suscripciones. Para obtener más información, consulte Entrega de mensajes para temas
FIFO (p. 54) y Filtrado de mensajes para temas FIFO (p. 55).
En el caso de uso de ejemplo de administración de precios de partes de automóviles (p. 46), hay un
grupo de mensajes dedicado para cada producto vendido en la plataforma. El mismo tema FIFO de SNS
se utiliza para procesar todas las actualizaciones de precios. La secuencia de actualizaciones de precios
se conserva en el contexto de un solo producto de partes de automóviles, pero no en varios productos.
En el siguiente diagrama, se muestra cómo funciona. Observe que para el producto con el ID de grupo de
mensajes product-214, el mensaje m1 siempre se procesa antes que el mensaje m4. Esta secuencia se
conserva a lo largo del flujo de trabajo, desde Amazon SNS a Amazon SQS hasta AWS Lambda. De forma
similar, para el producto con el ID de grupo de mensajes product-799, el mensaje m2 siempre se procesa
antes que el mensaje m3. Los grupos de mensajes product-214 y product-799 son independientes entre sí,
por lo que no hay relación entre cómo se secuencian sus mensajes.
53
Amazon Simple Notification
Service Guía para desarrolladores
Entrega de mensajes
54
Amazon Simple Notification
Service Guía para desarrolladores
Filtrado de mensajes
ser Amazon SQS, con el nombre de recurso de Amazon (ARN) de una cola de Amazon SQS FIFO como
punto de enlace.
Note
Para ampliar los mensajes de los temas FIFO de Amazon SNS a AWS Lambda, se deben aplicar
otros pasos. En primer lugar, suscriba las colas FIFO de Amazon SQS al tema. A continuación,
configure las colas para desencadenar las funciones. Para obtener más información, consulte
SQS FIFO como fuente de eventos en el blog de informática de AWS.
Los temas de SNS FIFO no pueden entregar mensajes a los puntos de enlace administrados por el cliente,
como direcciones de correo electrónico, aplicaciones móviles, números de teléfono para mensajería de
texto (SMS) o puntos de enlace HTTP (S). No se garantiza que estos tipos de puntos de enlace conserven
un orden estricto de mensajes. Los intentos de suscribir puntos de enlace administrados por el cliente a
temas de SNS FIFO provocan errores.
Los temas FIFO de SNS admiten las mismas capacidades de filtrado de mensajes que los temas estándar.
Para obtener más información, consulte Filtrado de mensajes para temas FIFO (p. 55) y la publicación
Simplifique su mensajería de publicación o suscripción con el filtrado de mensajes de Amazon SNS en el
blog informático de AWS.
Cuando suscribe una cola FIFO de Amazon SQS a un tema FIFO de SNS, puede utilizar el filtrado
de mensajes para especificar que el suscriptor recibe un subconjunto de mensajes, en lugar de todos
ellos. Cada suscriptor puede establecer su propia política de filtro como un atributo de suscripción. Si la
política de filtro coincide con los atributos del mensaje entrante, el tema entrega una copia del mensaje al
suscriptor. Si no hay coincidencia, el tema no entrega una copia del mensaje.
En el caso de uso de ejemplo de administración de precios de partes de automóviles (p. 46), suponga
que se establecen las siguientes políticas de filtrado de Amazon SNS:
• Para la cola de venta mayorista, la política de filtro {"business":["wholesale"]} coincide con cada
mensaje con un atributo llamado "business" y con "wholesale" en el conjunto de valores. En el
siguiente diagrama, el atributo en el mensaje m1 es String con un valor de "wholesale". El atributo
en el mensaje m3 es [Link] con un valor de "wholesale,retail". Por lo tanto, m1 y m3
coinciden con los criterios de la política de filtro y ambos mensajes se entregan a la cola mayorista.
• Para la cola de venta minorista, la política de filtro {"business":["retail"]} coincide con cada
mensaje con un atributo llamado "business" y con "retail" en el conjunto de valores. En el
diagrama, el atributo en el mensaje m2 es String con un valor de "retail". El atributo en el mensaje
m3 es [Link] con un valor de "wholesale,retail". Por lo tanto, m2 y m3 coinciden con los
criterios de la política de filtro y ambos mensajes se entregan a la cola minorista.
En el siguiente diagrama, se muestra el efecto del filtrado de mensajería mediante estas políticas de filtro.
55
Amazon Simple Notification
Service Guía para desarrolladores
Filtrado de mensajes
Los temas FIFO de SNS admiten una variedad de operadores coincidentes, incluidos valores de cadena
de atributos, valores numéricos de atributo y claves de atributo. Para obtener más información, consulte
Filtrado de mensajes en Amazon SNS (p. 84).
Los temas FIFO de SNS no entregan mensajes duplicados a los puntos de enlace suscritos. Para obtener
más información, consulte Desduplicación de mensajes para temas FIFO (p. 57).
56
Amazon Simple Notification
Service Guía para desarrolladores
Id. de desduplicación de mensajes
• La cola FIFO SQS suscrita existe y tiene permisos para que la entidad principal de servicio de Amazon
SNS pueda entregar mensajes a la cola.
• El consumidor de cola FIFO de SQS procesa el mensaje y lo elimina de la cola antes de que venza el
tiempo de espera de visibilidad.
• El tema de suscripción a Amazon SNS no tiene filtrado de mensajes (p. 55) Al configurar el filtrado de
mensajes, los temas FIFO de SNS admiten la entrega más de una vez, ya que los mensajes se pueden
filtrar en función de las políticas de filtro de suscripción.
• No hay interrupciones en la red que impidan el reconocimiento de la entrega del mensaje.
Note
Al publicar un mensaje en un tema de SNS FIFO, el mensaje debe incluir un ID de desduplicación. Este ID
se incluye en el mensaje que el tema de SNS FIFO entrega a las colas FIFO de SQS suscritas.
Si se garantiza que el cuerpo del mensaje es único para cada mensaje publicado, puede habilitar la
desduplicación basada en contenido para un tema FIFO de Amazon SNS y las colas FIFO de SQS
suscritas. Amazon SNS utiliza el cuerpo del mensaje para generar un valor hash único que se utilizará
como ID de desduplicación para cada mensaje, por lo que no es necesario establecer uno cuando envíe
cada mensaje.
Note
57
Amazon Simple Notification
Service Guía para desarrolladores
Id. de desduplicación de mensajes
Además del orden y la desduplicación de mensajes, los temas de SNS FIFO admiten el cifrado del lado
del servidor de mensajes (SSE) con claves de AWS KMS y privacidad de mensajes a través de puntos de
enlace de la VPC con AWS PrivateLink. Para obtener más información, consulte Seguridad de mensajes
para temas FIFO (p. 59).
58
Amazon Simple Notification
Service Guía para desarrolladores
Seguridad de mensajes
En los temas FIFO de SNS, se descifran los mensajes de inmediato antes de entregarlos a los puntos
de enlace suscritos. En las colas FIFO de SQS, se descifra el mensaje justo antes de devolverlos a
la aplicación del consumidor. Para obtener más información, consulte Cifrado de datos (p. 395) y la
publicación Cifrado de mensajes publicados en Amazon SNS con AWS KMS en el blog informático de
AWS.
Además, los temas FIFO de SNS y las colas FIFO de SQS admiten la privacidad de los mensajes con
puntos de enlace de la VPC de interfaz impulsados por AWS PrivateLink. Mediante los puntos de enlace
de interfaz, puede enviar mensajes desde subredes de Amazon Virtual Private Cloud (Amazon VPC) a
temas y colas de FIFO sin atravesar Internet público. En este modelo, se mantiene su mensajería dentro
de la infraestructura y la red de AWS, lo que mejora la seguridad general de su aplicación. Cuando utiliza
AWS PrivateLink, no necesita configurar una gateway de Internet, una conversión de las direcciones de red
(NAT) o una red privada virtual (VPN). Para obtener más información, consulte Privacidad del tráfico entre
redes (p. 404) y la publicación Asegurar los mensajes publicados en Amazon SNS con AWS PrivateLink
en el blog informático de AWS.
Los temas FIFO de SNS también admiten colas de mensajes fallidos y almacenamiento de mensajes en
todas las zonas de disponibilidad. Para obtener más información, consulte Durabilidad de mensajes para
temas FIFO (p. 59).
En Amazon SNS, la entrega de mensajes falla cuando el tema de Amazon SNS no puede obtener acceso
a una cola de Amazon SQS suscrita por un error en el cliente o en el servidor:
• Si los errores del cliente se producen cuando el tema FIFO de SNS tiene metadatos obsoletos de la
suscripción. Dos casos comunes de errores del lado del cliente se producen cuando el propietario de la
cola FIFO de SQS realiza una de las siguientes acciones:
• Elimina la cola.
• Cambia la política de cola de forma que impida que la entidad principal de servicio de Amazon SNS le
entregue mensajes.
Amazon SNS no vuelve a intentar entregar mensajes que han fallado debido a errores del lado del
cliente.
• Pueden producirse errores en el lado del servidor en estas situaciones:
59
Amazon Simple Notification
Service Guía para desarrolladores
Duración del almacenamiento de los mensajes
Cuando se producen errores en el servidor, los temas de SNS FIFO vuelven a intentar entregarlos
un máximo de 100 015 veces durante 23 días. Para obtener más información, consulte Reintento de
entrega de mensajes de Amazon SNS (p. 108).
Para cualquier tipo de error, Amazon SNS puede dejar de lado los mensajes a las colas de mensajes
fallidos de Amazon SQS para que no se pierdan los datos.
En el caso de uso de ejemplo de administración de precios de partes de automóviles (p. 46), la empresa
puede asignar una cola de mensajes fallidos (DLQ) de SQS FIFO a cada suscripción de temas de SNS
FIFO, así como a cada cola FIFO de SQS suscrita. De esta manera, se protege a la empresa de cualquier
pérdida de actualización de precios.
60
Amazon Simple Notification
Service Guía para desarrolladores
Duración del almacenamiento de los mensajes
La cola de mensajes fallidos asociada a una suscripción de SNS FIFO, o a una cola FIFO de SQS,
debe ser una cola FIFO de SQS. La cola de mensajes fallidos debe estar en la misma región de AWS
y Cuenta de AWS como la suscripción SNS FIFO o la cola FIFO SQS que protege. Para obtener más
información, consulte Colas de mensajes fallidos (DLQ) de Amazon SNS (p. 112) y la publicación
Diseñar aplicaciones duraderas sin servidor con DLQs para Amazon SNS, Amazon SQS, AWS Lambda en
el Blog informático de AWS.
61
Amazon Simple Notification
Service Guía para desarrolladores
Ejemplos de código
Temas
• Mediante un SDK de AWS (p. 62)
• Uso AWS CloudFormation (p. 64)
En este ejemplo, se establecen las Políticas de filtro (p. 84) en las suscripciones. Si prueba el ejemplo
al publicar un mensaje en el tema, asegúrese de publicar el mensaje con el atributo de business.
Especifique retail o wholesale en el valor de atributo. De lo contrario, el mensaje se filtra y no se
entrega a las colas suscritas. Para obtener más información, consulte Filtrado de mensajes para temas
FIFO (p. 55).
Java
[Link]("FifoTopic", "true");
[Link]("ContentBasedDeduplication", "false");
62
Amazon Simple Notification
Service Guía para desarrolladores
Ejemplo FIFO (AWS SDK)
[Link]("FifoQueue", "true");
String wholesaleSubscriptionArn =
[Link](sns, sqs, topicArn, wholesaleQueueUrl);
String retailSubscriptionArn =
[Link](sns, sqs, topicArn, retailQueueUrl);
Establezca una política de filtro en cada suscripción para que cada aplicación de suscriptor reciba
solo las actualizaciones de precios que necesita.
[Link](
63
Amazon Simple Notification
Service Guía para desarrolladores
Ejemplo FIFO (AWS CloudFormation)
attributeName,
new MessageAttributeValue()
.withDataType("String")
.withStringValue(attributeValue));
[Link](
new PublishRequest()
.withTopicArn(topicArn)
.withSubject(subject)
.withMessage(payload)
.withMessageGroupId(groupId);
.withMessageDeduplicationId(dedupId)
.withMessageAttributes(attributes);
Para obtener más información, consulte Uso de AWS Lambda con Amazon SQS en la Guía para
desarrolladores de AWS Lambda. Para obtener información sobre cómo escribir sus propios sondeos
de cola, consulte Recomendaciones para colas estándar de Amazon SQS y colas FIFO en laGuía para
desarrolladores de Amazon Simple Queue Service y ReceiveMessage en la Referencia de la API de
Amazon Simple Queue Service.
Note
{
"AWSTemplateFormatVersion": "2010-09-09",
"Resources": {
"PriceUpdatesTopic": {
"Type": "AWS::SNS::Topic",
64
Amazon Simple Notification
Service Guía para desarrolladores
Ejemplo FIFO (AWS CloudFormation)
"Properties": {
"TopicName": "[Link]",
"FifoTopic": true,
"ContentBasedDeduplication": false
}
},
"WholesaleQueue": {
"Type": "AWS::SQS::Queue",
"Properties": {
"QueueName": "[Link]",
"FifoQueue": true,
"ContentBasedDeduplication": false
}
},
"RetailQueue": {
"Type": "AWS::SQS::Queue",
"Properties": {
"QueueName": "[Link]",
"FifoQueue": true,
"ContentBasedDeduplication": false
}
},
"WholesaleSubscription": {
"Type": "AWS::SNS::Subscription",
"Properties": {
"TopicArn": {
"Ref": "PriceUpdatesTopic"
},
"Endpoint": {
"Fn::GetAtt": [
"WholesaleQueue",
"Arn"
]
},
"Protocol": "sqs",
"RawMessageDelivery": "false",
"FilterPolicy": {
"business": [
"wholesale"
]
}
}
},
"RetailSubscription": {
"Type": "AWS::SNS::Subscription",
"Properties": {
"TopicArn": {
"Ref": "PriceUpdatesTopic"
},
"Endpoint": {
"Fn::GetAtt": [
"RetailQueue",
"Arn"
]
},
"Protocol": "sqs",
"RawMessageDelivery": "false",
"FilterPolicy": {
"business": [
"retail"
]
}
}
},
"SalesQueuesPolicy": {
"Type": "AWS::SQS::QueuePolicy",
65
Amazon Simple Notification
Service Guía para desarrolladores
Ejemplo FIFO (AWS CloudFormation)
"Properties": {
"PolicyDocument": {
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "[Link]"
},
"Action": [
"sqs:SendMessage"
],
"Resource": "*",
"Condition": {
"ArnEquals": {
"aws:SourceArn": {
"Ref": "PriceUpdatesTopic"
}
}
}
}
]
},
"Queues": [
{
"Ref": "WholesaleQueue"
},
{
"Ref": "RetailQueue"
}
]
}
}
}
}
Para obtener más información sobre la implementación de recursos de AWS mediante una plantilla de
AWS CloudFormation, consulte Introducción en la Guía del usuario de AWS CloudFormation.
66
Amazon Simple Notification
Service Guía para desarrolladores
AWS Management Console
Puede publicar mensajes solo en temas y puntos de enlaces en la misma región de AWS.
Temas
• Para publicar mensajes en temas de Amazon SNS mediante la AWS Management Console, siga estos
pasos: (p. 67)
• Para publicar un mensaje en un tema mediante la AWS, siga estos pasos: (p. 68)
• Publicación de mensajes grandes con Amazon SNS y Amazon S3 (p. 75)
• Atributos de mensajes de Amazon SNS (p. 78)
• Agrupación en lotes de mensajes de Amazon SNS (p. 81)
a. Elija Carga idéntica para todos los protocolos de entrega y, a continuación, ingrese el mensaje.
67
Amazon Simple Notification
Service Guía para desarrolladores
AWS SDK
b. Elija Carga personalizada para cada protocolo de entrega y, a continuación, ingrese un objeto
JSON para definir el mensaje que se envía a cada protocolo.
Para el tipo de atributo [Link], incluya la matriz entre corchetes ([]). Dentro
de la matriz, delimite los valores de cadena con comillas dobles. No es necesario usar
comillas con los números ni con las palabras clave true, false y null.
b. Ingrese un nombre para el atributo, como, por ejemplo, customer_interests.
c. Ingrese un valor para el atributo, como, por ejemplo, ["soccer", "rugby", "hockey"].
Si el tipo de atributo es Cadena, [Link] o Número, Amazon SNS evalúa el atributo del
mensaje con la política de filtro de una suscripción (p. 84) (si existe), antes de enviar el mensaje a
la suscripción.
Para obtener más información, consulte Atributos de mensajes de Amazon SNS (p. 78).
7. Elija Publish message (Publicar mensaje).
En los siguientes ejemplos de código, se muestra cómo publicar mensajes en un tema de Amazon SNS.
.NET
C++
Aws::SDKOptions options;
Aws::InitAPI(options);
{
68
Amazon Simple Notification
Service Guía para desarrolladores
AWS SDK
Aws::SNS::SNSClient sns;
Aws::String message = argv[1];
Aws::String topic_arn = argv[2];
Aws::SNS::Model::PublishRequest psms_req;
psms_req.SetMessage(message);
psms_req.SetTopicArn(topic_arn);
if (psms_out.IsSuccess())
{
std::cout << "Message published successfully " << std::endl;
}
else
{
std::cout << "Error while publishing message " <<
psms_out.GetError().GetMessage()
<< std::endl;
}
}
Aws::ShutdownAPI(options);
Go
SDK para Go V2
• Encuentre instrucciones y más código en GitHub.
• Para ver los detalles de la API, consulte Publish (Publicar) en la Referencia de la API de AWS
SDK for Go.
Java
try {
PublishRequest request = [Link]()
.message(message)
.topicArn(topicArn)
.build();
} catch (SnsException e) {
[Link]([Link]().errorMessage());
[Link](1);
}
}
69
Amazon Simple Notification
Service Guía para desarrolladores
AWS SDK
JavaScript
Kotlin
Esta es una documentación preliminar para una característica en versión de vista previa.
Está sujeta a cambios.
70
Amazon Simple Notification
Service Guía para desarrolladores
AWS SDK
PHP
require 'vendor/[Link]';
use Aws\Sns\SnsClient;
use Aws\Exception\AwsException;
/**
* Sends a message to an Amazon SNS topic.
*
* This code expects that you have AWS credentials set up per:
* [Link]
guide_credentials.html
*/
try {
$result = $SnSclient->publish([
'Message' => $message,
'TopicArn' => $topic,
]);
var_dump($result);
} catch (AwsException $e) {
// output error message if fails
error_log($e->getMessage());
}
71
Amazon Simple Notification
Service Guía para desarrolladores
AWS SDK
Python
Publique un mensaje con atributos para que una suscripción pueda filtrar en función de los
atributos.
class SnsWrapper:
"""Encapsulates Amazon SNS topic and subscription functions."""
def __init__(self, sns_resource):
"""
:param sns_resource: A Boto3 Amazon SNS resource.
"""
self.sns_resource = sns_resource
Publique un mensaje que toma diferentes formas en función del protocolo del suscriptor.
class SnsWrapper:
"""Encapsulates Amazon SNS topic and subscription functions."""
def __init__(self, sns_resource):
"""
:param sns_resource: A Boto3 Amazon SNS resource.
"""
self.sns_resource = sns_resource
def publish_multi_message(
topic, subject, default_message, sms_message, email_message):
"""
Publishes a multi-format message to a topic. A multi-format message takes
different forms based on the protocol of the subscriber. For example,
an SMS subscriber might receive a short, text-only version of the message
72
Amazon Simple Notification
Service Guía para desarrolladores
AWS SDK
Ruby
def run_me
topic_arn = 'SNS_TOPIC_ARN'
region = 'REGION'
message = 'MESSAGE' # The text of the message to send.
73
Amazon Simple Notification
Service Guía para desarrolladores
AWS SDK
exit 1
end
end
Rust
Esta documentación es para un SDK en versión preliminar. El SDK está sujeto a cambios
y no se debe utilizar en producción.
async fn subscribe_and_publish(
client: &Client,
topic_arn: &str,
email_address: &str,
) -> Result<(), Error> {
println!("Receiving on topic with ARN: `{}`", topic_arn);
Ok(())
}
74
Amazon Simple Notification
Service Guía para desarrolladores
Cargas de mensajes grandes
Prerequisites
A continuación, se indican los requisitos previos para utilizar biblioteca de clientes extendidos de Amazon
SNS para Java:
• Un SDK de AWS.
En el ejemplo de esta página, se utiliza el SDK para Java de AWS. Para instalar y configurar el SDK,
consulte Configurar el SDK para Java de AWS en la Guía para desarrolladores de AWS SDK for Java.
• Una Cuenta de AWS con las credenciales adecuadas.
Para crear una Cuenta de AWS, vaya a la página de inicio de AWS y, a continuación, elija Crear una
cuenta de AWS. Siga las instrucciones.
Para obtener información sobre las credenciales, consulte Configurar las credenciales y regiones de
AWS para el desarrollo en la Guía para desarrolladores de AWS SDK for Java.
• Java 8 o superior.
• La biblioteca de clientes extendidos de Amazon SNS para Java (también disponible de Maven).
• Umbral de tamaños de mensajes personalizados: los mensajes con cargas y atributos que superan este
tamaño se almacenan de manera automática en Amazon S3.
• Indicador de alwaysThroughS3: establezca este valor en true para forzar que todas las cargas de
mensajes se almacenen en Amazon S3. Por ejemplo:
• Clave KMS personalizada: la clave que se utiliza para el cifrado del lado del servidor en su bucket de
Amazon S3.
• Nombre del bucket: el nombre del bucket de Amazon S3 para almacenar cargas de mensajes.
75
Amazon Simple Notification
Service Guía para desarrolladores
Ejemplo: Publicación de mensajes en Amazon
SNS con carga almacenada en Amazon S3
La carga del mensaje se almacena en Amazon S3 y se publica la referencia a ella. El cliente extendido de
Amazon SQS se utiliza para recibir el mensaje.
Para publicar mensajes grandes, utilice la biblioteca de clientes extendidos de Amazon SNS para
Java. El mensaje que envía hace referencia a un objeto de Amazon S3 en el que se incluye el
contenido real del mensaje.
import [Link];
import [Link];
import [Link];
import [Link];
import [Link].s3.AmazonS3;
import [Link].s3.AmazonS3ClientBuilder;
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
//Message threshold controls the maximum message size that will be allowed to
be published
//through SNS using the extended client. Payload of messages exceeding this
value will be stored in
//S3. The default value of this parameter is 256 KB which is the maximum
message size in SNS (and SQS).
final int EXTENDED_STORAGE_MESSAGE_SIZE_THRESHOLD = 32;
76
Amazon Simple Notification
Service Guía para desarrolladores
Otros protocolos de puntos de enlace
77
Amazon Simple Notification
Service Guía para desarrolladores
Atributos de mensajes
Los puntos de enlace que no pueden usar la biblioteca común de Java de descarga de carga para AWS
pueden seguir publicando mensajes con cargas almacenadas en Amazon S3. A continuación, mostramos
un ejemplo de una referencia de Amazon S3 que se publica mediante el ejemplo de código anterior:
[
"[Link].PayloadS3Pointer",
{
"s3BucketName": "extended-client-bucket",
"s3Key": "xxxx-xxxxx-xxxxx-xxxxxx"
}
]
Los atributos de los mensajes son opcionales y están separados del cuerpo de los mensajes, pero se
envían junto a él. El receptor puede utilizar esta información para decidir cómo gestionar el mensaje sin
tener que procesar el cuerpo de este en primer lugar.
Para obtener información sobre cómo enviar mensajes con atributos mediante la AWS Management
Console o el AWS SDK for Java, consulte el tutorial Para publicar mensajes en temas de Amazon SNS
mediante la AWS Management Console, siga estos pasos: (p. 67).
Note
Los atributos de los mensajes se envían únicamente cuando la estructura de los mensajes es
String, no JSON.
También puede utilizar los atributos del mensaje como ayuda para estructurar el mensaje de notificación
push en los puntos de enlace móviles. En este caso, los atributos del mensaje solo se usan para ayudar
a estructurar el mensaje de notificación push. Los atributos no se entregan al punto de enlace, como se
entregan cuando se envían mensajes con atributos a puntos de enlace de Amazon SQS.
También puede utilizar atributos de mensajes para que sus mensajes se puedan filtrar mediante políticas
de filtro de suscripciones. Puede aplicar políticas de filtro a las suscripciones de temas. Cuando se aplica
una política de filtro, una suscripción recibe solo los mensajes que tienen atributos aceptados por la
política. Para obtener más información, consulte Filtrado de mensajes en Amazon SNS (p. 84).
• Nombre: el nombre del atributo de mensaje puede contener los siguientes caracteres: A-Z, a-z, 0-9,
subrayado (_), guion (-) y punto (.). El nombre no debe comenzar ni finalizar con un punto y no debe
tener dos puntos sucesivos. El nombre distingue entre mayúsculas y minúsculas y debe ser único entre
todos los nombres de atributo del mensaje. El nombre puede tener una longitud de hasta 256 caracteres.
El nombre no puede comenzar con AWS. o Amazon. (ni ninguna variación en el uso de mayúsculas y
minúsculas), ya que estos prefijos están reservados para el uso de Amazon Web Services.
• Tipo: los tipos de datos admitidos para el atributo de mensaje son String, [Link], Number y
Binary. El tipo de datos tiene las mismas restricciones en lo que respecta al contenido que el cuerpo
78
Amazon Simple Notification
Service Guía para desarrolladores
Tipos de datos
del mensaje. El tipo de datos distingue entre mayúsculas y minúsculas y puede tener una longitud de
hasta 256 bytes. Para obtener más información, consulte la sección Tipos de datos y validación de los
atributos de los mensajes (p. 79).
• Valor: el valor del atributo de mensaje especificado por el usuario. Para los tipos de datos String, el
atributo de valor tiene las mismas restricciones en lo que respecta al contenido que el cuerpo del
mensaje. Para obtener más información, consulte la acción Publicar en la Referencia de la API de
Amazon Simple Notification Service.
El nombre, el tipo y el valor no deben estar vacíos ni ser null. Además, el cuerpo del mensaje no debe
estar vacío ni ser null. Todas las partes del atributo de mensaje, incluido el nombre, el tipo y el valor, están
incluidas en la restricción de tamaño del mensaje, que actualmente es de 256 KB.
Amazon SNS admite los siguientes tipos de datos lógicos para todos los puntos de enlace, excepto según
se indica:
• Cadena: las cadenas son Unicode con codificación binaria UTF-8. Para obtener una lista de valores de
códigos, consulte [Link]
Note
No se admiten valores sustitutos en los atributos de los mensajes. Por ejemplo, si se utiliza un
valor sustituto para representar un emoji, se producirá el siguiente error: Invalid attribute
value was passed in for message attribute.
• [Link]: una matriz, con formato de cadena, que puede contener varios valores. Los valores
pueden ser cadenas, números o las palabras clave true, false y null.
No se admite este tipo de datos para las suscripciones de AWS Lambda. Si especifica este tipo de datos
para los puntos de enlace de Lambda, se pasa como el tipo de datos String en la carga útil JSON que
Amazon SNS entrega a Lambda.
• Número: los números son enteros positivos o negativos o números de coma flotante. Tienen una
precisión y un rango adecuados para abarcar la mayoría de los posibles valores que los tipos integer,
9 9
float y double admiten normalmente. Un número puede tener un valor comprendido entre -10 y 10 , con
una precisión de 5 dígitos tras el separador decimal. Los ceros iniciales y finales se recortan.
No se admite este tipo de datos para las suscripciones de AWS Lambda. Si especifica este tipo de datos
para los puntos de enlace de Lambda, se pasa como el tipo de datos String en la carga útil JSON que
Amazon SNS entrega a Lambda.
• Binario: con los atributos de tipo binarios, se puede almacenar datos binarios de cualquier índole, tales
como datos comprimidos, datos cifrados o imágenes.
79
Amazon Simple Notification
Service Guía para desarrolladores
Atributos de mensaje reservados para
notificaciones de inserción en móviles
ADM [Link]
APNs [Link].APNS_MDM.TTL
[Link].APNS_MDM_SANDBOX.TTL
[Link].APNS_PASSBOOK.TTL
[Link].APNS_PASSBOOK_SANDBOX.TTL
[Link].APNS_SANDBOX.TTL
[Link].APNS_VOIP.TTL
[Link].APNS_VOIP_SANDBOX.TTL
[Link].COLLAPSE_ID
[Link]
[Link].PUSH_TYPE
[Link]
[Link]
Baidu [Link]
[Link]
[Link]
[Link]
FCM [Link]
[Link]
macOS [Link].MACOS_SANDBOX.TTL
[Link]
MPNS [Link]
[Link]
[Link]
WNS [Link]
[Link]
[Link]
[Link]
[Link]
[Link]
80
Amazon Simple Notification
Service Guía para desarrolladores
Agrupación en lotes de mensajes
[Link]
El tamaño total agregado de todos los mensajes que se envíen en una única solicitud de API
PublishBatch no puede superar los 262 144 bytes (256 KB).
La API PublishBatch utiliza la misma acción de API Publish para las políticas de IAM.
Examples
Publicación de un lote de 10 mensajes en un tema estándar
// Imports
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
// Code
private static final int MAX_BATCH_SIZE = 10;
81
Amazon Simple Notification
Service Guía para desarrolladores
Examples
// Imports
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
// Code
private static final int MAX_BATCH_SIZE = 10;
82
Amazon Simple Notification
Service Guía para desarrolladores
Examples
} catch (AmazonSNSException e) {
// Handle any exceptions from the request
[Link]([Link]());
[Link](1);
}
}
83
Amazon Simple Notification
Service Guía para desarrolladores
Políticas de filtro de suscripciones
Una política de filtro es un simple objeto JSON que contiene atributos que definen qué mensajes recibe el
suscriptor. Cuando publica un mensaje en un tema, Amazon SNS compara los atributos del mensaje con
los atributos de la política de filtro para cada una de las suscripciones del tema. Si coincide cualquiera de
los atributos, Amazon SNS envía el mensaje al suscriptor. De lo contrario, Amazon SNS omite el suscriptor
sin enviar el mensaje. Si una suscripción no tiene una política de filtro, la suscripción recibe todos los
mensajes publicados en su tema.
Puede simplificar el uso de Amazon SNS mediante la consolidación de los criterios de filtrado de mensajes
en sus suscripciones de temas. De este modo, puede descargar la lógica de filtrado de mensajes de los
suscriptores y la lógica de direccionamiento de mensajes de los publicadores, por lo que no es necesario
filtrar mensajes mediante la creación de un tema independiente para cada condición. Puede utilizar un
único tema y diferenciar los mensajes mediante atributos. Cada suscriptor recibe y procesa únicamente los
mensajes aceptados por su política de filtro.
Por ejemplo, puede utilizar un único tema para publicar todos los mensajes generados por las
transacciones de su sitio web de comercio. Para indicar el estado de la transacción, puede asignar un
atributo (como order_placed, order_cancelled u order_declined) a cada mensaje. Mediante la
creación de suscripciones con políticas de filtro, puede dirigir el mensaje a la cola designada para procesar
el estado de transacción del mensaje.
Para las aplicaciones que tienen mensajes de notificación del sistema de distribución, los temas de
Amazon SNS proporcionan un punto de acceso lógico que actúa como canal de comunicación para los
puntos de conexión relacionados. Recomendamos utilizar las políticas de filtro de suscripciones (p. 84)
de Amazon SNS para las excepciones en las comunicaciones de aplicación a aplicación (A2A) (p. 120).
Temas
• Políticas de filtro de suscripciones de Amazon SNS (p. 84)
• Aplicación de una política de filtro de suscripciones (p. 92)
• Eliminación de una política de filtro de suscripciones (p. 95)
Cuando Amazon SNS evalúa los atributos del mensaje con la política de filtro de suscripciones, omite los
atributos de mensaje que no están especificados en la política.
84
Amazon Simple Notification
Service Guía para desarrolladores
Ejemplos de políticas de filtro
Important
Los servicios de AWS, tales como IAM y Amazon SNS, utilizan un modelo de informática
distribuida llamado consistencia final. Los añadidos o cambios a una política de filtro de
suscripción pueden tardar hasta 15 minutos en tener efecto.
• Cada nombre de atributo de una política de filtro coincide con un nombre de atributo asignado al
mensaje.
• Para cada nombre de atributo coincidente, existe al menos una coincidencia entre los siguientes
elementos:
• Los valores del nombre de atributo en la política de filtro
• Los atributos de mensaje
Temas
• Ejemplos de políticas de filtro (p. 85)
• Restricciones de política de filtro (p. 86)
• Coincidencia de valores de cadena de atributo (p. 87)
• Coincidencia de valor numérico de atributo (p. 89)
• Coincidencia de clave de atributo (p. 91)
• Lógica AND/OR (p. 91)
Como este mensaje incluye el campo MessageAttributes, cualquier suscripción de tema que incluya
una política de filtro puede aceptar o rechazar de manera selectiva el mensaje.
{
"Type": "Notification",
"MessageId": "a1b2c34d-567e-8f90-g1h2-i345j67klmn8",
"TopicArn": "arn:aws:sns:us-east-2:123456789012:MyTopic",
"Message": "message-body-with-transaction-details",
"Timestamp": "2019-11-03T[Link].631Z",
"SignatureVersion": "4",
"Signature": "signature",
"UnsubscribeURL": "unsubscribe-url",
"MessageAttributes": {
"customer_interests": {
"Type": "[Link]",
"Value": "[\"soccer\", \"rugby\", \"hockey\"]"
},
"store": {
"Type": "String",
"Value":"example_corp"
85
Amazon Simple Notification
Service Guía para desarrolladores
Restricciones de política de filtro
},
"event": {
"Type": "String",
"Value": "order_placed"
},
"price_usd": {
"Type": "Number",
"Value": "210.75"
}
}
}
Para obtener información sobre cómo aplicar atributos a un mensaje, consulte Atributos de mensajes de
Amazon SNS (p. 78).
Las siguientes políticas de filtro aceptan o rechazan mensajes en función de sus nombres de atributo y
valores.
Si un atributo de esta política no coincide con un atributo asignado en el mensaje, la política rechaza el
mensaje.
{
"store": ["example_corp"],
"event": [{"anything-but": "order_cancelled"}],
"customer_interests": [
"rugby",
"football",
"baseball"
],
"price_usd": [{"numeric": [">=", 100]}]
}
{
"store": ["example_corp"],
"event": ["order_cancelled"],
"encrypted": [false],
"customer_interests": [
"basketball",
"baseball"
]
}
86
Amazon Simple Notification
Service Guía para desarrolladores
Coincidencia de valores de cadena de atributo
• Para el tipo de datos String, la comparación de atributos entre la política y el mensaje distingue entre
mayúsculas y minúsculas.
9 9
• Los atributos numéricos de la política pueden tener un valor comprendido entre -10 y 10 , con una
precisión de 5 dígitos tras el separador decimal.
• La combinación total de valores no debe ser superior a 150. Calcule la combinación total multiplicando el
número de valores de cada matriz.
{
"key_a": ["value_one", "value_two", "value_three"],
"key_b": ["value_one"],
"key_c": ["value_one", "value_two"]
}
La primera matriz tiene tres valores, la segunda tiene un valor y la tercera tiene dos valores. La
combinación total se calcula del siguiente modo:
3 x 1 x 2 = 6
• Amazon SNS compara los atributos de la política solo con los atributos de mensaje que tienen los
siguientes tipos de datos:
• String
• [Link]
• Number
• Amazon SNS ignora los atributos de mensaje con el tipo de datos Binary.
• El código JSON de la política de filtro puede contener lo siguiente:
• cadenas entre comillas
• números
• las palabras clave true, false y null, sin comillas
• Cuando utilice la API de Amazon SNS, debe pasar el código JSON de la política de filtro como una
cadena UTF-8 válida.
• Una política de filtro puede tener un máximo de cinco nombres de atributos.
• El tamaño máximo de una política es 256 KB.
• De forma predeterminada, puede tener hasta 200 políticas de filtro por cada Cuenta de AWS. Para
aumentar esta cuota, envíe una solicitud de aumento de cuota.
• Para las excepciones en los mensajes de aplicación a persona (A2P) (p. 187), recomendamos usar
Amazon Pinpoint. Amazon Pinpoint permite la creación de segmentos dinámicos en función de criterios
basados en atributos seleccionados y envía mensajes a través de una variedad de canales (email,
notificaciones push, SMS y canales personalizados) de forma similar a como lo hace Amazon SNS.
Puede utilizar las siguientes operaciones de cadena para emparejar los atributos de los mensajes.
Coincidencia exacta
La coincidencia exacta se produce cuando un valor de atributo de la política coincide con uno o varios
valores de atributo del mensaje.
87
Amazon Simple Notification
Service Guía para desarrolladores
Coincidencia de valores de cadena de atributo
Coincidencia de prefijo
Cuando un atributo de política incluye la palabra clave prefix, coincide con cualquier valor de atributo de
mensaje que empiece por los caracteres especificados.
Coincidencia "anything-but"
Cuando un valor de atributo de política incluye la palabra clave anything-but, coincide con cualquier
atributo de mensaje que no incluya cualquiera de los valores de atributo de política.
También coincide con el siguiente atributo de mensaje (porque contiene un valor que no es rugby ni
tennis):
88
Amazon Simple Notification
Service Guía para desarrolladores
Coincidencia de valor numérico de atributo
Coincidencia de direcciones IP
Puede utilizar el operador cidr para verificar si un mensaje entrante se origina desde una dirección IP o
subred específica.
"source_ip":[{"cidr": "[Link]/24"}]
89
Amazon Simple Notification
Service Guía para desarrolladores
Coincidencia de valor numérico de atributo
Note
Coincidencia exacta
Cuando un valor de atributo de política incluye la palabra clave numeric y el operador =, coincide con
cualquier atributo de mensajes que tenga el mismo nombre y un valor numérico igual.
Coincidencia "anything-but"
Cuando un valor de atributo de política incluye la palabra clave anything-but, coincide con cualquier
atributo de mensaje que no incluya cualquiera de los valores de atributo de política.
También coincide con el siguiente atributo de mensaje (porque contiene un valor que no es 100 ni 500):
90
Amazon Simple Notification
Service Guía para desarrolladores
Coincidencia de clave de atributo
Coincide con cualquier atributo de mensaje con números positivos hasta el 150.
• Utilice "exists": true para devolver los mensajes entrantes que incluyan el atributo especificado.
Por ejemplo, el atributo siguiente utiliza el operador exists con un valor de true:
Coincide con cualquier mensaje que contenga la clave de atributo store, como el siguiente:
"store": "fans"
"customer_interests": ["baseball", "basketball"]
Sin embargo, no coincide con cualquier mensaje sin la clave de atributo store, como el siguiente:
• Utilice "exists": false para devolver los mensajes entrantes que no incluyan el atributo
especificado.
En el siguiente ejemplo, se muestra el efecto de utilizar el operador exists con un valor de false:
No coincide con ningún mensaje que contenga la clave de atributo store, como el siguiente:
"store": "fans"
"customer_interests": ["baseball", "basketball"]
Sin embargo, coincide con cualquier mensaje sin la clave de atributo store, como el siguiente:
Lógica AND/OR
Puede utilizar operaciones que incluyan la lógica AND/OR para que coincidan con los atributos de
mensaje.
Lógica AND
Puede aplicar la lógica AND utilizando varios nombres de atributo.
91
Amazon Simple Notification
Service Guía para desarrolladores
Aplicación de una política de filtro de suscripciones
{
"customer_interests": ["rugby"],
"price_usd": [{"numeric": [">", 100]}]
}
Hace coincidir cualquier atributo de mensaje con el valor de customer_interests establecido en rugby
y el valor de price_usd establecido en un número mayor que 100.
Lógica OR
Puede aplicar la lógica OR asignando varios valores a un nombre de atributo.
En la actualidad, no puede usar filtros de SNS para aplicar la lógica OR a través de diferentes
atributos de mensajes. En su lugar, puede utilizar varias suscripciones de SNS con diferentes
puntos de enlace para lograr el mismo efecto. Por ejemplo, suponga que tiene atributos de
mensajes llamados customer_interests y customer_preferences. Para aplicar la lógica
OR en ambos atributos, cree una suscripción de SNS para que coincida con cada atributo de
mensaje. A continuación, puede utilizar su aplicación de suscriptor para consumir ambos tipos de
mensajes a través de los diferentes puntos de enlace.
Los servicios de AWS, tales como IAM y Amazon SNS utilizan un modelo de informática
distribuida llamado consistencia final. Los añadidos o cambios a una política de filtro de
suscripción pueden tardar hasta 15 minutos en tener efecto.
92
Amazon Simple Notification
Service Guía para desarrolladores
AWS CLI
AWS CLI
Para aplicar una política de filtro con la AWS Command Line Interface (AWS CLI), utilice el comando set-
subscription-attributes, tal y como se muestra en el ejemplo siguiente:
Para proporcionar un objeto JSON válido para su política, incluya los nombres de atributos y valores
entre comillas dobles. Incluya también todo el argumento de la política entre comillas. Para evitar que las
comillas se interpreten como caracteres de escape, puede utilizar comillas simples para delimitar la política
y comillas dobles para delimitar los nombres y los valores JSON, tal y como se muestra en el ejemplo
anterior.
AWS SDK
En los siguientes ejemplos de código, se muestra cómo establecer una política de filtro de Amazon SNS.
Java
try {
SNSMessageFilterPolicy fp = new SNSMessageFilterPolicy();
93
Amazon Simple Notification
Service Guía para desarrolladores
AWS SDK
[Link]("customer_interests", "baseball");
} catch (SnsException e) {
[Link]([Link]().errorMessage());
[Link](1);
}
}
Python
class SnsWrapper:
"""Encapsulates Amazon SNS topic and subscription functions."""
def __init__(self, sns_resource):
"""
:param sns_resource: A Boto3 Amazon SNS resource.
"""
self.sns_resource = sns_resource
94
Amazon Simple Notification
Service Guía para desarrolladores
API de Amazon SNS
AWS CloudFormation
Para aplicar una política de filtro con AWS CloudFormation, utilice una plantilla JSON o YAML
para crear una pila de AWS CloudFormation. Para obtener más información, consulte la propiedad
de FilterPolicy del recurso de AWS::SNS::Subscription en la Guía del usuario de AWS
CloudFormation y la plantilla de ejemplo de AWS CloudFormation.
95
Amazon Simple Notification
Service Guía para desarrolladores
AWS CLI
AWS CLI
Para eliminar una política de filtro con la AWS CLI, utilice el comando set-subscription-attributes
y proporcione un cuerpo JSON vacío para el argumento --attribute-value:
96
Amazon Simple Notification
Service Guía para desarrolladores
Entrega de mensajes sin procesar
Temas
• Entrega de mensajes sin procesar de Amazon SNS (p. 97)
• Envío de mensajes de Amazon SNS a una cola de Amazon SQS de otra cuenta (p. 98)
• Envío de mensajes de Amazon SNS a una cola de Amazon SQS o a una función AWS Lambda en una
región distinta (p. 101)
• Estado de entrega de mensajes de Amazon SNS (p. 102)
• Reintento de entrega de mensajes de Amazon SNS (p. 108)
• Colas de mensajes fallidos (DLQ) de Amazon SNS (p. 112)
• Cuando se habilita la entrega de mensajes sin procesar para los puntos de enlace de Amazon Kinesis
Data Firehose o Amazon SQS, los metadatos de Amazon SNS se eliminan del mensaje publicado y el
mensaje se envía tal cual.
• Cuando habilita la entrega de mensajes sin formato para los puntos de enlace HTTP/S, el encabezado
HTTP x-amz-sns-rawdelivery con su valor establecido en true se agrega al mensaje, lo que indica
que el mensaje se ha publicado sin formato JSON.
• Cuando habilita la entrega de mensajes sin procesar para los puntos de conexión HTTP/S, se entregan
el cuerpo del mensaje, la IP del cliente y los encabezados necesarios. Cuando especifica atributos de
mensaje, no se enviará.
• Cuando habilita la entrega de mensajes sin procesar para los puntos de conexión de Kinesis Data
Firehose, se entrega el cuerpo del mensaje. Cuando especifica atributos de mensaje, no se enviará.
Para habilitar la entrega de mensajes sin procesar mediante un SDK de AWS, debe utilizar la acción de la
API SetSubscriptionAttribute y establecer el valor del atributo RawMessageDeliveryen true.
97
Amazon Simple Notification
Service Guía para desarrolladores
Ejemplos de formato de mensajes
{
"Type": "Notification",
"MessageId": "dc1e94d9-56c5-5e96-808d-cc7f68faa162",
"TopicArn": "arn:aws:sns:us-east-2:111122223333:ExampleTopic1",
"Subject": "TestSubject",
"Message": "This is a test message.",
"Timestamp": "2021-02-16T[Link].978Z",
"SignatureVersion": "1",
"Signature": "FMG5tlZhJNHLHUXvZgtZzlk24FzVa7oX0T4P03neeXw8ZEXZx6z35j2FOTuNYShn2h0bKNC/
zLTnMyIxEzmi2X1shOBWsJHkrW2xkR58ABZF+4uWHEE73yDVR4SyYAikP9jstZzDRm
+bcVs8+T0yaLiEGLrIIIL4esi1llhIkgErCuy5btPcWXBdio2fpCRD5x9oR6gmE/
rd5O7lX1c1uvnv4r1Lkk4pqP2/iUfxFZva1xLSRvgyfm6D9hNklVyPfy
+7TalMD0lzmJuOrExtnSIbZew3foxgx8GT+lbZkLd0ZdtdRJlIyPRP44eyq78sU0Eo/LsDr0Iak4ZDpg8dXg==",
"SigningCertURL": "[Link]
[Link]",
"UnsubscribeURL": "[Link]
Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-
east-2:111122223333:ExampleTopic1:e1039402-24e7-40a3-a0d4-797da162b297"
}
Temas
• El propietario de la cola crea la suscripción (p. 98)
• Un usuario que no es el propietario de la cola crea una suscripción (p. 100)
98
Amazon Simple Notification
Service Guía para desarrolladores
El propietario de la cola crea la suscripción
{
"Statement":[{
"Effect":"Allow",
"Principal":{
"AWS":"111122223333"
},
"Action":"sns:Subscribe",
"Resource":"arn:aws:sns:us-east-2:123456789012:MyTopic"
}]
}
Un usuario con las credenciales de la cuenta 111122223333 puede suscribirse a MyTopic. Este
permiso permite al ID de la cuenta delegar el permiso a su rol o usuario de IAM. Solo la cuenta raíz o
los usuarios administradores podrán llamar a sns:Subscribe. El usuario o rol de IAM también debe
tener sns:subscribe para permitir que su cola se suscriba.
6. Elija Save changes.
• Para poder comunicarse con el servicio, la cola debe tener permisos para Amazon SNS.
99
Amazon Simple Notification
Service Guía para desarrolladores
Un usuario que no es el propietario
de la cola crea una suscripción
• Puesto que usted es el propietario de la cola, no tiene que confirmar la suscripción.
Cuando utiliza la acción Subscribe, Amazon SNS envía una confirmación de suscripción a la cola. La
suscripción aparece en la consola de Amazon SNS, con su ID de suscripción establecido en Confirmación
pendiente.
Para confirmar la suscripción, un usuario con permiso para leer los mensajes de la cola debe visitar la
URL de suscripción. Hasta que no se confirme la suscripción, no se enviarán a la cola las notificaciones
publicadas en el tema. Para confirmar la suscripción, puede utilizar la consola de Amazon SQS o la acción
ReceiveMessage.
Note
Antes de suscribir un punto de enlace al tema, asegúrese de que la cola pueda recibir mensajes
desde el tema mediante la configuración del permiso sqs:SendMessage para la cola. Para
obtener más información, consulte Paso 2: Conceder permiso al tema de Amazon SNS y enviar
mensajes a la cola de Amazon SQS (p. 144) .
• Para poder comunicarse con el servicio, la cola debe tener permisos para Amazon
SNS.
• Puesto que usted es el propietario de la cola, no tiene que confirmar la suscripción.
100
Amazon Simple Notification
Service Guía para desarrolladores
Entrega entre regiones
[Link]
Action=ConfirmSubscription&TopicArn=arn:aws:sns:us-
east-2:123456789012:MyTopic&Token=2336412f37fb...
<ConfirmSubscriptionResponse>
<ConfirmSubscriptionResult>
<SubscriptionArn>arn:aws:sns:us-east-2:123456789012:MyTopic:1234a567-
bc89-012d-3e45-6fg7h890123i</SubscriptionArn>
</ConfirmSubscriptionResult>
<ResponseMetadata>
<RequestId>abcd1efg-23hi-jkl4-m5no-p67q8rstuvw9</RequestId>
</ResponseMetadata>
</ConfirmSubscriptionResponse>
Amazon SNS admite la entrega entre regiones de notificaciones a colas de Amazon SQS y a funciones
AWS Lambda. Cuando una de las regiones es una región registrada, debe especificar una entidad
principal de servicio de Amazon SNS diferente en la política del recurso suscrito.
Regiones registradas
Amazon SNS admite las siguientes regiones registradas:
101
Amazon Simple Notification
Service Guía para desarrolladores
Estado de entrega de mensajes
Para obtener información sobre la habilitación de la región registrada, consulte Administración de regiones
de AWS en la Referencia general de Amazon Web Services.
Cuando se utiliza Amazon SNS para entregar mensajes de las regiones registradas a regiones que están
habilitadas de forma predeterminada, debe modificar la política de recursos creada para la cola. Sustituya
la entidad principal [Link] por sns.<opt-in-region>.[Link]. Por ejemplo:
• Para suscribir una cola de Amazon SQS en Este de EE. UU. (Norte de Virginia) a un tema de
SNS en Asia-Pacífico (Hong Kong), agregue la entidad principal en la política de cola a [Link]-
[Link]. Las regiones registradas incluyen cualquier región lanzada después del 20
de marzo de 2019, que incluye Asia-Pacífico (Hong Kong), Medio Oriente (Baréin), UE (Milán) y África
(Ciudad del Cabo). Las regiones lanzadas antes del 20 de marzo de 2019 están habilitadas de forma
predeterminada.
Note
AWS también admite la entrega entre regiones a Amazon SQS desde una región que está
habilitada de forma predeterminada a una región registrada. Sin embargo, no se admite
el reenvío entre regiones de mensajes SNS desde regiones registradas a otras regiones
registradas.
• Para suscribir una función AWS Lambda en Este de EE. UU. (Norte de Virginia) a un tema de SNS
en Asia-Pacífico (Hong Kong), cambie la entidad principal en la política de funciones AWS Lambda
a [Link]. Las regiones registradas incluyen cualquier región lanzada
después del 20 de marzo de 2019, que incluye Asia-Pacífico (Hong Kong), Medio Oriente (Baréin),
UE (Milán) y África (Ciudad del Cabo). Las regiones lanzadas antes del 20 de marzo de 2019 están
habilitadas de forma predeterminada.
Note
AWS no admite la entrega entre regiones a Lambda desde una región que está habilitada de
forma predeterminada a una región registrada. Además, no se admite el reenvío entre regiones
de mensajes SNS desde regiones registradas a otras regiones registradas.
• HTTP
• Amazon Kinesis Data Firehose
• AWS Lambda
• Punto de enlace de aplicación de plataforma
• Amazon Simple Queue Service
Después de configurar los atributos de estado de entrega de los mensajes, se envían entradas de registro
a CloudWatch Logs para los mensajes enviados a los suscriptores de temas. El log del estado de entrega
de los mensajes aporta información operativa de mejor calidad, como la siguiente:
102
Amazon Simple Notification
Service Guía para desarrolladores
Configuración del registro del estado de entrega
mediante la AWS Management Console
Si desea configurar los atributos de los temas para el estado de entrega de los mensajes, puede utilizar la
AWS Management Console, los kits de desarrollo de software (SDK) de AWS o la API de consultas.
Temas
• Configuración del registro del estado de entrega mediante la AWS Management Console (p. 103)
• Configuración de los atributos del estado de entrega de los mensajes para los temas suscritos a
puntos de enlace de Amazon SNS mediante los SDK de AWS (p. 103)
• Para elegir un rol de servicio existente de la cuenta, elija Use existing service role (Utilizar el rol de
servicio existente) y, a continuación, especifique los roles de IAM para las entregas correctas y con
error.
• Para crear un nuevo rol de servicio en la cuenta, elija Create new service role (Crear un nuevo rol
de servicio) y después Create new roles (Crear roles nuevos) para definir los roles de IAM para las
entregas correctas y con error en la consola de IAM.
Elija Permitir si desea conceder a Amazon SNS acceso de escritura para utilizar CloudWatch Logs
en su nombre.
8. Elija Save changes.
Ahora podrá ver y analizar los CloudWatch Logs en los que se encuentra el estado de entrega de los
mensajes. Para obtener más información sobre el uso de CloudWatch, consulte la documentación de
CloudWatch.
HTTP
103
Amazon Simple Notification
Service Guía para desarrolladores
Configuración de los atributos del estado de entrega
de los mensajes para los temas suscritos a puntos de
• HTTPSuccessFeedbackRoleArn
enlace de Amazon SNS mediante los SDK de AWS
• HTTPSuccessFeedbackSampleRate
• HTTPFailureFeedbackRoleArn
• FirehoseSuccessFeedbackRoleArn
• FirehoseSuccessFeedbackSampleRate
• FirehoseFailureFeedbackRoleArn
AWS Lambda
• LambdaSuccessFeedbackRoleArn
• LambdaSuccessFeedbackSampleRate
• LambdaFailureFeedbackRoleArn
• ApplicationSuccessFeedbackRoleArn
• ApplicationSuccessFeedbackSampleRate
• ApplicationFailureFeedbackRoleArn
Note
Además de poder configurar los atributos de los temas para el estado de entrega de los
mensajes de notificación enviados a puntos de enlace de la aplicación de Amazon SNS,
también puede configurar atributos de las aplicaciones para el estado de entrega de los
mensajes de notificaciones push enviados a los servicios de notificaciones push. Para obtener
más información, consulte Uso de los atributos de la aplicaciones de Amazon SNS para el
estado de entrega de los mensajes.
Amazon SQS
• SQSSuccessFeedbackRoleArn
• SQSSuccessFeedbackSampleRate
• SQSFailureFeedbackRoleArn
104
Amazon Simple Notification
Service Guía para desarrolladores
Configuración de los atributos del estado de entrega
de los mensajes para los temas suscritos a puntos de
Java enlace de Amazon SNS mediante los SDK de AWS
try {
SetTopicAttributesResponse result =
[Link](request);
[Link]("\n\nStatus was " +
[Link]().statusCode() + "\n\nTopic " + [Link]()
+ " updated " + [Link]() + " to " +
[Link]());
} catch (SnsException e) {
[Link]([Link]().errorMessage());
[Link](1);
}
}
JavaScript
105
Amazon Simple Notification
Service Guía para desarrolladores
Configuración de los atributos del estado de entrega
de los mensajes para los temas suscritos a puntos de
enlace de Amazon SNS mediante los SDK de AWS
const run = async () => {
try {
const data = await [Link](new SetTopicAttributesCommand(params));
[Link]("Success.", data);
return data; // For unit tests.
} catch (err) {
[Link]("Error", [Link]);
}
};
run();
Kotlin
Esta es una documentación preliminar para una característica en versión de vista previa.
Está sujeta a cambios.
PHP
require 'vendor/[Link]';
use Aws\Sns\SnsClient;
use Aws\Exception\AwsException;
/**
106
Amazon Simple Notification
Service Guía para desarrolladores
Configuración de los atributos del estado de entrega
de los mensajes para los temas suscritos a puntos de
* Configureenlace de Amazon
the message SNS mediante
delivery status los SDK de AWS
attributes for an Amazon SNS Topic.
*
* This code expects that you have AWS credentials set up per:
* [Link]
guide_credentials.html
*/
try {
$result = $SnSclient->setTopicAttributes([
'AttributeName' => $attribute,
'AttributeValue' => $value,
'TopicArn' => $topic,
]);
var_dump($result);
} catch (AwsException $e) {
// output error message if fails
error_log($e->getMessage());
}
Ruby
policy = '{
"Version":"2008-10-17",
"Id":"__default_policy_ID",
"Statement":[{
"Sid":"__default_statement_ID",
"Effect":"Allow",
"Principal":{
"AWS":"*"
},
"Action":["SNS:Publish"],
"Resource":"' + MY_TOPIC_ARN + '",
"Condition":{
"ArnEquals":{
"AWS:SourceArn":"' + MY_RESOURCE_ARN + '"}
}
}]
}'
# Replace us-west-2 with the AWS Region you're using for Amazon SNS.
sns = Aws::SNS::[Link](region: 'REGION')
107
Amazon Simple Notification
Service Guía para desarrolladores
Reintentos de entrega de mensajes
Temas
• Protocolos y políticas de entrega (p. 108)
• Fases de la política de entrega (p. 109)
• Creación de una política de entrega HTTP/S (p. 110)
• A excepción de HTTP/S, no puede cambiar las políticas de entrega definidas mediante Amazon
SNS. Solo HTTP/S admite políticas personalizadas. Consulte Creación de una política de
entrega HTTP/S (p. 110).
• Amazon SNS aplica la fluctuación de retardo a los reintentos de entrega. Para obtener más
información, consulte la publicación Retroceso exponencial y fluctuación de retardo del blog de
arquitectura de AWS.
• El tiempo total de reintentos de la política para un punto de conexión HTTP/S no puede ser
superior a 3600 segundos. Se trata de un límite codificado y no se puede aumentar.
108
Amazon Simple Notification
Service Guía para desarrolladores
Fases de la política de entrega
Amazon
SQS
¹ Para los errores de limitación controlada con el protocolo Kinesis Data Firehose, Amazon SNS utiliza la
misma política de entrega que para los puntos de enlace administrados por el cliente.
1. Fase de reintento inmediato (sin retraso): esta fase se produce inmediatamente después del intento
inicial de entrega. No hay un plazo de tiempo entre los reintentos de esta fase.
2. Fase previa al retroceso: esta fase sigue a la fase de reintento inmediato. Amazon SNS utiliza esta fase
para intentar realizar un conjunto de reintentos antes de aplicar una función de respaldo. En esta fase se
especifica el número de reintentos y el tiempo de retraso entre ellos.
3. Fase de retroceso: en esta fase, se controla el retraso entre reintentos mediante la función de retry-
backoff. En esta fase, se establece el retraso mínimo, el retraso máximo y la función retry-backoff, que
define con qué rapidez van a ir aumentando los retrasos desde el valor mínimo hasta alcanzar el retraso
máximo. La función de retardo puede ser aritmética, exponencial, geométrica o lineal.
109
Amazon Simple Notification
Service Guía para desarrolladores
Creación de una política de entrega HTTP/S
4. Fase posterior al retroceso: esta fase sigue a la fase de retroceso. Especifica un número de reintentos y
el tiempo de retraso entre ellos. Esta es la fase final.
Puede configurar su política de entrega HTTP/S como un objeto JSON en el nivel de la suscripción o
del tema. Cuando la directiva se define en el nivel del tema, se aplica a todas las suscripciones HTTP/S
asociadas al tema.
Con el siguiente objeto JSON, se representa una política de entrega con la que se indica a Amazon SNS
que debe volver a intentar una entrega HTTP/S fallida, tal y se indica a continuación:
En esta política de entrega de ejemplo, Amazon SNS realiza un total de 50 intentos antes de descartar
el mensaje. Para conservar el mensaje después de agotar los reintentos especificados en la política de
entrega, configure su suscripción con el fin de mover los mensajes que no se entregan a una cola de
mensajes fallidos (DLQ). Para obtener más información, consulte Colas de mensajes fallidos (DLQ) de
Amazon SNS (p. 112) .
Note
Con esta política de entrega, también se indica a Amazon SNS que debe limitar las entregas a un
máximo de 10 por segundo, mediante la propiedad maxReceivesPerSecond. Esta velocidad de
limitación controlada y automática podría dar lugar a más mensajes publicados (tráfico entrante)
que entregados (tráfico saliente). Cuando hay más tráfico entrante que saliente, la suscripción
puede acumular una gran cantidad de mensajes atrasados, lo que podría provocar una latencia de
entrega de mensajes elevada. En tus políticas de entrega, asegúrese de especificar un valor para
maxReceivesPerSecond que no afecte de manera negativa su carga de trabajo.
{
"healthyRetryPolicy": {
"minDelayTarget": 1,
"maxDelayTarget": 60,
"numRetries": 50,
"numNoDelayRetries": 3,
"numMinDelayRetries": 2,
"numMaxDelayRetries": 35,
"backoffFunction": "exponential"
},
"sicklyRetryPolicy": null,
"throttlePolicy": {
"maxReceivesPerSecond": 10
110
Amazon Simple Notification
Service Guía para desarrolladores
Creación de una política de entrega HTTP/S
},
"guaranteed": false
}
La política de entrega se compone de una política de reintentos y una política de limitación controlada. En
total, hay ocho atributos en una política de entrega.
111
Amazon Simple Notification
Service Guía para desarrolladores
Colas de mensajes fallidos (DLQ)
Amazon SNS utiliza la siguiente fórmula para calcular la cantidad de reintentos en la fase de retardo:
Puede utilizar tres parámetros para controlar la frecuencia de los reintentos en la fase de retardo.
• minDelayTarget: se utiliza para definir el retraso asociado al primer intento de reintento en la fase de
retroceso.
• maxDelayTarget: se utiliza para definir el retraso asociado al último intento de reintento en la fase de
retroceso.
• backoffFunction: se utiliza para definir el algoritmo que Amazon SNS utiliza para calcular el plazo
de tiempo asociado a todos los intentos de reintento entre el primer y el último reintento de la fase de
retroceso. Puede utilizar una de las cuatro funciones de retardo.
En el siguiente diagrama, se muestra cómo afecta cada función de retardo al retraso relacionado con
los reintentos durante la fase de retardo en una política de entrega con el número total de reintentos
establecido en 10, el retraso mínimo establecido en 5 segundos y el retraso máximo establecido en
260 segundos. El eje vertical representa el plazo de tiempo en segundos asociado a cada uno de los 10
reintentos. El eje horizontal representa el número de reintentos, desde el primero hasta el décimo.
• La suscripción a Amazon SNS y la cola de Amazon SQS deben estar en la misma región y
cuenta de AWS.
• En un tema FIFO (p. 46), utilice una cola FIFO de Amazon SQS como una cola de mensajes
fallidos para la suscripción de Amazon SNS.
112
Amazon Simple Notification
Service Guía para desarrolladores
¿Por qué no se pueden entregar los mensajes?
• Para utilizar una cola de Amazon SQS cifrada como cola de mensajes fallidos, debe utilizar
un CMK personalizado con una política de clave con la que se otorgue a la entidad principal
de servicio Amazon SNS acceso a las acciones de la API de AWS KMS. Para obtener
más información, consulte Cifrado en reposo (p. 395) en esta guía y Protección de datos
de Amazon SQS con el cifrado del lado del servidor (SSE) y AWS KMS en la Guía para
desarrolladores de Amazon Simple Queue Service.
Temas
• ¿Por qué no se pueden entregar los mensajes? (p. 113)
• ¿Cómo funcionan las colas de mensajes fallidos? (p. 113)
• ¿Cómo se transfieren los mensajes a una cola de mensajes fallidos? (p. 114)
• ¿Cómo puedo sacar los mensajes de una cola de mensajes fallidos? (p. 114)
• ¿Cómo puedo monitorizar y registrar las colas de mensajes fallidos? (p. 114)
• Configuración de una cola de mensajes fallidos de Amazon SNS para una suscripción (p. 115)
Los puntos de enlace administrados por el cliente (como HTTP, SMTP, SMS o inserción móvil) también
pueden causar errores en el lado del servidor. Amazon SNS reintenta también la entrega a estos tipos
de puntos de enlace. Aunque los puntos de enlace HTTP son compatibles con las políticas de reintentos
definidas por el cliente, Amazon SNS establece una política interna de 50 reintentos de entrega durante
6 horas para los puntos de enlace SMTP, SMS e inserción móvil.
113
Amazon Simple Notification
Service Guía para desarrolladores
¿Cómo se transfieren los mensajes
a una cola de mensajes fallidos?
Las colas de mensajes fallidos que se adjuntan a las suscripciones de Amazon SNS son colas de Amazon
SQS normales. Para obtener más información acerca del período de retención de mensajes, consulte
Cuotas relacionadas con los mensajes en la Guía para desarrolladores de Amazon Simple Queue Service.
Puede cambiar el período de retención de los mensajes con la acción SetQueueAttributes de la API
de Amazon SQS. Para que las aplicaciones sean más resistentes, le recomendamos que establezca el
período máximo de retención de las colas de mensajes fallidos en 14 días.
En un tema FIFO (p. 46), utilice una cola FIFO de Amazon SQS como una cola de mensajes
fallidos para la suscripción de Amazon SNS.
El siguiente objeto JSON es un ejemplo de una política de redireccionamiento asociada a una suscripción
de SNS.
{
"deadLetterTargetArn": "arn:aws:sqs:us-east-2:123456789012:MyDeadLetterQueue"
}
• Evitar escribir lógica de consumo de Amazon SQS: establezca la cola de mensajes fallidos como fuente
de eventos en la función Lambda para drenar dicha cola.
• Escribir la lógica del consumidor de Amazon SQS: utilice la API de Amazon SQS, el SDK de AWSo
AWS CLI para escribir la lógica de consumidor personalizada para el sondeo, el procesamiento y la
eliminación de los mensajes de la cola de mensajes fallidos.
Para recibir notificaciones sobre la actividad de las colas de mensajes fallidos, puede utilizar las métricas
y alarmas de CloudWatch. Por ejemplo, si espera que la cola de mensajes fallidos esté siempre vacía,
114
Amazon Simple Notification
Service Guía para desarrolladores
Configuración de una cola de mensajes fallidos
puede crear una alarma de CloudWatch con la métrica NumberOfMessagesSent. Puede establecer el
umbral de la alarma en 0 y especificar un tema de Amazon SNS al que se enviarán notificaciones cuando
esta se active. Este tema de Amazon SNS puede enviar la notificación de alarma a cualquier tipo de punto
de enlace final (como una dirección de correo electrónico, un número de teléfono o una aplicación de
localización móvil).
Puede utilizar CloudWatch Logs para investigar las excepciones que provocan que las entregas de
Amazon SNS no se realicen de forma correcta y para que los mensajes se envíen a las colas de mensajes
fallidos. Amazon SNS puede registrar entregas correctas y fallidas en CloudWatch. Para obtener más
información, consulte Estado de entrega de mensajes de Amazon SNS (p. 102).
En esta página, se muestra cómo puede usar la AWS Management Console, el SDK de AWS, la AWS
CLI y AWS CloudFormation con el fin de configurar una cola de mensajes fallidos para una suscripción a
Amazon SNS.
Prerequisites
Antes de configurar una cola de mensajes fallidos, complete los siguientes requisitos previos:
{
"Statement": [{
"Effect": "Allow",
"Principal": {
"Service": "[Link]"
},
"Action": "SQS:SendMessage",
"Resource": "arn:aws:sqs:us-east-2:123456789012:MyDeadLetterQueue",
"Condition": {
"ArnEquals": {
"aws:SourceArn": "arn:aws:sns:us-east-2:123456789012:MyTopic"
}
}
}]
}
Temas
115
Amazon Simple Notification
Service Guía para desarrolladores
Configuración de una cola de mensajes fallidos
• Si desea configurar una cola de mensajes fallidos para una suscripción de Amazon SNS mediante la ,
siga estos pasos: AWS Management Console (p. 116)
• Si desea configurar una cola de mensajes fallidos para una suscripción de Amazon SNS mediante un
SDK de AWS, siga estos pasos: (p. 116)
• Si desea configurar una cola de mensajes fallidos para una suscripción de Amazon SNS mediante la ,
siga estos pasos: AWS CLI (p. 117)
• Si desea configurar una cola de mensajes fallidos para una suscripción de Amazon SNS mediante la ,
siga estos pasos: AWS CloudFormation (p. 117)
arn:aws:sqs:us-east-2:123456789012:MyDeadLetterQueue
Note
En un tema FIFO (p. 46), utilice una cola FIFO de Amazon SQS como una cola de mensajes
fallidos para la suscripción de Amazon SNS.
3. Inicie sesión en la consola de Amazon SNS.
4. En el panel de navegación, seleccione Subscriptions (Suscripciones).
5. En la página Subscriptions (Suscripciones), seleccione una suscripción existente y haga clic en Edit
(Editar).
6. En la página Editar 1234a567-bc89-012d-3e45-6fg7h890123i, expanda la sección Política de
redireccionamiento (cola de mensajes fallidos) y, a continuación, haga lo siguiente:
Para utilizar un SDK de AWS, debe configurarlo con sus credenciales. Para obtener más información,
consulte Archivos de configuración y credenciales compartidos en la Guía de referencia de SDK y
herramientas de AWS.
En el siguiente ejemplo de código, se muestra la configuración de una cola de Amazon SQS como una
cola de mensajes fallidos para una suscripción a Amazon SNS.
116
Amazon Simple Notification
Service Guía para desarrolladores
Configuración de una cola de mensajes fallidos
Java
// Specify the ARN of the Amazon SQS queue to use as a dead-letter queue.
String redrivePolicy =
"{\"deadLetterTargetArn\":\"arn:aws:sqs:us-
east-2:123456789012:MyDeadLetterQueue\"}";
1. Instalar y configurar la AWS CLI. Para obtener más información, consulte la Guía del usuario de AWS
Command Line Interface.
2. Utilice el siguiente comando.
{
"Resources": {
"mySubscription": {
"Type" : "AWS::SNS::Subscription",
117
Amazon Simple Notification
Service Guía para desarrolladores
Configuración de una cola de mensajes fallidos
"Properties" : {
"Protocol": "sqs",
"Endpoint": "arn:aws:sqs:us-east-2:123456789012:MyEndpoint",
"TopicArn": "arn:aws:sns:us-east-2:123456789012:MyTopic",
"RedrivePolicy": {
"deadLetterTargetArn":
"arn:aws:sqs:us-east-2:123456789012:MyDeadLetterQueue"
}
}
}
}
}
118
Amazon Simple Notification
Service Guía para desarrolladores
• Distribución ramificada a los flujos de entrega de Kinesis Data Firehose (p. 120)
• Ejemplo de caso de uso para archivado y análisis de mensajes (p. 132)
• Trabajo con destinos de flujos de entrega (p. 122)
119
Amazon Simple Notification
Service Guía para desarrolladores
Distribución ramificada a los flujos
de entrega de Kinesis Data Firehose
Temas
• Distribución ramificada a los flujos de entrega de Kinesis Data Firehose (p. 120)
• Distribución ramificada a las funciones Lambda (p. 141)
• Colas de distribución ramificada a Amazon SQS (p. 142)
• Distribución ramificada a puntos de enlace HTTP/S (p. 153)
• Distribución ramificada a las canalizaciones de bifurcación de eventos de AWS (p. 168)
Por ejemplo, puede utilizar esta funcionalidad para almacenar de forma permanente los mensajes
enviados a un tema en un bucket de Amazon S3 con fines de conformidad, archivado u otros fines. Para
ello, cree un flujo de entrega de Kinesis Data Firehose con un destino de bucket de S3 y suscriba ese flujo
de entrega al tema de SNS. Como otro ejemplo, para realizar el análisis de los mensajes enviados a un
tema de SNS, cree un flujo de entrega con un destino de índice de OpenSearch Service. A continuación,
suscribirá el flujo de entrega de Kinesis Data Firehose al tema de SNS.
Amazon SNS también es compatible con el registro de estado de entrega de mensajes para las
notificaciones enviadas a los puntos de enlace de Kinesis Data Firehose. Para obtener más información,
consulte Estado de entrega de mensajes de Amazon SNS (p. 102).
Temas
• Requisitos previos para suscribir flujos de entrega de Kinesis Data Firehose a temas de Amazon
SNS (p. 121)
• Suscripción de un flujo de entrega de Kinesis Data Firehose a un tema de Amazon SNS (p. 122)
• Trabajo con destinos de flujos de entrega (p. 122)
• Ejemplo de caso de uso para archivado y análisis de mensajes (p. 132)
120
Amazon Simple Notification
Service Guía para desarrolladores
Requisitos previos
• Un tema de SNS estándar. Para obtener más información, consulte Creación de un tema de Amazon
SNS (p. 27).
• Un flujo de entrega de Kinesis Data Firehose. Para obtener más información, consulte Creación de un
flujo de entrega de Amazon Kinesis Data Firehose y Conceda a su aplicación acceso a sus recursos de
Kinesis Data Firehose en la Guía para desarrolladores de Amazon Kinesis Data Firehose.
• Un rol de (IAM) AWS Identity and Access Management que confía en el principal de servicio de Amazon
SNS y tiene permiso para escribir en el flujo de entrega. Ingresará el nombre de recurso de Amazon
(ARN) de este rol como SubscriptionRoleARN cuando cree la suscripción. Amazon SNS asume
este rol y, gracias a esto, Amazon SNS puede colocar registros en el flujo de entrega de Kinesis Data
Firehose.
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"firehose:DescribeDeliveryStream",
"firehose:ListDeliveryStreams",
"firehose:ListTagsForDeliveryStream",
"firehose:PutRecord",
"firehose:PutRecordBatch"
],
"Resource": [
"arn:aws:firehose:us-east-1:111111111111:deliverystream/firehose-sns-delivery-
stream"
],
"Effect": "Allow"
}
]
}
Con el fin de proporcionar permiso completo para usar Kinesis Data Firehose, también puede usar
la política administrada de AWS AmazonKinesisFirehoseFullAccess. O bien, con el fin de
proporcionar permisos más estrictos para usar Kinesis Data Firehose, puede crear su propia política.
Como mínimo, en la política se debe proporcionar permiso para ejecutar la operación PutRecord en un
flujo de entrega específico.
En todos los casos, también debe editar la relación de confianza para incluir el principal de servicio de
Amazon SNS. Por ejemplo:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "[Link]"
},
"Action": "sts:AssumeRole"
}
121
Amazon Simple Notification
Service Guía para desarrolladores
Suscripción de un flujo de entrega a un tema
]
}
Para obtener más información acerca de cómo crear roles, consulte Creación de un rol para delegar
permisos a un servicio de AWS en la Guía del usuario de IAM.
Una vez que haya completado estos requisitos, puede suscribir el flujo de entrega al tema de
SNS (p. 122).
Para suscribir un flujo de entrega de Kinesis Data Firehose a un tema de Amazon SNS, siga estos
pasos:
Temas
• Destinos de Amazon S3 (p. 123)
122
Amazon Simple Notification
Service Guía para desarrolladores
Destinos de flujos de entrega
Destinos de Amazon S3
En esta sección, se proporciona información acerca de los flujos de entrega de Amazon Kinesis Data
Firehose con los que se publican datos en Amazon Simple Storage Service (Amazon S3).
Temas
• Formato de mensajes archivados para destinos de Amazon S3 (p. 123)
• Análisis de mensajes de destinos de Amazon S3 (p. 124)
• Type
• MessageId
123
Amazon Simple Notification
Service Guía para desarrolladores
Destinos de flujos de entrega
• TopicArn
• Subject
• Timestamp
• UnsubscribeURL
• MessageAttributes
Para obtener más información acerca de la entrega sin procesar, consulte Entrega de mensajes
sin procesar de Amazon SNS (p. 97).
{
"Type": "Notification",
"MessageId": "719a6bbf-f51b-5320-920f-3385b5e9aa56",
"TopicArn": "arn:aws:sns:us-east-1:333333333333:my-kinesis-test-topic",
"Subject": "My 1st subject",
"Message": "My 1st body",
"Timestamp": "2020-11-26T[Link].032Z",
"UnsubscribeURL": "[Link]
Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:333333333333:my-kinesis-test-
topic:0b410f3c-ee5e-49d8-b59b-3b4aa6d8fcf5",
"MessageAttributes": {
"myKey1": {
"Type": "String",
"Value": "myValue1"
},
"myKey2": {
"Type": "String",
"Value": "myValue2"
}
}
}
En el siguiente ejemplo, se muestran tres mensajes SNS enviados a través de un flujo de entrega de
Amazon Kinesis Data Firehose al mismo bucket de Amazon S3. Se tiene en cuenta el almacenamiento en
búfer y los saltos de línea separan los mensajes.
{"Type":"Notification","MessageId":"d7d2513e-6126-5d77-
bbe2-09042bd0a03a","TopicArn":"arn:aws:sns:us-east-1:333333333333:my-
kinesis-test-topic","Subject":"My 1st subject","Message":"My 1st
body","Timestamp":"2020-11-27T[Link].100Z","UnsubscribeURL":"https://
[Link]/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-
east-1:313276652360:my-kinesis-test-topic:0b410f3c-
ee5e-49d8-b59b-3b4aa6d8fcf5","MessageAttributes":{"myKey1":
{"Type":"String","Value":"myValue1"},"myKey2":{"Type":"String","Value":"myValue2"}}}
{"Type":"Notification","MessageId":"0c0696ab-7733-5bfb-b6db-
ce913c294d56","TopicArn":"arn:aws:sns:us-east-1:333333333333:my-
kinesis-test-topic","Subject":"My 2nd subject","Message":"My 2nd
body","Timestamp":"2020-11-27T[Link].151Z","UnsubscribeURL":"https://
[Link]/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-
east-1:313276652360:my-kinesis-test-topic:0b410f3c-ee5e-49d8-
b59b-3b4aa6d8fcf5","MessageAttributes":{"myKey1":{"Type":"String","Value":"myValue1"}}}
{"Type":"Notification","MessageId":"816cd54d-8cfa-58ad-91c9-8d77c7d173aa","TopicArn":"arn:aws:sns:us-
east-1:333333333333:my-kinesis-test-topic","Subject":"My 3rd subject","Message":"My
3rd body","Timestamp":"2020-11-27T[Link].755Z","UnsubscribeURL":"https://
[Link]/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-
east-1:313276652360:my-kinesis-test-topic:0b410f3c-ee5e-49d8-b59b-3b4aa6d8fcf5"}
124
Amazon Simple Notification
Service Guía para desarrolladores
Destinos de flujos de entrega
Para analizar los mensajes SNS enviados a través de flujos de entrega de Kinesis Data Firehose a
destinos de Amazon S3, siga estos pasos:
1. Configure sus recursos de Amazon S3. Para recibir instrucciones, consulte Creación de un bucket en
la Guía del usuario de Amazon Simple Storage Service y Trabajar con buckets de Amazon S3 en la
Guía del usuario de Amazon Simple Storage Service.
2. Configure el flujo de entrega. Para obtener más información, consulte Elija Amazon S3 para su destino
en la Guía para desarrolladores de Amazon Kinesis Data Firehose.
3. Utilice Amazon Athena para consultar los objetos de Amazon S3 mediante SQL estándar. Para
obtener más información, consulte Introducción en la Guía del usuario de Amazon Athena.
Consulta de ejemplo
Con la siguiente consulta, se devuelven todos los mensajes SNS recibidos en el intervalo de fechas
especificado:
SELECT *
FROM [Link]
WHERE from_iso8601_timestamp(timestamp) BETWEEN TIMESTAMP '2020-12-01 [Link]' AND
TIMESTAMP '2020-12-02 [Link]';
Destinos de OpenSearch Service
En esta sección, se proporciona información sobre los flujos de entrega de Amazon Kinesis Data Firehose
con los que se publican datos en Amazon OpenSearch Service (OpenSearch Service).
Temas
125
Amazon Simple Notification
Service Guía para desarrolladores
Destinos de flujos de entrega
• Type
• MessageId
• TopicArn
• Subject
• Timestamp
• UnsubscribeURL
• MessageAttributes
Para obtener más información acerca de la entrega sin procesar, consulte Entrega de mensajes
sin procesar de Amazon SNS (p. 97).
{
"_index": "my-index",
"_type": "_doc",
"_id": "49613100963111323203250405402193283794773886550985932802.0",
"_version": 1,
"_score": null,
"_source": {
"Type": "Notification",
"MessageId": "bf32e294-46e3-5dd5-a6b3-bad65162e136",
"TopicArn": "arn:aws:sns:us-east-1:111111111111:my-topic",
"Subject": "Sample subject",
"Message": "Sample message",
"Timestamp": "2020-12-02T[Link].189Z",
"UnsubscribeURL": "[Link]
Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:111111111111:my-
topic:b5aa9bc1-9c3d-452b-b402-aca2cefc63c9",
"MessageAttributes": {
"my_attribute": {
"Type": "String",
"Value": "my_value"
}
}
},
"fields": {
"Timestamp": [
"2020-12-02T[Link].189Z"
]
},
"sort": [
1606948161189
]
126
Amazon Simple Notification
Service Guía para desarrolladores
Destinos de flujos de entrega
Consulta de ejemplo
En el siguiente ejemplo, se consulta el índice my-index de todos los mensajes SNS recibidos en el
intervalo de fechas especificado:
POST [Link]
{
"query": {
"bool": {
"filter": [
{
"range": {
"Timestamp": {
"gte": "2020-12-08T[Link].000Z",
"lte": "2020-12-09T[Link].000Z",
"format": "strict_date_optional_time"
}
}
}
]
}
}
}
127
Amazon Simple Notification
Service Guía para desarrolladores
Destinos de flujos de entrega
Temas
• Estructura de la tabla de archivos para los destinos de Amazon Redshift (p. 128)
• Análisis de mensajes de destinos de Amazon Redshift (p. 129)
• Type
• MessageId
• TopicArn
• Subject
• Message
• Timestamp
• UnsubscribeURL
• MessageAttributes
128
Amazon Simple Notification
Service Guía para desarrolladores
Destinos de flujos de entrega
Para obtener más información acerca de la entrega sin procesar, consulte Entrega de mensajes
sin procesar de Amazon SNS (p. 97).
Si bien Amazon SNS agrega propiedades al mensaje con las mayúsculas que se muestran en
esta lista, los nombres de columna de las tablas de Amazon Redshift aparecen en minúsculas.
Para transformar los metadatos JSON en el punto de enlace de Amazon Redshift, puede utilizar
el comando COPY SQL. Para obtener más información, consulte los ejemplos Copiar desde JSON
y Cargar desde datos JSON con la opción 'auto ignorecase' en la Guía para desarrolladores de
bases de datos de Amazon Redshift.
Para obtener más información sobre la distribución de notificaciones a los puntos de enlace de Amazon
Redshift, consulte Destinos de Amazon Redshift (p. 127).
Para analizar los mensajes SNS enviados a través de flujos de entrega de Kinesis Data Firehose a
destinos de Amazon Redshift, siga estos pasos:
1. Configure sus recursos de Amazon Redshift. Para obtener instrucciones, consulte Introducción a
Amazon Redshift en la Guía de introducción a Amazon Redshift.
2. Configure el flujo de entrega. Para obtener más información, consulte Elija Amazon Redshift para su
destino en la Guía para desarrolladores de Amazon Kinesis Data Firehose.
129
Amazon Simple Notification
Service Guía para desarrolladores
Destinos de flujos de entrega
3. Ejecute una consulta. Para obtener más información, consulte Consulta de una base de datos
mediante el editor de consultas en la Guía de administración de clústeres de Amazon Redshift.
Consulta de ejemplo
Para transformar los metadatos JSON en el punto de enlace de Amazon Redshift, puede
utilizar el comando COPY SQL. Para obtener más información, consulte los ejemplos Copiar
desde JSON y Cargar desde datos JSON con la opción 'auto ignorecase' en la Guía para
desarrolladores de bases de datos de Amazon Redshift.
Con la siguiente consulta, se devuelven todos los mensajes SNS recibidos en el intervalo de fechas
especificado:
SELECT *
FROM [Link]
WHERE timestamp > '2020-12-01T[Link].000Z' AND timestamp < '2020-12-02T[Link].000Z';
Destinos HTTP
En esta sección, se proporciona información acerca de los flujos de entrega de Amazon Kinesis Data
Firehose con los que se publican datos en los puntos de enlace HTTP.
130
Amazon Simple Notification
Service Guía para desarrolladores
Destinos de flujos de entrega
Temas
• Formato de mensajes entregados para destinos HTTP (p. 131)
En este ejemplo, se desactivó la entrega de mensajes sin formato en el mensaje publicado. Para
obtener más información acerca de la entrega sin procesar, consulte Entrega de mensajes sin
procesar de Amazon SNS (p. 97).
"body": {
"requestId": "ebc9e8b2-fce3-4aef-a8f1-71698bf8175f",
"timestamp": 1606255960435,
"records": [
{
"data":
"eyJUeXBlIjoiTm90aWZpY2F0aW9uIiwiTWVzc2FnZUlkIjoiMjFkMmUzOGQtMmNhYi01ZjYxLTliYTItYmJiYWFhYzg0MGY2IiwiV
}
]
}
131
Amazon Simple Notification
Service Guía para desarrolladores
Ejemplo de caso de uso
La configuración de este caso de uso es una plataforma de emisión de billetes de avión que opera en un
entorno regulado. La plataforma está sujeta a un marco de conformidad que exige que la empresa archive
todas las ventas de entradas durante un mínimo de cinco años. Para cumplir el objetivo de conformidad en
materia de retención de datos, la empresa suscribe un flujo de entrega de Amazon Kinesis Data Firehose a
un tema de SNS existente. El destino del flujo de entrega es un bucket de Amazon Simple Storage Service
(Amazon S3). Con esta configuración, todos los eventos publicados en el tema de SNS se archivan en el
bucket de Amazon S3. En el siguiente diagrama, se ilustra la arquitectura de esta configuración.
132
Amazon Simple Notification
Service Guía para desarrolladores
Ejemplo de caso de uso
Para ejecutar análisis y obtener información sobre la venta de entradas, la empresa ejecuta consultas SQL
con Amazon Athena. Por ejemplo, la empresa puede consultar para conocer los destinos más populares y
los viajeros más frecuentes.
Con el fin de crear los recursos de AWS para este caso de uso, puede usar la AWS Management Console
o una plantilla de AWS CloudFormation.
133
Amazon Simple Notification
Service Guía para desarrolladores
Ejemplo de caso de uso
Temas
• Creación de los recursos iniciales (p. 134)
• Un flujo de entrega de Kinesis Data Firehose. (p. 135)
• Suscripción del flujo de entrega de Kinesis Data Firehose al tema de Amazon SNS (p. 136)
• Prueba y consulta de la configuración (p. 138)
• Uso de una plantilla AWS CloudFormation (p. 139)
Para obtener más información sobre los buckets de Amazon S3, consulte Creación de un bucket en la
Guía del usuario de Amazon Simple Storage Service y Trabajar con buckets de Amazon S3 en la Guía
del usuario de Amazon Simple Storage Service.
2. Cree las dos colas de Amazon SQS:
{
"Version": "2008-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "[Link]"
},
"Action": "sqs:SendMessage",
"Resource": "*",
"Condition": {
"ArnEquals": {
134
Amazon Simple Notification
Service Guía para desarrolladores
Ejemplo de caso de uso
"aws:SourceArn": "arn:aws:sns:us-east-1:123456789012:ticketTopic"
}
}
}
]
}
En esta política de acceso, reemplace el número Cuenta de AWS (123456789012) por el suyo y
cambie la región de AWS (us-east-1) en consecuencia.
g. Elija Create queue (Crear cola).
h. Repita estos pasos para crear una segunda cola SQS llamada ticketFraudQueue.
Para obtener más información sobre la creación de colas SQS, consulte Creación de una cola de
Amazon SQS (consola) en la Guía para desarrolladores de Amazon Simple Queue Service.
3. Cree el tema de SNS:
Para obtener más información sobre la creación de temas de SNS, consulte Creación de un tema de
Amazon SNS (p. 27).
4. Suscriba las colas de SQS al tema de SNS:
a. En la consola de Amazon SNS, en la página de detalles del tema TicketTopic, elija Crear
suscripción.
b. En Detalles, en Protocolo, elija Amazon SQS.
c. En Punto de enlace, elija el nombre de recurso de Amazon (ARN) de la cola
TicketPaymentQueue.
d. Elija Create subscription (Crear suscripción).
e. Repita estos pasos para crear una segunda suscripción con el ARN de la cola TicketFraudQueue.
Para obtener más información sobre la suscripción a los temas de SNS, consulte Suscripción a
un tema de Amazon SNS (p. 34). También puede suscribir colas de SQS a temas de SNS desde
la consola de Amazon SQS. Para obtener más información, consulte Suscripción de una cola de
Amazon SQS a un tema de Amazon SNS (consola) en la Guía para desarrolladores de Amazon
Simple Queue Service.
Ha creado los recursos iniciales para este caso de uso de ejemplo. Para continuar, consulte Un flujo de
entrega de Kinesis Data Firehose. (p. 135).
Para crear un flujo de entrega de Kinesis Data Firehose, siga estos pasos:
3. En la página Nuevo flujo de entrega, en Nombre del flujo de entrega, ingrese ticketUploadStream
y, a continuación, elija Siguiente.
4. En la página Procesar registros, elija Siguiente.
5. En la página Elegir un destino, haga lo siguiente:
Con el uso de estos valores para el búfer de Amazon S3, puede probar con rapidez la configuración.
La primera condición que se cumple desencadena la entrega de datos al bucket de S3.
7. En la página Ajustar configuración, en Permisos, elija crear un rol de (IAM) AWS Identity and Access
Management con los permisos necesarios asignados de manera automática. A continuación, elija
Next.
8. En la página Revisar, elija Crear un flujo de entrega.
9. Desde la página de flujos de entrega de Kinesis Data Firehose, elija el flujo de entrega que acaba de
crear (ticketUploadStream). En la pestaña Detalles, anote el nombre de recurso de Amazon (ARN) del
flujo para después.
Para obtener más información sobre la creación de flujos de entrega, consulte Creación de un flujo de
entrega de Amazon Kinesis Data Firehose en la Guía para desarrolladores de Amazon Kinesis Data
Firehose. Para obtener más información acerca de la creación de roles de IAM, consulte Creación de un rol
para delegar permisos a un servicio de AWS en la Guía del usuario de IAM.
Ha creado el flujo de entrega de Kinesis Data Firehose con los permisos necesarios. Para continuar,
consulte Suscripción del flujo de entrega de Kinesis Data Firehose al tema de Amazon SNS (p. 136).
• El rol de (IAM) AWS Identity and Access Management con el que se logra que la suscripción a Amazon
SNS ponga registros en el flujo de entrega de Amazon Kinesis Data Firehose.
• La suscripción al flujo de entrega de Kinesis Data Firehose al tema de SNS.
Con el fin de crear el rol de IAM para la suscripción a Amazon SNS, siga estos pasos:
136
Amazon Simple Notification
Service Guía para desarrolladores
Ejemplo de caso de uso
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"firehose:DescribeDeliveryStream",
"firehose:ListDeliveryStreams",
"firehose:ListTagsForDeliveryStream",
"firehose:PutRecord",
"firehose:PutRecordBatch"
],
"Resource": [
"arn:aws:firehose:us-east-1:123456789012:deliverystream/
ticketUploadStream"
],
"Effect": "Allow"
}
]
}
En esta política, reemplace el número Cuenta de AWS (123456789012) por el suyo y cambie la
región de AWS (us-east-1) en consecuencia.
11. Elija Review policy (Revisar política).
12. En la página Crear política, en Nombre, ingrese FirehoseSnsPolicy. A continuación, elija Create
policy (Crear política).
13. En la página Resumen del rol, tenga en cuenta el ARN de rol para después.
Para obtener más información acerca de la creación de roles de IAM, consulte Creación de un rol para
delegar permisos a un servicio de AWS en la Guía del usuario de IAM.
Para suscribir el flujo de entrega de Kinesis Data Firehose al tema de SNS, siga estos pasos:
Ha creado el rol de IAM y la suscripción al tema de SNS. Para continuar, consulte Prueba y consulta de la
configuración (p. 138).
137
Amazon Simple Notification
Service Guía para desarrolladores
Ejemplo de caso de uso
{"BookingDate":"2020-12-15","BookingTime":"2020-12-15
[Link]","Destination":"Miami","FlyingFrom":"Vancouver","TicketNumber":"abcd1234"}
Para obtener más información sobre la publicación de mensajes, consulte Publicación de mensajes en
Amazon SNS (p. 67).
6. Después del intervalo de flujo de entrega de 60 segundos, abra la consola de Amazon Simple Storage
Service (Amazon S3) y elija el bucket de Amazon S3 que creó en un principio (p. 134).
Por ejemplo, supongamos que en la tabla notifications del esquema default se incluyen los
siguientes datos:
{"BookingDate":"2020-12-15","BookingTime":"2020-12-15
[Link]","Destination":"Miami","FlyingFrom":"Vancouver","TicketNumber":"abcd1234"}
{"BookingDate":"2020-12-15","BookingTime":"2020-12-15
[Link]","Destination":"Miami","FlyingFrom":"Omaha","TicketNumber":"efgh5678"}
{"BookingDate":"2020-12-15","BookingTime":"2020-12-15
[Link]","Destination":"Miami","FlyingFrom":"NewYork","TicketNumber":"ijkl9012"}
{"BookingDate":"2020-12-15","BookingTime":"2020-12-15
[Link]","Destination":"Delhi","FlyingFrom":"Omaha","TicketNumber":"mnop3456"}
SELECT destination
FROM [Link]
GROUP BY destination
ORDER BY count(*) desc
LIMIT 1;
Para consultar los tickets vendidos durante un intervalo de fecha y hora específico, ejecute una
consulta como la siguiente:
138
Amazon Simple Notification
Service Guía para desarrolladores
Ejemplo de caso de uso
SELECT *
FROM [Link]
WHERE bookingtime
BETWEEN TIMESTAMP '2020-12-15 [Link]'
AND TIMESTAMP '2020-12-15 [Link]';
Puede adaptar ambas consultas de muestra según sus propias necesidades. Si desea obtener más
información sobre el uso de Athena para ejecutar consultas, consulte Introducción en la Guía del
usuario de Amazon Athena.
Limpieza
Para evitar incurrir en cargos de uso después de haber terminado la prueba, elimine los siguientes
recursos que creó durante el tutorial:
---
AWSTemplateFormatVersion: '2010-09-09'
Description: Template for creating an SNS archiving use case
Resources:
ticketUploadStream:
DependsOn:
- ticketUploadStreamRolePolicy
Type: AWS::KinesisFirehose::DeliveryStream
Properties:
S3DestinationConfiguration:
BucketARN: !Sub 'arn:${AWS::Partition}:s[Link]${ticketArchiveBucket}'
BufferingHints:
IntervalInSeconds: 60
SizeInMBs: 1
CompressionFormat: UNCOMPRESSED
RoleARN: !GetAtt [Link]
ticketArchiveBucket:
Type: AWS::S3::Bucket
ticketTopic:
Type: AWS::SNS::Topic
ticketPaymentQueue:
Type: AWS::SQS::Queue
ticketFraudQueue:
Type: AWS::SQS::Queue
ticketQueuePolicy:
Type: AWS::SQS::QueuePolicy
Properties:
PolicyDocument:
Statement:
139
Amazon Simple Notification
Service Guía para desarrolladores
Ejemplo de caso de uso
Effect: Allow
Principal:
Service: [Link]
Action:
- sqs:SendMessage
Resource: '*'
Condition:
ArnEquals:
aws:SourceArn: !Ref ticketTopic
Queues:
- !Ref ticketPaymentQueue
- !Ref ticketFraudQueue
ticketUploadStreamSubscription:
Type: AWS::SNS::Subscription
Properties:
TopicArn: !Ref ticketTopic
Endpoint: !GetAtt [Link]
Protocol: firehose
SubscriptionRoleArn: !GetAtt [Link]
ticketPaymentQueueSubscription:
Type: AWS::SNS::Subscription
Properties:
TopicArn: !Ref ticketTopic
Endpoint: !GetAtt [Link]
Protocol: sqs
ticketFraudQueueSubscription:
Type: AWS::SNS::Subscription
Properties:
TopicArn: !Ref ticketTopic
Endpoint: !GetAtt [Link]
Protocol: sqs
ticketUploadStreamRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Sid: ''
Effect: Allow
Principal:
Service: [Link]
Action: sts:AssumeRole
ticketUploadStreamRolePolicy:
Type: AWS::IAM::Policy
Properties:
PolicyName: FirehoseticketUploadStreamRolePolicy
PolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Action:
- s3:AbortMultipartUpload
- s3:GetBucketLocation
- s3:GetObject
- s3:ListBucket
- s3:ListBucketMultipartUploads
- s3:PutObject
Resource:
- !Sub 'arn:aws:s[Link]${ticketArchiveBucket}'
- !Sub 'arn:aws:s[Link]${ticketArchiveBucket}/*'
Roles:
- !Ref ticketUploadStreamRole
ticketUploadStreamSubscriptionRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
140
Amazon Simple Notification
Service Guía para desarrolladores
Distribución ramificada a las funciones Lambda
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service:
- [Link]
Action:
- sts:AssumeRole
Policies:
- PolicyName: SNSKinesisFirehoseAccessPolicy
PolicyDocument:
Version: '2012-10-17'
Statement:
- Action:
- firehose:DescribeDeliveryStream
- firehose:ListDeliveryStreams
- firehose:ListTagsForDeliveryStream
- firehose:PutRecord
- firehose:PutRecordBatch
Effect: Allow
Resource:
- !GetAtt [Link]
Además, Amazon SNS también es compatible con los atributos de estado de entrega de los mensajes para
las notificaciones enviadas a los puntos de enlace de Lambda. Para obtener más información, consulte
Estado de entrega de mensajes de Amazon SNS (p. 102).
Prerequisites
Para invocar funciones Lambda mediante notificaciones de Amazon SNS, necesita lo siguiente:
• Lambda function
• Tema de Amazon SNS
Para obtener información acerca de cómo crear una función Lambda para utilizarla con Amazon SNS,
consulte Uso de Lambda con Amazon SNS. Para obtener más información acerca de la creación de un
tema de Amazon SNS, consulte Crear un tema.
Cuando se utiliza Amazon SNS para enviar mensajes desde regiones registradas a regiones habilitadas de
forma predeterminada, debe modificar la política creada en la función de AWS Lambda reemplazando la
entidad principal [Link] por sns.<opt-in-region>.[Link].
Por ejemplo, si desea suscribir una función Lambda en EE. UU. Este (Norte de Virginia) a un tema de SNS
en Asia-Pacífico (Hong Kong), cambie la entidad principal en la política de funciones de AWS Lambda a
[Link]. Las regiones registradas incluyen cualquier región lanzada después
del 20 de marzo de 2019, que incluye Asia-Pacífico (Hong Kong), Medio Oriente (Baréin), UE (Milán) y
África (Ciudad del Cabo). Las regiones lanzadas antes del 20 de marzo de 2019 están habilitadas de forma
predeterminada.
141
Amazon Simple Notification
Service Guía para desarrolladores
Suscripción de una función a un tema
Note
AWS no admite la entrega entre regiones a Lambda desde una región que está habilitada de
forma predeterminada a una región registrada. Además, no se admite el reenvío entre regiones de
mensajes SNS desde regiones registradas a otras regiones registradas.
Cuando se publica un mensaje en un tema de SNS que tiene una función Lambda suscrita, la función
Lambda se invoca con la carga del mensaje publicado. Para obtener información sobre cómo utilizar AWS
Lambda con Amazon SNS, incluido un tutorial, consulte Uso de AWS Lambda con Amazon SNS.
Cuando suscribe una cola de Amazon SQS a un tema de Amazon SNS, puede publicar un mensaje en
el tema y Amazon SNS envía un mensaje Amazon SQS a la cola suscrita. En el mensaje Amazon SQS
se incluye el tema y el mensaje que se publicaron en el tema junto con los metadatos del mensaje en un
documento JSON. El mensaje Amazon SQS tendrá un aspecto similar al documento JSON siguiente.
{
"Type" : "Notification",
"MessageId" : "63a3f6b6-d533-4a47-aef9-fcf5cf758c76",
"TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic",
"Subject" : "Testing publish to subscribed queues",
"Message" : "Hello world!",
"Timestamp" : "2012-03-29T[Link].901Z",
"SignatureVersion" : "1",
"Signature" : "EXAMPLEnTrFPa3...",
"SigningCertURL" : "[Link]
[Link]",
142
Amazon Simple Notification
Service Guía para desarrolladores
Suscripción de una cola a un tema
"UnsubscribeURL" : "[Link]
Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-west-2:123456789012:MyTopic:c7fe3a54-
ab0e-4ec2-88e0-db410a0f2bee"
}
• Utilice Consola de Amazon SQS, lo que simplifica el proceso. Para obtener más información, consulte
Suscripción de una cola de Amazon SQS a un tema de Amazon SNS en la Guía para desarrolladores de
Amazon Simple Queue Service.
• Sigue estos pasos:
1. Obtenga el nombre de recurso de Amazon (ARN) de la cola a la que desea enviar mensajes y del
tema al que desea suscribir la cola. (p. 143)
2. Conceda permiso sqs:SendMessage al tema de Amazon SNS para que pueda enviar mensajes a la
cola. (p. 144)
3. Suscriba la cola al tema de Amazon SNS. (p. 144)
4. Otorgue a los usuarios de IAM o a Cuentas de AWS los permisos adecuados para publicar en el tema
de Amazon SNS y leer los mensajes de la cola de Amazon SQS. (p. 145)
5. Pruebe el procedimiento publicando un mensaje en el tema y leyendo el mensaje de la cola. (p. 147)
Si desea saber cómo configurar un tema para enviar mensajes a una cola que está en otra cuenta de
AWS, consulte Envío de mensajes de Amazon SNS a una cola de Amazon SQS de otra cuenta (p. 98).
Para ver una plantilla de AWS CloudFormation que crea un tema que envía mensajes a dos colas, consulte
Uso de una plantilla de AWS CloudFormation para crear un tema que envíe mensajes a las colas de
Amazon SQS (p. 148).
Para obtener el ARN de la cola, puede utilizar la consola de Amazon SQS o la acción de API
GetQueueAttributes.
Para obtener el ARN de la cola de la consola de Amazon SQS, siga estos pasos:
1. Inicie sesión en AWS Management Console y abra la consola de Amazon SQS en https://
[Link]/sqs/.
2. Seleccione la casilla de la cola cuyo ARN quiere obtener.
3. En la sección Detalles, copie el valor del ARN de forma que pueda utilizarlo para suscribirse al tema
de Amazon SNS.
Para obtener el ARN del tema, puede utilizar la consola de Amazon SNS, el comando de sns-get-
topic-attributes o la acción GetQueueAttributes de la API.
Para obtener el ARN del tema desde la consola de Amazon SNS, siga estos pasos:
143
Amazon Simple Notification
Service Guía para desarrolladores
Suscripción de una cola a un tema
Antes de suscribir una cola a un tema, necesita un tema y una cola. Si todavía no ha creado un tema o una
cola, créelo ahora. Para obtener más información, consulte Creación de un tema y Creación de una cola en
laGuía para desarrolladores de Amazon Simple Queue Service.
Para establecer una política en una cola, puede utilizar la consola de Amazon SQS o la acción
SetQueueAttributes de la API. Antes de comenzar, asegúrese de que dispone del ARN del tema al que
desea dar permiso para enviar mensajes a la cola.
Para establecer una política SendMessage en una cola mediante la consola de Amazon SQS, siga
estos pasos:
1. Inicie sesión en AWS Management Console y abra la consola de Amazon SQS en https://
[Link]/sqs/.
2. Seleccione el cuadro de la cola cuya política desea establecer, elija la pestaña Política de acceso y, a
continuación, elija Agregar un permiso.
3. En la sección Política de acceso, defina quién puede acceder a la cola.
Por ejemplo, con la siguiente política, MiTema puede enviar mensajes a MyQueue.
{
"Statement": [{
"Effect":"Allow",
"Principal": {
"Service": "[Link]"
},
"Action":"sqs:SendMessage",
"Resource":"arn:aws:sqs:us-east-2:123456789012:MyQueue",
"Condition":{
"ArnEquals":{
"aws:SourceArn":"arn:aws:sns:us-east-2:123456789012:MyTopic"
}
}
}]
}
144
Amazon Simple Notification
Service Guía para desarrolladores
Suscripción de una cola a un tema
Normalmente, suscribirá su propia cola a su propio tema en su propia cuenta. Sin embargo, también
puede suscribir una cola de otra cuenta a su tema. Si el usuario que crea la suscripción no es el
propietario de la cola (por ejemplo, si un usuario de una cuenta A suscribe una cola de una cuenta B
a un tema de la cuenta A), la suscripción deberá confirmarse. Para obtener más información sobre
cómo suscribir una cola desde otra cuenta y confirmar la suscripción, consulte Envío de mensajes de
Amazon SNS a una cola de Amazon SQS de otra cuenta (p. 98).
• Agregue una política a un usuario o un grupo de IAM (p. 145). La forma más sencilla de dar a los
usuarios permisos para temas o colas consiste en crear un grupo, añadir la política adecuada al grupo
y, a continuación, añadir usuarios a dicho grupo. Es mucho más fácil añadir y eliminar usuarios de un
grupo que mantener un seguimiento de las políticas que se han configurado para los distintos usuarios.
• Añadiendo una política a un tema o una cola (p. 146). Si desea conceder permisos para un tema o una
cola a otra cuenta de AWS, el único modo de hacerlo es agregando una política que tenga como entidad
principal la Cuenta de AWS a la que desee conceder los permisos.
Debe utilizar el primer método para la mayoría de los casos (aplicar políticas a grupos y administrar
los permisos de los usuarios añadiendo o eliminando los usuarios a los grupos). Si necesita conceder
permisos a un usuario de otra cuenta, debe utilizar el segundo método.
145
Amazon Simple Notification
Service Guía para desarrolladores
Suscripción de una cola a un tema
{
"Statement": [{
"Effect": "Allow",
"Action": "sns:Publish",
"Resource": "arn:aws:sns:us-east-2:123456789012:MyTopic"
}]
}
Si ha agregado la siguiente política a un usuario o un grupo de IAM, debe conceder a dicho usuario
o a los miembros de dicho grupo permiso para ejecutar las acciones sqs:ReceiveMessage y
sqs:DeleteMessage en las colas MyQueue1 y MyQueue2.
{
"Statement":[{
"Effect":"Allow",
"Action":[
"sqs:ReceiveMessage",
"sqs:DeleteMessage"
],
"Resource":[
"arn:aws:sqs:us-east-2:123456789012:MyQueue1",
"arn:aws:sqs:us-east-2:123456789012:MyQueue2"
]
}]
}
Cuando concede a otra Cuenta de AWS acceso a un recurso de su cuenta, también concede a
los usuarios de IAM que tienen permisos de acceso de nivel de administrador (acceso a todos los
recursos) a ese recurso. Al resto de usuarios de IAM de la otra cuenta se les deniega de manera
automática el acceso al recurso. Si desea conceder a usuarios específicos de IAM en esa Cuenta
de AWS acceso a su recurso, la cuenta o el usuario de IAM con acceso de nivel de administrador
debe delegar permisos para el recurso a esos usuarios de IAM. Para obtener más información
acerca de la delegación entre cuentas, consulte Habilitar el acceso entre cuentas en la Guía del
usuario de IAM.
{
"Statement":[{
"Effect":"Allow",
"Principal":{
"AWS":"111122223333"
},
"Action":"sns:Publish",
"Resource":"arn:aws:sns:us-east-2:123456789012:MyTopic"
}]
}
Si ha añadido la política siguiente a un tema MyQueue en la cuenta 123456789012, debe dar a la cuenta
111122223333 permiso para ejecutar las acciones sqs:ReceiveMessage y sqs:DeleteMessage en
dicha cola.
146
Amazon Simple Notification
Service Guía para desarrolladores
Suscripción de una cola a un tema
{
"Statement":[{
"Effect":"Allow",
"Principal":{
"AWS":"111122223333"
},
"Action":[
"sqs:DeleteMessage",
"sqs:ReceiveMessage"
],
"Resource":[
"arn:aws:sqs:us-east-2:123456789012:MyQueue"
]
}]
}
Para publicar en un tema mediante la consola de Amazon SNS, siga estos pasos:
1. Utilice las credenciales de la Cuenta de AWS o del usuario de IAM con permiso para publicar en el
tema con el fin de iniciar sesión en la AWS Management Console y abrir la consola de Amazon SNS
en [Link]
2. En el panel de navegación, seleccione el tema y elija Publish to Topic (Publicar en tema).
3. En el cuadro Subject (Asunto), escriba un asunto (por ejemplo, Testing publish to queue), en
el cuadro Message (Mensaje), introduzca algún texto (por ejemplo, Hello world!) y, por último,
elija Publish Message (Publicar mensaje). Aparecerá el siguiente mensaje: Your message has been
successfully published.
Para ver el mensaje del tema mediante la consola de Amazon SQS, siga estos pasos:
1. Utilice las credenciales de la Cuenta de AWS o del usuario de IAM con permiso para ver los mensajes
en la cola, iniciar sesión en AWS Management Console y abrir la consola de Amazon SQS en https://
[Link]/sqs/.
2. Marque la casilla de la cola que está suscrita al tema.
3. En el menú desplegable Queue Action (Acción de cola), seleccione View/Delete Messages (Ver/
Eliminar mensajes) y elija Start Polling for Messages (Comenzar el sondeo de mensajes). Se
visualizará un mensaje del tipo Notification (Notificación).
4. En la columna Body (Cuerpo), elija More Details (Más información). El cuadro Message Details
(Detalles de mensajes) contiene un documento JSON con el tema y el mensaje que ha publicado en el
tema. El mensaje tiene un aspecto similar al documento JSON siguiente.
{
"Type" : "Notification",
"MessageId" : "63a3f6b6-d533-4a47-aef9-fcf5cf758c76",
"TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic",
"Subject" : "Testing publish to subscribed queues",
"Message" : "Hello world!",
"Timestamp" : "2012-03-29T[Link].901Z",
"SignatureVersion" : "1",
"Signature" : "EXAMPLEnTrFPa3...",
"SigningCertURL" : "[Link]
[Link]",
147
Amazon Simple Notification
Service Guía para desarrolladores
Ejemplo (AWS CloudFormation)
"UnsubscribeURL" : "[Link]
Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-west-2:123456789012:MyTopic:c7fe3a54-
ab0e-4ec2-88e0-db410a0f2bee"
}
Para obtener más información sobre la implementación de recursos de AWS mediante una plantilla de
AWS CloudFormation, consulte Introducción en la Guía del usuario de AWS CloudFormation.
Copie el contenido de la plantilla en un archivo. También puede descargar la plantilla de la página Plantillas
de AWS CloudFormation. En la página de plantillas, elija Examinar las plantillas de ejemplo por servicio de
AWS y, a continuación, Amazon Simple Queue Service.
MySNSTopic está configurado para publicar en dos puntos de enlace suscritos, que son dos colas de
Amazon SQS (MyQueue1 y MyQueue2). MyPublishTopicGroup es un grupo de IAM cuyos miembros
tienen permiso para publicar en MySNSTopic mediante la acción de API Publicar o el comando sns-
publish. Con la plantilla, se crean los usuarios de IAM MyPublishUser y MyQueueUser, que se les
da perfiles de inicio de sesión y claves de acceso. El usuario que crea una pila con esta plantilla
especifica las contraseñas para los perfiles de inicio de sesión como parámetros de entrada. También
se crean claves de acceso para los dos usuarios de IAM con MyQueueUserKey y MyPublishUserKey.
AddUserToMyPublishTopicGroup añade MyPublishUser a MyPublishTopicGroup para que el usuario tenga
los permisos asignadas al grupo.
MyRDMessageQueueGroup es un grupo de IAM cuyos miembros tienen permiso para leer y eliminar
mensajes de las dos colas de Amazon SQS mediante las acciones de API ReceiveMessage y
DeleteMessage. AddUserToMyQueueGroup añade MyQueueUser a MyRDMessageQueueGroup para
que el usuario tenga los permisos asignados al grupo. MyQueuePolicy asigna el permiso para que
MySNSTopic publique sus notificaciones en las dos colas.
148
Amazon Simple Notification
Service Guía para desarrolladores
Ejemplo (AWS CloudFormation)
"AWSTemplateFormatVersion" : "2010-09-09",
"Parameters": {
"MyPublishUserPassword": {
"NoEcho": "true",
"Type": "String",
"Description": "Password for the IAM user MyPublishUser",
"MinLength": "1",
"MaxLength": "41",
"AllowedPattern": "[a-zA-Z0-9]*",
"ConstraintDescription": "must contain only alphanumeric characters."
},
"MyQueueUserPassword": {
"NoEcho": "true",
"Type": "String",
"Description": "Password for the IAM user MyQueueUser",
"MinLength": "1",
"MaxLength": "41",
"AllowedPattern": "[a-zA-Z0-9]*",
"ConstraintDescription": "must contain only alphanumeric characters."
}
},
"Resources": {
"MySNSTopic": {
"Type": "AWS::SNS::Topic",
"Properties": {
"Subscription": [{
"Endpoint": {
"Fn::GetAtt": ["MyQueue1", "Arn"]
},
"Protocol": "sqs"
},
{
"Endpoint": {
"Fn::GetAtt": ["MyQueue2", "Arn"]
},
"Protocol": "sqs"
}
]
}
},
"MyQueue1": {
"Type": "AWS::SQS::Queue"
},
"MyQueue2": {
"Type": "AWS::SQS::Queue"
},
"MyPublishUser": {
"Type": "AWS::IAM::User",
149
Amazon Simple Notification
Service Guía para desarrolladores
Ejemplo (AWS CloudFormation)
"Properties": {
"LoginProfile": {
"Password": {
"Ref": "MyPublishUserPassword"
}
}
}
},
"MyPublishUserKey": {
"Type": "AWS::IAM::AccessKey",
"Properties": {
"UserName": {
"Ref": "MyPublishUser"
}
}
},
"MyPublishTopicGroup": {
"Type": "AWS::IAM::Group",
"Properties": {
"Policies": [{
"PolicyName": "MyTopicGroupPolicy",
"PolicyDocument": {
"Statement": [{
"Effect": "Allow",
"Action": [
"sns:Publish"
],
"Resource": {
"Ref": "MySNSTopic"
}
}]
}
}]
}
},
"AddUserToMyPublishTopicGroup": {
"Type": "AWS::IAM::UserToGroupAddition",
"Properties": {
"GroupName": {
"Ref": "MyPublishTopicGroup"
},
"Users": [{
"Ref": "MyPublishUser"
}]
}
},
"MyQueueUser": {
"Type": "AWS::IAM::User",
"Properties": {
"LoginProfile": {
"Password": {
"Ref": "MyQueueUserPassword"
}
}
}
},
"MyQueueUserKey": {
"Type": "AWS::IAM::AccessKey",
"Properties": {
"UserName": {
"Ref": "MyQueueUser"
}
}
},
"MyRDMessageQueueGroup": {
"Type": "AWS::IAM::Group",
150
Amazon Simple Notification
Service Guía para desarrolladores
Ejemplo (AWS CloudFormation)
"Properties": {
"Policies": [{
"PolicyName": "MyQueueGroupPolicy",
"PolicyDocument": {
"Statement": [{
"Effect": "Allow",
"Action": [
"sqs:DeleteMessage",
"sqs:ReceiveMessage"
],
"Resource": [{
"Fn::GetAtt": ["MyQueue1", "Arn"]
},
{
"Fn::GetAtt": ["MyQueue2", "Arn"]
}
]
}]
}
}]
}
},
"AddUserToMyQueueGroup": {
"Type": "AWS::IAM::UserToGroupAddition",
"Properties": {
"GroupName": {
"Ref": "MyRDMessageQueueGroup"
},
"Users": [{
"Ref": "MyQueueUser"
}]
}
},
"MyQueuePolicy": {
"Type": "AWS::SQS::QueuePolicy",
"Properties": {
"PolicyDocument": {
"Statement": [{
"Effect": "Allow",
"Principal": {
"Service": "[Link]"
},
"Action": ["sqs:SendMessage"],
"Resource": "*",
"Condition": {
"ArnEquals": {
"aws:SourceArn": {
"Ref": "MySNSTopic"
}
}
}
}]
},
"Queues": [{
"Ref": "MyQueue1"
}, {
"Ref": "MyQueue2"
}]
}
}
},
"Outputs": {
"MySNSTopicTopicARN": {
"Value": {
"Ref": "MySNSTopic"
}
151
Amazon Simple Notification
Service Guía para desarrolladores
Ejemplo (AWS CloudFormation)
},
"MyQueue1Info": {
"Value": {
"Fn::Join": [
" ",
[
"ARN:",
{
"Fn::GetAtt": ["MyQueue1", "Arn"]
},
"URL:",
{
"Ref": "MyQueue1"
}
]
]
}
},
"MyQueue2Info": {
"Value": {
"Fn::Join": [
" ",
[
"ARN:",
{
"Fn::GetAtt": ["MyQueue2", "Arn"]
},
"URL:",
{
"Ref": "MyQueue2"
}
]
]
}
},
"MyPublishUserInfo": {
"Value": {
"Fn::Join": [
" ",
[
"ARN:",
{
"Fn::GetAtt": ["MyPublishUser", "Arn"]
},
"Access Key:",
{
"Ref": "MyPublishUserKey"
},
"Secret Key:",
{
"Fn::GetAtt": ["MyPublishUserKey", "SecretAccessKey"]
}
]
]
}
},
"MyQueueUserInfo": {
"Value": {
"Fn::Join": [
" ",
[
"ARN:",
{
"Fn::GetAtt": ["MyQueueUser", "Arn"]
},
"Access Key:",
152
Amazon Simple Notification
Service Guía para desarrolladores
Distribución ramificada a puntos de enlace HTTP/S
{
"Ref": "MyQueueUserKey"
},
"Secret Key:",
{
"Fn::GetAtt": ["MyQueueUserKey", "SecretAccessKey"]
}
]
]
}
}
}
}
• Indicación de nombre de servidor (SNI): con esta, Amazon SNS puede admitir puntos de enlace HTTPS
que requieren SNI, como un servidor que solicita varios certificados para alojar varios dominios. Para
obtener más información sobre SNI, consulte Server Name Indication.
Las URL HTTPS solo se pueden recuperar desde una acción de la API
GetSubscriptionAttributes de Amazon SNS, para las entidades principales a las que ha
concedido acceso a la API.
Note
La solicitud contiene el asunto y el mensaje que se publicaron en el tema junto con los metadatos de la
notificación en un documento JSON. La solicitud tendrá un aspecto similar a la siguiente solicitud HTTP
POST. Para obtener más información sobre el encabezado HTTP y el formato JSON del cuerpo de la
solicitud, consulte Encabezados de HTTP/HTTPS (p. 162) y Formato JSON de notificación HTTP/
HTTPS (p. 164).
POST / HTTP/1.1
x-amz-sns-message-type: Notification
x-amz-sns-message-id: da41e39f-ea4d-435a-b922-c6aae3915ebe
x-amz-sns-topic-arn: arn:aws:sns:us-west-2:123456789012:MyTopic
x-amz-sns-subscription-arn: arn:aws:sns:us-
west-2:123456789012:MyTopic:2bcfbf39-05c3-41de-beaa-fcfcc21c8f55
153
Amazon Simple Notification
Service Guía para desarrolladores
Suscripción de un punto de enlace a un tema
Content-Length: 761
Content-Type: text/plain; charset=UTF-8
Host: [Link]
Connection: Keep-Alive
User-Agent: Amazon Simple Notification Service Agent
{
"Type" : "Notification",
"MessageId" : "da41e39f-ea4d-435a-b922-c6aae3915ebe",
"TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic",
"Subject" : "test",
"Message" : "test message",
"Timestamp" : "2012-04-25T[Link].719Z",
"SignatureVersion" : "1",
"Signature" :
"EXAMPLElDMXvB8r9R83tGoNn0ecwd5UjllzsvSvbItzfaMpN2nk5HVSw7XnOn/49IkxDKz8YrlH2qJXj2iZB0Zo2O71c4qQk1fMUD
"SigningCertURL" : "[Link]
[Link]",
"UnsubscribeURL" : "[Link]
Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-
west-2:123456789012:MyTopic:2bcfbf39-05c3-41de-beaa-fcfcc21c8f55"
}
Temas
• Suscripción de un punto de enlace HTTP/S a un tema (p. 154)
• Verificación de la firmas de mensajes de Amazon SNS (p. 160)
• Análisis de formatos de mensajes (p. 162)
Temas
• Paso 1: Asegúrese de que el punto de enlace está listo para procesar mensajes de Amazon
SNS. (p. 154)
• Paso 2: Suscribir el punto de enlace HTTP/HTTPS al tema de Amazon SNS (p. 157)
• Pase 3: Confirme la suscripción (p. 158)
• Paso 4: Definir la política de reintentos de entrega para la suscripción (opcional) (p. 158)
• Paso 5: Conceder a los usuarios permisos para publicar en el tema (opcional) (p. 158)
• Paso 6: Enviar mensajes al punto de enlace HTTP/HTTPS (p. 159)
154
Amazon Simple Notification
Service Guía para desarrolladores
Suscripción de un punto de enlace a un tema
enlace hasta que se confirme la suscripción. Una vez confirmada la suscripción, Amazon SNS enviará
notificaciones al punto de enlace cuando se ejecute una acción de publicación en el tema suscrito.
Para configurar el punto de enlace para que procese los mensajes de confirmación de la
suscripción y de notificación
1. El código debe leer los encabezados HTTP de las solicitudes HTTP POST que Amazon SNS envía
a su punto de enlace. El código debe examinar el campo de encabezado x-amz-sns-message-
type, en el que se indica el tipo de mensaje que Amazon SNS ha enviado. En este encabezado,
puede determinar el tipo de mensaje sin tener que analizar el cuerpo de la solicitud HTTP. Hay
dos tipos que debe administrar: SubscriptionConfirmation y Notification. El mensaje
UnsubscribeConfirmation se utiliza únicamente cuando la suscripción se elimina del tema.
Para obtener información detallada sobre el encabezado HTTP, consulte Encabezados de HTTP/
HTTPS (p. 162). La siguiente solicitud HTTP POST es un ejemplo de un mensaje de confirmación de
la suscripción.
POST / HTTP/1.1
x-amz-sns-message-type: SubscriptionConfirmation
x-amz-sns-message-id: 165545c9-2a5c-472c-8df2-7ff2be2b3b1b
x-amz-sns-topic-arn: arn:aws:sns:us-west-2:123456789012:MyTopic
Content-Length: 1336
Content-Type: text/plain; charset=UTF-8
Host: [Link]
Connection: Keep-Alive
User-Agent: Amazon Simple Notification Service Agent
{
"Type" : "SubscriptionConfirmation",
"MessageId" : "165545c9-2a5c-472c-8df2-7ff2be2b3b1b",
"Token" : "2336412f37f...",
"TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic",
"Message" : "You have chosen to subscribe to the topic arn:aws:sns:us-
west-2:123456789012:MyTopic.\nTo confirm the subscription, visit the SubscribeURL
included in this message.",
"SubscribeURL" : "[Link]
Action=ConfirmSubscription&TopicArn=arn:aws:sns:us-
west-2:123456789012:MyTopic&Token=2336412f37...",
"Timestamp" : "2012-04-26T[Link].751Z",
"SignatureVersion" : "1",
"Signature" : "EXAMPLEpH+...",
"SigningCertURL" : "[Link]
[Link]"
}
2. El código debe analizar el documento JSON del cuerpo de la solicitud HTTP POST para leer los
pares de nombre-valor que conforman el mensaje de Amazon SNS. Utilice un analizador JSON que
se encargue de convertir la representación en forma de secuencias de escape de los caracteres de
control en sus valores de caracteres ASCII (por ejemplo, convertir \n en un carácter de nueva línea).
Puede utilizar un analizador JSON existente como Jackson JSON Processor o crear el suyo propio.
Para poder enviar el texto del asunto y los campos de los mensajes en formato JSON válido, Amazon
SNS debe convertir algunos caracteres de control en secuencias de escape que se puedan incluir en
el documento JSON. Cuando reciba el documento JSON en el cuerpo de la solicitud POST enviada a
su punto de enlace, debe convertir los caracteres incluidos en secuencias de escape en sus valores
de caracteres originales si desea una representación exacta del asunto original y de los mensajes
publicados en el tema. Esto es fundamental si desea verificar la firma de una notificación, porque la
firma utiliza el mensaje y el asunto en sus formatos originales como parte de la cadena para firmar.
3. El código debe verificar la autenticidad de una notificación, la confirmación de la suscripción o la
cancelación del mensaje de confirmación enviado por Amazon SNS. Mediante la información incluida
en el mensaje de Amazon SNS, el punto de enlace puede volver a crear la firma para que se pueda
155
Amazon Simple Notification
Service Guía para desarrolladores
Suscripción de un punto de enlace a un tema
verificar el contenido del mensaje cotejando la firma propia con la firma que Amazon SNS envió con el
mensaje. Para obtener más información acerca de la verificación de la firma de un mensaje, consulte
Verificación de la firmas de mensajes de Amazon SNS (p. 160).
4. Según el tipo especificado por el campo de encabezado x-amz-sns-message-type, el código debe
leer el documento JSON incluido en el cuerpo de la solicitud HTTP y procesar el mensaje. Estas son
las directrices para administrar los dos tipos principales de mensajes:
SubscriptionConfirmation
Lea el valor de SubscribeURL y visite esa URL. Para confirmar la suscripción y empezar a
recibir notificaciones en el punto de enlace, debe visitar la URL SubscribeURL (por ejemplo,
enviando una solicitud HTTP GET a la URL). Consulte el ejemplo de la solicitud HTTP del paso
anterior para ver cómo es esa URL SubscribeURL. Para obtener más información sobre el
formato del mensaje SubscriptionConfirmation, consulte Formato JSON de confirmación
de suscripción HTTP/HTTPS (p. 163). Cuando visite la dirección URL, recibirá una respuesta
similar al siguiente documento XML. El documento devuelve el ARN de suscripción del punto de
enlace en el elemento ConfirmSubscriptionResult.
<ConfirmSubscriptionResponse xmlns="[Link]
<ConfirmSubscriptionResult>
<SubscriptionArn>arn:aws:sns:us-
west-2:123456789012:MyTopic:2bcfbf39-05c3-41de-beaa-fcfcc21c8f55</SubscriptionArn>
</ConfirmSubscriptionResult>
<ResponseMetadata>
<RequestId>075ecce8-8dac-11e1-bf80-f781d96e9307</RequestId>
</ResponseMetadata>
</ConfirmSubscriptionResponse>
Lea los valores de Subject y Message para obtener la información de la notificación que se
publicó en el tema.
Para obtener más información sobre el formato del mensaje Notification, consulte
Encabezados de HTTP/HTTPS (p. 162). La siguiente solicitud HTTP POST es un ejemplo de un
mensaje de notificación enviado al punto de enlace [Link].
POST / HTTP/1.1
x-amz-sns-message-type: Notification
x-amz-sns-message-id: 22b80b92-fdea-4c2c-8f9d-bdfb0c7bf324
x-amz-sns-topic-arn: arn:aws:sns:us-west-2:123456789012:MyTopic
x-amz-sns-subscription-arn: arn:aws:sns:us-
west-2:123456789012:MyTopic:c9135db0-26c4-47ec-8998-413945fb5a96
Content-Length: 773
Content-Type: text/plain; charset=UTF-8
Host: [Link]
Connection: Keep-Alive
User-Agent: Amazon Simple Notification Service Agent
{
"Type" : "Notification",
"MessageId" : "22b80b92-fdea-4c2c-8f9d-bdfb0c7bf324",
"TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic",
"Subject" : "My First Message",
"Message" : "Hello world!",
156
Amazon Simple Notification
Service Guía para desarrolladores
Suscripción de un punto de enlace a un tema
"Timestamp" : "2012-05-02T[Link].655Z",
"SignatureVersion" : "1",
"Signature" : "EXAMPLEw6JRN...",
"SigningCertURL" : "[Link]
[Link]",
"UnsubscribeURL" : "[Link]
Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-
west-2:123456789012:MyTopic:c9135db0-26c4-47ec-8998-413945fb5a96"
}
5. Asegúrese de que su punto de enlace responde al mensaje HTTP POST de Amazon SNS con el
código de estado adecuado. El tiempo de espera de la conexión se agotará en 15 segundos. Si el
punto de enlace no responde antes de que se agote el tiempo de espera de la conexión, o si devuelve
un código de estado fuera del intervalo 200-4xx, Amazon SNS considerará la entrega del mensaje un
intento fallido.
6. Asegúrese de que el código puede administrar los reintentos de entrega de mensajes de Amazon
SNS. Si Amazon SNS no recibe una respuesta correcta del punto de enlace, intenta entregar de
nuevo el mensaje. Esto se aplica a todos los mensajes, incluido el mensaje de confirmación de la
suscripción. De forma predeterminada, si la entrega inicial del mensaje da un error, Amazon SNS
realiza tres reintentos con un intervalo entre los intentos fallidos establecido en 20 segundos.
Note
En resumen, Amazon SNS intenta entregar de nuevo un mensaje únicamente después de un campo
de encabezado x-amz-sns-message-id de entrega. Comparando los ID de los mensajes que ha
procesado con los mensajes entrantes, puede determinar si se trata de un reintento de entrega del
mensaje.
7. Si suscribe un punto de enlace HTTPS, asegúrese de que el punto de enlace tiene un certificado de
servidor de una entidad de certificación (CA) de confianza. Amazon SNS solo enviará mensajes a
puntos de enlace HTTPS que tengan un certificado de servidor de una CA en la que confíe Amazon
SNS.
8. Implemente el código que ha creado para recibir mensajes de Amazon SNS. Cuando suscriba el
punto de enlace, este debe estar preparado para recibir al menos el mensaje de confirmación de la
suscripción.
Para suscribir un punto de enlace HTTP o HTTPS a un tema mediante la consola de Amazon
SNS, siga estos pasos:
157
Amazon Simple Notification
Service Guía para desarrolladores
Suscripción de un punto de enlace a un tema
3. Elija la lista desplegable Other actions (Otras acciones) y seleccione Subscribe to topic (Suscribirse al
tema).
4. En la lista desplegable Protocol (Protocolo), seleccione HTTP o HTTPS.
5. En el cuadro Endpoint (Punto de enlace), pegue la dirección URL del punto de enlace al que desea
que el tema envíe los mensajes y, a continuación, elija Create subscription (Crear suscripción).
6. Para el mensaje Subscription request received! (Se ha recibido la solicitud de suscripción), elija Close
(Cerrar).
• Agregue una política a un usuario o un grupo de IAM. La forma más sencilla de conceder a los usuarios
permisos para temas consiste en crear un grupo, añadir la política adecuada al grupo y, a continuación,
añadir usuarios a dicho grupo. Es mucho más fácil añadir y eliminar usuarios de un grupo que mantener
un seguimiento de las políticas que se han configurado para los distintos usuarios.
• Añadiendo una política al tema. Si desea conceder permisos para un tema a otra cuenta de AWS, el
único modo de hacerlo es agregando una política que tenga como entidad principal la Cuenta de AWS a
la que desee conceder los permisos.
158
Amazon Simple Notification
Service Guía para desarrolladores
Suscripción de un punto de enlace a un tema
Debe utilizar el primer método para la mayoría de los casos (aplicar políticas a grupos y administrar
los permisos de los usuarios añadiendo o eliminando los usuarios a los grupos). Si necesita conceder
permisos a un usuario de otra cuenta, utilice el segundo método.
Si ha agregado la política siguiente a un usuario o un grupo de IAM, debe conceder a dicho usuario o a los
miembros de dicho grupo permiso para ejecutar la acción sns:Publish en el tema MiTema.
{
"Statement":[{
"Sid":"AllowPublishToMyTopic",
"Effect":"Allow",
"Action":"sns:Publish",
"Resource":"arn:aws:sns:us-east-2:123456789012:MyTopic"
}]
}
La siguiente política de ejemplo muestra cómo conceder a otra cuenta permisos sobre un tema.
Note
Cuando concede a otra Cuenta de AWS acceso a un recurso de su cuenta, también concede a
los usuarios de IAM que tienen permisos de acceso de nivel de administrador (acceso a todos los
recursos) a ese recurso. Al resto de usuarios de IAM de la otra cuenta se les deniega de manera
automática el acceso al recurso. Si desea conceder a usuarios específicos de IAM en esa Cuenta
de AWS acceso a su recurso, la cuenta o el usuario de IAM con acceso de nivel de administrador
debe delegar permisos para el recurso a esos usuarios de IAM. Para obtener más información
acerca de la delegación entre cuentas, consulte Habilitar el acceso entre cuentas en la Guía del
usuario de IAM.
{
"Statement":[{
"Sid":"Allow-publish-to-topic",
"Effect":"Allow",
"Principal":{
"AWS":"111122223333"
},
"Action":"sns:Publish",
"Resource":"arn:aws:sns:us-east-2:123456789012:MyTopic"
}]
}
Si ha seguido el paso 1 (p. 154), el código que ha implementado en el punto de enlace debería procesar
la notificación.
Para publicar en un tema mediante la consola de Amazon SNS, siga estos pasos:
1. Utilice las credenciales de la Cuenta de AWS o del usuario de IAM con permiso para publicar en el
tema con el fin de iniciar sesión en la AWS Management Console y abrir la consola de Amazon SNS
en [Link]
2. En el panel de navegación izquierdo, elija Topics (Temas) y, a continuación, seleccione un tema.
3. Seleccione el botón Publish message (Publicar mensaje).
159
Amazon Simple Notification
Service Guía para desarrolladores
Verificación de las firmas de los mensajes
Para ayudar a evitar que se produzcan ataques de suplantación, debe hacer lo siguiente cuando verifique
los mensajes enviados por Amazon SNS:
Para verificar la firma de un mensaje de Amazon SNS, cuando se utilizan solicitudes basadas en
consultas HTTP, siga estos pasos:
1. Extraiga los pares de nombre-valor del documento JSON en el cuerpo de la solicitud HTTP POST
que Amazon SNS envía al punto de enlace. Usará los valores de algunos de los pares de nombre-
valor para crear la cadena para firmar. Cuando verifique la firma de un mensaje de Amazon SNS,
es fundamental que convierta los caracteres de control precedidos por secuencias de escape en
sus representaciones originales en forma de caracteres en los valores de Message y Subject.
Estos valores deben estar en sus formatos originales cuando se utilizan como parte de la cadena
para firmar. Para obtener información sobre cómo analizar el documento JSON, consulte Paso 1:
Asegúrese de que el punto de enlace está listo para procesar mensajes de Amazon SNS. (p. 154).
En función del tipo de mensaje, la cadena para firmar debe tener los siguientes pares de nombre-
valor.
160
Amazon Simple Notification
Service Guía para desarrolladores
Verificación de las firmas de los mensajes
Notification
Message
MessageId
Subject (if included in the message)
Timestamp
TopicArn
Type
Message
My Test Message
MessageId
4d4dc071-ddbf-465d-bba8-08f81c89da64
Subject
My subject
Timestamp
2019-01-31T[Link].321Z
TopicArn
arn:aws:sns:us-east-2:123456789012:s4-MySNSTopic-1G1WEFCOXTC0P
Type
Notification
SubscriptionConfirmation y UnsubscribeConfirmation
Message
MessageId
SubscribeURL
Timestamp
Token
TopicArn
Type
Message
My Test Message
MessageId
3d891288-136d-417f-bc05-901c108273ee
SubscribeURL
[Link]
Action=ConfirmSubscription&TopicArn=arn:aws:sns:us-east-2:123456789012:s4-
MySNSTopic-1G1WEFCOXTC0P&Token=233...
Timestamp
2019-01-31T[Link].719Z
Token
233...
TopicArn
arn:aws:sns:us-east-2:123456789012:s4-MySNSTopic-1G1WEFCOXTC0P
Type
SubscriptionConfirmation
161
Amazon Simple Notification
Service Guía para desarrolladores
Análisis de formatos de mensajes
6. Descodifique el valor de Signature del formato Base64. El mensaje entrega la firma en el valor de
Signature, que está codificado en Base64. Antes de comparar el valor de la firma con la firma que
ha calculado, asegúrese de descodificar el valor de Signature de Base64 para comparar los valores
utilizando el mismo formato.
7. Genere el valor hash derivado del mensaje de Amazon SNS. Envíe el mensaje de Amazon SNS, en
formato canónico, a la misma función hash que se utilizó para generar la firma.
8. Genere el valor hash certificado del mensaje de Amazon SNS. El valor hash certificado es el resultado
de utilizar el valor de la clave pública (del paso 3) para descifrar la firma entregada con el mensaje de
Amazon SNS.
9. Verifique la autenticidad y la integridad del mensaje de Amazon SNS. Compare el valor hash derivado
(del paso 7) con el valor hash certificado (del paso 8). Si los valores son idénticos, el receptor puede
estar seguro de que el mensaje no se ha modificado mientras estaba en tránsito y de que se ha
originado desde Amazon SNS. Si los valores no son idénticos, el receptor no debe confiar en el
mensaje.
Temas
• Encabezados de HTTP/HTTPS (p. 162)
• Formato JSON de confirmación de suscripción HTTP/HTTPS (p. 163)
• Formato JSON de notificación HTTP/HTTPS (p. 164)
• Formato JSON de confirmación de cancelación de suscripción HTTP/HTTPS (p. 166)
• Formato JSON de política de entrega SetSubscriptionAttributes (p. 167)
• Formato JSON de política de entrega SetTopicAttributes (p. 168)
Encabezados de HTTP/HTTPS
Cuando Amazon SNS envía una confirmación de suscripción, una notificación o un mensaje de
confirmación de anulación de la suscripción a los puntos de enlace HTTP/HTTPS, envía un mensaje POST
con una serie de valores de encabezado específicos de Amazon SNS. Puede utilizar dichos valores de
encabezado para realizar operaciones como identificar el tipo de mensaje sin tener que analizar el cuerpo
del mensaje JSON para leer el valor Type.
x-amz-sns-message-type
Identificador universal único, exclusivo para cada mensaje publicado. En las notificaciones que
Amazon SNS reenvía durante un reintento, se usa el ID de mensaje original.
x-amz-sns-topic-arn
162
Amazon Simple Notification
Service Guía para desarrolladores
Análisis de formatos de mensajes
POST / HTTP/1.1
x-amz-sns-message-type: Notification
x-amz-sns-message-id: 165545c9-2a5c-472c-8df2-7ff2be2b3b1b
x-amz-sns-topic-arn: arn:aws:sns:us-west-2:123456789012:MyTopic
x-amz-sns-subscription-arn: arn:aws:sns:us-west-2:123456789012:MyTopic:2bcfbf39-05c3-41de-
beaa-fcfcc21c8f55
Content-Length: 1336
Content-Type: text/plain; charset=UTF-8
Host: [Link]
Connection: Keep-Alive
User-Agent: Amazon Simple Notification Service Agent
Message
Cadena que describe el mensaje. Para la confirmación de suscripción, esta cadena tiene el aspecto
siguiente:
MessageId
Identificador universal único, exclusivo para cada mensaje publicado. En los mensajes que Amazon
SNS reenvía durante un reintento, se usa el ID de mensaje original.
Signature
Firma cifrada con Base64 "SHA1withRSA" de los valores Message, MessageId, Type, Timestamp y
TopicArn.
SignatureVersion
Dirección URL que debe visitar para confirmar la suscripción. O bien, puede utilizar el Token con la
acción ConfirmSubscription para confirmar la suscripción.
Timestamp
Valor que puede utilizar con la acción ConfirmSubscription para confirmar la suscripción. También
puede visitar simplemente SubscribeURL.
163
Amazon Simple Notification
Service Guía para desarrolladores
Análisis de formatos de mensajes
TopicArn
Nombre de recurso de Amazon (ARN) del tema al que está suscrito este punto de enlace.
Type
POST / HTTP/1.1
x-amz-sns-message-type: SubscriptionConfirmation
x-amz-sns-message-id: 165545c9-2a5c-472c-8df2-7ff2be2b3b1b
x-amz-sns-topic-arn: arn:aws:sns:us-west-2:123456789012:MyTopic
Content-Length: 1336
Content-Type: text/plain; charset=UTF-8
Host: [Link]
Connection: Keep-Alive
User-Agent: Amazon Simple Notification Service Agent
{
"Type" : "SubscriptionConfirmation",
"MessageId" : "165545c9-2a5c-472c-8df2-7ff2be2b3b1b",
"Token" : "2336412f37...",
"TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic",
"Message" : "You have chosen to subscribe to the topic arn:aws:sns:us-
west-2:123456789012:MyTopic.\nTo confirm the subscription, visit the SubscribeURL included
in this message.",
"SubscribeURL" : "[Link]
Action=ConfirmSubscription&TopicArn=arn:aws:sns:us-
west-2:123456789012:MyTopic&Token=2336412f37...",
"Timestamp" : "2012-04-26T[Link].751Z",
"SignatureVersion" : "1",
"Signature" : "EXAMPLEpH
+DcEwjAPg8O9mY8dReBSwksfg2S7WKQcikcNKWLQjwu6A4VbeS0QHVCkhRS7fUQvi2egU3N858fiTDN6bkkOxYDVrY0Ad8L10Hs3zH8
"SigningCertURL" : "[Link]
[Link]"
}
Message
Identificador universal único, exclusivo para cada mensaje publicado. En las notificaciones que
Amazon SNS reenvía durante un reintento, se usa el ID de mensaje original.
Signature
Firma SHA1withRSA codificada en Base64 de los valores de Message, MessageId, Subject (en caso
de incluirse), Type, Timestamp y TopicArn.
SignatureVersion
164
Amazon Simple Notification
Service Guía para desarrolladores
Análisis de formatos de mensajes
SigningCertURL
Dirección URL que puede utilizar para cancelar la suscripción del punto de enlace a este tema.
Si visita esta URL, Amazon SNS cancela la suscripción del punto de enlace y deja de enviarle
notificaciones.
POST / HTTP/1.1
x-amz-sns-message-type: Notification
x-amz-sns-message-id: 22b80b92-fdea-4c2c-8f9d-bdfb0c7bf324
x-amz-sns-topic-arn: arn:aws:sns:us-west-2:123456789012:MyTopic
x-amz-sns-subscription-arn: arn:aws:sns:us-
west-2:123456789012:MyTopic:c9135db0-26c4-47ec-8998-413945fb5a96
Content-Length: 773
Content-Type: text/plain; charset=UTF-8
Host: [Link]
Connection: Keep-Alive
User-Agent: Amazon Simple Notification Service Agent
{
"Type" : "Notification",
"MessageId" : "22b80b92-fdea-4c2c-8f9d-bdfb0c7bf324",
"TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic",
"Subject" : "My First Message",
"Message" : "Hello world!",
"Timestamp" : "2012-05-02T[Link].655Z",
"SignatureVersion" : "1",
"Signature" : "EXAMPLEw6JRN...",
"SigningCertURL" : "[Link]
[Link]",
"UnsubscribeURL" : "[Link]
Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-
west-2:123456789012:MyTopic:c9135db0-26c4-47ec-8998-413945fb5a96"
}
165
Amazon Simple Notification
Service Guía para desarrolladores
Análisis de formatos de mensajes
Message
Cadena que describe el mensaje. Para la confirmación de la cancelación de suscripción, esta cadena
tiene el aspecto siguiente:
MessageId
Identificador universal único, exclusivo para cada mensaje publicado. En los mensajes que Amazon
SNS reenvía durante un reintento, se usa el ID de mensaje original.
Signature
Firma cifrada con Base64 "SHA1withRSA" de los valores Message, MessageId, Type, Timestamp y
TopicArn.
SignatureVersion
Dirección URL que debe visitar para volver a confirmar la suscripción. O bien, puede utilizar el Token
con la acción ConfirmSubscription para volver a confirmar la suscripción.
Timestamp
Valor que puede utilizar con la acción ConfirmSubscription para volver a confirmar la suscripción.
También puede visitar simplemente SubscribeURL.
TopicArn
Nombre de recurso de Amazon (ARN) del tema del que el punto de enlace ha cancelado su
suscripción.
Type
166
Amazon Simple Notification
Service Guía para desarrolladores
Análisis de formatos de mensajes
POST / HTTP/1.1
x-amz-sns-message-type: UnsubscribeConfirmation
x-amz-sns-message-id: 47138184-6831-46b8-8f7c-afc488602d7d
x-amz-sns-topic-arn: arn:aws:sns:us-west-2:123456789012:MyTopic
x-amz-sns-subscription-arn: arn:aws:sns:us-west-2:123456789012:MyTopic:2bcfbf39-05c3-41de-
beaa-fcfcc21c8f55
Content-Length: 1399
Content-Type: text/plain; charset=UTF-8
Host: [Link]
Connection: Keep-Alive
User-Agent: Amazon Simple Notification Service Agent
{
"Type" : "UnsubscribeConfirmation",
"MessageId" : "47138184-6831-46b8-8f7c-afc488602d7d",
"Token" : "2336412f37...",
"TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic",
"Message" : "You have chosen to deactivate subscription arn:aws:sns:us-
west-2:123456789012:MyTopic:2bcfbf39-05c3-41de-beaa-fcfcc21c8f55.\nTo cancel this operation
and restore the subscription, visit the SubscribeURL included in this message.",
"SubscribeURL" : "[Link]
Action=ConfirmSubscription&TopicArn=arn:aws:sns:us-
west-2:123456789012:MyTopic&Token=2336412f37fb6...",
"Timestamp" : "2012-04-26T[Link].581Z",
"SignatureVersion" : "1",
"Signature" : "EXAMPLEHXgJm...",
"SigningCertURL" : "[Link]
[Link]"
}
[Link]
?Action=SetSubscriptionAttributes
&SubscriptionArn=arn%3Aaws%3Asns%3Aus-east-2%3A123456789012%3AMy-Topic
%3A80289ba6-0fd4-4079-afb4-ce8c8260f0ca
&AttributeName=DeliveryPolicy
&AttributeValue={"healthyRetryPolicy":{"numRetries":5}}
...
{
"healthyRetryPolicy" : {
"minDelayTarget" : int,
"maxDelayTarget" : int,
"numRetries" : int,
"numMaxDelayRetries" : int,
"backoffFunction" : "linear|arithmetic|geometric|exponential"
},
"throttlePolicy" : {
"maxReceivesPerSecond" : int
}
}
167
Amazon Simple Notification
Service Guía para desarrolladores
Distribución ramificada a las canalizaciones
de bifurcación de eventos de AWS
Formato JSON de política de entrega SetTopicAttributes
Si envía una solicitud a la acción SetTopicAttributes y establece el parámetro AttributeName en el valor
DeliveryPolicy, el valor del parámetro AttributeValue válido debe ser un objeto JSON válido. Por
ejemplo, el siguiente ejemplo establece la política de entrega en 5 reintentos en total.
[Link]
?Action=SetTopicAttributes
&TopicArn=arn%3Aaws%3Asns%3Aus-east-2%3A123456789012%3AMy-Topic
&AttributeName=DeliveryPolicy
&AttributeValue={"http":{"defaultHealthyRetryPolicy":{"numRetries":5}}}
...
{
"http" : {
"defaultHealthyRetryPolicy" : {
"minDelayTarget": int,
"maxDelayTarget": int,
"numRetries": int,
"numMaxDelayRetries": int,
"backoffFunction": "linear|arithmetic|geometric|exponential"
},
"disableSubscriptionOverrides" : Boolean,
"defaultThrottlePolicy" : {
"maxReceivesPerSecond" : int
}
}
}
Puede usar Amazon SNS para crear aplicaciones basadas en eventos que utilicen los servicios de
suscriptor para realizar trabajos de manera automática en respuesta a eventos desencadenados por los
servicios de publicador. Este patrón arquitectónico puede hacer que los servicios sean más reutilizables,
interoperables y escalables. Sin embargo, puede ser muy laborioso bifurcar el procesamiento de
eventos a canalizaciones que cumplan los requisitos comunes de administración de eventos, como el
almacenamiento de eventos, la copia de seguridad, la búsqueda, el análisis y la repetición.
168
Amazon Simple Notification
Service Guía para desarrolladores
Cómo funcionan las canalizaciones
de bifurcación de eventos de AWS
Para acelerar el desarrollo de sus aplicaciones basadas en eventos, puede suscribirse a canalizaciones
de gestión de eventos, basadas en canalizaciones de bifurcación de eventos de AWS, a temas de Amazon
SNS. AWS Event Fork Pipelines es un conjunto de aplicaciones anidadas de código abierto basadas en el
modelo AWS Serverless Application Model (AWS SAM) que se puede implementar directamente desde el
conjunto de aplicaciones de AWS Event Fork Pipelines (elija Show apps that create custom IAM roles or
resource policies [Mostrar aplicaciones que crean roles de IAM o políticas de recursos personalizados]) en
la cuenta de AWS.
Temas
• Cómo funcionan las canalizaciones de bifurcación de eventos de AWS (p. 169)
• Implementación de canalizaciones de bifurcación de eventos de AWS (p. 172)
• Implementación y prueba de la aplicación de muestra de las canalizaciones de bifurcación de eventos
de AWS (p. 173)
• Suscripción de las canalizaciones de bifurcaciones de eventos de AWS a un tema de Amazon
SNS (p. 180)
Temas
• Canalización de almacenamiento y copia de seguridad de eventos (p. 170)
• Canalización de búsqueda y análisis de eventos (p. 171)
• Canalización de reproducción de eventos (p. 171)
169
Amazon Simple Notification
Service Guía para desarrolladores
Cómo funcionan las canalizaciones
de bifurcación de eventos de AWS
Cada canalización se suscribe al mismo tema de Amazon SNS, lo que le permite procesar eventos en
paralelo a medida que se publican en el tema. Cada canalización es independiente y puede establecer
su propia política de filtros de suscripción (p. 84). De este modo una canalización puede procesar solo un
subconjunto de los eventos que le interesan (en lugar de todos los eventos publicados en el tema).
Note
Como las tres AWS se colocan junto con las canalizaciones de bifurcación de eventos normales
(y es posible que ya estén suscritas al tema de Amazon SNS), no es necesario cambiar nada del
publicador de mensajes actual para utilizar las canalizaciones de bifurcación de eventos de AWS
en las cargas de trabajo existentes.
Esta canalización se compone de una cola de Amazon SQS con la que se almacenan en búfer los eventos
entregados por el tema de Amazon SNS, una función AWS Lambda con la que se sondean de manera
automática estos eventos en la cola y se los envía a un flujo de Amazon Kinesis Data Firehose, y un
bucket de Amazon S3 con el que se hace una copia de seguridad duradera de los eventos cargados por el
flujo.
170
Amazon Simple Notification
Service Guía para desarrolladores
Cómo funcionan las canalizaciones
de bifurcación de eventos de AWS
Para optimizar el comportamiento del flujo de Firehose, puede configurarlo para que almacene en búfer,
transforme y comprima los eventos antes de cargarlos en el bucket. A medida que se carguen los eventos,
puede utilizar Amazon Athena para consultar el bucket mediante consultas SQL estándar. También puede
configurar la canalización para reutilizar un bucket de Amazon S3 existente o crear uno nuevo.
Esta canalización se compone de una cola de Amazon SQS con la que se almacenan en búfer los
eventos que entrega el tema de Amazon SNS, una función de AWS Lambda con la que se sondean
los eventos de la cola y se los envía a un flujo de Amazon Kinesis Data Firehose, un dominio de
Amazon OpenSearch Service con el que se indexan los eventos cargados por el flujo de Firehose y un
bucket de Amazon S3 con el que se almacenan los eventos fallidos que no se pueden indexar en el
dominio de búsqueda.
Esta canalización se compone de una cola de Amazon SQS en la que se almacenan los eventos que
entrega el tema de Amazon SNS y una función AWS Lambda con la que se sondean los eventos de la cola
y se los redirecciona a su canalización de procesamiento de eventos normales, que también está suscrita a
su tema.
171
Amazon Simple Notification
Service Guía para desarrolladores
Implementación de canalizaciones
de bifurcación de eventos de AWS
Note
Por ejemplo, puede utilizar la canalización de almacenamiento y copia de seguridad de eventos como una
aplicación anidada si añade el siguiente fragmento YAML a la sección Resources de su plantilla de AWS
SAM.
Backup:
Type: AWS::Serverless::Application
Properties:
Location:
ApplicationId: arn:aws:serverlessrepo:us-east-2:123456789012:applications/fork-event-
storage-backup-pipeline
172
Amazon Simple Notification
Service Guía para desarrolladores
Implementación de las canalizaciones
de bifurcación de eventos de AWS
SemanticVersion: 1.0.0
Parameters:
#The ARN of the Amazon SNS topic whose messages should be backed up to the Amazon S3
bucket.
TopicArn: !Ref MySNSTopic
Al especificar los valores de parámetro, puede utilizar funciones intrínsecas de AWS CloudFormation para
hacer referencia a otros recursos de la plantilla. Por ejemplo, en el fragmento YAML anterior, el parámetro
TopicArn hace referencia al recurso MySNSTopic de AWS::SNS::Topic, definido en otra parte de la
plantilla de AWS SAM. Para obtener más información, consulte la Referencia de función intrínseca en la
Guía del usuario de AWS CloudFormation.
Note
En esta página, se muestra cómo se puede utilizar la AWS Management Console para implementar y
probar la aplicación de muestra de las canalizaciones de bifurcación de eventos de AWS.
Important
Temas
• Caso de uso de las canalizaciones de bifurcación de eventos de AWS de ejemplo (p. 173)
• Paso 1: Implementar la aplicación de muestra (p. 175)
• Paso 2: Ejecutar la aplicación de muestra (p. 176)
• Paso 3: Verificar la ejecución de la aplicación de muestra y sus canalizaciones (p. 177)
• Paso 4: Simular un problema y reproducir eventos para la recuperación (p. 178)
173
Amazon Simple Notification
Service Guía para desarrolladores
Implementación de las canalizaciones
de bifurcación de eventos de AWS
aplicación de comercio electrónico de ejemplo en AWS Serverless Application Repository e implementarla
después en su Cuenta de AWS mediante la consola de AWS Lambda, donde puede probarla y examinar
su código fuente en GitHub.
En esta aplicación de comercio electrónico, se reciben los pedidos de los compradores a través de
una API compatible con REST alojada por API Gateway y respaldada por la función AWS Lambda
CheckoutApiBackendFunction. Con esta función, se publican todos los pedidos recibidos en un
tema de Amazon SNS llamado CheckoutEventsTopic que, a su vez, distribuye los pedidos a cuatro
canalizaciones diferentes.
174
Amazon Simple Notification
Service Guía para desarrolladores
Implementación de las canalizaciones
de bifurcación de eventos de AWS
(CMK) predeterminada para Amazon S3. Esta CMK se administra mediante AWS y se basa en AWS Key
Management Service (AWS KMS).
Para obtener más información, consulte Elija Amazon S3 para su destino, Transformación de datos
de Amazon Kinesis Data Firehose yAjustar configuración en la Guía para desarrolladores de Amazon
Kinesis Data Firehose.
• Canalización de búsqueda y análisis de eventos (p. 171) se ha configurado con una duración de
reintento de índice de 30 segundos, un bucket para almacenar los pedidos que no se han indexado en el
dominio de búsqueda y una política de filtro para restringir el conjunto de pedidos indexados.
Para obtener más información, consulte Elegir OpenSearch Service como destino en la Guía para
desarrolladores de Amazon Kinesis Data Firehose.
• Canalización de reproducción de eventos (p. 171) se ha configurado con la parte de cola de Amazon
SQS de la canalización normal de procesamiento de pedidos que ha diseñado e implementado el
propietario de la aplicación de comercio electrónico.
Para obtener más información, consulte Nombre y URL de la cola en la Guía para desarrolladores de
Amazon Simple Queue Service.
{
"amount": [{ "numeric": [ ">=", 100 ] }]
}
• Para encontrar fácilmente sus recursos más tarde, mantenga el prefijo fork-
example-ecommerce.
• Para cada implementación, el nombre de la aplicación debe ser único. Si reutiliza
un nombre de aplicación, la implementación actualizará solo la pila de AWS
CloudFormation implementada anteriormente (en lugar de crear una nueva).
175
Amazon Simple Notification
Service Guía para desarrolladores
Implementación de las canalizaciones
de bifurcación de eventos de AWS
b. (Opcional) Ingrese una de las siguientes configuraciones de LogLevel para ejecutar la función
Lambda de su aplicación:
• DEBUG
• ERROR
• INFO (predeterminado)
• WARNING
5. Elija I acknowledge that this app creates custom IAM roles, resource policies and deploys nested
applications (Confirmo que esta aplicación crea políticas de recursos o roles de IAM personalizados
e implementa aplicaciones anidadas) y, a continuación, en la parte inferior de la página, elija Deploy
(Implementar).
a. Para buscar el recurso cuyo tipo es ApiGateway RestApi, ordene los recursos por Type (Tipo), por
ejemplo, ServerlessRestApi, y, a continuación, expanda el recurso.
b. Se muestran dos recursos anidados, de los tipos ApiGateway Deployment y ApiGateway Stage.
c. Copie el enlace Prod API endpoint (Punto de enlace de la API de Prod) y añádale /checkout,
por ejemplo:
[Link]
{
"id": 15311,
"date": "2019-03-25T[Link]-08:00",
"status": "confirmed",
"customer": {
"id": 65144,
"name": "John Doe",
"email": "[Link]@[Link]"
},
"payment": {
"id": 2509,
"amount": 450.00,
"currency": "usd",
"method": "credit",
176
Amazon Simple Notification
Service Guía para desarrolladores
Implementación de las canalizaciones
de bifurcación de eventos de AWS
"card-network": "visa",
"card-number": "1234 5678 9012 3456",
"card-expiry": "10/2022",
"card-owner": "John Doe",
"card-cvv": "123"
},
"shipping": {
"id": 7600,
"time": 2,
"unit": "days",
"method": "courier"
},
"items": [{
"id": 6512,
"product": 8711,
"name": "Hockey Jersey - Large",
"quantity": 1,
"price": 400.00,
"subtotal": 400.00
}, {
"id": 9954,
"product": 7600,
"name": "Hockey Puck",
"quantity": 2,
"price": 25.00,
"subtotal": 50.00
}]
}
5. Para enviar una solicitud HTTPS a su punto de enlace de la API, pase la carga de evento de muestra
como entrada mediante la ejecución de un comando curl, por ejemplo:
La API devuelve la siguiente respuesta vacía, lo que indica que la ejecución es correcta:
{ }
177
Amazon Simple Notification
Service Guía para desarrolladores
Implementación de las canalizaciones
de bifurcación de eventos de AWS
3. Busque serverlessrepo-fork-example y, a continuación, elija CheckoutBucket.
4. Navegue por la jerarquía de directorios hasta que encuentre un archivo con la extensión .gz.
5. Para descargar el archivo, elija Actions (Acciones), Open (Abrir).
6. La canalización se configura con una función Lambda con la que se sanea la información de la tarjeta
de crédito por razones de conformidad.
Para verificar que la carga de JSON almacenada no contiene información de tarjeta de crédito,
descomprima el archivo.
Para verificar que el evento está indexado porque hace referencia a un pedido cuyo valor es superior
a 100 USD, en la página serverl-analyt-abcdefgh1ijk, elija Indices (Índices), checkout_events.
{
"id": 9917,
"date": "2019-03-26T[Link]-08:00",
"status": "confirmed",
"customer": {
"id": 56999,
178
Amazon Simple Notification
Service Guía para desarrolladores
Implementación de las canalizaciones
de bifurcación de eventos de AWS
"name": "Marcia Oliveira",
"email": "[Link]@[Link]"
},
"payment": {
"id": 3311,
"amount": 75.00,
"currency": "usd",
"method": "credit",
"card-network": "mastercard",
"card-number": "1234 5678 9012 3456",
"card-expiry": "12/2025",
"card-owner": "Marcia Oliveira",
"card-cvv": "321"
},
"shipping": {
"id": 9900,
"time": 20,
"unit": "days",
"method": "plane"
},
"items": [{
"id": 9993,
"product": 3120,
"name": "Hockey Stick",
"quantity": 1,
"price": 75.00,
"subtotal": 75.00
}]
}
6. Para enviar una solicitud HTTPS a su punto de enlace de la API, pase la carga de evento de muestra
como entrada mediante la ejecución de un comando curl, por ejemplo:
La API devuelve la siguiente respuesta vacía, lo que indica que la ejecución es correcta:
{ }
179
Amazon Simple Notification
Service Guía para desarrolladores
Suscripción de una canalización de eventos a un tema
En esta sección, se muestra cómo se puede utilizar la AWS Management Console para implementar una
canalización y, luego, suscribirse las canalizaciones de bifurcación de eventos de AWS a un tema de
Amazon SNS. Antes de comenzar, cree un tema de Amazon SNS (p. 27).
Para eliminar los recursos que componen una canalización, busque la canalización en la página
Applications (Aplicaciones) de la consola de AWS Lambda, expanda la sección SAM template (Plantilla
de SAM), elija CloudFormation stack (Pila de CloudFormation) y, a continuación, seleccione Other Actions
(Otras acciones), Delete Stack (Eliminar pila).
Temas
• Para implementar y suscribir la canalización de almacenamiento y copia de seguridad de
eventos (p. 180)
• Para implementar y suscribir la canalización de búsqueda y análisis de eventos (p. 182)
• Para implementar y suscribir la canalización de reproducción de eventos (p. 185)
Para el archivado y el análisis de eventos, Amazon SNS recomienda ahora utilizar su integración nativa
con Amazon Kinesis Data Firehose. Puede suscribir los flujos de entrega de Kinesis Data Firehose
a temas de SNS, lo que le permitirá enviar notificaciones a puntos de conexión de archivo y análisis,
como buckets de Amazon Simple Storage Service (Amazon S3), tablas de Amazon Redshift,
180
Amazon Simple Notification
Service Guía para desarrolladores
Suscripción de una canalización de eventos a un tema
Para obtener más información sobre la configuración de un flujo con un bucket de S3 como destino,
consulte S3DestinationConfiguration en la Referencia de la API de Amazon Kinesis Data Firehose.
Para obtener más información sobre la transformación de eventos y sobre la configuración del
almacenamiento en búfer, la compresión y el cifrado de eventos, consulte Creación de un flujo de entrega
de Amazon Kinesis Data Firehose en la Guía para desarrolladores de Amazon Kinesis Data Firehose.
Para obtener más información sobre el filtrado de eventos, consulte Políticas de filtro de suscripciones de
Amazon SNS (p. 84) en esta guía.
• DEBUG
181
Amazon Simple Notification
Service Guía para desarrolladores
Suscripción de una canalización de eventos a un tema
• ERROR
• INFO (predeterminado)
• WARNING
e. En TopicArn, ingrese el ARN del tema de Amazon SNS al que se debe suscribir esta instancia de
la canalización de bifurcación.
f. (Opcional) En StreamBufferingIntervalInSeconds y StreamBufferingSizeInMBs, escriba los valores
para configurar el almacenamiento en búfer de los eventos entrantes. Si no escribe ningún valor,
se utilizan 300 segundos y 5 MB.
g. (Opcional) Escriba una de las siguientes opciones de StreamCompressionFormat para comprimir
los eventos entrantes:
• GZIP
• SNAPPY
• UNCOMPRESSED (predeterminado)
• ZIP
h. (Opcional) En StreamPrefix, escriba el prefijo de cadena para asignar nombres a los archivos
almacenados en el bucket de copia de seguridad de S3. Si no escribe un valor, no se usa ningún
prefijo.
i. (Opcional) En SubscriptionFilterPolicy, ingrese la política de filtro de suscripciones de Amazon
SNS, en formato JSON, que se utilizará para filtrar los eventos entrantes. La política de filtro
decide qué eventos se almacenan en el bucket de copia de seguridad de S3. Si no escribe ningún
valor, no se utiliza el filtrado (se almacenan todos los eventos).
j. Elija I acknowledge that this app creates custom IAM roles, resource policies and deploys
nested applications (Confirmo que esta aplicación crea políticas de recursos o roles de
IAM personalizados e implementa aplicaciones anidadas) y, a continuación, elija Deploy
(Implementar).
En la página Estado de implementación para my-app, Lambda muestra el estado La aplicación se está
implementando.
Los mensajes publicados en su tema de Amazon SNS se almacenan en el bucket de copia de seguridad
de S3 aprovisionado de manera automática por la canalización de almacenamiento y copia de seguridad
de eventos.
Para el archivado y el análisis de eventos, Amazon SNS recomienda ahora utilizar su integración nativa
con Amazon Kinesis Data Firehose. Puede suscribir los flujos de entrega de Kinesis Data Firehose
a temas de SNS, lo que le permitirá enviar notificaciones a puntos de conexión de archivo y análisis,
como buckets de Amazon Simple Storage Service (Amazon S3), tablas de Amazon Redshift,
Amazon OpenSearch Service (OpenSearch Service) y otros. El uso de Amazon SNS con flujos de
entrega de Kinesis Data Firehose es una solución completamente administrada y sin código en la que no
se necesita el uso de funciones de AWS Lambda. Para obtener más información, consulte Distribución
ramificada a los flujos de entrega de Kinesis Data Firehose (p. 120).
182
Amazon Simple Notification
Service Guía para desarrolladores
Suscripción de una canalización de eventos a un tema
Para obtener más información sobre la configuración de un flujo con un índice como destino, consulte
ElasticsearchDestinationConfiguration en la Referencia de la API de Amazon Kinesis Data
Firehose.
Para obtener más información sobre la transformación de eventos y sobre la configuración del
almacenamiento en búfer, la compresión y el cifrado de eventos, consulte Creación de un flujo de entrega
de Amazon Kinesis Data Firehose en la Guía para desarrolladores de Amazon Kinesis Data Firehose.
Para obtener más información sobre el filtrado de eventos, consulte Políticas de filtro de suscripciones de
Amazon SNS (p. 84) en esta guía.
• DEBUG
• ERROR
• INFO (predeterminado)
• WARNING
d. (Opcional) En SearchDomainArn, ingrese el ARN del dominio de OpenSearch Service, un clúster
que configura la funcionalidad de computación y almacenamiento necesaria. Si no escribe ningún
valor, se creará un nuevo dominio con la configuración predeterminada.
183
Amazon Simple Notification
Service Guía para desarrolladores
Suscripción de una canalización de eventos a un tema
e. En TopicArn, ingrese el ARN del tema de Amazon SNS al que se debe suscribir esta instancia de
la canalización de bifurcación.
f. En SearchIndexName, ingrese el nombre del índice de OpenSearch Service para la búsqueda y el
análisis de eventos.
Note
• NoRotation (predeterminado)
• OneDay
• OneHour
• OneMonth
• OneWeek
La rotación de índice agrega una marca temporal al nombre del índice, lo que facilita el
vencimiento de los datos antiguos.
h. En SearchTypeName, ingrese el nombre del tipo de OpenSearch Service para organizar los
eventos en un índice.
Note
• GZIP
• SNAPPY
• UNCOMPRESSED (predeterminado)
• ZIP
k. (Opcional) En StreamPrefix, escriba el prefijo de cadena para asignar nombres a los archivos
almacenados en el bucket de mensajes fallidos de S3. Si no escribe un valor, no se usa ningún
prefijo.
184
Amazon Simple Notification
Service Guía para desarrolladores
Suscripción de una canalización de eventos a un tema
Para obtener más información sobre el filtrado de eventos, consulte Políticas de filtro de suscripciones de
Amazon SNS (p. 84) en esta guía.
185
Amazon Simple Notification
Service Guía para desarrolladores
Suscripción de una canalización de eventos a un tema
Note
• DEBUG
• ERROR
• INFO (predeterminado)
• WARNING
c. (Opcional) En ReplayQueueRetentionPeriodInSeconds, ingrese la cantidad de tiempo, en
segundos, en el que la cola de reproducción de Amazon SQS conserva el mensaje. Si no escribe
un valor, se usan 1 209 600 segundos (14 días).
d. En TopicArn, ingrese el ARN del tema de Amazon SNS al que se debe suscribir esta instancia de
la canalización de bifurcación.
e. En DestinationQueueName, ingrese el nombre de la cola de Amazon SQS a la que la función de
reproducción de Lambda reenvía los mensajes.
f. (Opcional) En SubscriptionFilterPolicy, ingrese la política de filtro de suscripciones de Amazon
SNS, en formato JSON, que se utilizará para filtrar los eventos entrantes. La política de filtro
decide qué eventos se almacenan en búfer para la reproducción. Si no escribe ningún valor, no se
utiliza el filtrado (todos los eventos se almacenan en búfer para la reproducción).
g. Elija I acknowledge that this app creates custom IAM roles, resource policies and deploys
nested applications (Confirmo que esta aplicación crea políticas de recursos o roles de
IAM personalizados e implementa aplicaciones anidadas) y, a continuación, elija Deploy
(Implementar).
Los mensajes publicados en su tema de Amazon SNS se almacenan en búfer para reproducirlos en la cola
de Amazon SQS aprovisionada de manera automática por la canalización de reproducción de eventos.
Note
186
Amazon Simple Notification
Service Guía para desarrolladores
Mensajería de texto móvil (SMS)
Temas
• Mensajería de texto móvil (SMS) (p. 187)
• Notificaciones de inserción en móviles (p. 268)
• Notificaciones por correo electrónico (p. 299)
Puede configurar las preferencias de SMS (p. 218) de la cuenta de AWS para adaptar las entregas de
SMS a sus casos de uso y su presupuesto. Por ejemplo, puede elegir si los mensajes están optimizados
en materia de costos o entrega fiable. También puede especificar las cuotas de gasto de las entregas de
mensajes individuales y las cuotas de gasto mensuales de su Cuenta de AWS.
Cuando así lo exijan la legislación y los reglamentos locales (como es el caso, por ejemplo, de los EE. UU.
y Canadá), los destinatarios de SMS tienen la posibilidad de cancelar su suscripción (p. 238), lo que
significa que eligen dejar de recibir mensajes SMS desde su Cuenta de AWS. Cuando un destinatario
cancela su suscripción, usted puede, dentro de unos límites, volver a confirmar el número de teléfono para
reanudar el envío de mensajes.
Amazon SNS es compatible con la mensajería SMS en varias regiones, y usted puede enviar
mensajes a más de 200 países y regiones. Para obtener más información, consulte Regiones y países
admitidos (p. 251) .
Temas
• Entorno de pruebas de SMS (p. 188)
• Identidades de origen de los mensajes SMS (p. 190)
• Solicitud de asistencia para mensajería SMS con Amazon SNS (p. 209)
• Configuración de las preferencias de mensajería SMS (p. 218)
• Envío de mensajes SMS (p. 221)
• Monitorización de la actividad de SMS (p. 232)
• Administración de números de teléfono y suscripciones a SMS (p. 238)
187
Amazon Simple Notification
Service Guía para desarrolladores
Entorno de pruebas de SMS
Cuando su cuenta se mueve fuera del entorno de pruebas, estas restricciones se eliminan y puede enviar
mensajes SMS a cualquier destinatario.
Temas
• Adición y verificación de números de teléfono en el entorno de pruebas de SMS (p. 188)
• Eliminación de números de teléfono del entorno de pruebas de SMS (p. 189)
• Salida del entorno de pruebas de SMS (p. 189)
Al igual que con las cuentas que no se encuentran en el entorno de pruebas de SMS, se
necesita una identidad de origen (p. 190) antes de enviar mensajes SMS a destinatarios
en algunos países o regiones. Para obtener más información, consulte Regiones y países
admitidos (p. 251).
Los ID de origen incluyen ID de remitente (p. 191) y diferentes tipos de números de
origen (p. 191). Para ver los números de origen existentes, en el panel de navegación de la
consola de Amazon SNS, elija Números de origen. En este momento, los ID de remitente no
aparecen en esta lista.
188
Amazon Simple Notification
Service Guía para desarrolladores
Entorno de pruebas de SMS
5. En Detalles de destino, ingrese el código del país y el número de teléfono, especifique el idioma que
desea utilizar para el mensaje de verificación y, a continuación, elija Agregar número de teléfono.
Amazon SNS envía una contraseña de uso único (OTP) al número de teléfono de destino. Si el
número de teléfono de destino no recibe la OTP en 15 minutos, elija Reenviar código de verificación.
Puede enviar el OTP al mismo número de teléfono de destino hasta cinco veces cada 24 horas.
6. En el cuadro Código de verificación, ingrese el OTP enviado al número de teléfono de destino y, a
continuación, elija Verificar número de teléfono.
Para eliminar números de teléfono de destino del entorno de pruebas de SMS, siga estos pasos:
1. Espere 24 horas después de verificar el número de teléfono (p. 188) o 24 horas después de su
último intento de verificación.
2. Inicie sesión en la consola de Amazon SNS.
3. En el menú de la consola, elija una región que admita la mensajería SMS de AWS (p. 251) en la que
agregó un número de teléfono de destino.
4. En el panel de navegación, elija Text messaging (SMS) (Mensajería de texto (SMS)).
5. En la página Mensajería de texto móvil (SMS), en Números de teléfono de destino de entorno de
pruebas, elija el número de teléfono que desea eliminar y, a continuación, Eliminar número de
teléfono.
6. Para confirmar que desea eliminar el número de teléfono, ingrese delete me y, a continuación, elija
Eliminar.
Si han transcurrido 24 horas o más desde que verificó o intentó verificar el número de teléfono de
destino, se elimina y Amazon SNS actualiza la lista de sus números de teléfono de destino.
7. Repita estos pasos en cada región en la que haya agregado el número de teléfono de destino y que
ya no tenga previsto utilizar.
Para solicitar la salida de su cuenta de AWS del entorno de pruebas de SMS, siga estos pasos:
189
Amazon Simple Notification
Service Guía para desarrolladores
Identidades de origen
Para obtener instrucciones sobre cómo publicar mensajes SMS en uno o más números de teléfono,
consulte Publicación en un teléfono móvil (p. 225).
3. En la página Mensajería de texto móvil (SMS) de la consola de Amazon SNS, en Información de la
cuenta, elija Salir de entorno de pruebas de SMS.
El centro AWS Support se abre y crea un caso. La opción Aumento de límites de servicio ya está
seleccionada y el tipo de límite se establece en Mensajería de texto SNS.
4. En Detalles del caso, proporcione la siguiente información:
• Un enlace al sitio o el nombre de la aplicación desde la que planea enviar mensajes SMS
• El tipo de mensajes que tiene previsto enviar: contraseñas de un solo uso, promocionales o
transaccionales
• La Región de AWS desde la que tiene previsto enviar mensajes SMS
• Los países o regiones a los que tiene previsto enviar mensajes SMS
• Una descripción de cómo sus clientes optan por recibir mensajes suyos
• Cualquier plantilla de mensaje que planee utilizar
5. En Requests (Solicitudes), realice el siguiente procedimiento:
a. En Región, elija la opción Región de AWS en la que desea sacar su Cuenta de AWS del entorno
de pruebas de SMS.
b. Para Resource Type (Tipo de recurso), elija General Limits (Límites generales).
c. En Límite, elija Salir del entorno de pruebas de SMS.
d. (Opcional) Para presentar otras solicitudes, como un aumento del límite, elija Agregar otra
solicitud. A continuación, elija las opciones de la solicitud.
6. (Opcional) En Descripción del caso, ingrese cualquier información adicional relevante sobre la
solicitud.
7. En Opciones de contacto, elija su idioma de contacto preferido.
8. Elija Submit (Enviar).
El equipo de AWS Support proporcionará una respuesta inicial a su solicitud antes de 24 horas.
Para evitar que nuestros sistemas sean utilizados para enviar contenido no solicitado o malicioso,
consideramos cada solicitud con detenimiento. Si podemos, accederemos a su solicitud dentro de ese
plazo de 24 horas. Sin embargo, si necesitamos que nos brinde más información, puede que la solicitud
tarde más tiempo en concederse.
Si su caso de uso no se ajusta a nuestras políticas, es posible que no podamos atender su solicitud.
Note
La mensajería SMS de Amazon SNS está disponible en regiones en las que Amazon Pinpoint no
es compatible en este momento. Si opera en Europa (Estocolmo), Medio Oriente (Baréin), Europa
(París), América del Sur (São Paulo) o EE. UU. Oeste (Norte de California), abra la consola
190
Amazon Simple Notification
Service Guía para desarrolladores
Identidades de origen
de Amazon Pinpoint en la región EE. UU. Este (Norte de Virginia) para registrar su empresa y
campaña de 10DLC, pero no solicite un número 10DLC. En su lugar, abra un caso en el centro
de AWS Support para solicitar un número 10DLC en la región de AWS en la que utiliza o piensa
utilizar Amazon SNS para enviar mensajes SMS. Para obtener más información sobre cómo
solicitar identidades de origen, consulte Solicitud de asistencia para mensajería SMS con Amazon
SNS (p. 209).
ID de remitente
El ID de remitente es un nombre alfabético que identifica al remitente de un mensaje SMS. Cuando se
envía un mensaje SMS mediante un ID de remitente y el destinatario se encuentra en una zona donde se
admite la autenticación mediante ID de remitente, este último aparece en el dispositivo del destinatario en
lugar de un número de teléfono. El ID de remitente proporciona al destinatario del SMS más información
sobre el remitente que un número de teléfono, un código largo o un código corto.
Important
AWS prohíbe la suplantación de SMS, en la que el ID de remitente se utiliza para suplantar a otra
persona, empresa o producto. Utiliza solo un ID de remitente que represente una marca o marca
comercial de su propiedad.
El uso de un ID de remitente no supone ningún cargo adicional. Sin embargo, la asistencia y los requisitos
de autenticación del ID de remitente varían. En varios mercados importantes (tales como Canadá, China y
los Estados Unidos, entre otros), no se admite el uso de ID de remitente. En algunas zonas, se exige que
las empresas que envían mensajes SMS a clientes individuales utilicen un ID de remitente previamente
registrado en una agencia reguladora o en un grupo del sector.
Números de origen
Un número de origen es una cadena numérica con la que se identifica el número de teléfono del remitente
de un mensaje SMS. Cuando envía un mensaje SMS con un número de origen, el dispositivo del
destinatario muestra el número de origen como el número de teléfono del remitente. Puede especificar
diferentes números de origen por caso de uso.
Tip
Para ver una lista completa de todos los números existentes de origen en su cuenta de AWS, en
el panel de navegación de la consola de Amazon SNS, elija Números de origen.
La compatibilidad con los números de origen no está disponible en los países en los que la legislación local
exige el uso de ID de remitente (p. 191) en lugar de números de origen.
Temas
• 10DLC (p. 191)
• Números de teléfono gratuitos (p. 206)
• Códigos cortos (p. 207)
• Códigos largos de persona a persona (P2P) (p. 208)
• Comparación de números de producto en EE. UU. (p. 208)
10DLC
Los operadores estadounidenses ya no admiten el uso de mensajería SMS de aplicación a persona (A2P)
a través de códigos largos locales sin registrar. En el caso de la mensajería SMS A2P de gran volumen, los
191
Amazon Simple Notification
Service Guía para desarrolladores
Identidades de origen
operadores estadounidenses ofrecen un nuevo tipo de código largo llamado códigos largos de 10 dígitos
(10DLC).
¿Qué es 10DLC?
10DLC es un tipo de código largo que se registra con los operadores para admitir mensajería SMS A2P
de gran volumen con el formato de número de teléfono de 10 dígitos. Amazon SNS ya no ofrece códigos
largos locales como un producto SMS y, en su lugar, ofrece 10DLC. 10DLC no lo afecta si solo usa
códigos cortos y números gratuitos.
10DLC es un número de teléfono de 10 dígitos que se utiliza solo en Estados Unidos. Los mensajes
enviados desde un 10DLC a los destinatarios muestran un número de 10 dígitos como remitente. A
diferencia de los números gratuitos, 10DLC admite mensajería transacciones y promocional, y puede
incluir cualquier código de área de EE. UU.
Si tiene códigos largos locales existentes, puede solicitar que estos se habiliten para 10DLC. Para ello,
complete el proceso de registro de 10DLC y, a continuación, envíe un ticket de asistencia. En caso de que
surja un problema al habilitar el código largo para 10DLC, se lo notificará y se le pedirá que solicite un
nuevo 10DLC a través de la consola de Amazon Pinpoint (no Amazon SNS). Si quiere obtener información
acerca de cómo presentar un ticket de asistencia para convertir un código largo, consulte Asociación de un
código largo con una campaña 10DLC (p. 203).
Para utilizar un número de 10DLC, primero registre su empresa y cree una campaña de 10DLC mediante
la consola de Amazon Pinpoint (no Amazon SNS). AWS comparte esta información con The Campaign
Registry, un tercero que aprueba o rechaza su registro según la información. En algunos casos, el registro
ocurre de inmediato. Por ejemplo, si ya se ha registrado en The Campaign Registry, es posible que ya
tengan su información. Sin embargo, algunas campañas pueden tardar una semana o más en aprobarse.
Después de que su empresa y su campaña 10DLC se aprueben, puede comprar un número 10DLC
y asociarlo a su campaña. Solicitar un 10DLC también puede tardar hasta una semana en aprobarse.
Aunque puede asociar varios 10DLC a una sola campaña, no puede usar el mismo 10DLC en varias
campañas. Para cada campaña que cree, necesita tener un 10DLC único.
Important
Si utiliza códigos largos locales o un grupo compartido de números, debe cambiar a 10DLC.
No lo afecta si solo utiliza códigos cortos y números gratuitos. Para obtener más información
sobre cómo utiliza The Campaign Registry, consulte la página Preguntas frecuentes en
[Link].
Capacidades de 10DLC
Las posibilidades de los números de teléfono 10DLC dependen de los operadores de telefonía móvil que
utilicen sus destinatarios. AT&T establece un límite en el número de partes de mensajes que se pueden
enviar cada minuto para cada campaña. T-Mobile proporciona un límite diario de los mensajes que se
pueden enviar para cada empresa, sin límite en el número de partes de mensajes que se pueden enviar
por minuto. Verizon no ha publicado los límites de rendimiento, pero utiliza un sistema de filtrado para
10DLC que está diseñado para eliminar el spam, los mensajes no solicitados y el contenido abusivo, con
menos énfasis en el rendimiento real de los mensajes.
Las nuevas campañas 10DLC que se asocian a empresas no verificadas pueden enviar 75 partes de
mensajes por minuto a los destinatarios que utilizan AT&T y 2000 mensajes por día a los destinatarios que
utilizan T-Mobile. El límite de empresa se comparte en todas sus campañas 10DLC. Por ejemplo, si ha
registrado una empresa y dos campañas, la asignación diaria de 2000 mensajes a los clientes de T-Mobile
se comparte entre esas campañas. Del mismo modo, si registra la misma empresa en más de una cuenta
de AWS, la asignación diaria se comparte entre esas cuentas.
Si sus necesidades de rendimiento superan estos límites, puede solicitar que se verifique el registro de
su empresa. Al verificar el registro de su empresa, un proveedor de verificación externo analiza los datos
192
Amazon Simple Notification
Service Guía para desarrolladores
Identidades de origen
Su tasa de rendimiento real variará en función de varios factores, por ejemplo, si su empresa se ha
verificado o no, sus tipos de campaña y su puntuación de verificación. El siguiente diagrama de flujo
muestra las tasas de rendimiento para varias situaciones.
Las tasas de rendimiento para 10DLC las determinan los operadores de telefonía móvil de EE. UU. en
colaboración con Campaign Registry. Ni Amazon SNS ni ningún otro servicio de envío de SMS puede
aumentar el rendimiento de 10DLC más allá de estas tasas. Si necesita altas tasas de rendimiento y de
capacidad de entrega en todos los operadores de EE. UU., le recomendamos que utilice un código corto.
Para obtener más información sobre la obtención de un código corto, consulte Solicitud de códigos cortos
dedicados para mensajería por SMS con Amazon SNS (p. 210).
Introducción a 10DLC
Utilice la consola de Amazon Pinpoint (no Amazon SNS) para solicitar su 10DLC. Siga estos pasos con el
fin de configurar 10DLC para utilizar con sus campañas 10DLC.
1. Registre su empresa.
193
Amazon Simple Notification
Service Guía para desarrolladores
Identidades de origen
Para poder solicitar un 10DLC, su empresa debe estar registrada en The Campaign Registry; para
obtener información, consulte Registro de una empresa (p. 194). El registro suele ser instantáneo a
menos que The Campaign Registry necesite más información. Hay una cuota de registro única para
registrar su empresa, que se muestra en la página de registro. Este pago por única vez se paga por
separado de los cargos mensuales de la campaña y 10DLC.
Note
La mensajería SMS de Amazon SNS está disponible en regiones en las que Amazon Pinpoint
no es compatible en este momento. En estos casos, abra la consola de Amazon Pinpoint en la
región EE. UU. Este (Norte de Virginia) para registrar su empresa y campaña de 10DLC, pero
no solicite un número 10DLC. En su lugar, abra un caso en el centro de AWS Support para
solicitar un número 10DLC en la región de AWS en la que utiliza o piensa utilizar Amazon SNS
para enviar mensajes SMS. Para obtener información sobre las regiones donde está disponible
Amazon Pinpoint, consulte Cuotas y puntos de enlace de Amazon Pinpointen la referencia
general de AWS.
2. (Opcional, pero recomendado) Solicite la verificación
Si el registro de su empresa se realiza correctamente, puede empezar a crear campañas 10DLC de bajo
volumen y de uso mixto. Estas campañas pueden enviar 75 mensajes por minuto a los destinatarios
que utilizan AT&T, y su empresa registrada puede enviar 2000 mensajes al día a los destinatarios que
utilizan T-Mobile. Si su caso de uso requiere una tasa de rendimiento que supere estos valores, puede
solicitar la verificación del registro de su empresa. Verificar el registro de su empresa puede aumentar
las tasas de rendimiento de sus empresas y campañas, pero no está garantizado que lo haga. Para
obtener más información sobre la verificación, consulte Verificación de su registro de 10DLC de Amazon
SNS (p. 197).
3. Registre su campaña.
Después de hacerlo, cree una campaña 10DLC y asóciela a una de sus empresas registradas. Esta
campaña se envía a The Campaign Registry para que la apruebe. En la mayoría de los casos, la
aprobación de la campaña 10DLC es instantánea, a menos que The Campaign Registry necesite más
información. Para obtener más información, consulte Registro de una campaña de 10DLC (p. 199).
4. Solicite su número 10DLC.
Una vez aprobada su campaña 10DLC, puede solicitar un 10DLC y asociar ese número a la campaña
aprobada. En su campaña 10DLC, solo se puede usar un número aprobado para ella. Consulte
Solicitud de números 10DLC, números gratuitos y códigos largos P2P para mensajes SMS con Amazon
SNS (p. 213).
Hay cuotas mensuales y de registro asociadas al uso de 10DLC, como el registro de su empresa y la
campaña 10DLC. Estos son independientes de cualquier otra tarifa mensual que cobra AWS. Para obtener
información, consulte la página Precios de SMS de Amazon SNS en todo el mundo.
La mensajería SMS de Amazon SNS está disponible en regiones en las que Amazon Pinpoint
no es compatible en este momento. En estos casos, abra la consola de Amazon Pinpoint en la
región EE. UU. Este (Norte de Virginia) para registrar su empresa y campaña de 10DLC, pero no
solicite un número 10DLC. En su lugar, abra un caso en el centro de AWS Support para solicitar
un número 10DLC en la región de AWS en la que utiliza o piensa utilizar Amazon SNS para enviar
mensajes SMS. Para obtener información sobre las regiones donde está disponible Amazon
194
Amazon Simple Notification
Service Guía para desarrolladores
Identidades de origen
Al registrar su empresa o marca, se devuelve uno de los dos estados: Unverified (No verificado) o Verified
(Verificado). Si el estado del registro de su empresa es Unverified (No verificado), significa que ha habido
un problema con el registro. Por ejemplo, el nombre de la empresa registrada que ha proporcionado podría
no coincidir exactamente con el nombre registrado de la empresa asociada al identificador fiscal que ha
proporcionado. Si encuentra algún problema con los datos de registro de su empresa, puede corregirlos.
Para obtener más información sobre la modificación de los detalles de registro de su empresa, consulte
Edición o eliminación de una empresa registrada (p. 198).
Si el estado del registro de su empresa es Verified (Verificado), los datos de registro que ha proporcionado
son correctos y puede empezar a crear campañas 10DLC.
Tiene que registrar su empresa solo una vez. Una vez registrada, podrá editar la información de su
empresa y de sus contactos. Para eliminar una empresa registrada, cree un caso con AWS Support.
Para obtener más información sobre cómo editar o eliminar los datos de la empresa, consulte Edición o
eliminación de una empresa registrada (p. 198).
1. Inicie sesión en AWS Management Console y abra la consola de Amazon Pinpoint en https://
[Link]/pinpoint/.
2. En el panel de navegación, en SMS and voice (SMS y voz), elija Phone numbers (Números de
teléfono).
3. En la pestaña 10DLC campaigns (Campañas 10DLC), elija Register company (Registrar empresa).
Note
• En Legal company name (Nombre jurídico de la empresa), ingrese el nombre con el que está
registrada la empresa. El nombre que ingrese debe coincidir exactamente con el nombre de la
empresa que está asociado con el número de identificación fiscal que proporcione.
Important
Asegúrese de utilizar el nombre jurídico exacto de su empresa. Una vez enviada, no podrá
cambiar esta información. Una información incorrecta o incompleta puede hacer que su
registro se retrase o se deniegue.
• En What type of legal form is this organization (Qué tipo de forma jurídica tiene esta organización),
elija la opción que mejor describa a su empresa.
Note
195
Amazon Simple Notification
Service Guía para desarrolladores
Identidades de origen
profit (Empresa privada con ánimo de lucro), independientemente de la forma jurídica real de
su organización.
• Si eligió Public for profit (Empresa pública con ánimo de lucro) en el paso anterior, ingrese el
símbolo bursátil de la empresa y la bolsa en la que cotiza.
• En Country of registration (País de registro), elija el país donde está registrada la empresa.
• En Doing Business As (DBA) o brand name (Hacer negocios como [DBA] o nombre de marca),
ingrese cualquier otro nombre con el que su empresa haga negocios.
• En Tax ID (Identificador fiscal), ingrese el identificador fiscal de su empresa. El identificador que
ingrese dependerá del país en el que esté registrada su empresa.
• Si está registrando una entidad estadounidense o no estadounidense que tiene un número de
identificación de empleador del IRS (EIN), ingrese su EIN de nueve dígitos. El nombre jurídico de
la empresa, el EIN y la dirección física que ingrese deben coincidir con la información de empresa
que está registrada en el IRS.
• Si está registrando una entidad canadiense, ingrese su número de corporación federal o
provincial. No ingrese el número de empresa (BN) que le proporciona la CRA. El nombre jurídico
de la empresa, el número de la corporación y la dirección física que ingrese deben coincidir con la
información de empresa que está registrada en Corporations Canada.
• Si está registrando una entidad con sede en otro país, ingrese el identificador fiscal principal de su
país. En muchos países, es la parte numérica de su número de identificación del IVA.
• En Vertical (Sector), elija la categoría que mejor describa la empresa que va a registrar.
5. En la sección Contact info (Información de contacto), haga lo siguiente:
Note
Si el estado del registro de su empresa es Verified (Verificado), puede empezar a crear campañas 10DLC
de bajo volumen y de uso mixto. Puede utilizar este tipo de campaña para enviar hasta 75 mensajes por
minuto a los destinatarios que utilizan AT&T y su empresa registrada puede enviar 2000 mensajes al día
a los destinatarios que utilizan T-Mobile. También puede enviar mensajes a destinatarios que utilicen
otros operadores estadounidenses, como Verizon y US Cellular. Estos operadores no hacen cumplir
estrictamente los límites de rendimiento, pero sí supervisan intensamente los mensajes 10DLC en busca
de signos de spam y abuso.
Si su caso de uso requiere una tasa de rendimiento que supere estos valores, puede solicitar una
comprobación adicional del registro de su empresa. Para obtener más información sobre la verificación del
registro de su marca, consulte Verificación de su registro de 10DLC de Amazon SNS (p. 197).
196
Amazon Simple Notification
Service Guía para desarrolladores
Identidades de origen
Si el estado del registro de su empresa es Unverified (No verificado), significa que ha habido problemas
con la información que ha proporcionado. Compruebe la información que ha proporcionado y confirme que
todos los campos contienen la información correcta. Puede realizar cambios en algunas partes del registro
de su empresa en la consola de Amazon Pinpoint. Para obtener más información sobre la modificación de
los detalles de registro de su empresa, consulte Edición de un registro de empresa 10DLC (p. 198).
Si el registro de la empresa es correcto y quiere registrar una campaña con mayor capacidad de
rendimiento, debe examinar el registro de la empresa.
Cuando verifica su registro, una organización externa analiza los detalles de la empresa que ha
proporcionado y devuelve una puntuación de verificación. Una alta puntuación de verificación puede
conllevar mayores tasas de rendimiento para su empresa 10DLC y las campañas asociadas a ella. No
obstante, no está garantizado que la verificación de antecedentes aumente su rendimiento.
1. Inicie sesión en AWS Management Console y abra la consola de Amazon Pinpoint en https://
[Link]/pinpoint/.
2. En el panel de navegación, en SMS and voice (SMS y voz), elija Phone numbers (Números de
teléfono).
3. En la pestaña 10DLC campaigns (Campañas 10DLC), elija la empresa 10DLC que desee verificar.
4. En la página de detalles de la empresa, hacia el final de la página, elija Apply for vetting (Solicitar
verificación).
5. En la ventana Apply for additional vetting (Solicitar investigación adicional), elija Submit (Enviar).
Para las empresas con sede en EE. UU., el proceso de verificación suele durar alrededor de un
minuto. En el caso de las empresas que no tienen sede en EE. UU., el proceso de verificación puede
llevar mucho más tiempo, según la disponibilidad de los datos de ese país.
Después de enviar una solicitud de verificación, volverá a la página de detalles de la empresa. La sección
Company vetting results (Resultados de verificación de la empresa) muestra el estado y los resultados
de su solicitud de verificación. Cuando el proceso de verificación se completa, esta tabla muestra una
puntuación de verificación en la columna Score (Puntuación). Su puntuación de verificación determina
su capacidad de rendimiento de 10DLC. Su rendimiento varía en función del tipo de campaña que cree.
Si crea campañas 10DLC de uso mixto o relacionadas con el marketing, debe tener una puntuación de
verificación más alta que la que necesitaría para otros tipos de campaña con el fin de lograr altas tasas
de rendimiento. Para obtener más información sobre las capacidades de los números de teléfono 10DLC,
consulte Capacidades de 10DLC (p. 192).
Si cambia los datos del registro de su empresa después de completar el proceso de verificación, puede
solicitar que se vuelva a verificar su registro. Si solo cambia el sector para el registro de su empresa, su
puntuación de verificación no cambiará. Si cambia algún dato que no sea el sector, el resultado de su
verificación podría cambiar. En cualquier caso, se le cobrará de nuevo la tarifa única de verificación.
197
Amazon Simple Notification
Service Guía para desarrolladores
Identidades de origen
Si aparece un mensaje de error después de editar los datos de registro de empresa, podría haber otros
problemas con el registro. Puede abrir un ticket con AWS Support para solicitar más información.
1. Inicie sesión en AWS Management Console y abra la consola de Amazon Pinpoint en https://
[Link]/pinpoint/.
2. En el panel de navegación, en SMS and voice (SMS y voz), elija Phone numbers (Números de
teléfono).
3. En la pestaña 10DLC campaigns (Campañas 10DLC), en la lista de campañas, elija el nombre de la
empresa cuyos detalles desea editar.
4. Elija Edit (Editar).
5. Modifique la información de registro según sea necesario. Elija Re-submit (Volver a enviar) cuando
haya terminado.
Note
Cuando vuelva a enviar sus datos de registro, se le cobrará una cuota de registro único.
Actualmente, esta cuota de registro es de 4 USD.
1. Inicie sesión en AWS Management Console y abra la consola de Amazon Pinpoint en https://
[Link]/pinpoint/.
2. En el panel de navegación, en SMS and voice (SMS y voz), elija Phone numbers (Números de
teléfono).
3. En la pestaña 10DLC campaigns (Campañas 10DLC), elija Request to delete company (Solicitud para
eliminar empresa).
4. Confirme que desea continuar; para ello, elija de nuevo Request to delete company (Solicitud para
eliminar empresa) para abrir AWS Support Center.
5. Para el tipo de caso, elija Aumento de límites de servicio.
6. Para el tipo de límite, elija Pinpoint.
7. En la sección Requests (Solicitudes), elija el valor de Region (Región) y, a continuación para Limit
(Límite), elija 10DLC - request to update/delete 10DLC company or campaign (10DLC: solicitud para
actualizar o eliminar empresa o campaña 10DLC).
8. Deje vacío el campo New limit value (Nuevo valor límite).
9. En Use case description (Descripción del caso de uso), ingrese el nombre de empresa que desea
eliminar y, a continuación, proporcione los detalles de lo que desea que se haga.
10. En Contact options (Opciones de contacto), en Preferred contact language (Idioma de contacto
preferido), elija el idioma que prefiera utilizar para comunicarse con el equipo de AWS Support.
198
Amazon Simple Notification
Service Guía para desarrolladores
Identidades de origen
11. En Contact method (Método de contacto), elija el método preferido de contacto para comunicarse con
el equipo de AWS Support.
12. Elija Submit (Enviar).
Cuando registra una campaña 10DLC, proporciona una descripción de su caso de uso, así como las
plantillas de mensajes que piensa utilizar. Para poder crear y registrar una campaña 10DLC, primero debe
registrar su empresa. Para obtener información sobre el registro de su empresa, consulte Registro de una
empresa (p. 194).
Note
Después de registrar su empresa, Amazon Pinpoint muestra uno de los dos estados del registro:
Verified (Verificado) o Unverified (No verificado). Solo puede completar el proceso de registro de
la campaña 10DLC si el estado del registro de su empresa es Verified (Verificado). Podrá crear
campañas de uso mixto de bajo volumen.
Si el estado es Unverified (No verificado), suele significar que algunos de los datos que
proporcionó al registrar su empresa eran incorrectos. No podrá crear campañas 10DLC mientras
su empresa tenga este estado. Puede modificar el registro de su empresa para intentar solucionar
los problemas con el registro. Para obtener más información sobre la modificación de los registros
de empresa 10DLC, consulte Edición o eliminación de una empresa registrada (p. 198).
En esta página, primero proporciona los detalles sobre la empresa para la que está creando la campaña
10DLC y, a continuación, del caso de uso de la propia campaña. La información de esta página se
proporciona a The Campaign Registry para que la apruebe.
En esta sección, elegirá la empresa para la que está creando la campaña 10DLC y proporcionará más
detalles.
1. Inicie sesión en AWS Management Console y abra la consola de Amazon Pinpoint en https://
[Link]/pinpoint/.
2. En SMS and voice (SMS y voz), elija Phone numbers (Números de teléfono).
3. En la pestaña 10DLC campaigns (Campañas 10DLC), elija Create a 10DLC campaign (Crear una
campaña 10DLC).
4. En la página Create a 10DLC campaign (Crear una campaña 10DLC), en la sección Campaign info
(Información de la campaña), haga lo siguiente:
a. En Nombre de la empresa, elige la empresa para la que está creando esta campaña. Si aún no
ha registrado la empresa, debe hacerlo. Para obtener más información sobre el registro de una
empresa, consulte Registro de una empresa (p. 194).
b. En 10DLC campaign name (Nombre de campaña 10DLC), ingrese un nombre para la campaña.
c. Para Vertical (Sector), elija la opción que mejor represente a su empresa.
d. Para Help message (Mensaje de ayuda), ingrese el mensaje que recibirán sus clientes si envían
la palabra clave «HELP» a su número de teléfono 10DLC.
e. Para Stop message (Mensaje de detención), ingrese el mensaje que recibirán sus clientes si
envían la palabra clave «STOP» a su número de teléfono 10DLC.
Tip
Sus clientes pueden responder a sus mensajes con la palabra «HELP» para saber más
sobre los mensajes que les envía. También pueden responder «STOP» para dejar de
recibir mensajes suyos. Los operadores de telefonía móvil de EE. UU. le exigen que
responda a estas dos palabras clave.
199
Amazon Simple Notification
Service Guía para desarrolladores
Identidades de origen
a. Para Use case type (Tipo de caso de uso), si tiene un caso de uso relacionado con
organizaciones benéficas, elija Special (Especial). En caso contrario, elija Standard (Estándar).
b. En Caso de uso, elija un caso de uso que se asemeje más a su campaña en la lista de casos de
uso preestablecidos. La tarifa mensual por cada caso de uso aparece junto al nombre del caso de
uso.
Note
Al lado de cada tipo de caso de uso se muestra el cargo mensual por el registro de la
campaña 10DLC. La mayoría de los tipos de campaña 10DLC tienen el mismo cargo
mensual. El cargo por registrar casos de uso mixto de bajo volumen es menor que el
de otros tipos de casos de uso. Sin embargo, las campañas mixtas de bajo volumen
admiten tasas de rendimiento más bajas que otros tipos de campañas.
c. Ingrese al menos un Sample SMS message (Mensaje SMS de muestra). Este es el mensaje de
ejemplo que piensa enviar a sus clientes. Si tiene previsto utilizar varias plantillas de mensajes
para esta campaña 10DLC, inclúyalas también.
Important
Asegúrese de que los atributos que elija sean los adecuados para su campaña.
Indique si cada uno de los siguientes puntos se aplica a la campaña que está registrando:
• Registro de suscriptores: los suscriptores pueden optar por recibir mensajes sobre esta campaña.
• Exclusión de suscriptores: los suscriptores pueden optar por dejar recibir mensajes sobre esta
campaña.
• Ayuda para suscriptores: los suscriptores pueden ponerse en contacto con el remitente del mensaje
después de enviar la palabra clave HELP.
• Grupo de números: en esta campaña de 10DLC, se utilizan más de 50 números de teléfono.
• Préstamo directo o acuerdo de préstamo: en la campaña, se incluye información sobre préstamos
directos u otros acuerdos de préstamo.
• Enlace integrado: en la campaña 10DLC, se incluye un enlace integrado. Los enlaces de
acortadores de URL comunes, como TinyUrl o [Link], no están permitidos. Sin embargo, puede
utilizar acortadores de URL que ofrecen dominios personalizados.
• Embedded phone number (Número de teléfono insertado): la campaña incluye un número de
teléfono insertado que no es un número de asistencia al cliente.
• Marketing de filiales: en la campaña 10DLC, se incluye información de marketing de filiales.
200
Amazon Simple Notification
Service Guía para desarrolladores
Identidades de origen
• Contenido restringido por edad: en la campaña 10DLC, se incluye contenido restringido por edad
según lo definido por las directrices del operador y de la Asociación de Telecomunicaciones
Celulares e Internet (CTIA).
7. Seleccione Create (Crear).
Tras enviar los datos de registro de su campaña, se abre la página de SMS y voz. Aparecerá un
mensaje en el que se indica que su campaña se ha enviado y está en revisión. Puede ver el estado
de su solicitud en la pestaña Campañas 10DLC. Puede verificar el estado de su registro en la pestaña
10DLC, que será una de las siguientes:
• Activa: Se ha aprobado su campaña 10DLC. Puede solicitar un número de teléfono 10DLC y asociar
ese número a su campaña. Para obtener más información, consulte Solicitud de números 10DLC,
números gratuitos y códigos largos P2P para mensajes SMS con Amazon SNS (p. 213).
• Pending (Pendiente): su campaña 10DLC aún no se ha aprobado. En algunos casos, la aprobación
puede tardar una semana o más. Si el estado cambia, la consola de Amazon Pinpoint refleja ese
cambio. No le notificamos cambios de estado.
• Rejected (Rechazada): su campaña 10DLC se ha rechazado. Para obtener más información, envía
una solicitud de asistencia que incluya el ID de campaña de la campaña rechazada.
• Suspendida: uno o más operadores han suspendido su campaña 10DLC. Para obtener más
información, envía una solicitud de asistencia que incluya el ID de campaña de la campaña
suspendida. Amazon Pinpoint no incluye motivos de suspensión en la consola y no le notificamos si
su campaña se suspende.
8. Si se aprueba su campaña 10DLC, puede solicitar un número 10DLC y asociarlo a esa campaña
aprobada. Para obtener información acerca de la solicitud de un número 10DLC, consulte Solicitud
de números 10DLC, números gratuitos y códigos largos P2P para mensajes SMS con Amazon
SNS (p. 213).
Cuando registre una empresa, estará disponible en su cuenta de AWS en todas las regiones de AWS. No
obstante, no ocurre lo mismo con las campañas 10DLC. Una campaña 10DLC solo puede utilizarse en la
región de AWS en la que se registró.
Si tiene previsto utilizar 10DLC en más de una región de AWS, deberá registrar campañas 10DLC distintas
en cada una de ellas. Este paso es necesario para cumplir los requisitos del operador. Se le cobra por
cada campaña que registre, aunque el caso de uso sea exactamente el mismo.
Registrar varias campañas tiene la ventaja añadida de aumentar sus tasas de rendimiento para los
mensajes que envíe a los destinatarios que utilicen AT&T como su operador de telefonía móvil, ya que
AT&T proporciona tasas de rendimiento de 10DLC para cada campaña. Compárelo con la forma en que T-
Mobile gestiona el rendimiento de 10DLC, que se basa en una asignación diaria de mensajes para cada
empresa (independientemente del número de campañas).
Puede editar la respuesta HELP, la respuesta STOP y los mensajes de ejemplo de una campaña 10DLC
mediante la consola de Amazon Pinpoint. También puede eliminar las campañas 10DLC mediante la
consola.
Una vez aprobada la campaña, podrá modificar los mensajes HELP, STOP y de muestra. También
puede agregar mensajes de ejemplo adicionales. Los cambios en estos campos no requieren una nueva
aprobación de Campaign Registry ni de los operadores. No podrá modificar ningún otro campo una vez
aprobada la campaña 10DLC.
201
Amazon Simple Notification
Service Guía para desarrolladores
Identidades de origen
Puede tener un máximo de cinco mensajes de muestra. No se puede reducir el número de mensajes de
ejemplo que ha registrado originalmente. Por ejemplo, si ha registrado su campaña con tres mensajes
SMS de muestra, no puede reducir el número de mensajes SMS de muestra a menos de tres.
Note
Si desea modificar cualquier campo que no sea el de los mensajes HELP, STOP y de muestra,
deberá primero eliminar la campaña 10DLC y, a continuación, volver a crearla para incluir la
información actualizada.
1. Inicie sesión en AWS Management Console y abra la consola de Amazon Pinpoint en https://
[Link]/pinpoint/.
2. En el panel de navegación, en SMS and voice (SMS y voz), elija Phone numbers (Números de
teléfono).
3. En la pestaña 10DLC campaigns (Campañas 10DLC), elija la campaña 10DLC que desee editar.
4. En la sección Campaign messages (Mensajes de campaña) de la página de detalles de la campaña,
elija Edit (Editar).
5. Actualice cualquiera de los siguientes campos:
Puede eliminar una campaña 10DLC mediante la consola de Amazon Pinpoint. Antes de eliminar una
campaña 10DLC, deberá eliminar todos los números de teléfono asociados a esa campaña.
Important
Cuando elimina un número 10DLC de una campaña, ya no tiene acceso a ese número. Además,
no se pueden restaurar las campañas 10DLC eliminadas.
1. Inicie sesión en AWS Management Console y abra la consola de Amazon Pinpoint en https://
[Link]/pinpoint/.
2. En el panel de navegación, en SMS and voice (SMS y voz), elija Phone numbers (Números de
teléfono).
3. En la pestaña 10DLC campaigns (Campañas 10DLC), elija la campaña 10DLC que desee editar.
4. En la sección Phone numbers (Números de teléfono), anote los números de teléfono asociados a la
campaña.
5. En la pestaña Phone numbers (Números de teléfono), elija el número 10DLC que desea eliminar y, a
continuación, elija Remove phone number (Eliminar número de teléfono).
202
Amazon Simple Notification
Service Guía para desarrolladores
Identidades de origen
Note
Este paso solo es necesario si tiene varios números de teléfono 10DLC asociados a la
campaña. Si solo tiene un número de teléfono asociado a la campaña 10DLC ese número
aparecerá en la pestaña 10DLC campaigns (Campañas 10DLC). Anote el número que
aparece en la pestaña.
6. En el cuadro de confirmación, ingrese delete y, a continuación, elija Confirm (Confirmar). Un
mensaje de realización correcta aparece en la parte superior de la página de SMS y voz.
7. Repita los dos pasos anteriores para cada número de 10DLC asociado a la campaña.
8. Tras eliminar los números asociados a la campaña 10DLC, elija la pestaña 10DLC campaigns
(Campañas 10DLC).
9. Elija la campaña 10DLC que desea eliminar.
10. En la esquina superior derecha de la página 10DLC campaign details (Detalles de la campaña
10DLC), elija Delete (Eliminar).
11. En el cuadro de confirmación, ingrese delete y, a continuación, elija Confirm (Confirmar). Un
mensaje de realización correcta aparece en la parte superior de la página de SMS y voz.
Si tiene un código largo existente, puede asociar ese código largo a una de sus campañas actuales 10DLC
mediante la presentación de una solicitud de asistencia. El código largo que asocie a la campaña 10DLC
solo se puede usar con esa campaña y no se puede usar para ninguna otra campaña. Mientras su código
largo se migra a 10DLC, podrá seguir usándolo. Sin embargo, hasta que se apruebe, no podrá utilizarlo
para ninguna campaña 10DLC.
Note
Antes de asociar códigos largos a una campaña, debe tener registrada esa campaña 10DLC.
Si aún no ha creado y registrado una campaña 10DLC, consulte Registro de una campaña de
10DLC (p. 199).
1. Inicie sesión en AWS Management Console y abra la consola de Amazon Pinpoint en https://
[Link]/pinpoint/.
2. En Configuración y, después, en SMS y voz, elija la pestaña Números de teléfono.
3. Elija el código largo que desea convertir a un 10DLC.
4. Para abrir el Centro de asistencia , elija Asignar a la campaña 10DLC.
5. Para el tipo de caso, elija Aumento de límites de servicio.
6. En Tipo de límite, elija Pinpoint.
7. En la sección Requests (Solicitudes), elija el valor de Region (Región) y, a continuación, para Limit
(Límite), elija 10 DLC - Associate existing US long code to 10DLC campaign (10 DLC: asociar el
código largo de EE. UU. existente a la campaña 10DLC).
8. En Descripción del caso, para Descripción de caso de uso, asegúrese de incluir el ID de campaña
10DLC y los números de código largos que quiere asociar a esa campaña. Puede incluir varios
códigos largos en la solicitud, pero solo debe incluir un ID de campaña.
203
Amazon Simple Notification
Service Guía para desarrolladores
Identidades de origen
Cada número de teléfono 10DLC está asociado a una sola cuenta en una sola región de AWS. Si desea
utilizar el mismo número de teléfono 10DLC para enviar mensajes en más de una cuenta o región, tiene
dos opciones:
1. Puede registrar la misma empresa y campaña en cada una de sus cuentas de AWS. Estos registros
se administran y cobran por separado. Si registra la misma empresa en varias cuentas de AWS, el
número de mensajes que puede enviar a los clientes de T-Mobile por día se comparte entre cada una
de esas cuentas.
2. Puede completar el proceso de registro de 10DLC en una cuenta de AWS y utilizar AWS Identity and
Access Management (IAM) para conceder a otras cuentas permiso para efectuar envíos a través de su
número 10DLC.
Note
Esta opción permite un verdadero acceso entre cuentas a sus números de teléfono 10DLC.
No obstante, tenga en cuenta que los mensajes enviados desde sus cuentas secundarias
se tratan como si fueran enviados desde su cuenta principal. Las cuotas y la facturación se
contabilizan en la cuenta principal y no en las secundarias.
Puede utilizar los roles de IAM para asociar otras cuentas con su cuenta principal. Después, puede delegar
los permisos de acceso de su cuenta principal en sus cuentas secundarias concediéndoles acceso a los
números 10DLC de la cuenta principal.
1. Si aún no lo ha hecho, complete el proceso de registro de 10DLC en la cuenta principal. Este proceso
conlleva tres pasos:
204
Amazon Simple Notification
Service Guía para desarrolladores
Identidades de origen
En algunas situaciones, podría recibir un mensaje de error cuando intente registrar su empresa o su
campaña 10DLC.
Al registrar su empresa, verá uno de los dos estados de registro: Verified (Verificado) o Unverified (No
verificado). Si el estado del registro de la empresa es Verified (Verificado), entonces el registro de su
empresa ha sido correcto. Puede empezar a crear campañas 10DLC.
Si el estado del registro de su empresa es Unverified (No verificado), significa que ha habido problemas
con la información que ha proporcionado. La consola de Amazon Pinpoint proporciona información sobre
las razones por las que el registro de su empresa obtuvo este estado.
1. Inicie sesión en AWS Management Console y abra la consola de Amazon Pinpoint en https://
[Link]/pinpoint/.
2. En el panel de navegación, en SMS and voice (SMS y voz), elija Phone numbers (Números de
teléfono).
3. En la pestaña 10DLC campaigns (Campañas 10DLC), en la lista de campañas, elija el nombre de la
empresa de la que desea obtener más información.
4. La página de detalles de la empresa contiene información sobre los asuntos que se identificaron en su
registro. Si un campo de la sección Company info (Información de la empresa) contiene un símbolo de
advertencia, el problema de registro está relacionado con la información de ese campo.
Compruebe la información que ha proporcionado y confirme que todos los campos contienen la
información correcta. Puede editar el registro de su empresa en la consola de Amazon Pinpoint. Para
obtener más información sobre la modificación de los detalles de registro de su empresa, consulte
Edición o eliminación de una empresa registrada (p. 198).
Si no puede identificar el problema con el registro, puede crear un caso con AWS Support para solicitar
información adicional. Siga el procedimiento en Problemas de registro de campaña para crear un caso.
Cuando registre su campaña 10DLC, es posible que aparezca un mensaje de error en determinadas
situaciones.
Para enviar una solicitud de información sobre una campaña 10DLC rechazada
1. Inicie sesión en AWS Management Console y abra la consola de Amazon Pinpoint en https://
[Link]/pinpoint/.
2. Elija Asistencia y, después, Centro de asistencia.
3. En la página Asistencia, elija Crear caso.
4. Para Case type (Tipo de caso), elija Service limit increase (Aumento del límite de servicio).
5. En Limit type (Tipo de límite), elija Pinpoint SMS (SMS de Pinpoint).
6. En la sección Resources (Recursos), haga lo siguiente:
205
Amazon Simple Notification
Service Guía para desarrolladores
Identidades de origen
El equipo de AWS Support le informará sobre los motivos por los que se ha rechazado el registro de su
campaña 10DLC en su caso de AWS Support.
Para comprar números gratuitos, utilice la consola de Amazon Pinpoint. No es necesario registrar las
plantillas de mensajes. Para obtener más información, consulte Solicitud de un número en la Guía del
usuario de Amazon Pinpoint.
En este momento, Amazon Pinpoint admite números gratuitos para mensajes de voz y SMS, pero Amazon
SNS solo admite mensajes SMS.
Cuando utilice un número gratuito como número de origen, siga estas pautas:
• No utilice direcciones URL abreviadas creadas a partir de acortadores de URL de terceros, ya que es
más probable que estos mensajes se filtren como spam.
Si necesita usar una URL acortada, considere usar un número 10DLC (p. 191) o un código
corto (p. 207). Si va a utilizar códigos cortos y 10DLC, debe registrar su plantilla de mensaje, en la que
puede especificar una URL abreviada.
• Tenga en cuenta que las respuestas de exclusión (STOP) y de registro (UNSTOP) de las palabras clave
se establecen a nivel del operador. No puede modificar estas palabras clave ni otras palabras clave, ni
los mensajes que se envían cuando los usuarios responden con STOP y UNSTOP.
• No envíe el mismo contenido de mensaje o uno similar con varios números de teléfono gratuitos.
Los operadores llaman a esta práctica snowshoeing o grupo de números y se dedican a filtrar estos
mensajes.
• Dado que los números gratuitos están sujetos al filtrado de contenido, asegúrese de que los mensajes
no contengan ninguno de los siguientes tipos de contenido restringido:
Categoría Ejemplos
206
Amazon Simple Notification
Service Guía para desarrolladores
Identidades de origen
Categoría Ejemplos
S.H.A.F.T. • Sexo
• Odio
• Alcohol
• Armas de fuego
• Tabaco
Códigos cortos
Los códigos cortos son secuencias numéricas más breves que un número de teléfono normal. Por ejemplo,
en los Estados Unidos y Canadá, los números de teléfono estándar (códigos largos) contienen 11 dígitos,
mientras que los códigos cortos contienen cinco o seis dígitos. Amazon SNS admite códigos cortos
dedicados.
Si envía un gran volumen de mensajes SMS a destinatarios en los Estados Unidos o Canadá, puede
adquirir un código corto dedicado. A diferencia de los códigos cortos de un grupo compartido, los
dedicados están reservadas para su uso exclusivo.
El uso de un código corto fácil de recordar puede ayudar a generar confianza. Si tiene que enviar
información confidencial (por ejemplo, contraseñas de uso único), es conveniente hacerlo mediante un
código corto para que el cliente pueda determinar rápidamente si un mensaje procede realmente de usted.
Durante una campaña de adquisición de nuevos clientes, puede invitarles a enviar una palabra clave
a su código corto (por ejemplo: “Envía FÚTBOL al 10987 para recibir noticias e información”). Los
códigos cortos son más fáciles de recordar que los largos y también resultan más fáciles de escribir en el
dispositivo. Al reducir la cantidad de dificultades que los clientes deben salvar al inscribirse en un programa
de marketing, puede aumentar la eficacia de sus campañas.
Dado que los operadores de telefonía móvil deben aprobar los nuevos códigos cortos antes de activarlos,
es menos probable que marquen como correo no deseado los mensajes enviados desde ellos.
Cuando se usan códigos cortos dedicados para enviar mensajes SMS, es posible enviar un mayor
volumen de mensajes por período de 24 horas que con otros tipos de identidades de origen. Es decir, la
cuota de envío es muy superior. También es posible enviar un volumen mucho mayor de mensajes por
segundo. Es decir, dispondrá de una tasa de envío mucho mayor.
Importante
La adquisición de códigos cortos entraña costos adicionales. Además, su implementación puede requerir
mucho tiempo. Por ejemplo, en los Estados Unidos, por cada código corto es preciso abonar una tarifa
de creación inicial de 650.00 USD más un cargo recurrente de 995.00 USD al mes. El código corto puede
tardar entre 8 y 12 semanas en estar activo en todas las redes de telefonía móvil. Para encontrar el precio
207
Amazon Simple Notification
Service Guía para desarrolladores
Identidades de origen
y el tiempo de aprovisionamiento para otro país o región, complete el procedimiento descrito en Solicitud
de códigos cortos dedicados para mensajería por SMS con Amazon SNS (p. 210).
Los códigos largos P2P son números de teléfono que usan el formato numérico del país o la región en
la que se encuentran los destinatarios. Los códigos largos P2P también se denominan números largos
o números móviles virtuales. Por ejemplo, en los Estados Unidos y Canadá, los códigos largos P2P
contienen 11 dígitos: el número 1 (el código de país), un código de área de tres dígitos y un número de
teléfono de siete dígitos.
Para obtener más información acerca de cómo solicitar códigos largos P2P, consulte Solicitud de números
10DLC, números gratuitos y códigos largos P2P para mensajes SMS con Amazon SNS (p. 213).
Los códigos largos P2P dedicados están reservados para su uso en la cuenta de Amazon SNS
exclusivamente, no se comparten con otros usuarios. Si usa códigos largos P2P dedicados, puede
especificar qué código largo P2P desea usar al enviar cada mensaje. Si envía varios mensajes al mismo
cliente, puede asegurarse de que cada mensaje aparezca como enviado desde el mismo número de
teléfono. Por este motivo, los códigos largos P2P dedicados pueden resultar útiles para establecer su
marca o identidad.
Los códigos largos P2P no son compatibles con las comunicaciones A2P a destinos de Estados Unidos.
Si envía varios cientos de mensajes al día mediante un código largo P2P dedicado, los operadores de
telefonía móvil podrían identificar su número como remitente de correo no deseado. Si el código largo P2P
se marca por este motivo, es posible que sus mensajes no se entreguen a los destinatarios.
Los códigos largos P2P, además, presentan poco rendimiento. Las tarifas máximas de envío varían según
el país. Póngase en contacto con la asistencia de AWS para obtener más información al respecto. Si tiene
previsto enviar grandes volúmenes de mensajes SMS o desea enviarlos con una velocidad superior a un
solo mensaje por segundo, debe adquirir un código corto dedicado.
Algunos operadores no le permiten usar códigos largos P2P para enviar mensajes SMS A2P, incluso
en los Estados Unidos. Un SMS A2P es un mensaje que se envía al dispositivo móvil de un cliente
cuando este ha facilitado su número de móvil a una aplicación. Los mensajes A2P son conversaciones
unidireccionales, como los mensajes de marketing, las contraseñas de uso único o los recordatorios
de citas. Si tiene previsto enviar mensajes A2P, debe adquirir un código corto dedicado (si sus clientes
se encuentran en los Estados Unidos o Canadá) o bien usar un ID de remitente (si sus destinatarios se
encuentran en un país o región donde se admiten los ID de remitente).
208
Amazon Simple Notification
Service Guía para desarrolladores
Solicitud de soporte de SMS
Necesita una Sí No Sí
investigación
² Para obtener más información sobre el tamaño máximo de los mensajes SMS, consulte Publicación en un
teléfono móvil (p. 225).
De forma predeterminada, el umbral de gasto mensual es de 1,00 USD. El umbral de gasto determina
el volumen de mensajes que puede enviar con Amazon SNS. Puede solicitar un umbral de gasto con el
que se obtenga el volumen mensual de mensajes esperado para su caso de uso de SMS.
• Una salida desde el entorno de pruebas de SMS (p. 188) para que pueda enviar mensajes SMS sin
restricciones. Para obtener más información, consulte Salida del entorno de pruebas de SMS (p. 189).
• Un número de origen (p. 191) dedicado
• Un ID de remitente dedicado
209
Amazon Simple Notification
Service Guía para desarrolladores
Solicitud de soporte de SMS
origen del mensaje. La compatibilidad con los ID de remitente varía según el país o la región. Para
obtener más información, consulte Regiones y países admitidos (p. 251).
Al crear su caso en el Centro de AWS Support, asegúrese de toda la información obligatoria para el tipo
de solicitud que está enviando. De lo contrario, AWS Support debe comunicarse con usted para obtener
esta información antes de continuar. Al enviar un caso detallado, contribuye a garantizar que su caso se
gestione sin retrasos. Para conocer los detalles para determinados tipos de solicitudes de SMS, consulte
los siguientes temas.
Temas
• Solicitud de códigos cortos dedicados para mensajería por SMS con Amazon SNS (p. 210)
• Solicitud de números 10DLC, números gratuitos y códigos largos P2P para mensajes SMS con
Amazon SNS (p. 213)
• Solicitud de ID de remitente para mensajería SMS con Amazon SNS (p. 213)
• Solicitud de aumento de la cuota de gasto mensual de SMS para Amazon SNS (p. 216)
Solo puede utilizar códigos cortos para enviar mensajes a destinatarios del mismo país al que pertenece el
código corto. Si para su caso de uso necesita utilizar códigos cortos en más de un país, tendrá que solicitar
un código corto independiente para cada país en el que se encuentren sus destinatarios.
Para obtener más información acerca de los precios de código corto, consulte Precios de Amazon SNS.
Important
Si es la primera vez que utiliza la mensajería SMS con Amazon SNS, solicite un umbral de gasto
de SMS mensual que satisfaga las demandas previstas de su caso de uso de SMS. De forma
predeterminada, el umbral de gasto mensual es de 1,00 USD. Puede solicitar ampliar el umbral
de gasto en el mismo caso de soporte que incluye su solicitud de un código corto. O bien, puede
utilizar un caso independiente. Para obtener más información, consulte Solicitud de aumento de la
cuota de gasto mensual de SMS para Amazon SNS (p. 216).
Además, si solicita un código corto especial para enviar mensajes que contengan o puedan
contener información médica protegida (PHI), debe identificar este propósito en el campo Case
description (Descripción del caso) cuando abra una incidencia de soporte, tal como se detalla a
continuación.
210
Amazon Simple Notification
Service Guía para desarrolladores
Solicitud de soporte de SMS
5. Para Resource Type (Tipo de recurso), elija Dedicated SMS Short Codes (Códigos cortos SMS
dedicados).
6. En Limit (Límite), seleccione la opción que más se parezca a su caso de uso.
7. En New limit value (Nuevo valor del límite), especifique la cantidad de códigos cortos que quiere
reservar (por lo general, este valor es 1).
8. En Use Case Description (Descripción del caso de uso), resuma el caso de uso y cómo se suscribirán
los destinatarios a los mensajes que se envíen con el código corto y proporcione la siguiente
información:
Información de la empresa:
• Nombre de la empresa.
• Dirección postal de la empresa.
• Nombre y número de teléfono del contacto principal para su solicitud.
• Dirección de correo electrónico y número de asistencia gratuito de su empresa.
• ID fiscal de la empresa.
• Nombre de su producto o servicio.
• Página web de la empresa o el sitio web donde se inscriben los clientes para recibir mensajes desde
su código corto.
• Cómo se inscribirán los usuarios para recibir mensajes desde su código corto. Especifique una o
más de las siguientes opciones:
• Text messages.
• Website.
• Mobile app.
• Other. En caso de que sea otra, indíquelo.
• El texto de la opción para suscribirse a los mensajes en su sitio web, aplicación o de otro modo.
• La secuencia de mensajes que tiene previsto utilizar para la confirmación doble. Proporcione toda
esta información:
1. El mensaje SMS que tiene previsto enviar cuando un usuario se inscriba. Este mensaje solicita el
consentimiento del usuario para los mensajes recurrentes. Por ejemplo: ExampleCorp: responda
SÍ para recibir alertas de transacciones de la cuenta. Podrían aplicarse tarifas de mensajes y
datos.
2. La respuesta de suscripción que espera del usuario. Normalmente es una palabra clave, como
SÍ.
3. El mensaje de confirmación que desea enviar cuando los clientes envíen esta palabra clave a su
código corto. Por ejemplo: Se ha registrado para recibir alertas de su cuenta de ExampleCorp.
Podrían aplicarse tarifas de mensajes y datos. Envíe el texto STOP para cancelar o AYUDA para
obtener información.
• El objetivo de los mensajes que tiene previsto enviar con su código corto. Especifique una de las
siguientes opciones:
• Promotions and marketing.
• Location-based services.
• Notifications.
• Information on demand. 211
Amazon Simple Notification
Service Guía para desarrolladores
Solicitud de soporte de SMS
• Group chat.
• Two-factor authentication (2FA).
• Polling and surveys.
• Sweepstakes or contests.
• Other. En caso de que sea otra, indíquelo.
• Si tiene previsto utilizar el código corto para enviar mensajes promocionales o de marketing para
una empresa que no sea la suya.
• Si tiene pensado usar su código corto para enviar mensajes que contengan o puedan contener
información médica protegida (PHI), tal como se define en la Ley de Portabilidad y Responsabilidad
de Seguros Médicos (HIPAA) y la legislación y regulaciones asociadas.
• El mensaje que tiene previsto enviar cuando los clientes se suscriban para recibir sus mensajes
enviándole una palabra clave específica. Tenga cuidado cuando especifique esta palabra clave
y este mensaje: se puede tardar varias semanas en cambiar este mensaje. Al crear el código
corto, registramos la palabra clave y el mensaje en los operadores de telefonía móvil del país en
los que va a utilizar el código corto. El mensaje podría ser como este: Bienvenido a las alertas de
ProductName. Se aplican tarifas de mensajes y de datos. 2 mensajes por mes. Responda AYUDA
para obtener ayuda, STOP para cancelar.
• La respuesta que desea enviar cuando los clientes respondan a sus mensajes con la palabra clave
AYUDA. Este mensaje debe incluir la información de contacto de atención al cliente. Por ejemplo:
Alertas de ProductName: ayuda en [Link]/help o al (800) 555-0199. Se aplican
tarifas de mensajes y de datos. 2 mensajes por mes. Responda STOP para cancelar.
• La respuesta que desea enviar cuando los clientes respondan a sus mensajes con la palabra clave
STOP. Este mensaje tiene que confirmar que el usuario dejará de recibir mensajes de usted. Por
ejemplo: Ha cancelado su suscripción a las alertas de ProductName. No recibirá más mensajes.
Responda AYUDA para obtener ayuda o llame al (800) 555-0199.
• El texto que tiene previsto enviar como recordatorio periódico de que el usuario está suscrito a sus
mensajes. Por ejemplo: Recordatorio: está suscrito a las alertas de su cuenta de ExampleCorp.
Podrían aplicarse tarifas de mensajes y datos. Envíe el texto STOP para cancelar o AYUDA para
obtener información.
• Un ejemplo de cada tipo de mensaje que tiene previsto enviar con el código corto. Proporcione al
menos tres ejemplos. Si tiene previsto enviar más de tres tipos de mensajes, proporcione ejemplos
de todos ellos.
Important
Una vez que recibamos su solicitud, proporcionaremos una respuesta inicial en un plazo de 24 horas.
Es posible que nos pongamos en contacto con usted para solicitar información adicional. Si podemos
proporcionarle un código corto, le enviaremos información sobre los costos asociados con la obtención de
un código corto en el país o la región que haya especificado en la solicitud. También le proporcionaremos
una estimación de la cantidad de tiempo que se necesita para aprovisionar un código corto en su país o
región. Se suele tardar varias semanas en realizar el aprovisionamiento de un código corto, aunque este
212
Amazon Simple Notification
Service Guía para desarrolladores
Solicitud de soporte de SMS
retraso puede ser mucho más corto o más mucho más largo, dependiendo del país o la región donde se
solicite el código corto.
Note
Las tarifas asociadas al uso de códigos cortos comenzarán a aplicarse justo después de que
iniciemos su solicitud de código corto con los operadores. Usted es el responsable de pagar estos
cargos, incluso aunque el código corto no se haya aprovisionado por completo.
Para evitar que nuestros sistemas sean utilizados para enviar contenido no solicitado o malicioso, tenemos
que considerar cada solicitud detenidamente. Es posible que no podamos garantizar su solicitud si su caso
de uso no está en consonancia con nuestras políticas.
Pasos siguientes
Ha registrado un código corto con operadores inalámbricos y ha revisado la configuración en la consola
de Amazon SNS. Ahora puede utilizar Amazon SNS para enviar mensajes SMS con su código corto como
número de origen.
Para solicitar números 10DLC (p. 191), números de teléfono gratuitos (p. 206) y códigos largos
P2P (p. 208), utilice la consola de Amazon Pinpoint. Para obtener instrucciones detalladas, consulte
Solicitud de un número en la Guía del usuario de Amazon Pinpoint.
La mensajería SMS de Amazon SNS está disponible en regiones en las que Amazon Pinpoint no es
compatible en este momento. En estos casos, abra la consola de Amazon Pinpoint en la región EE. UU.
Este (Norte de Virginia) para registrar su empresa y campaña de 10DLC, pero no solicite un número
10DLC. En su lugar, abra un caso en el centro de AWS Support para solicitar un número 10DLC en la
región de AWS en la que utiliza o piensa utilizar Amazon SNS para enviar mensajes SMS. Para obtener
información sobre las regiones donde está disponible Amazon Pinpoint, consulte Cuotas y puntos de
enlace de Amazon Pinpointen la referencia general de AWS.
Note
Si es la primera vez que utiliza la mensajería SMS con Amazon SNS, también debe solicitar un
umbral de gasto de SMS mensual que satisfaga las demandas previstas de su caso de uso de
SMS. De forma predeterminada, el umbral de gasto mensual es de 1,00 USD. Para obtener más
información, consulte Solicitud de aumento de la cuota de gasto mensual de SMS para Amazon
SNS (p. 216).
Si es la primera vez que utiliza la mensajería SMS con Amazon SNS, solicite un umbral de gasto
de SMS mensual que satisfaga las demandas previstas de su caso de uso de SMS. De forma
213
Amazon Simple Notification
Service Guía para desarrolladores
Solicitud de soporte de SMS
predeterminada, el umbral de gasto mensual es de 1,00 USD. Puede solicitar ampliar el umbral
de gasto en el mismo caso de soporte que incluye su solicitud de un ID de remitente. O bien, si lo
prefiere, puede abrir un caso independiente. Para obtener más información, consulte Solicitud de
aumento de la cuota de gasto mensual de SMS para Amazon SNS (p. 216).
En la mensajería SMS, un ID de remitente es un nombre que aparece como remitente del mensaje en
los dispositivos de los destinatarios. Los ID de remitente son una forma útil de identificarse ante los
destinatarios de sus mensajes.
La compatibilidad con los ID de remitente varía según el país. Por ejemplo, los operadores de Estados
Unidos no admiten ningún tipo de ID de remitente, pero los operadores de la India requieren que los
remitentes utilicen los ID de remitente. Para obtener una lista completa de los países donde se admite el
uso de los ID de remitente, consulte Regiones y países admitidos (p. 251).
Important
En algunos países es obligatorio registrar los ID de remitente antes de utilizarlos para enviar
mensajes. En función del país, este proceso de registro puede tardar varias semanas. Los países
en que es obligatorio el registro previo de los ID de remitente se indican en la tabla de la página
Supported Countries (Países admitidos) (p. 251).
Si tiene asistencia empresarial y está registrando varias plantillas en varias cuentas, siga los
pasos que se indican a continuación y trabaje con su gerente técnico de cuenta para asegurarse
de que su experiencia de incorporación se coordine.
Si está enviando mensajes a destinatarios de un país donde se admiten los ID de remitente y en ese país
no es obligatorio registrar los ID de remitente, no tiene que realizar ningún paso adicional. Puede comenzar
a enviar mensajes que incluyan valores de ID de remitente inmediatamente.
Solo tiene que completar los procedimientos de esta página si tiene previsto enviar mensajes a un país en
el que sea obligatorio el registro de los ID de remitente.
Si tiene previsto enviar mensajes a destinatarios de un país en el que los ID de remitente están
permitidos pero no son obligatorios, no es necesario que abra un caso en el Centro de soporte.
Puede comenzar a enviar mensajes que utilicen los ID de remitente inmediatamente.
214
Amazon Simple Notification
Service Guía para desarrolladores
Solicitud de soporte de SMS
• Contraseñas de un solo uso: mensajes que proporcionan contraseñas que sus clientes utilizan
para autenticarse con su sitio web o aplicación.
• Promocional: mensajes no importantes que promocionan su empresa o servicio, tales como
anuncios u ofertas especiales.
• Transaccional: mensajes informativos importantes que admiten transacciones del cliente, tales
como confirmaciones de pedido o alertas de transacción. Los mensajes de transacciones no
pueden incluir contenido promocional o de marketing.
d. En Which countries do you plan to send messages to (Países a los que tiene previsto enviar
mensajes), especifique los países en los que desea registrar un ID de remitente. La posibilidad
de utilizar los ID de remitente y los requisitos para registrarlos varían en función del país. Para
obtener más información, consulte Regiones y países admitidos (p. 251).
Si la lista de países supera el número de caracteres permitido por este cuadro de texto, puede
incluir la lista de países en la sección Case description (Descripción del caso).
6. En Requests (Solicitudes), realice el siguiente procedimiento:
Una vez que recibamos su solicitud, proporcionaremos una respuesta inicial en un plazo de 24 horas. Es
posible que nos pongamos en contacto con usted para solicitar información adicional. Si podemos ofrecerle
un ID de remitente, le enviaremos una estimación del tiempo necesario para realizar el aprovisionamiento.
Para evitar que nuestros sistemas sean utilizados para enviar contenido no solicitado o malicioso, tenemos
que considerar cada solicitud detenidamente. Es posible que no podamos garantizar su solicitud si su caso
de uso no está en consonancia con nuestras políticas.
215
Amazon Simple Notification
Service Guía para desarrolladores
Solicitud de soporte de SMS
Pasos siguientes
Ha registrado un ID de remitente y ha actualizado la configuración en la consola de Amazon SNS. Ahora
puede utilizar Amazon SNS para enviar mensajes SMS con su ID de remitente. Los destinatarios de SMS
en los países admitidos verán su ID de remitente como el remitente del mensaje en sus dispositivos. Si se
utiliza un ID de remitente diferente al publicar mensajes, se anulará el ID predeterminado configurado aquí.
Para garantizar que sus operaciones no se vean afectadas, le recomendamos solicitar una cuota de
gasto lo suficientemente alta como para admitir sus cargas de trabajo de producción. Para obtener más
información, consulte Paso 1: Abrir un caso de SMS de Amazon SNS (p. 216). Una vez que haya
recibido la cuota, podrá administrar su riesgo aplicando la cuota completa o un valor menor, como se
describe en Paso 2: Actualizar la configuración de SMS (p. 217). Si aplica un valor menor, podrá
controlar el gasto mensual con la opción de aumentarlo si resultara necesario.
Important
Establecemos la cuota de gasto para todas las cuentas nuevas en 1,00 USD al mes. Esta cuota está
pensada para probar las capacidades de envío de mensajes de Amazon SNS. Para solicitar un aumento
de la cuota de gasto de SMS para la cuenta, abra un caso de aumento de la cuota en el Centro de soporte
de AWS.
Algunos de los campos en el formulario de solicitud se marcan como "optional" (opcional). Sin
embargo, AWS Support requiere toda la información mencionada en los pasos siguientes con el
fin de procesar su solicitud. Si no proporciona toda la información necesaria, puede experimentar
retrasos en el procesamiento de su solicitud.
216
Amazon Simple Notification
Service Guía para desarrolladores
Solicitud de soporte de SMS
3. Elija Service limit increase (Aumento del límite de servicio) y, a continuación, en Case classification
(Clasificación de casos), siga los siguientes pasos:
4. En Limit (Límite), elija SNS Text Messaging (Mensajería de texto SNS).
5. En Link to site or app which will be sending SMS - optional (Enlace al sitio o la aplicación que enviará
los SMS - opcional), introduzca la URL de su sitio web o aplicación.
6. En Type of messages - optional (Tipo de mensajes: opcional), elija One Time Password (Contraseña
de un solo uso), Promotional (Promocionales) o Transactional (Transaccionales), en función de lo que
vaya a enviar.
7. En Targeted Countries - optional (Países de destino: opcional), elija General Limits (Límites
generales).
8. En Requests (Solicitudes), en Request 1 (Solicitud 1), haga lo siguiente:
9. Para Resource Type (Tipo de recurso), elija General Limits (Límites generales).
10. En New limit (Límite nuevo), introduzca el límite de gasto necesario que calculó anteriormente.
11. En Case description (Descripción del caso), en la descripción del caso de uso, introduzca la
descripción que escribió anteriormente.
12. Expanda Contact options (Opciones de contacto) y, a continuación, elija su idioma de contacto
preferido.
13. Elija Submit (Enviar).
14. Cuando haya terminado, elija Submit (Enviar).
El equipo de AWS Support proporcionará una respuesta inicial a su solicitud antes de 24 horas.
Para evitar que nuestros sistemas sean utilizados para enviar contenido no solicitado o malicioso,
consideramos cada solicitud con detenimiento. Si podemos, accederemos a su solicitud dentro de ese
plazo de 24 horas. Sin embargo, si necesitamos que nos brinde más información, puede que la solicitud
tarde más tiempo en concederse.
Si su caso de uso no se ajusta a nuestras políticas, es posible que no podamos atender su solicitud.
Es posible que reciba una advertencia de que el valor ingresado es mayor que el límite de
gasto predeterminado. Puede omitirla.
217
Amazon Simple Notification
Service Guía para desarrolladores
Configuración de las preferencias de SMS
Estas preferencias se aplican en todos los mensajes SMS que envía desde su cuenta, pero puede anular
algunas de ellas cuando envía un mensaje individual. Para obtener más información, consulte Publicación
en un teléfono móvil (p. 225).
Temas
• Configuración de las preferencias de mensajería SMS mediante la AWS Management
Console (p. 218)
• Configuración de las preferencias (SDK de AWS) (p. 219)
a. En Default message type (Tipo predeterminado de mensaje), seleccione uno de los siguientes:
Para obtener información sobre los precios de los mensajes promocionales y transaccionales,
consulte la página relacionada con los precios globales de SMS.
b. (Opcional) En Account spend limit (Límite de gasto de la cuenta), escriba el importe (en USD) que
desea gastar en mensajes SMS cada mes natural.
Important
218
Amazon Simple Notification
Service Guía para desarrolladores
Configuración de las preferencias de SMS
En los siguientes ejemplos de código, se muestra cómo establecer la configuración predeterminada para
enviar mensajes SMS mediante Amazon SNS.
C++
Aws::SDKOptions options;
Aws::InitAPI(options);
{
Aws::SNS::SNSClient sns;
Aws::String sms_type = argv[1];
Aws::SNS::Model::SetSMSAttributesRequest ssmst_req;
ssmst_req.AddAttributes("DefaultSMSType", sms_type);
if (ssmst_out.IsSuccess())
{
std::cout << "SMS Type set successfully " << std::endl;
}
else
{
std::cout << "Error while setting SMS Type: '" <<
ssmst_out.GetError().GetMessage()
<< "'" << std::endl;
}
}
Aws::ShutdownAPI(options);
219
Amazon Simple Notification
Service Guía para desarrolladores
Configuración de las preferencias de SMS
Java
try {
SetSmsAttributesRequest request = [Link]()
.attributes(attributes)
.build();
} catch (SnsException e) {
[Link]([Link]().errorMessage());
[Link](1);
}
}
JavaScript
220
Amazon Simple Notification
Service Guía para desarrolladores
Envío de mensajes SMS
};
PHP
try {
$result = $SnSclient->SetSMSAttributes([
'attributes' => [
'DefaultSMSType' => 'Transactional',
],
]);
var_dump($result);
} catch (AwsException $e) {
// output error message if fails
error_log($e->getMessage());
}
Temas
• Publicación de un tema (p. 222)
221
Amazon Simple Notification
Service Guía para desarrolladores
Envío de mensajes SMS
Publicación de un tema
Puede publicar un único mensaje SMS en muchos números de teléfono a la vez mediante la suscripción
de dichos números de teléfono a un tema de Amazon SNS. Un tema de SNS es un canal de comunicación
al que puede agregar suscriptores y publicar mensajes para todos ellos. Un suscriptor recibe todos los
mensajes que se publiquen en el tema hasta que usted cancele la suscripción o el suscriptor cancele la
recepción de mensajes SMS de su cuenta de AWS.
Temas
• Envío de un mensaje a un tema (consola) (p. 222)
• Envío de un mensaje a un tema (SDK de AWS) (p. 224)
Ejecute los pasos siguientes si todavía no tiene un tema al que quiera enviar mensajes SMS.
6. Elija Create new topic. El nombre del tema y el nombre de recurso de Amazon (ARN) aparecen en la
página Temas.
Puede utilizar las suscripciones para enviar un mensaje SMS a varios destinatarios al publicar el mensaje
una sola vez en su tema.
Note
Cuando comience a utilizar Amazon SNS para enviar mensajes SMS, su cuenta de AWS se
encuentra en el entorno de pruebas de SMS. El entorno de pruebas de SMS proporciona un
entorno seguro para que pruebe las características de Amazon SNS sin arriesgar su reputación
como remitente de SMS. Mientras su cuenta se encuentre en el entorno de pruebas de SMS,
puede utilizar todas las características de Amazon SNS, pero solo puede enviar mensajes SMS a
222
Amazon Simple Notification
Service Guía para desarrolladores
Envío de mensajes SMS
números de teléfono de destino verificados. Para obtener más información, consulte Entorno de
pruebas de SMS (p. 188).
a. En ARN de tema, ingrese o elija el nombre de recurso de Amazon (ARN) del tema al que desea
enviar mensajes SMS.
b. En Protocolo, elija SMS.
c. En Punto de enlace, ingrese el número de teléfono al que desea suscribirse al tema.
5. Elija Create subscription (Crear suscripción). La información de la suscripción aparece en la página
Suscripciones.
Para agregar más números de teléfono, repita estos pasos. También puede agregar otros tipos de
suscripciones, como el correo electrónico.
Cuando publica un mensaje en un tema, Amazon SNS intenta entregar dicho mensaje a todos los números
de teléfono que están suscritos al tema.
1. En Consola de Amazon SNS, en la página Temas, elija el nombre del tema al que desea enviar
mensajes SMS.
2. En la página de detalles del tema, seleccione Publish message (Publicar mensaje).
3. En la página Publicar mensaje en el tema, en Detalles del mensaje, haga lo siguiente:
a. En Asunto, deje el campo en blanco a menos que el tema contenga suscripciones de correo
electrónico y quiera publicar tanto en las suscripciones de correo electrónico como en las de SMS.
Amazon SNS utiliza el asunto que ingresa como línea de asunto del correo electrónico.
b. (Opcional) En Período de vida (TLL), ingrese un número de segundos que Amazon SNS tiene
para enviar su mensaje SMS a los suscriptores de terminales de aplicaciones móviles.
4. En Cuerpo del mensaje, haga lo siguiente:
a. En Estructura del mensaje, elija Carga idéntica para todos los protocolos de entrega para enviar el
mismo mensaje a todos los tipos de protocolo suscritos al tema. O bien, elija Carga personalizada
para cada protocolo de entrega para personalizar el mensaje para suscriptores de diferentes tipos
de protocolo. Por ejemplo, puede escribir un mensaje predeterminado para los suscriptores de
números de teléfono y un mensaje personalizado para los suscriptores de correo electrónico.
b. En Cuerpo del mensaje para enviar al punto de enlace, ingrese su mensaje o sus mensajes
personalizados por protocolo de entrega.
Si su tema tiene un nombre de visualización, Amazon SNS lo agrega al mensaje, lo que aumenta
la longitud del mensaje. La longitud del nombre de visualización es el número de caracteres del
nombre más dos caracteres para el corchete angular de cierre (>) y el espacio que Amazon SNS
agrega.
Para obtener información acerca de las cuotas de tamaño de los mensajes SMS, consulte
Publicación en un teléfono móvil (p. 225).
5. (Opcional) En Atributos de mensajes, agregue metadatos de mensajes como marcas de tiempo, firmas
e ID.
6. Elija Publish message (Publicar mensaje). Amazon SNS envía el mensaje SMS y muestra un mensaje
de confirmación.
223
Amazon Simple Notification
Service Guía para desarrolladores
Envío de mensajes SMS
Java
Establezca atributos en el mensaje, como el ID del remitente, el precio máximo y su tipo. Los
atributos de mensaje son opcionales.
224
Amazon Simple Notification
Service Guía para desarrolladores
Envío de mensajes SMS
Llame a las funciones anteriores para crear un tema, suscribir un número de teléfono, establecer
atributos de mensaje y publicar un mensaje en el tema.
Suscribir números de teléfono a un tema es útil si quiere enviar un mensaje a varios números de
teléfono a la vez. Para obtener instrucciones sobre cómo publicar un mensaje SMS en un tema,
consulte Publicación de un tema (p. 222).
Cuando se envía un mensaje, se puede controlar si el mensaje se optimiza en función del costo o de la
fiabilidad de la entrega. También puede especificar un ID de remitente o número de origen (p. 190).
Si envía el mensaje mediante programación con la API de Amazon SNS o los SDK de AWS, puede
especificar un precio máximo para la entrega de mensajes.
Cada mensaje SMS puede contener hasta 140 bytes y la cuota de caracteres depende del esquema de
codificación. Por ejemplo, un mensaje SMS puede contener:
Si publica un mensaje que exceda la cuota de tamaño, Amazon SNS lo envía como varios mensajes, cada
uno de los cuales respetará la cuota. Los mensajes no se dividen en mitad de una palabra, sino en el
espacio entre palabras. La cuota de tamaño total de una acción de publicación SMS es 1600 bytes.
225
Amazon Simple Notification
Service Guía para desarrolladores
Envío de mensajes SMS
Al enviar un mensaje SMS, especifique el número de teléfono mediante el formato E.164, una estructura
de numeración de teléfono estándar utilizada para las telecomunicaciones internacionales. Los números
de teléfono que siguen este formato pueden tener un máximo de 15 dígitos junto con el prefijo de un signo
más (+) y el código del país. Por ejemplo, un número de teléfono de los EE. UU. en formato E.164 se
muestra como +1XXX5550100.
Temas
• Envío de un mensaje (consola) (p. 226)
• Envío de un mensaje (SDK de AWS) (p. 227)
Note
Esta opción de nivel de mensaje anula el tipo de mensaje predeterminado de nivel de cuenta.
Puede establecer un tipo de mensaje predeterminado a nivel de cuenta desde la sección
Preferencias de mensajes de texto de la página Mensajería de texto móvil (SMS).
Para obtener información sobre los mensajes promocionales y transaccionales, consulte Precios de
SMS en todo el mundo.
6. En Número de teléfono de destino, ingrese el número de teléfono al que desea enviar el mensaje.
7. En Mensaje, ingrese el mensaje que va a enviar.
8. (Opcional) En Identidades de origen, especifique cómo identificarse ante sus destinatarios:
La compatibilidad con los ID de remitente varía según el país o la región. Por ejemplo, los mensajes
que se entregan a números de teléfono de los EE. UU. no mostrarán el ID de remitente. En
el caso de los países y regiones que admiten el ID de remitente, consulte Regiones y países
admitidos (p. 251).
226
Amazon Simple Notification
Service Guía para desarrolladores
Envío de mensajes SMS
con un número de origen que esté configurado en su Cuenta de AWS para el país de destino. El
número de origen puede ser un número 10DLC, número gratuito, código largo persona a persona
o códigos cortos. Para obtener más información, consulte Identidades de origen de los mensajes
SMS (p. 190).
Si no especifica un número de origen, Amazon SNS selecciona un número de origen que se utilizará
para el mensaje de texto SMS, en función de la configuración de su Cuenta de AWS.
9. Si envía mensajes SMS a destinatarios en India, expanda Atributos específicos del país y especifique
los atributos siguientes:
Para obtener más información sobre cómo enviar mensajes SMS a destinatarios en la India, consulte
Requisitos especiales para enviar mensajes SMS a destinatarios en la India (p. 264).
10. Elija Publish message (Publicar mensaje).
Tip
Para enviar mensajes SMS desde un número de origen, también puede elegir números de origen
en el panel de navegación de la consola de Amazon SNS. Elija un número de origen que incluya
SMS en la columna Capacidades y, a continuación, elija Publicar mensajes de texto.
[Link]
Un ID personalizado que contiene entre 3 y 11 caracteres alfanuméricos o guiones (-), entre ellos al
menos una letra, y ningún espacio. El ID de remitente aparece como el remitente del mensaje en el
dispositivo receptor. Por ejemplo, puede utilizar la marca de su negocio para facilitar el reconocimiento
del origen del mensaje.
La compatibilidad con los ID de remitente varía según el país o la región. Por ejemplo, los mensajes
que se entregan a números de teléfono de los EE. UU. no muestra el ID de remitente. Para obtener
una lista de los países y regiones que admiten el ID de remitente, consulte Regiones y países
admitidos (p. 251).
Si no especifica un ID de remitente, aparece un código largo (p. 208) como ID de remitente en los
países o regiones admitidos. Para los países o regiones que requieren un ID de remitente alfabético,
aparece AVISO como ID de remitente.
Este atributo de nivel de mensaje anula el atributo de nivel de cuenta DefaultSenderID, que se
puede establecer mediante la solicitud SetSMSAttributes.
[Link]
Una cadena personalizada de 5 a 14 números, que puede incluir un signo más inicial opcional (+).
Esta cadena de números aparece como el número de teléfono del remitente en el dispositivo receptor.
227
Amazon Simple Notification
Service Guía para desarrolladores
Envío de mensajes SMS
La cadena debe coincidir con un número de origen configurado en su cuenta de AWS para el país de
destino. El número de origen puede ser un número 10DLC, número gratuito, código largo persona a
persona (P2) o código corto. Para obtener más información, consulte Números de origen (p. 191).
El precio máximo en USD que estás dispuesto a gastar para enviar el mensaje SMS. Si Amazon SNS
determina que el envío del mensaje supondría un costo superior a su precio máximo, no lo envía.
Este atributo no tiene efecto si los costos de los SMS del mes hasta la fecha ya han superado
la cuota establecida para el atributo MonthlySpendLimit. Puede establecer el atributo
MonthlySpendLimit con la solicitud SetSMSAttributes.
Si envía el mensaje a un tema de Amazon SNS, el precio máximo se aplica a cada entrega de
mensaje a cada número de teléfono que esté suscrito al tema.
[Link]
Este atributo de nivel de mensaje anula el atributo de nivel de cuenta DefaultSMSType, que se
puede establecer mediante la solicitud SetSMSAttributes.
[Link]
Este atributo solo es necesario para enviar mensajes SMS a destinatarios en la India.
Se trata del ID entidad o ID de entidad principal (PE) para enviar mensajes SMS a destinatarios
en la India. Este ID es una cadena única de 1 a 50 caracteres que la Autoridad Reguladora de las
Telecomunicaciones de la India (TRAI) proporciona para identificar la entidad que ha registrado en la
TRAI.
[Link]
Este atributo solo es necesario para enviar mensajes SMS a destinatarios en la India.
Se trata de la plantilla para enviar mensajes SMS a destinatarios en la India. Este ID es una cadena
única de 1 a 50 caracteres que proporciona la TRAI para identificar la plantilla que registró en la TRAI.
El ID de plantilla debe estar asociado al ID de remitente que especificó para el mensaje.
Envío de un mensaje
En los siguientes ejemplos de código, se muestra cómo publicar mensajes SMS mediante Amazon SNS.
C++
/**
* Publish SMS: use Amazon SNS to send an SMS text message to a phone number.
* Note: This requires additional AWS configuration prior to running example.
*
* NOTE: When you start using Amazon SNS to send SMS messages, your AWS account is
in the SMS sandbox and you can only
228
Amazon Simple Notification
Service Guía para desarrolladores
Envío de mensajes SMS
Aws::SDKOptions options;
Aws::InitAPI(options);
{
Aws::SNS::SNSClient sns;
Aws::String message = argv[1];
Aws::String phone_number = argv[2];
Aws::SNS::Model::PublishRequest psms_req;
psms_req.SetMessage(message);
psms_req.SetPhoneNumber(phone_number);
if (psms_out.IsSuccess())
{
std::cout << "Message published successfully " <<
psms_out.GetResult().GetMessageId()
<< std::endl;
}
else
{
std::cout << "Error while publishing message " <<
psms_out.GetError().GetMessage()
<< std::endl;
}
}
Aws::ShutdownAPI(options);
return 0;
}
Java
229
Amazon Simple Notification
Service Guía para desarrolladores
Envío de mensajes SMS
} catch (SnsException e) {
[Link]([Link]().errorMessage());
[Link](1);
}
}
Kotlin
Esta es una documentación preliminar para una característica en versión de vista previa.
Está sujeta a cambios.
PHP
require 'vendor/[Link]';
use Aws\Sns\SnsClient;
use Aws\Exception\AwsException;
230
Amazon Simple Notification
Service Guía para desarrolladores
Envío de mensajes SMS
/**
* Sends a a text message (SMS message) directly to a phone number using Amazon
SNS.
*
* This code expects that you have AWS credentials set up per:
* [Link]
guide_credentials.html
*/
try {
$result = $SnSclient->publish([
'Message' => $message,
'PhoneNumber' => $phone,
]);
var_dump($result);
} catch (AwsException $e) {
// output error message if fails
error_log($e->getMessage());
}
Python
class SnsWrapper:
"""Encapsulates Amazon SNS topic and subscription functions."""
def __init__(self, sns_resource):
"""
:param sns_resource: A Boto3 Amazon SNS resource.
"""
self.sns_resource = sns_resource
:param phone_number: The phone number that receives the message. This must
be
in E.164 format. For example, a United States phone
number might be +12065550101.
:param message: The message to send.
:return: The ID of the message.
"""
try:
response = self.sns_resource.[Link](
231
Amazon Simple Notification
Service Guía para desarrolladores
Monitorización de la actividad de SMS
PhoneNumber=phone_number, Message=message)
message_id = response['MessageId']
[Link]("Published message to %s.", phone_number)
except ClientError:
[Link]("Couldn't publish message to %s.", phone_number)
raise
else:
return message_id
Temas
• Visualización de las estadísticas de entrega de SMS (p. 232)
• Visualización de métricas y registros de Amazon CloudWatch para entregas de SMS (p. 232)
• Visualización de informes de uso de SMS diarios (p. 235)
En esta página, también puede seleccionar el botón Uso para ir al bucket de Amazon S3 en el que
almacena los informes de uso diarios. Para obtener más información, consulte Visualización de informes
de uso de SMS diarios (p. 235).
232
Amazon Simple Notification
Service Guía para desarrolladores
Monitorización de la actividad de SMS
Temas
• Visualización de métricas de Amazon CloudWatch (p. 233)
• Visualización de CloudWatch Logs (p. 233)
• Registro de ejemplo para una entrega de SMS correcta (p. 234)
• Registro de ejemplo para una entrega de SMS errónea (p. 234)
• Motivos de error de entrega de SMS (p. 234)
Para obtener más información sobre el monitoreo de métricas de CloudWatch, la configuración de alarmas
de CloudWatch y los tipos de métricas disponibles, consulte Monitoreo de los temas de Amazon SNS
mediante Amazon CloudWatch (p. 444).
Si quiere habilitar y ver los CloudWatch Logs para sus mensajes SMS, siga estos pasos:
• Por ejemplo, para escribir registros únicamente para las entregas erróneas, establezca este valor en
0.
• Para escribir logs para el 10% de las entregas de correctas, establézcalo en 10.
Si no especifica ningún porcentaje, Amazon SNS escribirá registros para todas las entregas correctas.
7. Para proporcionar los permisos obligatorios, realice una de las siguientes acciones:
• Para crear un nuevo rol de servicio, elija Crear nueva función de servicio y, a continuación, Crear
nuevos roles. En la página siguiente, elija Permitir para dar acceso de escritura a Amazon SNS a los
recursos de su cuenta.
• Para utilizar una función de servicio existente, haga clic en Usar función de servicio existente y, a
continuación, pegue el nombre de ARN en el cuadro Rol de IAM para entregas exitosas y fallidas.
Mediante la función de servicio que especifique, se debe permitir el acceso de escritura a los
recursos de su cuenta. Para obtener más información sobre la creación de roles de IAM, consulte
Creación de un rol para un servicio de AWS (consola) en la Guía del usuario de IAM.
233
Amazon Simple Notification
Service Guía para desarrolladores
Monitorización de la actividad de SMS
Según el operador del número de teléfono de destino, los registros de entrega pueden tardar
hasta 72 horas en aparecer en la consola de Amazon SNS.
{
"notification": {
"messageId": "34d9b400-c6dd-5444-820d-fbeb0f1f54cf",
"timestamp": "2016-06-28 [Link].558"
},
"delivery": {
"phoneCarrier": "My Phone Carrier",
"mnc": 270,
"numberOfMessageParts": 1,
"destination": "+1XXX5550100",
"priceInUSD": 0.00645,
"smsType": "Transactional",
"mcc": 310,
"providerResponse": "Message has been accepted by phone carrier",
"dwellTimeMs": 599,
"dwellTimeMsUntilDeviceAck": 1344
},
"status": "SUCCESS"
}
{
"notification": {
"messageId": "1077257a-92f3-5ca3-bc97-6a915b310625",
"timestamp": "2016-06-28 [Link].559"
},
"delivery": {
"mnc": 0,
"numberOfMessageParts": 1,
"destination": "+1XXX5550100",
"priceInUSD": 0.00645,
"smsType": "Transactional",
"mcc": 0,
"providerResponse": "Unknown error attempting to reach phone",
"dwellTimeMs": 1420,
"dwellTimeMsUntilDeviceAck": 1692
},
"status": "FAILURE"
}
234
Amazon Simple Notification
Service Guía para desarrolladores
Monitorización de la actividad de SMS
Temas
• Información del informe de uso diario (p. 235)
• Suscripción a informes de uso diario (p. 235)
Tenga en cuenta que el informe no incluye los mensajes que se envían a los destinatarios que han
desactivado la recepción de mensajes.
Note
235
Amazon Simple Notification
Service Guía para desarrolladores
Monitorización de la actividad de SMS
Si quiere crear un bucket de Amazon S3 para sus informes de uso diario, siga estos pasos:
1. Desde la Cuenta de AWS que envía mensajes SMS, inicie sesión en la consola de Amazon S3.
2. Seleccione la opción Create Bucket (Crear bucket).
3. En Bucket Name (Nombre del bucket), le recomendamos que escriba un nombre único para su cuenta
y su organización. Por ejemplo, use el patrón <my-bucket-prefix>-<account_id>-<org-id>.
Para obtener información sobre las convenciones y restricciones de los nombres de bucket, consulte
Reglas para la nomenclatura de bucket en la Guía del usuario de Amazon Simple Storage Service.
4. Seleccione Create (Crear).
5. En la tabla Todos los buckets, elija el bucket.
6. En la pestaña Permisos, elija Política de bucket.
7. En la ventana Editor de políticas de bucket, indique una política que permita al principal del servicio
de Amazon SNS escribir en el bucket. Para ver un ejemplo, consulte Ejemplo de política de
bucket (p. 236).
Si utiliza la política de ejemplo, recuerde reemplazar my-s3-bucket por el nombre del bucket que
eligiera en el paso 3.
8. Seleccione Save.
Con la siguiente política, la entidad principal del servicio de Amazon SNS puede ejecutar las acciones
s3:PutObject, s3:GetBucketLocation y s3:ListBucket.
AWS proporciona herramientas para todos los servicios con entidades principales de servicio a las que
se les ha concedido acceso a los recursos de su cuenta. Cuando la entidad principal de una declaración
de política de bucket de Amazon S3 es una entidad principal de servicio de AWS, puede utilizar las
claves de condición global aws:SourceArn o aws:SourceAccount para protegerse contra el problema
236
Amazon Simple Notification
Service Guía para desarrolladores
Monitorización de la actividad de SMS
del suplente confuso. Para limitar la región y la cuenta desde las que el bucket puede recibir informes
de uso diarios, utilice aws:SourceArn tal como se muestra en el siguiente ejemplo. Si no desea
limitar las regiones que pueden generar estos informes, utilice aws:SourceAccount para establecer
límites en función de qué cuenta esté generando los informes. Si no conoce el ARN del recurso, utilice
aws:SourceAccount.
Utilice el siguiente ejemplo que incluye protección contra suplente confuso cuando cree un bucket de
Amazon S3 para recibir informes de uso diario de SMS desde Amazon SNS.
{
"Version": "2008-10-17",
"Statement": [{
"Sid": "AllowPutObject",
"Effect": "Allow",
"Principal": {
"Service": "[Link]"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s[Link]my-s3-bucket/*",
"Condition": {
"StringEquals": {
"aws:SourceAccount": "account_id"
},
"ArnLike": {
"aws:SourceArn": "arn:aws:sns:region:account_id:*"
}
}
},
{
"Sid": "AllowGetBucketLocation",
"Effect": "Allow",
"Principal": {
"Service": "[Link]"
},
"Action": "s3:GetBucketLocation",
"Resource": "arn:aws:s[Link]my-s3-bucket",
"Condition": {
"StringEquals": {
"aws:SourceAccount": "account_id"
},
"ArnLike": {
"aws:SourceArn": "arn:aws:sns:region:account_id:*"
}
}
},
{
"Sid": "AllowListBucket",
"Effect": "Allow",
"Principal": {
"Service": "[Link]"
},
"Action": "s3:ListBucket",
"Resource": "arn:aws:s[Link]my-s3-bucket",
"Condition": {
"StringEquals": {
"aws:SourceAccount": "account_id"
},
"ArnLike": {
"aws:SourceArn": "arn:aws:sns:region:account_id:*"
}
}
}
]
}
237
Amazon Simple Notification
Service Guía para desarrolladores
Administración de suscripciones de SMS
Note
Puede publicar informes de uso en buckets de Amazon S3 que sean propiedad de la Cuenta de
AWS que se especifica en el elemento Condition en la política de Amazon S3. Para publicar
informes de uso en un bucket de Amazon S3 propiedad de otra Cuenta de AWS, consulte ¿Cómo
puedo copiar objetos S3 de otra Cuenta de AWS?.
<my-s3-bucket>/SMSUsageReports/<region>/YYYY/MM/DD/[Link]
Cada archivo puede contener hasta 50 000 registros. Si los registros de un día superan esta cuota,
Amazon SNS agregará varios archivos.
PublishTimeUTC,MessageId,DestinationPhoneNumber,MessageType,DeliveryStatus,PriceInUSD,PartNumber,TotalP
2016-05-10T[Link].476Z,96a298ac-1458-4825-
a7eb-7330e0720b72,1XXX5550100,Promotional,Message has been accepted by phone
carrier,0.90084,0,1
2016-05-10T[Link].561Z,1e29d394-
d7f4-4dc9-996e-26412032c344,1XXX5550100,Promotional,Message has been accepted by phone
carrier,0.34322,0,1
2016-05-10T[Link].769Z,98ba941c-afc7-4c51-
ba2c-56c6570a6c08,1XXX5550100,Transactional,Message has been accepted by phone
carrier,0.27815,0,1
Temas
• Desactivación de la recepción de mensajes SMS (p. 238)
• Administración de números de teléfono y suscripciones (consola) (p. 239)
• Administración de números de teléfono y suscripciones (SDK de AWS) (p. 240)
• ARRET (francés)
• CANCEL
• END
• OPT-OUT
• OPTOUT
238
Amazon Simple Notification
Service Guía para desarrolladores
Administración de suscripciones de SMS
• QUIT
• REMOVE
• STOP
• TD
• UNSUBSCRIBE
Para desactivar la suscripción, el destinatario debe responder al mismo número de origen (p. 191) que
Amazon SNS utilizó para entregar el mensaje. Una vez desactivada la suscripción, el destinatario ya no
recibirá mensajes SMS desde su Cuenta de AWS, a menos que reactive el número de teléfono.
Eliminación de un tema
Elimine un tema cuando ya no quiera publicar mensajes en sus puntos de enlace suscritos.
239
Amazon Simple Notification
Service Guía para desarrolladores
Administración de suscripciones de SMS
2. Seleccione las casillas de verificación correspondientes a los temas que desee eliminar. A
continuación, elija Actions (Acciones) y después Delete Topics (Eliminar temas).
3. En la ventana Delete (Eliminar), elija Delete (Eliminar). Amazon SNS elimina el tema y muestra un
mensaje de confirmación.
Para utilizar un SDK de AWS, debe configurarlo con sus credenciales. Para obtener más información,
consulte Archivos de configuración y credenciales compartidos en la Guía de referencia de SDK y
herramientas de AWS.
En los siguientes ejemplos de código, se muestra cómo publicar números de teléfono que han optado por
no recibir mensajes de Amazon SNS.
Java
try {
ListPhoneNumbersOptedOutRequest request =
[Link]().build();
ListPhoneNumbersOptedOutResponse result =
[Link](request);
[Link]("Status is " + [Link]().statusCode()
+ "\n\nPhone Numbers: \n\n" + [Link]());
} catch (SnsException e) {
[Link]([Link]().errorMessage());
[Link](1);
}
}
PHP
require 'vendor/[Link]';
use Aws\Sns\SnsClient;
use Aws\Exception\AwsException;
240
Amazon Simple Notification
Service Guía para desarrolladores
Administración de suscripciones de SMS
/**
* Returns a list of phone numbers that are opted out of receiving SMS messages
from your AWS SNS account.
*
* This code expects that you have AWS credentials set up per:
* [Link]
guide_credentials.html
*/
try {
$result = $SnSclient->listPhoneNumbersOptedOut([
]);
var_dump($result);
} catch (AwsException $e) {
// output error message if fails
error_log($e->getMessage());
}
En los siguientes ejemplos de código, se muestra cómo verificar si un número de teléfono ha optado por no
recibir mensajes de Amazon SNS.
.NET
/// <summary>
/// Checks to see if the supplied phone number has been opted out.
/// </summary>
/// <param name="client">The initialized Amazon SNS Client object used
/// to check if the phone number has been opted out.</param>
/// <param name="phoneNumber">A string representing the phone number
/// to check.</param>
public static async Task
CheckIfOptedOutAsync(IAmazonSimpleNotificationService client, string phoneNumber)
{
var request = new CheckIfPhoneNumberIsOptedOutRequest
{
PhoneNumber = phoneNumber,
};
try
{
241
Amazon Simple Notification
Service Guía para desarrolladores
Administración de suscripciones de SMS
if ([Link] == [Link])
{
string optOutStatus = [Link] ? "opted out" : "not
opted out.";
[Link]($"The phone number: {phoneNumber} is
{optOutStatus}");
}
}
catch (AuthorizationErrorException ex)
{
[Link]($"{[Link]}");
}
}
Java
try {
CheckIfPhoneNumberIsOptedOutRequest request =
[Link]()
.phoneNumber(phoneNumber)
.build();
CheckIfPhoneNumberIsOptedOutResponse result =
[Link](request);
} catch (SnsException e) {
[Link]([Link]().errorMessage());
[Link](1);
}
}
JavaScript
242
Amazon Simple Notification
Service Guía para desarrolladores
Administración de suscripciones de SMS
PHP
require 'vendor/[Link]';
use Aws\Sns\SnsClient;
use Aws\Exception\AwsException;
/**
* Indicates whether the phone number owner has opted out of receiving SMS messages
from your AWS SNS account.
*
* This code expects that you have AWS credentials set up per:
* [Link]
guide_credentials.html
*/
243
Amazon Simple Notification
Service Guía para desarrolladores
Administración de suscripciones de SMS
$phone = '+1XXX5550100';
try {
$result = $SnSclient->checkIfPhoneNumberIsOptedOut([
'phoneNumber' => $phone,
]);
var_dump($result);
} catch (AwsException $e) {
// output error message if fails
error_log($e->getMessage());
}
En los siguientes ejemplos de código, se muestra cómo eliminar una suscripción de Amazon SNS.
C++
Aws::SDKOptions options;
Aws::InitAPI(options);
{
Aws::SNS::SNSClient sns;
Aws::String subscription_arn = argv[1];
Aws::SNS::Model::UnsubscribeRequest s_req;
s_req.SetSubscriptionArn(subscription_arn);
if (s_out.IsSuccess())
{
std::cout << "Unsubscribed successfully " << std::endl;
}
else
{
std::cout << "Error while unsubscribing " << s_out.GetError().GetMessage()
<< std::endl;
}
}
Aws::ShutdownAPI(options);
244
Amazon Simple Notification
Service Guía para desarrolladores
Administración de suscripciones de SMS
Java
try {
UnsubscribeRequest request = [Link]()
.subscriptionArn(subscriptionArn)
.build();
} catch (SnsException e) {
[Link]([Link]().errorMessage());
[Link](1);
}
}
JavaScript
245
Amazon Simple Notification
Service Guía para desarrolladores
Administración de suscripciones de SMS
try {
const data = await [Link](new UnsubscribeCommand(params));
[Link]("Success.", data);
return data; // For unit tests.
} catch (err) {
[Link]("Error", [Link]);
}
};
run();
Kotlin
Esta es una documentación preliminar para una característica en versión de vista previa.
Está sujeta a cambios.
PHP
require 'vendor/[Link]';
use Aws\Sns\SnsClient;
use Aws\Exception\AwsException;
/**
* Deletes a subscription to an Amazon SNS topic.
*
* This code expects that you have AWS credentials set up per:
* [Link]
guide_credentials.html
246
Amazon Simple Notification
Service Guía para desarrolladores
Administración de suscripciones de SMS
*/
$subscription = 'arn:aws:sns:us-east-1:111122223333:MySubscription';
try {
$result = $SnSclient->unsubscribe([
'SubscriptionArn' => $subscription,
]);
var_dump($result);
} catch (AwsException $e) {
// output error message if fails
error_log($e->getMessage());
}
Python
class SnsWrapper:
"""Encapsulates Amazon SNS topic and subscription functions."""
def __init__(self, sns_resource):
"""
:param sns_resource: A Boto3 Amazon SNS resource.
"""
self.sns_resource = sns_resource
def delete_subscription(subscription):
"""
Unsubscribes and deletes a subscription.
"""
try:
[Link]()
[Link]("Deleted subscription %s.", [Link])
except ClientError:
[Link]("Couldn't delete subscription %s.", [Link])
raise
Eliminación de un tema
Para eliminar un tema y todas sus suscripciones, obtenga el ARN del tema al presentar una solicitud
ListTopics con la API de Amazon SNS y, a continuación, pase el ARN a la solicitud DeleteTopic.
247
Amazon Simple Notification
Service Guía para desarrolladores
Administración de suscripciones de SMS
En los siguientes ejemplos de código, se muestra cómo eliminar un tema de Amazon SNS y todas las
suscripciones a ese tema.
.NET
/// <summary>
/// This example deletes an existing Amazon Simple Notification Service
/// (Amazon SNS) topic. The example was created using the AWS SDK for .NET
/// version 3.7 and .NET Core 5.0.
/// </summary>
public class DeleteSNSTopic
{
public static async Task Main()
{
string topicArn = "arn:aws:sns:us-east-2:704825161248:ExampleSNSTopic";
IAmazonSimpleNotificationService client = new
AmazonSimpleNotificationServiceClient();
C++
Aws::SDKOptions options;
Aws::InitAPI(options);
{
Aws::String topic_arn = argv[1];
Aws::SNS::SNSClient sns;
Aws::SNS::Model::DeleteTopicRequest dt_req;
dt_req.SetTopicArn(topic_arn);
if (dt_out.IsSuccess())
{
std::cout << "Successfully deleted topic " << topic_arn << std::endl;
}
else
{
std::cout << "Error deleting topic " << topic_arn << ":" <<
dt_out.GetError().GetMessage() << std::endl;
}
}
Aws::ShutdownAPI(options);
248
Amazon Simple Notification
Service Guía para desarrolladores
Administración de suscripciones de SMS
Java
try {
DeleteTopicRequest request = [Link]()
.topicArn(topicArn)
.build();
} catch (SnsException e) {
[Link]([Link]().errorMessage());
[Link](1);
}
}
JavaScript
249
Amazon Simple Notification
Service Guía para desarrolladores
Administración de suscripciones de SMS
Kotlin
PHP
require 'vendor/[Link]';
use Aws\Sns\SnsClient;
use Aws\Exception\AwsException;
/**
* Deletes a SNS topic and all its subscriptions.
*
* This code expects that you have AWS credentials set up per:
* [Link]
guide_credentials.html
*/
250
Amazon Simple Notification
Service Guía para desarrolladores
Regiones y países admitidos
$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';
try {
$result = $SnSclient->deleteTopic([
'TopicArn' => $topic,
]);
var_dump($result);
} catch (AwsException $e) {
// output error message if fails
error_log($e->getMessage());
}
Python
class SnsWrapper:
"""Encapsulates Amazon SNS topic and subscription functions."""
def __init__(self, sns_resource):
"""
:param sns_resource: A Boto3 Amazon SNS resource.
"""
self.sns_resource = sns_resource
def delete_topic(topic):
"""
Deletes a topic. All subscriptions to the topic are also deleted.
"""
try:
[Link]()
[Link]("Deleted topic %s.", [Link])
except ClientError:
[Link]("Couldn't delete topic %s.", [Link])
raise
251
Amazon Simple Notification
Service Guía para desarrolladores
Regiones y países admitidos
Puede utilizar Amazon SNS para enviar mensajes SMS a los países y regiones siguientes:
Afganistán AF
Albania AL Sí
252
Amazon Simple Notification
Service Guía para desarrolladores
Regiones y países admitidos
Argelia DZ
Andorra AD Sí
Angola AO Sí
Anguila AI Sí
Antigua y Barbuda AG Sí
Argentina AR
Armenia AM Sí
Aruba AW Sí
Australia AU Sí Sí
Austria AT Sí Sí
Azerbaiyán AZ
Bahamas BS Sí
Bahréin BH Sí Sí
Bangladesh BD
Barbados BB Sí
Belarús BY Sí
1 (p. 260)
Bélgica BE Sí
Belice BZ Sí
Benín BJ Sí
Bermudas BM Sí
Bután BT Sí
Bolivia BO Sí
Bosnia y Herzegovina BA Sí
Botsuana BW Sí
Brasil BR Sí
Brunéi BN Sí
Bulgaria BG Sí
Burkina Faso BF Sí
Burundi BI Sí
Camboya KH Sí
253
Amazon Simple Notification
Service Guía para desarrolladores
Regiones y países admitidos
Camerún CM Sí
Canadá CA Sí
Cabo Verde CV Sí
Islas Caimán KY
República CF Sí
Centroafricana
Chad TD Sí
Chile CL Sí
China
2 (p. 260) CN Para obtener asistencia,
comuníquese con
ventas.
Colombia CO
Comoras KM Sí
Islas Cook CK Sí
Costa Rica CR
Croacia HR Sí
Chipre CY Sí
Chequia CZ Sí
República Democrática CD
del Congo
Dinamarca DK Sí Sí
Yibuti DJ Sí
Dominica DM Sí
República Dominicana DO
Ecuador EC
Egipto EG Sí
1 (p. 260)
El Salvador SV
Guinea Ecuatorial GQ Sí
Estonia EE Sí Sí
Etiopía ET
Islas Faroe FO Sí
254
Amazon Simple Notification
Service Guía para desarrolladores
Regiones y países admitidos
Fiyi FJ Sí
Finlandia FI Sí Sí
Francia FR Sí Sí
Guayana Francesa GF
Gabón GA Sí
Gambia GM Sí
Georgia GE Sí
Alemania DE Sí Sí
Ghana GH
Gibraltar GI Sí
Grecia GR Sí
Groenlandia GL Sí
Granada GD Sí
Guadalupe GP Sí
Guam GU
Guatemala GT Sí
Guinea GN Sí
Guinea-Bissau GW Sí
Guyana GY Sí
Haití HT Sí
Honduras HN Sí
Hong Kong HK Sí Sí
Hungría HU Sí
Islandia IS Sí
India IN Sí
3 (p. 260) Sí
Indonesia ID Sí
Irak IQ
Irlanda IE Sí Sí
Israel IL Sí Sí
Italia IT Sí Sí
255
Amazon Simple Notification
Service Guía para desarrolladores
Regiones y países admitidos
Costa de Marfil CI
Jamaica JM Sí
Japón JP Sí
Jordania JO Sí
1 (p. 260)
Kazajistán KZ
Kenia KE
Kiribati KI
Kuwait KW Sí
1 (p. 260)
Kirguistán KG
Laos LA
Letonia LV Sí Sí
Líbano LB Sí
Lesoto LS Sí
Liberia LR Sí
Libia LY Sí
Liechtenstein LI Sí
Lituania LT Sí Sí
Luxemburgo LU Sí
Macao MO Sí
Madagascar MG Sí
Malawi MW Sí
Malasia MY Sí
Maldivas MV Sí
Malí ML
Malta MT Sí
Martinica MQ Sí
Mauritania MR Sí
Mauricio MU Sí
México MX Sí
256
Amazon Simple Notification
Service Guía para desarrolladores
Regiones y países admitidos
Moldavia MD Sí
Mónaco MC
Mongolia MN Sí
Montenegro ME Sí
Montserrat MS Sí
Marruecos MA
Mozambique MZ
Myanmar MM
Namibia NA
Nepal NP
Países Bajos NL Sí Sí
Antillas holandesas AN Sí
Nueva Caledonia NC Sí
Nueva Zelanda NZ Sí
Nicaragua NI
Níger NE Sí
Nigeria NG Sí
Noruega NO Sí Sí
Omán OM Sí
Pakistán PK
Palaos PW
Territorios Palestinos PS
Panamá PA
Paraguay PY Sí
Perú PE
Filipinas PH Sí
1 (p. 260) Sí
Polonia PL Sí Sí
Portugal PT Sí Sí
257
Amazon Simple Notification
Service Guía para desarrolladores
Regiones y países admitidos
Puerto Rico PR Sí
Qatar QA Sí
1 (p. 260)
Isla de Reunión RE Sí
Rumanía RO Sí
Rusia RU Sí
1 (p. 260) Sí
Ruanda RW Sí
Santa Lucía LC
Samoa WS Sí
Arabia Saudí SA Sí
1 (p. 260)
Senegal SN Sí
Serbia RS Sí
Seychelles SC Sí
Sierra Leona SL Sí
Singapur SG Sí Sí
Eslovaquia SK Sí Sí
Eslovenia SI Sí Sí
Islas Salomón SB Sí
Somalia SO Sí
Sudáfrica ZA Sí
España ES Sí Sí
Sri Lanka LK Sí
1 (p. 260)
Surinam SR Sí
Suazilandia SZ Sí
258
Amazon Simple Notification
Service Guía para desarrolladores
Regiones y países admitidos
Suecia SE Sí Sí
Suiza CH Sí Sí
Taiwán TW Sí
Tayikistán TJ Sí
Tanzania TZ
Tailandia TH Sí
1 (p. 260) Sí
Timor Oriental TL
Togo TG Sí
Tonga TO Sí
Trinidad y Tobago TT Sí
Túnez TN Sí
Turquía TR Sí
1 (p. 260) No
Turkmenistán TM Sí
Uganda UG Sí
Ucrania UA Sí Sí
Reino Unido GB Sí Sí
Estados Unidos US Sí
Uruguay UY
Uzbekistán UZ Sí
Vanuatu VU Sí
Venezuela VE
Vietnam VN Sí
1 (p. 260)
Islas Vírgenes VG Sí
Británicas
Yemen YE Sí
Zambia ZM Sí
Zimbabue ZW Sí
259
Amazon Simple Notification
Service Guía para desarrolladores
Prácticas recomendadas de SMS
Notas
1.
Los remitentes deben utilizar un ID de remitente alfabético registrado previamente. Para solicitar un
ID de remitente de AWS Support, presente una solicitud de asistencia. Algunos países exigen que los
remitentes cumplan requisitos específicos o que respeten determinadas restricciones para obtener
la aprobación. En estos casos, es posible que AWS Support se comunique con usted para obtener
información adicional después de que envíe su solicitud de ID de remitente.
2.
Los remitentes deben utilizar una plantilla previamente registrada para cada tipo de mensaje que
piensan enviar. Si un remitente no cumple con este requisito, sus mensajes se bloquearán. Para
registrar una plantilla, envíe una solicitud de asistencia. Algunos países exigen que los remitentes
cumplan otros requisitos específicos o que respeten determinadas restricciones para obtener la
aprobación. En estos casos, AWS Support podría pedirle más información.
3.
Los remitentes deben utilizar un ID de remitente alfabético registrado previamente. Se necesitan otros
pasos de registro. Para obtener más información, consulte Requisitos especiales para enviar mensajes
SMS a destinatarios en la India (p. 264) .
Además, los operadores de teléfono móvil auditan de forma continua a los remitentes de SMS masivos.
Limitan o bloquean los mensajes de números que determinan que están enviando mensajes no solicitados.
El envío de contenido no solicitado también es una infracción de la política de uso aceptable de AWS. El
equipo de Amazon SNS audita con regularidad campañas de SMS y podría limitar o bloquear su capacidad
de enviar mensajes si consta que está enviando mensajes no solicitados.
Por último, en muchos países, regiones y jurisdicciones, existen diversas sanciones por el envío de
mensajes SMS no solicitados. Por ejemplo, en Estados Unidos, la Ley federal de Protección al Usuario
Telefónico (TCPA) establece que los consumidores tienen derecho a una indemnización de entre 500 y
1 500 USD en concepto de daños (pagados por el remitente) por cada mensaje no solicitado que reciban.
Esta sección describe diversas prácticas recomendadas que podrían ayudarle a mejorar la implicación
de los clientes y evitar sanciones costosas. Sin embargo, tenga en cuenta que esta sección no contiene
asesoramiento jurídico. Consulte siempre a un abogado para obtener asesoramiento jurídico.
Temas
• Cumplimiento de leyes y reglamentos (p. 261)
• Obtener permiso (p. 261)
• Auditar sus listas de clientes (p. 262)
• Mantener registros (p. 262)
• Responder correctamente (p. 262)
• Ajustar el envío en función del compromiso (p. 262)
• Enviar en horarios apropiados (p. 263)
• Evitar la fatiga entre canales (p. 263)
• Mantener listas independientes (p. 263)
• Utilizar códigos cortos dedicados (p. 263)
260
Amazon Simple Notification
Service Guía para desarrolladores
Prácticas recomendadas de SMS
La lista siguiente incluye enlaces a las leyes más importantes que se aplican a las comunicaciones SMS en
los principales mercados de todo el mundo.
• Estados Unidos: la Ley Federal de Protección al Usuario Telefónico de 1991, también denominada
TCPA, se aplica a ciertos tipos de mensajes SMS. Para obtener más información, consulte las
normativas y reglamentos en el sitio web de la Comisión Federal de Comunicaciones.
• Reino Unido: las normativas sobre la privacidad y las comunicaciones electrónicas (directiva CE) de
2003, también denominadas PECR, se aplican a ciertos tipos de mensajes SMS. Para obtener más
información, consulte What are PECR? en el sitio web de la oficina del comisionado de información del
Reino Unido.
• Unión Europea: la directiva sobre la privacidad y las comunicaciones electrónicas de 2002, también
denominada directiva ePrivacy, se aplica a algunos tipos de mensajes SMS. Para obtener más
información, consulte el texto completo de la ley en el sitio web [Link].
• Canadá: la ley de lucha contra el spam inalámbrico y de Internet, más comúnmente denominada
Legislación AntiSpam de Canadá o CASL, se aplica a ciertos tipos de mensajes SMS. Para obtener más
información, consulte el texto completo de la ley en el sitio web del parlamento canadiense.
• Japón: el Acta del Reglamento de transmisión de correo electrónico específico puede aplicarse a ciertos
tipos de mensajes SMS. Para obtener más información, consulte el sitio web del ministerio japonés de
asuntos internos y comunicaciones.
Como remitente, estas leyes pueden afectarle incluso si no reside en uno de estos países. Algunas de las
leyes de esta lista se crearon originalmente para abordar el problema de las llamadas telefónicas o del
correo electrónico no solicitados, pero se han interpretado o ampliado también para su aplicación a los
mensajes SMS. Otros países y regiones pueden tener sus propias leyes relacionadas con la transmisión
de mensajes SMS. Consulte a un abogado de cada país o región en la que se encuentren sus clientes
para obtener asesoramiento jurídico.
Obtener permiso
Nunca envíe mensajes a clientes que no hayan solicitado explícitamente recibirlos.
Si los clientes pueden inscribirse para recibir los mensajes mediante un formulario en línea, añada un
CAPTCHA al formulario para evitar que scripts automatizados suscriban a personas sin su consentimiento.
Si recibe una solicitud de alta de SMS, envíe un mensaje al cliente pidiéndole que confirme que desea
recibir mensajes de usted. No envíe a dicho cliente ningún mensaje adicional hasta que confirme su
suscripción. Un mensaje de confirmación de suscripción podría tener un aspecto similar al siguiente:
Text YES to join Example Corp. alerts. 2 msgs/month. Msg & data rates may apply.
Reply HELP for help, STOP to cancel.
Mantenga registros que incluyan la fecha, la hora y el origen de cada solicitud de alta y confirmación. Esto
puede ser útil si un operador o agencia reguladora lo solicita y también puede ayudarle a realizar auditorías
rutinarias de su lista de clientes.
Por último, tenga en cuenta que los mensajes SMS transaccionales, como confirmaciones de pedidos o
contraseñas de un solo uso, normalmente no precisan de consentimiento explícito siempre que informe a
sus clientes que va a enviarles dichos mensajes. Sin embargo, no debe enviar mensajes de marketing a
los clientes que solo le hayan dado permiso para enviarles mensajes transaccionales.
261
Amazon Simple Notification
Service Guía para desarrolladores
Prácticas recomendadas de SMS
Al auditar su lista, envíe a cada cliente que ha solicitado el alta un mensaje que les recuerde que ya están
suscritos y facilíteles información sobre cómo anular la suscripción. Un mensaje de recordatorio podría
tener un aspecto similar al siguiente:
You're subscribed to Example Corp. alerts. Msg & data rates may apply.
Reply HELP for help, STOP to unsubscribe.
Mantener registros
Mantenga registros que muestren cuándo ha solicitado cada cliente que usted le envíe mensajes SMS
y qué mensajes envía a cada cliente. Muchos países y regiones de todo el mundo requieren que los
remitentes de SMS mantengan estos registros de forma que se puedan recuperar fácilmente. Los
operadores de telefonía móvil también podrían pedirle esta información en cualquier momento. La
información exacta que debe proporcionar varía según el país o la región. Para obtener más información
sobre los requisitos de conservación de registros, lea la normativa sobre mensajería SMS de cada país o
región en que se encuentren sus clientes.
En algunas ocasiones, un operador o una agencia reguladora nos solicita que proporcionemos una prueba
de que un cliente aceptó recibir mensajes de usted. En estos casos, AWS Support se pone en contacto
con usted con una lista de la información solicitada por el operador o la agencia. Si no puede proporcionar
la información necesaria, podemos suspender su capacidad de enviar mensajes SMS adicionales.
Responder correctamente
Cuando un destinatario responde a sus mensajes, asegúrese de responder con información útil. Por
ejemplo, cuando un cliente responde a uno de sus mensajes con la palabra clave "AYUDA", envíeles
información sobre el programa al que está suscrito, el número de mensajes que va a enviar cada mes y
las formas en que puede ponerse en contacto con usted para obtener más información. Una respuesta de
AYUDA podría tener un aspecto similar al siguiente:
Cuando un cliente respuestas con la palabra clave "STOP", hágale saber que ya no recibirá más
mensajes. Una respuesta STOP podría tener un aspecto similar al siguiente:
STOP: You're unsubscribed from Example Corp. alerts. No more messages will be sent.
Reply HELP, email help@[Link], or call XXX-555-0199 for more info.
Para los clientes que no suelan participar en sus mensajes, debe ajustar la frecuencia de los mismos.
Por ejemplo, si envía mensajes semanales a clientes comprometidos, podría crear un resumen mensual
independiente para los clientes menos comprometidos.
262
Amazon Simple Notification
Service Guía para desarrolladores
Requisitos de SMS para Singapur
Por último, elimine de su lista a aquellos clientes que no muestren ningún compromiso. Este paso evita
que los clientes se sientan frustrados con sus mensajes. También le ahorra dinero y ayuda a proteger su
reputación como remitente.
Antes de empezar a utilizar un ID de remitente de Singapur registrado a través de SSIR, debe completar
un proceso de incorporación a través de Amazon para permitir la publicación de su cuenta para el uso de
su ID de remitente registrado antes de iniciar el registro a través de SGNIC. A continuación, se muestran
las instrucciones para incorporar el ID de remitente registrado a Amazon. Si no desea utilizar un ID de
remitente registrado de Singapur, no tiene que realizar ninguna acción y puede continuar enviando los
mensajes a través de Amazon SNS.
Important
Para registrar un ID de remitente con el Centro de Información de Red de Singapur (SGNIC), hay
dos pasos que se deben completar en el siguiente orden.
1. Primero debe trabajar con Amazon para registrar el ID de remitente de Singapur (SG) para la
cuenta. Una vez completado este paso, puede continuar con el siguiente paso.
2. Trabaje con SGNIC para registrar el ID de remitente.
263
Amazon Simple Notification
Service Guía para desarrolladores
Requisitos de SMS para destinos de Estados Unidos
Warning
Debe enviar un registro de ID de remitente de cada cuenta de AWS individual que necesita para
utilizar el ID de remitente.
264
Amazon Simple Notification
Service Guía para desarrolladores
Requisitos de SMS para la India
Note
El precio del envío de mensajes mediante rutas locales se muestra en la página Precios de SMS
de Amazon SNS en todo el mundo. El precio de envío de mensajes mediante conexiones ILDO es
más alto que el precio de envío de mensajes a través de rutas locales.
Si prefiere utilizar un ID de remitente alfabético para sus mensajes SMS, debe enviar esos mensajes a
través de rutas locales en lugar de rutas ILDO. Para enviar mensajes mediante rutas locales, primero
debe registrar su caso de uso y las plantillas de los mensajes en la Autoridad Reguladora de las
Telecomunicaciones de la India (TRAI) a través de los portales de la Tecnología de Libro Mayor Distribuido
(DLT). Estos requisitos de registro tienen por objeto reducir la cantidad de mensajes no solicitados que
reciben los consumidores indios y protegerlos de mensajes potencialmente perjudiciales. Este proceso de
registro es administrado por Vodafone India a través de su servicio Vilpower.
Note
No puede usar tanto los ID de remitente numéricos como los ID alfanuméricos en la misma
cuenta. Si utiliza ambos tipos de ID, debe mantener cuentas separadas para cada uno. Para
obtener más pautas de contenido, consulte el sitio web de Vilpower en [Link]
Temas
• Envío de mensajes SMS a la India: información general de tareas (p. 265)
• Paso 1: Registro en la TRAI (p. 265)
• Paso 2: Solicitar un ID de remitente (p. 266)
• Paso 3: Enviar mensajes SMS (p. 266)
• Solución de problemas de mensajes SMS enviados a destinatarios de la India (p. 267)
A continuación, encontrará una lista de muestra de algunos sitios de registro de la tecnología de libro
mayor distribuido (DLT) que puede utilizar para registrar su organización en la TRAI (pueden aplicarse
tarifas). El proceso de registro varía según el sitio. Contacte con sus respectivos equipos de asistencia
para obtener ayuda.
• BSNL DLT
265
Amazon Simple Notification
Service Guía para desarrolladores
Requisitos de SMS para la India
Note
Amazon Web Services no mantiene los sitios web de los proveedores de registro de DLT. Los
pasos en sus sitios web están sujetos a cambios.
266
Amazon Simple Notification
Service Guía para desarrolladores
Requisitos de SMS para la India
Esta opción de nivel de mensaje anula el tipo de mensaje predeterminado, que se establece en la
página Text messaging preferences (Preferencias de la mensajería de texto).
Para obtener información sobre los precios de los mensajes promocionales y transaccionales, consulte
la página relacionada con los precios globales de SMS.
6. En Number (Número), escriba el número de teléfono al que desea enviar el mensaje.
7. En Message (Mensaje), escriba el mensaje que va a enviar.
Al agregar contenido a los mensajes SMS, asegúrese de que coincida de forma exacta con el
contenido de la plantilla registrada en DLT. Los operadores bloquean los mensajes SMS si el
contenido del mensaje incluye retornos de caracteres adicionales, espacios, signos de puntuación
o mayúsculas de frase no coincidentes. Las variables de una plantilla pueden tener 30 o menos
caracteres.
8. En la sección Identidades de origen, en ID de remitente, escriba un ID personalizado que contenga de
3 a 11 caracteres.
Los ID de remitente pueden ser numéricos para los mensajes promocionales, o alfabéticos o
alfanuméricos para los mensajes transaccionales. El ID de remitente se muestra como el remitente del
mensaje en el dispositivo receptor.
9. Expanda la sección Atributos específicos del país y especifique los siguientes atributos necesarios
para enviar mensajes SMS a destinatarios de la India:
Se trata de una cadena personalizada, proporcionada por TRAI, de 1 a 50 caracteres que identifica
de forma exclusiva a la entidad que ha registrado en TRAI.
• ID de plantilla: el ID de la plantilla que recibió del organismo regulador para enviar mensajes SMS a
los destinatarios en la India.
Se trata de una cadena personalizada, proporcionada por TRAI, de 1 a 50 caracteres que identifica
de manera única la plantilla que se registró en TRAI. El ID de la plantilla debe estar asociado al ID
de remitente que especificó en el paso anterior, y con el contenido del mensaje.
10. Elija Publish message (Publicar mensaje).
Para obtener información sobre cómo enviar mensajes SMS a destinatarios de otros países, consulte
Publicación en un teléfono móvil (p. 225).
267
Amazon Simple Notification
Service Guía para desarrolladores
Notificaciones de inserción en móviles
Contenido enviado: <#> 12345 is your OTP to verify mobile number. Your OTP is
valid for 15 minutes -- ABC Pvt. Ltd.
Problema: No hay plantillas de DLT en las que se incluya <#> o {#var#} al principio de la plantilla
registrada en DLT.
• El valor de una variable supera los 30 caracteres.
Contenido enviado: 12345 is your OTP code for ABC (ABC Company - India Private
Limited) - (ABC 123456789). Share with your agent only. - ABC Pvt. Ltd.
Plantilla coincidente: {#var#} is your OTP code for {#var#} ({#var#}) - ({#var#}
{#var#}). Share with your agent only. - ABC Pvt. Ltd.
Problema: El valor de “ABC Company - India Private Limited” en el contenido enviado excede un único
límite {#var#} de 30 caracteres.
• El caso de frase del mensaje no coincide con el caso de frase de la plantilla.
Contenido enviado: 12345 is your OTP code for ABC (ABC Company - India Private
Limited) - (ABC 123456789). Share with your agent only. - ABC Pvt. Ltd.
Plantilla coincidente: {#var#} is your OTP code for {#var#} ({#var#}) - ({#var#}
{#var#}). Share with your agent only. - ABC PVT. LTD.
Temas
• Cómo funcionan las notificaciones de usuario (p. 269)
• Información general del proceso de notificación de usuario (p. 269)
• Configuración de una aplicación móvil (p. 269)
• Envío de notificaciones de inserción en móviles (p. 280)
• Atributos de aplicaciones móviles (p. 283)
• Eventos de aplicaciones móviles (p. 286)
• Acciones de la API de inserción móvil (p. 288)
• Errores de la API de inserción móvil (p. 289)
• Uso del atributo de mensaje de período de vida (TTL) de Amazon SNS para las notificaciones push
móviles (p. 296)
• Regiones compatibles para aplicaciones móviles (p. 298)
• Prácticas recomendadas de notificaciones push en móviles (p. 298)
268
Amazon Simple Notification
Service Guía para desarrolladores
Cómo funcionan las notificaciones de usuario
Los servicios de notificaciones push, como APNs y FCM, mantienen una conexión con cada aplicación
y dispositivo móvil asociado registrado para utilizar el servicio. Cuando una aplicación y un dispositivo
móvil se registran, el servicio de notificaciones push devuelve un token de dispositivo. Amazon SNS
utiliza el token de dispositivo para crear un punto de enlace móvil al que puede enviar mensajes de
notificaciones push directos. Para que Amazon SNS pueda comunicarse con los diferentes servicios de
notificaciones push, debe enviar las credenciales de su servicio de notificaciones push a Amazon SNS
para que las utilice en su nombre. Para obtener más información, consulte Información general del proceso
de notificación de usuario (p. 269) .
Además de enviar mensajes de notificaciones push directos, también puede utilizar Amazon SNS para
enviar mensajes a puntos de enlace móviles suscritos a un tema. El concepto es el mismo que para la
suscripción a un tema de otros tipos de puntos de enlace, como Amazon SQS, HTTP/S, correo electrónico
y SMS, tal y como se describe en ¿Qué es Amazon SNS? (p. 1). La diferencia radica en que Amazon SNS
se comunica mediante servicios de notificaciones push para que los puntos de enlace móviles suscritos
reciban los mensajes de notificaciones push enviados al tema.
269
Amazon Simple Notification
Service Guía para desarrolladores
Configuración de una aplicación móvil
Temas
• Requisitos previos para las notificaciones de usuario de Amazon SNS (p. 270)
• Creación de una aplicación de plataforma (p. 271)
• Creación de un punto de enlace de plataforma (p. 271)
• Adición de tokens de dispositivo o ID de registro (p. 276)
• Métodos de autenticación de Apple (p. 279)
• Un conjunto de credenciales para conectarse a uno de los servicios de notificaciones push compatibles:
ADM, APNs, Baidu, FCM, MPNS o WNS.
• Un token de dispositivo o ID de registro para la aplicación y el dispositivo móviles.
• Amazon SNS configurado para enviar mensajes de notificaciones de inserción a los puntos de enlace
móviles.
• Una aplicación móvil que esté registrada y configurada para utilizar uno de los servicios de notificaciones
de inserción compatibles.
Para registrar su aplicación a un servicio de notificaciones push, tiene que seguir varios pasos. Amazon
SNS necesita parte de la información que proporciona al servicio de notificaciones push para poder
enviar mensajes de notificaciones push al punto de enlace móvil. En general, necesita las credenciales
necesarias para establecer una conexión con el servicio de notificaciones de inserción, un token de
dispositivo o ID de registro (que represente el dispositivo y la aplicación móviles) que haya recibido del
servicio de notificaciones de inserción y la aplicación móvil registrada en el servicio de notificaciones de
inserción.
La forma exacta que las credenciales adoptan varía según la plataforma móvil, pero, en todos los casos,
estas credenciales se deben enviar mientras se establece conexión con la plataforma. Se genera un
conjunto de credenciales para cada aplicación móvil, que debe utilizarse para enviar un mensaje a
cualquier instancia de dicha aplicación.
Los nombres específicos variarán según el servicio de notificaciones de inserción que se utilice. Por
ejemplo, cuando utilice APNs como servicio de notificaciones push, necesitará un token de dispositivo.
O bien, cuando utilice FCM, el token de dispositivo equivalente se denomina ID de registro. El token de
dispositivo o el ID de registro es una cadena que el sistema operativo del dispositivo móvil envía a la
aplicación. Sirve para identificar de forma exclusiva una instancia de una aplicación móvil que se ejecuta
en un determinado dispositivo móvil y puede considerarse un identificador único de este par concreto de
aplicación y dispositivo.
Amazon SNS almacena las credenciales (además de otras configuraciones) como recurso de aplicación
de una plataforma. Los tokens de dispositivo (también aquí con algunos parámetros adicionales) se
representan como objetos denominados puntos de enlace de la plataforma. Cada punto de enlace de la
plataforma pertenece a una aplicación de plataforma específica y es posible comunicarse con cada uno de
ellos usando las credenciales que se almacenan en su correspondiente aplicación de plataforma.
En las secciones siguientes se incluyen los requisitos previos de cada uno de los servicios de
notificaciones push compatibles. Una vez que haya obtenido la información sobre los requisitos previos,
puede enviar un mensaje de notificaciones push mediante la AWS Management Console o las API de
notificaciones push móviles de Amazon SNS. Para obtener más información, consulte Información general
del proceso de notificación de usuario (p. 269).
270
Amazon Simple Notification
Service Guía para desarrolladores
Configuración de una aplicación móvil
Para obtener la lista de las regiones de AWS en las que puede crear aplicaciones móviles, consulte
Regiones compatibles para aplicaciones móviles (p. 298).
4. En el cuadro Application name (Nombre de la aplicación), ingrese un nombre que represente a la
aplicación.
Los nombres de las aplicaciones tienen que estar formados únicamente por letras ASCII mayúsculas
y minúsculas, números, guiones bajos, guiones y puntos. Los nombres también deben tener entre 1 y
256 caracteres de longitud.
5. En Push notification platform (Plataforma de notificación push), elija la plataforma en la que esté
registrada la aplicación y, a continuación, ingrese las credenciales adecuadas.
Note
Si utiliza una de las plataformas Apple Push Notification Service (APNs), puede elegir entre
autenticación basada en token o en certificado (p. 279), y luego elegir Choose file (Elegir
archivo) para cargar el archivo .p8 o .p12 file (exportado desde Keychain Access) en Amazon
SNS.
6. Elija Create platform application (Crear aplicación de plataforma).
Esto registrará la aplicación en Amazon SNS, lo que creará un objeto de aplicación de plataforma para
la plataforma seleccionada y devolverá un PlatformApplicationArn correspondiente.
En esta sección, se describe el procedimiento recomendado para crear un punto de enlace de plataforma.
Temas
• Creación de un punto de enlace de plataforma (p. 272)
• Pseudocódigo (p. 272)
• AWSEjemplo de SDK de (p. 273)
• Troubleshooting (p. 275)
271
Amazon Simple Notification
Service Guía para desarrolladores
Configuración de una aplicación móvil
• Si el punto de enlace de plataforma ya existe, no lo vuelva a crear. Devuelva al intermediario el ARN del
punto de enlace de plataforma existente.
• Si ya existe el punto de enlace de plataforma con el mismo token de dispositivo pero diferentes
opciones, no lo vuelva a crear. Envíe una excepción al intermediario.
• Si el punto de enlace de plataforma no existe, créelo. Devuelva al intermediario el ARN del punto de
enlace de plataforma que acaba de crear.
No debe llamar a la acción de creación de un punto de enlace de plataforma inmediatamente cada vez
que se inicie una aplicación; este enfoque no siempre proporciona un punto de enlace que funcione.
Esto puede ocurrir, por ejemplo, cuando una aplicación se desinstala y se vuelve a instalar en el mismo
dispositivo, y su punto de enlace que ya existe, pero está deshabilitado. Un proceso de registro correcto
debe realizar las operaciones siguientes:
1. Asegurarse de que exista un punto de enlace de plataforma para esta combinación de aplicación y
dispositivo.
2. Asegurarse de que el token de dispositivo del punto de enlace de plataforma es el último token de
dispositivo válido.
3. Asegurarse de que el punto de enlace de plataforma esté habilitado y listo para ser utilizado.
Pseudocódigo
El siguiente pseudocódigo describe una práctica recomendada para crear un punto de enlace de
plataforma que funcione, sea actual y esté habilitado en una amplia variedad de condiciones de partida.
Este enfoque funciona tanto si se trata de la primera vez que la aplicación se registra o no, como si el
punto de enlace de plataforma de esta aplicación ya existe, o si el punto de enlace de plataforma está
habilitado, tiene el token de dispositivo correcto, etc. Es seguro llamarlo varias veces seguidas, ya que no
creará puntos de enlace de plataforma duplicados ni cambiará un punto de enlace de plataforma si ya está
actualizado y activado.
retrieve the latest device token from the mobile operating system
if (the platform endpoint ARN is not stored)
# this is a first-time registration
call create platform endpoint
store the returned platform endpoint ARN
endif
272
Amazon Simple Notification
Service Guía para desarrolladores
Configuración de una aplicación móvil
endif
Este enfoque se puede utilizar siempre que la aplicación quiera registrarse o volver a registrarse. También
se puede utilizar para notificar a Amazon SNS un cambio en el token del dispositivo. En este caso, solo
tiene que llamar a la acción con el valor de token del último dispositivo. Tenga en cuenta los elementos
siguientes de este enfoque:
• Hay dos casos en los que puede llamar a la acción de crear un punto de enlace de plataforma. Puede
llamarse justo al principio, cuando la aplicación no conoce su propio ARN de punto de enlace de
plataforma, como es el caso durante un primer registro. También se puede llamar si la llamada inicial de
acción de obtención de los atributos del punto de enlace genera un error con una excepción del tipo no
se ha encontrado, como ocurriría si la aplicación conoce su ARN de punto de enlace, pero este se ha
eliminado.
• Se llama a la acción de obtención de los atributos del punto de enlace para verificar el estado del punto
de enlace de plataforma, aunque dicho punto de enlace se acabe de crear. Esto ocurre cuando el punto
de enlace de plataforma ya existe, pero está deshabilitado. En este caso, la acción de creación del punto
de enlace de plataforma se realiza correctamente, pero no habilita el punto de enlace de plataforma,
por lo que debe comprobar el estado del punto de enlace de plataforma antes de devolver el resultado
correcto.
AWSEjemplo de SDK de
En los siguientes ejemplos, se muestra cómo implementar el pseudocódigo anterior mediante los clientes
de Amazon SNS que proporcionan los SDK de AWS.
Para utilizar un SDK de AWS, debe configurarlo con sus credenciales. Para obtener más información,
consulte Archivos de configuración y credenciales compartidos en la Guía de referencia de SDK y
herramientas de AWS.
Java
class RegistrationExample {
if (createNeeded) {
// No platform endpoint ARN is stored; need to call createEndpoint.
endpointArn = createEndpoint();
createNeeded = false;
}
273
Amazon Simple Notification
Service Guía para desarrolladores
Configuración de una aplicación móvil
new GetEndpointAttributesRequest()
.withEndpointArn(endpointArn);
GetEndpointAttributesResult geaRes =
[Link](geaReq);
updateNeeded = ![Link]().get("Token").equals(token)
|| ![Link]().get("Enabled").equalsIgnoreCase("true");
if (createNeeded) {
createEndpoint(token);
}
if (updateNeeded) {
// The platform endpoint is out of sync with the current data;
// update the token and enable it.
[Link]("Updating platform endpoint " + endpointArn);
Map attribs = new HashMap();
[Link]("Token", token);
[Link]("Enabled", "true");
SetEndpointAttributesRequest saeReq =
new SetEndpointAttributesRequest()
.withEndpointArn(endpointArn)
.withAttributes(attribs);
[Link](saeReq);
}
}
/**
* @return never null
* */
private String createEndpoint(String token) {
274
Amazon Simple Notification
Service Guía para desarrolladores
Configuración de una aplicación móvil
}
storeEndpointArn(endpointArn);
return endpointArn;
}
/**
* @return the ARN the app was registered under previously, or null if no
* platform endpoint ARN is stored.
*/
private String retrieveEndpointArn() {
// Retrieve the platform endpoint ARN from permanent storage,
// or return null if null is stored.
return arnStorage;
}
/**
* Stores the platform endpoint ARN in permanent storage for lookup next time.
* */
private void storeEndpointArn(String endpointArn) {
// Write the platform endpoint ARN to permanent storage.
arnStorage = endpointArn;
}
}
Para obtener más información, consulte Acciones de la API de inserción móvil (p. 288).
Troubleshooting
Llamar repetidamente a la acción de creación de un punto de enlace de plataforma con un token
de dispositivo obsoleto
En especial para los puntos de enlace de FCM, puede que piense que es mejor almacenar el primer
token de dispositivo generado por la aplicación y llamar a la creación de punto de enlace de plataforma
con dicho token de dispositivo cada vez que se inicia la aplicación. Esto puede parecer correcto, dado
que la aplicación no tiene que administrar el estado del token de dispositivo y Amazon SNS actualizará
automáticamente el token de dispositivo a su valor más reciente. Sin embargo, esta solución presenta una
serie de problemas graves:
• Amazon SNS depende de los comentarios de FCM para actualizar los tokens de dispositivo vencidos
en tokens de dispositivo nuevos. FCM retiene información en tokens de dispositivo antiguos durante
un tiempo, aunque no de forma indefinida. Cuando FCM se olvide de la conexión entre el token de
dispositivo antiguo y el nuevo, Amazon SNS ya no podrá actualizar el token de dispositivo almacenado
en el punto de enlace de plataforma a su valor correcto; en su lugar, desactivará el punto de enlace de
plataforma.
• La aplicación de plataforma contendrá varios puntos de enlace de plataforma correspondientes al mismo
token de dispositivo.
• Amazon SNS impone una cuota a la cantidad de puntos de enlace de plataforma que se pueden crear
empezando por el mismo token de dispositivo. Al final, la creación de los nuevos puntos de enlace
generará un error con la excepción de parámetro no válido y el siguiente mensaje de error: "This
endpoint is already registered with a different token".
Cuando una plataforma móvil (como APNs o FCM) informa a Amazon SNS que el token de dispositivo
utilizado en la solicitud de publicación no es válido, Amazon SNS desactiva el punto de enlace de
275
Amazon Simple Notification
Service Guía para desarrolladores
Configuración de una aplicación móvil
plataforma asociado a ese token de dispositivo. A continuación, Amazon SNS rechaza las publicaciones
posteriores que se efectúen en ese token de dispositivo. Aunque le parezca que es mejor volver a
activar el punto de enlace de plataforma y seguir publicando, en la mayoría de los casos esta solución no
funciona: los mensajes que se publican no se entregan y el punto de enlace de plataforma se vuelve a
desactivar poco después.
Esto se debe a que el token de dispositivo asociado al punto de enlace de plataforma en realidad no
es válido. Las entregas que se le hacen no pueden realizarse correctamente, puesto que el token ya
no corresponde a ninguna aplicación instalada. La próxima vez que se publique en ella, la plataforma
móvil volverá a informar a Amazon SNS que el token de dispositivo no es válido y Amazon SNS volverá a
desactivar el punto de enlace de plataforma.
Para volver a habilitar un punto de enlace de plataforma desactivado, debe asociarlo a un token de
dispositivo válido (con una llamada de acción de definición de los atributos del punto de enlace) y después
habilitarlo. Solo entonces las entregas a dicho punto de enlace de plataforma se realizarán correctamente.
La única vez en que volver a habilitar un punto de enlace de plataforma sin actualizar su token de
dispositivo funcione será cuando un token de dispositivo que no era válido y estaba asociado a dicho punto
de enlace vuelva a ser válido. Esto puede ocurrir, por ejemplo, cuando se desinstala una aplicación y se
vuelve a instalar en el mismo dispositivo móvil y recibe el mismo token de dispositivo. El enfoque que
acabamos de presentar realiza esta operación asegurándose de volver a habilitar un punto de enlace de
plataforma solo después de comprobar que el token de dispositivo que tiene asociado es el más actual
disponible.
Puede agregar tokens de dispositivo e ID de registro a Amazon SNS con los métodos siguientes:
Ahora, con el punto de enlace creado, puede enviar mensajes directamente a un dispositivo móvil o
enviar mensajes a dispositivos móviles que estén suscritos a un tema.
276
Amazon Simple Notification
Service Guía para desarrolladores
Configuración de una aplicación móvil
Puede migrar los tokens existentes contenidos en un archivo CSV. El archivo CSV no debe tener más de 2
MB. Cuando migre varios tokens, se recomienda utilizar la API CreatePlatformEndpoint. Cada uno de
los tokens del archivo CSV debe ir seguido de una nueva línea. Por ejemplo, el archivo CSV ha de tener un
aspecto similar al siguiente:
[Link]-registration.v1.XpvSSUk0Rc3hTVVV--TOKEN--KMTlmMWxwRkxMaDNST2luZz01,"User data
with spaces requires quotes"
[Link]-registration.v1.XpvSSUk0Rc3hTVVV--TOKEN--
KMTlmMWxwRkxMaDNST2luZz04,"Data,with,commas,requires,quotes"
[Link]-registration.v1.XpvSSUk0Rc3hTVVV--TOKEN--KMTlmMWxwRkxMaDNST2luZz02,"Quoted data
requires ""escaped"" quotes"
[Link]-registration.v1.XpvSSUk0Rc3hTVVV--TOKEN--KMTlmMWxwRkxMaDNST2luZz03,"{""key"":
""json is allowed"", ""value"":""endpoint"", ""number"": 1}"
[Link]-registration.v1.XpvSSUk0Rc3hTVVV--TOKEN--
KMTlmMWxwRkxMaDNST2luZz05,SimpleDataNoQuotes
[Link]-registration.v1.XpvSSUk0Rc3hTVVV--TOKEN--KMTlmMWxwRkxMaDNST2luZz06,"The following
line has no user data"
[Link]-registration.v1.XpvSSUk0Rc3hTVVV--TOKEN--KMTlmMWxwRkxMaDNST2luZz07
APBTKzPGlCyT6E6oOfpdwLpcRNxQp5vCPFiFeru9oZylc22HvZSwQTDgmmw9WdNlXMerUPxmpX0w1,"Different
token style"
A continuación, en los pasos siguientes se muestra cómo utilizar la aplicación Java de muestra (paquete
bulkupload) proporcionada por AWS para cargar varios tokens (tokens de dispositivo o ID de registro) en
Amazon SNS. Puede utilizar esta aplicación de muestra como ayuda para comenzar a cargar sus tokens.
Note
Los siguientes pasos utilizan el IDE de Eclipse Java. En los pasos, se presupone que ha instalado
el AWS SDK for Java y dispone de credenciales de seguridad de AWS para su Cuenta de AWS.
Para obtener más información, consulte AWS SDK for Java. Para obtener más información sobre
las credenciales, consulte ¿Cómo obtengo credenciales de seguridad? en la Referencia general
de AWS.
277
Amazon Simple Notification
Service Guía para desarrolladores
Configuración de una aplicación móvil
• Los nombres de archivos CSV (como [Link] o [Link]) que deben crearse
para registrar los tokens que Amazon SNS analiza de forma correcta y los que no funcionan.
• (Opcional) Los caracteres para especificar el delimitador y citar en el archivo CSV que contiene los
tokens.
• (Opcional) El número de subprocesos que deben utilizarse para crear puntos de enlace de forma
simultánea. El valor predeterminado es 1 subproceso.
applicationarn:arn:aws:sns:us-west-2:111122223333:app/FCM/fcmpushapp
csvfilenam[Link]\\mytokendirectory\\[Link]
goodfilenam[Link]\\mylogfiles\\[Link]
badfilenam[Link]\\mylogfiles\\[Link]
delimiterchar:'
quotechar:"
numofthreads:5
En este ejemplo, los puntos de enlace que se han creado para los tokens que se han cargado
de forma correcta en Amazon SNS se registran en [Link], mientras que los tokens
incorrectos se registran en [Link]. Además, debe ver los logs STD OUT escritos en la
consola de Eclipse, que tiene contenido similar al siguiente:
• Utilice el servicio de Amazon Cognito: la aplicación móvil necesitará credenciales para crear puntos
de enlace asociados a la aplicación de plataforma de Amazon SNS. Le recomendamos que utilice
credenciales temporales que venzan al cabo de un periodo de tiempo. Para la mayoría de las
situaciones, le recomendamos que utilice Amazon Cognito para crear credenciales de seguridad
temporales. Para obtener más información, consulte la Guía para desarrolladores de Amazon Cognito.
Si desea recibir una notificación cada vez que se inscriba una aplicación en Amazon SNS, puede
registrarse para recibir un evento de Amazon SNS que le proporcionará el ARN del punto de enlace
nuevo. También puede utilizar la API ListEndpointByPlatformApplication para obtener la lista
completa de puntos de enlace registrados en Amazon SNS.
• Utilice un servidor proxy: si la infraestructura de la aplicación ya está configurada para que las
aplicaciones móviles llamen y se registren en cada instalación, puede seguir utilizando esta
configuración. Su servidor se comportará como un proxy y transmitirá el token de dispositivo a las
notificaciones push móviles de Amazon SNS, así como los datos de usuario que desee almacenar.
Para ello, el servidor proxy se conectará a AWS con sus credenciales de y usará la llamada a la API
CreatePlatformEndpoint para cargar la información de token. Se devuelve el nombre de recurso de
Amazon (ARN) del punto de enlace que acaba de crear, que su servidor puede almacenar para realizar
posteriores llamadas de publicación a Amazon SNS.
278
Amazon Simple Notification
Service Guía para desarrolladores
Configuración de una aplicación móvil
Clave de firma privada que Amazon SNS utiliza para firmar tokens de autenticación de Apple Push
Notification Service (APNs).
Si se proporciona una clave de firma, Amazon SNS utiliza un token para autenticarse con APNs para
cada notificación push que se envíe. Con la clave de firma, se pueden enviar notificaciones push a
entornos de producción y entornos aislados de APNs.
La clave de firma no caduca, y se puede utilizar la misma clave de firma para varias aplicaciones. Para
obtener más información, consulte Communicate with APNs using authentication tokens (Comunicarse
con APNs mediante tokens de autenticación) en la sección Developer Account Help (Ayuda de la
cuenta de desarrollador) del sitio web de Apple.
Certificado
Certificado TLS que Amazon SNS utiliza para autenticarse con APNs cuando se envían notificaciones
push. Puede obtener este certificado en su cuenta de Apple Developer.
Los certificados caducan al cabo de un año. Cuando eso sucede, se debe crear un nuevo certificado
y proporcionárselo a Amazon SNS. Para obtener más información, consulte Establishing a Certificate-
Based Connection to APNs (Establecimiento de una conexión basada en certificado con APNs) en el
sitio web de Apple Developer.
• Signing key (Clave de firma): clave de firma del token de autenticación de su cuenta de Apple
Developer, que se descarga como un archivo .p8. Apple permite descargar la clave de firma
solo una vez.
• Signing key ID (ID de clave de firma): ID que está asignado a la clave de firma. Amazon SNS
requiere esta información para crear tokens de autenticación. Para buscar este valor en su
cuenta de Apple Developer, elija Certificates, IDs & Profiles (Certificados, ID y perfiles), y luego
la clave en la sección Keys (Claves).
• Team identifier (Identificador de equipo): ID que está asignado al equipo de su cuenta de Apple
Developer. Puede encontrar este valor en la página Membresía.
• Bundle identifier (Identificador de paquete): ID que está asignado a su aplicación de iOS. Para
buscar este valor, elija Certificates, IDs & Profiles (Certificados, ID y perfiles), luego App IDs (ID
de aplicación) en la sección Identifiers (Identificadores) y, por último, la aplicación.
• Si elige Certificate (Certificado), proporcione la siguiente información:
279
Amazon Simple Notification
Service Guía para desarrolladores
Envío de notificaciones de inserción en móviles
• SSL certificate (Certificado SSL): archivo .p12 del certificado TLS. Puede exportar este archivo
desde Keychain Access después de descargar e instalar el certificado desde su cuenta de
Apple Developer.
• Certificate password (Contraseña de certificado): si ha asignado una contraseña al certificado,
especifíquela aquí.
6. Cuando termine de realizar los cambios, seleccione Save changes (Guardar cambios).
Temas
• Publicación de un tema (p. 280)
• Publicación de un dispositivo móvil (p. 280)
• Publicación de la carga útil específica de la plataforma (p. 280)
Publicación de un tema
También puede utilizar Amazon SNS para enviar mensajes a puntos de enlace móviles suscritos a un
tema. El concepto es el mismo que para la suscripción a un tema de otros tipos de puntos de enlace, como
Amazon SQS, HTTP/S, correo electrónico y SMS, tal y como se describe en ¿Qué es Amazon SNS? (p. 1).
La diferencia es que Amazon SNS se comunica a través de servicios de notificación, tales como Apple
Push Notification Service (APNS) y Google Firebase Cloud Messaging (FCM). Mediante los servicios de
notificaciones, los puntos de enlace móviles suscritos reciben las notificaciones enviadas al tema.
280
Amazon Simple Notification
Service Guía para desarrolladores
Envío de notificaciones de inserción en móviles
información acerca del uso de las API de Amazon SNS, consulte Acciones de la API de inserción
móvil (p. 288) y el archivo [Link] en [Link].
{
"GCM":"{ \"notification\": { \"body\": \"Sample message for Android endpoints\", \"title
\":\"TitleTest\" } }"
}
{
"GCM":"{
\"notification\":
{ \"body\": \"Sample message for Android endpoints\", \"title\":\"TitleTest\" },
\"data\":
{\"time_to_live\": 3600,\"collapse_key\":\"deals\"}"
}
}
Para obtener una lista de los pares de clave-valor admitidos en cada uno de los servicios de notificaciones
push admitidos en Amazon SNS, consulte lo siguiente:
En el siguiente ejemplo, se muestra un mensaje que debe enviarse a puntos de enlace móviles suscritos
en APNs, FCM y ADM:
{
"default": "This is the default message which must be present when publishing a message
to a topic. The default message will only be used if a message is not present for
one of the notification platforms.",
"APNS": "{\"aps\":{\"alert\": \"Check out these awesome deals!\",\"url\":\"[Link]
\"} }",
"GCM": "{\"data\":{\"message\":\"Check out these awesome deals!\",\"url\":
\"[Link]\"}}",
"ADM": "{\"data\":{\"message\":\"Check out these awesome deals!\",\"url\":
\"[Link]\"}}"
}
281
Amazon Simple Notification
Service Guía para desarrolladores
Envío de notificaciones de inserción en móviles
• Mediante una notificación de APNs alert, se informa al usuario al mostrar un mensaje de alerta,
reproducir un sonido o agregar una insignia al icono de la aplicación.
• Se activa una notificación de APNs background o esta indica a la aplicación que actúe en función del
contenido de la notificación, sin informar al usuario.
Si Amazon SNS envía un objeto de configuración sin procesar para APNs como notificación
solo en segundo plano, debe incluir el content-available definido en 1 en el diccionario
de aps. Aunque puede incluir claves personalizadas, el diccionario de aps no debe contener
ninguna clave que desencadene las interacciones del usuario (por ejemplo, alertas, insignias
o sonidos).
282
Amazon Simple Notification
Service Guía para desarrolladores
Atributos de aplicaciones móviles
{
"APNS": "{\"aps\":{\"content-available\":1},\"Foo1\":\"Bar\",\"Foo2\":123}"
}
• Saber si Amazon SNS ha entregado un mensaje de notificación push al servicio de notificaciones push.
• Identificar la respuesta enviada por el servicio de notificaciones push a Amazon SNS.
• Determinar el tiempo de permanencia del mensaje (el tiempo entre la marca temporal de publicación y
justo antes de entregarlo a un servicio de notificaciones push)
Con el fin de configurar los atributos de las aplicaciones para el estado de entrega de los mensajes,
puede utilizar la AWS Management Console, los kits de desarrollo de software (SDK) de AWS o la API de
consultas.
Temas
• Configuración de los atributos del estado de entrega de los mensajes mediante la AWS Management
Console (p. 283)
• Ejemplos de CloudWatch Logs del estado de entrega de los mensajes de Amazon SNS (p. 284)
• Configuración de atributos del estado de entrega de mensajes con los SDK de AWS (p. 285)
• Códigos de respuesta de la plataforma (p. 285)
283
Amazon Simple Notification
Service Guía para desarrolladores
Atributos de aplicaciones móviles
Note
Una vez que haya configurado los atributos de las aplicaciones para el estado de entrega
de los mensajes, todas las entregas de mensajes que hayan resultado erróneas generarán
CloudWatch Logs.
8. Por último, elija Save Configuration (Guardar configuración). Ahora podrá ver y analizar los
CloudWatch Logs en los que se encuentra el estado de entrega de los mensajes. Para obtener más
información sobre el uso de CloudWatch, consulte la documentación de CloudWatch.
SUCCESS
{
"status": "SUCCESS",
"notification": {
"timestamp": "2015-01-26 [Link].54",
"messageId": "9655abe4-6ed6-5734-89f7-e6a6a42de02a"
},
"delivery": {
"statusCode": 200,
"dwellTimeMs": 65,
"token": "Examplei7fFachkJ1xjlqT64RaBkcGHochmf1VQAr9k-
IBJtKjp7fedYPzEwT_Pq3Tu0lroqro1cwWJUvgkcPPYcaXCpPWmG3Bqn-
wiqIEzp5zZ7y_jsM0PKPxKhddCzx6paEsyay9Zn3D4wNUJb8m6HXrBf9dqaEw",
"attempts": 1,
"providerResponse": "{\"multicast_id\":5138139752481671853,\"success\":1,\"failure\":0,
\"canonical_ids\":0,\"results\":[{\"message_id\":\"0:1422313659698010%d6ba8edff9fd7ecd
\"}]}",
"destination": "arn:aws:sns:us-east-2:111122223333:endpoint/FCM/FCMPushApp/
c23e42de-3699-3639-84dd-65f84474629d"
}
}
FAILURE
{
"status": "FAILURE",
"notification": {
"timestamp": "2015-01-26 [Link].678",
"messageId": "c3ad79b0-8996-550a-8bfa-24f05989898f"
},
"delivery": {
"statusCode": 8,
"dwellTimeMs": 1451,
"token": "examp1e29z6j5c4df46f80189c4c83fjcgf7f6257e98542d2jt3395kj73",
"attempts": 1,
"providerResponse": "NotificationErrorResponse(command=8, status=InvalidToken, id=1,
cause=null)",
"destination": "arn:aws:sns:us-east-2:111122223333:endpoint/APNS_SANDBOX/
APNSPushApp/986cb8a1-4f6b-34b1-9a1b-d9e9cb553944"
}
}
284
Amazon Simple Notification
Service Guía para desarrolladores
Atributos de aplicaciones móviles
Para obtener una lista de códigos de respuesta del servicio de notificaciones push, consulte Códigos de
respuesta de la plataforma (p. 285).
Para obtener más información sobre el SDK para Java, consulte Introducción a AWS SDK for Java.
Servicio de notificaciones push de Microsoft para Consulte Push Notification Service Response
Windows Phone (MPNS) Codes for Windows Phone 8 en la documentación
de desarrollo de Windows 8.
Servicios de notificación push de Windows (WNS) Consulte "Response codes" en Push Notification
Service Request and Response Headers (Windows
Runtime Apps) en la documentación de desarrollo
de Windows 8.
285
Amazon Simple Notification
Service Guía para desarrolladores
Eventos de aplicaciones móviles
Temas
• Eventos de aplicaciones disponibles (p. 286)
• Envío de notificaciones de inserción en móviles (p. 286)
Puede asociar cualquier atributo a una aplicación, que podrá recibir estas notificaciones de eventos.
286
Amazon Simple Notification
Service Guía para desarrolladores
Eventos de aplicaciones móviles
aplicaciones móviles. Tenga en cuenta las siguientes directrices cuando envíe notificaciones de
eventos de aplicaciones a un tema:
• Los temas que reciban notificaciones deben contener solo suscripciones de puntos de enlace
de programación, como puntos de enlace HTTP o HTTPS, colas de Amazon SQS o funciones
de AWS Lambda.
• Para reducir la cantidad de procesamiento que las notificaciones activan, limite las
suscripciones de cada tema a un número reducido (por ejemplo, cinco o menos).
Puede enviar notificaciones de eventos de aplicaciones mediante la consola de Amazon SNS, AWS
Command Line Interface (AWS CLI) o los SDK de AWS.
AWS CLI
Ejecute el comando set-platform-application-attributes.
En el siguiente ejemplo, se establece el mismo tema de Amazon SNS para los cuatro eventos de
aplicación:
AWS SDK
Establezca las notificaciones de eventos de aplicación enviando una solicitud de
SetPlatformApplicationAttributes con la API de Amazon SNS mediante un SDK de AWS.
Si desea obtener una lista completa de las guías para desarrolladores de SDK de AWS y ejemplos de
código, incluida ayuda para empezar e información sobre versiones anteriores, consulte Uso de Amazon
SNS con un AWS SDK (p. 6).
287
Amazon Simple Notification
Service Guía para desarrolladores
Acciones de la API de inserción móvil
Para enviar un mensaje de notificación de inserción a un dispositivo y una aplicación móvil mediante
las API, primero debe ejecutar la acción CreatePlatformApplication, que devuelve un atributo
PlatformApplicationArn. A continuación, PlatformApplicationArn utiliza el atributo
CreatePlatformEndpoint y obtiene un atributo EndpointArn. Después puede utilizar el atributo
EndpointArn con la acción Publish para enviar un mensaje de notificación a un dispositivo y una
aplicación móvil, o bien puede utilizar el atributo EndpointArn con la acción Subscribe para suscribirse
a un tema. Para obtener más información, consulte Información general del proceso de notificación de
usuario (p. 269).
A continuación, se muestra cómo son las API de inserción móvil de Amazon SNS.
CreatePlatformApplication
Crea un objeto de aplicación de plataforma para uno de los servicios de notificaciones push admitidos,
como APNs o FCM, en el que se pueden registrar dispositivos y aplicaciones móviles. Devuelve un
atributo PlatformApplicationArn, que la acción CreatePlatformEndpoint utiliza.
CreatePlatformEndpoint
Crea un punto de enlace para un dispositivo y una aplicación móvil en uno de los servicios
de notificaciones de inserción admitidos. CreatePlatformEndpoint utiliza el atributo
PlatformApplicationArn que devuelve la acción CreatePlatformApplication. El atributo
EndpointArn, que se devuelve cuando se usa CreatePlatformEndpoint, se utiliza con la acción
Publish para enviar un mensaje de notificación a una aplicación móvil y un dispositivo.
CreateTopic
Elimina el punto de enlace de un dispositivo y una aplicación móvil en uno de los servicios de
notificaciones de inserción admitidos.
DeletePlatformApplication
Recupera los atributos del punto de enlace de un dispositivo y una aplicación móvil.
GetPlatformApplicationAttributes
Genera una lista de los puntos de enlace y los atributos de los puntos de enlace de los dispositivos y
aplicaciones móviles de un servicio de notificaciones de inserción compatible.
ListPlatformApplications
Genera una lista de objetos de aplicación de plataforma para los servicios de notificaciones de
inserción compatibles.
288
Amazon Simple Notification
Service Guía para desarrolladores
Errores de la API de inserción móvil
Publish
289
Amazon Simple Notification
Service Guía para desarrolladores
Errores de la API de inserción móvil
290
Amazon Simple Notification
Service Guía para desarrolladores
Errores de la API de inserción móvil
EventDeliveryAttemptFailure
EventDeliveryAttemptFailure
400 CreatePlatformApplication
has invalid ARN format tiene un formato de
ARN no válido.
291
Amazon Simple Notification
Service Guía para desarrolladores
Errores de la API de inserción móvil
EventDeliveryAttemptFailure
EventDeliveryAttemptFailure
400 CreatePlatformApplication
is not an existing Topic no es un tema que
exista.
292
Amazon Simple Notification
Service Guía para desarrolladores
Errores de la API de inserción móvil
293
Amazon Simple Notification
Service Guía para desarrolladores
Errores de la API de inserción móvil
EventDeliveryAttemptFailure
EventDeliveryAttemptFailure
400 SetPlatformAttributes
has invalid ARN format tiene un formato de
ARN no válido.
EventDeliveryAttemptFailure
EventDeliveryAttemptFailure
400 SetPlatformAttributes
is not an existing Topic no es un tema que
exista.
294
Amazon Simple Notification
Service Guía para desarrolladores
Errores de la API de inserción móvil
295
Amazon Simple Notification
Service Guía para desarrolladores
TTL para las inserciones móviles
Temas
• Atributos de los mensajes TTL para los servicios de notificaciones de inserción (p. 296)
• Orden de prioridad para determinar el TTL (p. 297)
• Especificación del TTL mediante la AWS Management Console (p. 297)
296
Amazon Simple Notification
Service Guía para desarrolladores
TTL para las inserciones móviles
Cada servicio de notificaciones push administra el TTL de forma distinta. Con Amazon SNS, se ofrece
una vista resumida de TTL de todos los servicios de notificaciones push, lo que facilita la especificación
del TTL. Si utiliza la AWS Management Console para especificar el TTL (en segundos), solo tendrá
que ingresar el valor de TTL una vez y Amazon SNS lo calculará para cada uno de los servicios de
notificaciones push seleccionados al publicar el mensaje.
El TTL depende de la hora de publicación. Antes de entregar un mensaje de notificación push a un servicio
de notificaciones push concreto, Amazon SNS calcula el tiempo de permanencia (la marca de tiempo entre
la publicación y el momento previo a la entrega de un servicio de notificaciones push) de la notificación
push y traslada el resto del TTL al servicio de notificaciones push específico. Si TTL es inferior al tiempo de
permanencia, Amazon SNS no intentará publicar.
Si especifica un TTL para un mensaje de notificación push, el valor TTL debe ser un número entero
positivo, a menos que el valor de 0 tenga un significado específico para el servicio de notificaciones push,
como es el caso en APNs y FCM. Si el valor de TTL se establece en 0 y el servicio de notificaciones
push no tiene un significado específico para 0, Amazon SNS eliminará el mensaje. Para obtener más
información sobre el parámetro TTL establecido en 0 cuando utiliza APNs, consulte Tabla A-3 Identificados
de elementos para notificaciones remotas en la documentación API del proveedor binario.
Si configura diferentes valores de TTL (uno en los atributos del mensaje y otro en el cuerpo del mensaje)
para el mismo mensaje, Amazon SNS modificará el TTL del cuerpo del mensaje para que coincida con el
TTL especificado en el atributo del mensaje.
297
Amazon Simple Notification
Service Guía para desarrolladores
Regiones admitidas
Dado que el token del dispositivo no cambia cada vez que un usuario abre una aplicación, se puede usar
la API de CreatePlatformEndpoint idempotente. Sin embargo, esto puede presentar duplicados para
el mismo dispositivo en los casos en que el token en sí no es válido o si el punto de conexión es válido
pero está desactivado (por ejemplo, una discrepancia de entornos aislados y de producción).
298
Amazon Simple Notification
Service Guía para desarrolladores
Notificaciones por correo electrónico
del estado de entrega, consulte ¿Cómo accedo a los registros de entrega de temas de Amazon SNS para
notificaciones push?.
Notificaciones de eventos
Para administrar puntos de conexión de forma impulsada por eventos, puede utilizar la funcionalidad
notificaciones de eventos (p. 287). Esto permite que el tema de Amazon SNS configurado elimine
eventos a los suscriptores, como una función Lambda, para eventos de aplicaciones de plataforma de
creación, eliminación, actualizaciones y errores de entrega de puntos de conexión.
Important
Para evitar que los destinatarios de la lista de correo cancelen la suscripción a los correos
electrónicos de temas de Amazon SNS, consulte Configurar una suscripción de correo electrónico
que requiera autenticación para cancelar la suscripción en AWS Support.
299
Amazon Simple Notification
Service Guía para desarrolladores
AWS SDK
Debe confirmar la suscripción antes de que se pueda comenzar a recibir mensajes en la dirección de
correo electrónico.
En los siguientes ejemplos de código, se muestra cómo suscribir una dirección de correo electrónico a un
tema de Amazon SNS.
C++
/**
* Subscribe an email address endpoint to a topic - demonstrates how to initiate a
subscription to an Amazon SNS topic with delivery
* to an email address.
*
* SNS will send a subscription confirmation email to the email address provided
which you need to confirm to
* receive messages.
*
* <protocol_value> set to "email" provides delivery of message via SMTP (see
[Link] for available
protocols).
* <topic_arn_value> can be obtained from run_list_topics executable and includes
the "arn:" prefix.
*/
Aws::SDKOptions options;
Aws::InitAPI(options);
{
Aws::SNS::SNSClient sns;
Aws::String protocol = argv[1];
Aws::String topic_arn = argv[2];
Aws::String endpoint = argv[3];
300
Amazon Simple Notification
Service Guía para desarrolladores
AWS SDK
Aws::SNS::Model::SubscribeRequest s_req;
s_req.SetTopicArn(topic_arn);
s_req.SetProtocol(protocol);
s_req.SetEndpoint(endpoint);
if (s_out.IsSuccess())
{
std::cout << "Subscribed successfully " << std::endl;
}
else
{
std::cout << "Error while subscribing " << s_out.GetError().GetMessage()
<< std::endl;
}
}
Aws::ShutdownAPI(options);
return 0;
}
Go
SDK para Go V2
• Encuentre instrucciones y más código en GitHub.
• Para ver los detalles de la API, consulte Subscribe (Suscríbase) en la Referencia de la API de
AWS SDK for Go.
Java
try {
SubscribeRequest request = [Link]()
.protocol("email")
.endpoint(email)
.returnSubscriptionArn(true)
.topicArn(topicArn)
.build();
} catch (SnsException e) {
[Link]([Link]().errorMessage());
[Link](1);
}
}
301
Amazon Simple Notification
Service Guía para desarrolladores
AWS SDK
JavaScript
Kotlin
Esta es una documentación preliminar para una característica en versión de vista previa.
Está sujeta a cambios.
302
Amazon Simple Notification
Service Guía para desarrolladores
AWS SDK
PHP
require 'vendor/[Link]';
use Aws\Sns\SnsClient;
use Aws\Exception\AwsException;
/**
* Prepares to subscribe an endpoint by sending the endpoint a confirmation
message.
*
* This code expects that you have AWS credentials set up per:
* [Link]
guide_credentials.html
*/
$protocol = 'email';
$endpoint = 'sample@[Link]';
$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';
try {
$result = $SnSclient->subscribe([
'Protocol' => $protocol,
'Endpoint' => $endpoint,
'ReturnSubscriptionArn' => true,
'TopicArn' => $topic,
]);
var_dump($result);
} catch (AwsException $e) {
// output error message if fails
error_log($e->getMessage());
}
303
Amazon Simple Notification
Service Guía para desarrolladores
AWS SDK
Python
class SnsWrapper:
"""Encapsulates Amazon SNS topic and subscription functions."""
def __init__(self, sns_resource):
"""
:param sns_resource: A Boto3 Amazon SNS resource.
"""
self.sns_resource = sns_resource
Ruby
304
Amazon Simple Notification
Service Guía para desarrolladores
AWS SDK
protocol = 'email'
endpoint = 'EMAIL_ADDRESS'
topic_arn = 'TOPIC_ARN'
region = 'REGION'
Rust
Esta documentación es para un SDK en versión preliminar. El SDK está sujeto a cambios
y no se debe utilizar en producción.
async fn subscribe_and_publish(
client: &Client,
topic_arn: &str,
email_address: &str,
) -> Result<(), Error> {
println!("Receiving on topic with ARN: `{}`", topic_arn);
305
Amazon Simple Notification
Service Guía para desarrolladores
AWS SDK
Ok(())
}
306
Amazon Simple Notification
Service Guía para desarrolladores
Acciones
Ejemplos de código que muestran cómo llevar a cabo una tarea específica llamando a varias
funciones dentro del mismo servicio.
Ejemplos de servicios combinados
Para obtener una lista completa de las guías para desarrolladores del SDK de AWS y ejemplos de código,
consulte Uso de Amazon SNS con un AWS SDK (p. 6). En este tema también se incluye información sobre
cómo comenzar a utilizar el SDK y detalles sobre sus versiones anteriores.
Ejemplos de código
• Acciones de Amazon SNS con SDK de AWS (p. 308)
• Agregar etiquetas a un tema de Amazon SNS mediante un SDK de AWS (p. 309)
• Comprobación de la desactivación de un número de teléfono de Amazon SNS mediante un
SDK de AWS (p. 311)
• Confirmación de que el propietario de un punto de enlace desea recibir mensajes de Amazon
SNS mediante un SDK de AWS (p. 314)
• Creación de un tema de Amazon SNS mediante un SDK de AWS (p. 316)
• Eliminación de una suscripción a Amazon SNS mediante un SDK de AWS (p. 321)
• Eliminación de un tema de Amazon SNS mediante un SDK de AWS (p. 325)
• Cómo obtener las propiedades de un tema de Amazon SNS mediante un SDK de
AWS (p. 329)
• Cómo obtener la configuración para enviar mensajes SMS de Amazon SNS mediante un SDK
de AWS (p. 333)
• Enumeración de números de teléfono desactivados de Amazon SNS mediante un SDK de
AWS (p. 336)
• Enumeración de suscriptores de un tema de Amazon SNS mediante un SDK de
AWS (p. 337)
• Enumeración de temas de Amazon SNS mediante un SDK de AWS (p. 343)
• Publicación de un mensaje SMS en un tema de Amazon SNS mediante un SDK de
AWS (p. 348)
• Publicación en un tema de Amazon SNS mediante un SDK de AWS (p. 352)
• Configuración de una cola de mensajes fallidos para una suscripción de Amazon SNS
mediante un SDK de AWS, siga estos pasos: (p. 358)
307
Amazon Simple Notification
Service Guía para desarrolladores
Acciones
Los ejemplos siguientes incluyen solo las acciones que se utilizan con mayor frecuencia. Para ver una lista
completa, consulte la Referencia de la API de Amazon SNS.
Ejemplos
• Agregar etiquetas a un tema de Amazon SNS mediante un SDK de AWS (p. 309)
• Comprobación de la desactivación de un número de teléfono de Amazon SNS mediante un SDK de
AWS (p. 311)
• Confirmación de que el propietario de un punto de enlace desea recibir mensajes de Amazon SNS
mediante un SDK de AWS (p. 314)
• Creación de un tema de Amazon SNS mediante un SDK de AWS (p. 316)
308
Amazon Simple Notification
Service Guía para desarrolladores
Agregar etiquetas a un tema
• Eliminación de una suscripción a Amazon SNS mediante un SDK de AWS (p. 321)
• Eliminación de un tema de Amazon SNS mediante un SDK de AWS (p. 325)
• Cómo obtener las propiedades de un tema de Amazon SNS mediante un SDK de AWS (p. 329)
• Cómo obtener la configuración para enviar mensajes SMS de Amazon SNS mediante un SDK de
AWS (p. 333)
• Enumeración de números de teléfono desactivados de Amazon SNS mediante un SDK de
AWS (p. 336)
• Enumeración de suscriptores de un tema de Amazon SNS mediante un SDK de AWS (p. 337)
• Enumeración de temas de Amazon SNS mediante un SDK de AWS (p. 343)
• Publicación de un mensaje SMS en un tema de Amazon SNS mediante un SDK de AWS (p. 348)
• Publicación en un tema de Amazon SNS mediante un SDK de AWS (p. 352)
• Configuración de una cola de mensajes fallidos para una suscripción de Amazon SNS mediante un
SDK de AWS, siga estos pasos: (p. 358)
• Configuración de una política de filtrado de Amazon SNS mediante un SDK de AWS (p. 359)
• Cómo establecer la configuración predeterminada para el envío de mensajes SMS de Amazon SNS
mediante un SDK de AWS (p. 361)
• Cómo establecer los atributos de los temas de Amazon SNS mediante un SDK de AWS (p. 363)
• Suscripción a una función Lambda para recibir notificaciones de un tema de Amazon SNS mediante un
SDK de AWS (p. 367)
• Suscripción de una aplicación móvil a un tema de Amazon SNS mediante un SDK de AWS (p. 370)
• Suscripción de un punto de enlace HTTP a un tema de Amazon SNS mediante un SDK de
AWS (p. 372)
• Suscripción de una dirección de correo electrónico a un tema de Amazon SNS mediante un SDK de
AWS (p. 373)
Java
try {
Tag tag = [Link]()
.key("Team")
.value("Development")
.build();
309
Amazon Simple Notification
Service Guía para desarrolladores
Agregar etiquetas a un tema
[Link](tagResourceRequest);
[Link]("Tags have been added to "+topicArn);
} catch (SnsException e) {
[Link]([Link]().errorMessage());
[Link](1);
}
}
Kotlin
Esta es una documentación preliminar para una característica en versión de vista previa.
Está sujeta a cambios.
310
Amazon Simple Notification
Service Guía para desarrolladores
Comprobación de la desactivación de un número de teléfono
Para obtener una lista completa de las guías para desarrolladores del SDK de AWS y ejemplos de código,
consulte Uso de Amazon SNS con un AWS SDK (p. 6). En este tema también se incluye información sobre
cómo comenzar a utilizar el SDK y detalles sobre sus versiones anteriores.
.NET
/// <summary>
/// Checks to see if the supplied phone number has been opted out.
/// </summary>
/// <param name="client">The initialized Amazon SNS Client object used
/// to check if the phone number has been opted out.</param>
/// <param name="phoneNumber">A string representing the phone number
/// to check.</param>
public static async Task
CheckIfOptedOutAsync(IAmazonSimpleNotificationService client, string phoneNumber)
{
var request = new CheckIfPhoneNumberIsOptedOutRequest
{
PhoneNumber = phoneNumber,
};
try
{
var response = await
[Link](request);
if ([Link] == [Link])
{
string optOutStatus = [Link] ? "opted out" : "not
opted out.";
[Link]($"The phone number: {phoneNumber} is
{optOutStatus}");
}
}
catch (AuthorizationErrorException ex)
{
[Link]($"{[Link]}");
}
}
Java
311
Amazon Simple Notification
Service Guía para desarrolladores
Comprobación de la desactivación de un número de teléfono
try {
CheckIfPhoneNumberIsOptedOutRequest request =
[Link]()
.phoneNumber(phoneNumber)
.build();
CheckIfPhoneNumberIsOptedOutResponse result =
[Link](request);
} catch (SnsException e) {
[Link]([Link]().errorMessage());
[Link](1);
}
}
JavaScript
312
Amazon Simple Notification
Service Guía para desarrolladores
Comprobación de la desactivación de un número de teléfono
};
run();
PHP
require 'vendor/[Link]';
use Aws\Sns\SnsClient;
use Aws\Exception\AwsException;
/**
* Indicates whether the phone number owner has opted out of receiving SMS messages
from your AWS SNS account.
*
* This code expects that you have AWS credentials set up per:
* [Link]
guide_credentials.html
*/
$phone = '+1XXX5550100';
try {
$result = $SnSclient->checkIfPhoneNumberIsOptedOut([
'phoneNumber' => $phone,
]);
var_dump($result);
} catch (AwsException $e) {
// output error message if fails
error_log($e->getMessage());
}
Para obtener una lista completa de las guías para desarrolladores del SDK de AWS y ejemplos de código,
consulte Uso de Amazon SNS con un AWS SDK (p. 6). En este tema también se incluye información sobre
cómo comenzar a utilizar el SDK y detalles sobre sus versiones anteriores.
313
Amazon Simple Notification
Service Guía para desarrolladores
Confirmación de que el propietario de un
punto de enlace desea recibir mensajes
Java
try {
ConfirmSubscriptionRequest request =
[Link]()
.token(subscriptionToken)
.topicArn(topicArn)
.build();
ConfirmSubscriptionResponse result =
[Link](request);
[Link]("\n\nStatus was " +
[Link]().statusCode() + "\n\nSubscription Arn: \n\n" +
[Link]());
} catch (SnsException e) {
[Link]([Link]().errorMessage());
[Link](1);
}
}
JavaScript
314
Amazon Simple Notification
Service Guía para desarrolladores
Confirmación de que el propietario de un
punto de enlace desea recibir mensajes
import {ConfirmSubscriptionCommand } from "@aws-sdk/client-sns";
import {snsClient } from "./libs/[Link]";
PHP
require 'vendor/[Link]';
use Aws\Sns\SnsClient;
use Aws\Exception\AwsException;
/**
* Verifies an endpoint owner's intent to receive messages by validating the token
sent to the endpoint by an earlier Subscribe action.
*
* This code expects that you have AWS credentials set up per:
* [Link]
guide_credentials.html
*/
$subscription_token = 'arn:aws:sns:us-east-1:111122223333:MyTopic:123456-
abcd-12ab-1234-12ba3dc1234a';
$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';
try {
$result = $SnSclient->subscribe([
'Token' => $subscription_token,
'TopicArn' => $topic,
315
Amazon Simple Notification
Service Guía para desarrolladores
Crear un tema
]);
var_dump($result);
} catch (AwsException $e) {
// output error message if fails
error_log($e->getMessage());
}
Para obtener una lista completa de las guías para desarrolladores del SDK de AWS y ejemplos de código,
consulte Uso de Amazon SNS con un AWS SDK (p. 6). En este tema también se incluye información sobre
cómo comenzar a utilizar el SDK y detalles sobre sus versiones anteriores.
.NET
/// <summary>
/// Creates a new SNS topic using the supplied topic name.
/// </summary>
/// <param name="client">The initialized SNS client object used to
/// create the new topic.</param>
/// <param name="topicName">A string representing the topic name.</param>
/// <returns>The Amazon Resource Name (ARN) of the created topic.</returns>
public static async Task<string>
CreateSNSTopicAsync(IAmazonSimpleNotificationService client, string topicName)
{
var request = new CreateTopicRequest
{
Name = topicName,
};
return [Link];
}
C++
316
Amazon Simple Notification
Service Guía para desarrolladores
Crear un tema
Aws::SDKOptions options;
Aws::InitAPI(options);
{
Aws::String topic_name = argv[1];
Aws::SNS::SNSClient sns;
Aws::SNS::Model::CreateTopicRequest ct_req;
ct_req.SetName(topic_name);
if (ct_out.IsSuccess())
{
std::cout << "Successfully created topic " << topic_name << std::endl;
}
else
{
std::cout << "Error creating topic " << topic_name << ":" <<
ct_out.GetError().GetMessage() << std::endl;
}
}
Aws::ShutdownAPI(options);
Go
SDK para Go V2
• Encuentre instrucciones y más código en GitHub.
• Para ver los detalles de la API, consulte CreateTopic en la Referencia de la API de AWS SDK
for Go.
Java
result = [Link](request);
return [Link]();
} catch (SnsException e) {
[Link]([Link]().errorMessage());
[Link](1);
}
return "";
}
317
Amazon Simple Notification
Service Guía para desarrolladores
Crear un tema
JavaScript
Kotlin
Esta es una documentación preliminar para una característica en versión de vista previa.
Está sujeta a cambios.
318
Amazon Simple Notification
Service Guía para desarrolladores
Crear un tema
PHP
require 'vendor/[Link]';
use Aws\Sns\SnsClient;
use Aws\Exception\AwsException;
/**
* Create a Simple Notification Service topics in your AWS account at the requested
region.
*
* This code expects that you have AWS credentials set up per:
* [Link]
guide_credentials.html
*/
$topicname = 'myTopic';
try {
$result = $SnSclient->createTopic([
'Name' => $topicname,
]);
var_dump($result);
} catch (AwsException $e) {
// output error message if fails
error_log($e->getMessage());
}
Python
319
Amazon Simple Notification
Service Guía para desarrolladores
Crear un tema
class SnsWrapper:
"""Encapsulates Amazon SNS topic and subscription functions."""
def __init__(self, sns_resource):
"""
:param sns_resource: A Boto3 Amazon SNS resource.
"""
self.sns_resource = sns_resource
Ruby
sns_client.create_topic(name: topic_name)
rescue StandardError => e
puts "Error while creating the topic named '#{topic_name}': #{[Link]}"
end
if topic_created?(sns_client, topic_name)
puts 'The topic was created.'
else
puts 'The topic was not created. Stopping program.'
exit 1
end
end
320
Amazon Simple Notification
Service Guía para desarrolladores
Eliminación de una suscripción
Rust
println!(
"Created topic with ARN: {}",
resp.topic_arn().unwrap_or_default()
);
Ok(())
}
Para obtener una lista completa de las guías para desarrolladores del SDK de AWS y ejemplos de código,
consulte Uso de Amazon SNS con un AWS SDK (p. 6). En este tema también se incluye información sobre
cómo comenzar a utilizar el SDK y detalles sobre sus versiones anteriores.
C++
Aws::SDKOptions options;
Aws::InitAPI(options);
{
Aws::SNS::SNSClient sns;
Aws::String subscription_arn = argv[1];
Aws::SNS::Model::UnsubscribeRequest s_req;
s_req.SetSubscriptionArn(subscription_arn);
321
Amazon Simple Notification
Service Guía para desarrolladores
Eliminación de una suscripción
if (s_out.IsSuccess())
{
std::cout << "Unsubscribed successfully " << std::endl;
}
else
{
std::cout << "Error while unsubscribing " << s_out.GetError().GetMessage()
<< std::endl;
}
}
Aws::ShutdownAPI(options);
Java
try {
UnsubscribeRequest request = [Link]()
.subscriptionArn(subscriptionArn)
.build();
} catch (SnsException e) {
[Link]([Link]().errorMessage());
[Link](1);
}
}
JavaScript
322
Amazon Simple Notification
Service Guía para desarrolladores
Eliminación de una suscripción
Kotlin
Esta es una documentación preliminar para una característica en versión de vista previa.
Está sujeta a cambios.
PHP
323
Amazon Simple Notification
Service Guía para desarrolladores
Eliminación de una suscripción
require 'vendor/[Link]';
use Aws\Sns\SnsClient;
use Aws\Exception\AwsException;
/**
* Deletes a subscription to an Amazon SNS topic.
*
* This code expects that you have AWS credentials set up per:
* [Link]
guide_credentials.html
*/
$subscription = 'arn:aws:sns:us-east-1:111122223333:MySubscription';
try {
$result = $SnSclient->unsubscribe([
'SubscriptionArn' => $subscription,
]);
var_dump($result);
} catch (AwsException $e) {
// output error message if fails
error_log($e->getMessage());
}
Python
class SnsWrapper:
"""Encapsulates Amazon SNS topic and subscription functions."""
def __init__(self, sns_resource):
"""
:param sns_resource: A Boto3 Amazon SNS resource.
"""
self.sns_resource = sns_resource
def delete_subscription(subscription):
"""
Unsubscribes and deletes a subscription.
"""
try:
[Link]()
[Link]("Deleted subscription %s.", [Link])
except ClientError:
[Link]("Couldn't delete subscription %s.", [Link])
raise
324
Amazon Simple Notification
Service Guía para desarrolladores
Eliminación de un tema
Para obtener una lista completa de las guías para desarrolladores del SDK de AWS y ejemplos de código,
consulte Uso de Amazon SNS con un AWS SDK (p. 6). En este tema también se incluye información sobre
cómo comenzar a utilizar el SDK y detalles sobre sus versiones anteriores.
.NET
/// <summary>
/// This example deletes an existing Amazon Simple Notification Service
/// (Amazon SNS) topic. The example was created using the AWS SDK for .NET
/// version 3.7 and .NET Core 5.0.
/// </summary>
public class DeleteSNSTopic
{
public static async Task Main()
{
string topicArn = "arn:aws:sns:us-east-2:704825161248:ExampleSNSTopic";
IAmazonSimpleNotificationService client = new
AmazonSimpleNotificationServiceClient();
C++
Aws::SDKOptions options;
Aws::InitAPI(options);
{
Aws::String topic_arn = argv[1];
Aws::SNS::SNSClient sns;
Aws::SNS::Model::DeleteTopicRequest dt_req;
dt_req.SetTopicArn(topic_arn);
325
Amazon Simple Notification
Service Guía para desarrolladores
Eliminación de un tema
if (dt_out.IsSuccess())
{
std::cout << "Successfully deleted topic " << topic_arn << std::endl;
}
else
{
std::cout << "Error deleting topic " << topic_arn << ":" <<
dt_out.GetError().GetMessage() << std::endl;
}
}
Aws::ShutdownAPI(options);
Java
try {
DeleteTopicRequest request = [Link]()
.topicArn(topicArn)
.build();
} catch (SnsException e) {
[Link]([Link]().errorMessage());
[Link](1);
}
}
JavaScript
326
Amazon Simple Notification
Service Guía para desarrolladores
Eliminación de un tema
Kotlin
Esta es una documentación preliminar para una característica en versión de vista previa.
Está sujeta a cambios.
PHP
327
Amazon Simple Notification
Service Guía para desarrolladores
Eliminación de un tema
require 'vendor/[Link]';
use Aws\Sns\SnsClient;
use Aws\Exception\AwsException;
/**
* Deletes a SNS topic and all its subscriptions.
*
* This code expects that you have AWS credentials set up per:
* [Link]
guide_credentials.html
*/
$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';
try {
$result = $SnSclient->deleteTopic([
'TopicArn' => $topic,
]);
var_dump($result);
} catch (AwsException $e) {
// output error message if fails
error_log($e->getMessage());
}
Python
class SnsWrapper:
"""Encapsulates Amazon SNS topic and subscription functions."""
def __init__(self, sns_resource):
"""
:param sns_resource: A Boto3 Amazon SNS resource.
"""
self.sns_resource = sns_resource
def delete_topic(topic):
"""
Deletes a topic. All subscriptions to the topic are also deleted.
"""
try:
[Link]()
[Link]("Deleted topic %s.", [Link])
except ClientError:
[Link]("Couldn't delete topic %s.", [Link])
raise
328
Amazon Simple Notification
Service Guía para desarrolladores
Cómo obtener las propiedades de un tema
• Para ver los detalles de la API, consulte DeleteTopic en la Referencia de la API de AWS SDK
for Python (Boto3).
Para obtener una lista completa de las guías para desarrolladores del SDK de AWS y ejemplos de código,
consulte Uso de Amazon SNS con un AWS SDK (p. 6). En este tema también se incluye información sobre
cómo comenzar a utilizar el SDK y detalles sobre sus versiones anteriores.
.NET
/// <summary>
/// This example shows how to retrieve the attributes of an Amazon Simple
/// Notification Service (Amazon SNS) topic. The example was written using
/// the AWS SDK for .NET 3.7 and .NET Core 5.0.
/// </summary>
public class GetTopicAttributes
{
public static async Task Main()
{
string topicArn = "arn:aws:sns:us-west-2:000000000000:ExampleSNSTopic";
IAmazonSimpleNotificationService client = new
AmazonSimpleNotificationServiceClient();
/// <summary>
/// Given the ARN of the Amazon SNS topic, this method retrieves the topic
/// attributes.
/// </summary>
/// <param name="client">The initialized Amazon SNS client object used
/// to retrieve the attributes for the Amazon SNS topic.</param>
/// <param name="topicArn">The ARN of the topic for which to retrieve
/// the attributes.</param>
/// <returns>A Dictionary of topic attributes.</returns>
public static async Task<Dictionary<string, string>>
GetTopicAttributesAsync(
IAmazonSimpleNotificationService client,
string topicArn)
{
var response = await [Link](topicArn);
return [Link];
}
/// <summary>
/// This method displays the attributes for an Amazon SNS topic.
/// </summary>
/// <param name="topicAttributes">A Dictionary containing the
/// attributes for an Amazon SNS topic.</param>
public static void DisplayTopicAttributes(Dictionary<string, string>
topicAttributes)
329
Amazon Simple Notification
Service Guía para desarrolladores
Cómo obtener las propiedades de un tema
{
foreach (KeyValuePair<string, string> entry in topicAttributes)
{
[Link]($"{[Link]}: {[Link]}\n");
}
}
}
C++
Aws::SDKOptions options;
Aws::InitAPI(options);
{
Aws::SNS::SNSClient sns;
Aws::String topic_arn = argv[1];
Aws::SNS::Model::GetTopicAttributesRequest gta_req;
gta_req.SetTopicArn(topic_arn);
if (gta_out.IsSuccess())
{
std::cout << "Topic Attributes:" << std::endl;
for (auto const &attribute : gta_out.GetResult().GetAttributes())
{
std::cout << " * " << [Link] << " : " << [Link] <<
std::endl;
}
}
else
{
std::cout << "Error while getting Topic attributes " <<
gta_out.GetError().GetMessage()
<< std::endl;
}
}
Aws::ShutdownAPI(options);
Java
330
Amazon Simple Notification
Service Guía para desarrolladores
Cómo obtener las propiedades de un tema
try {
GetTopicAttributesRequest request = [Link]()
.topicArn(topicArn)
.build();
GetTopicAttributesResponse result =
[Link](request);
[Link]("\n\nStatus is " +
[Link]().statusCode() + "\n\nAttributes: \n\n" +
[Link]());
} catch (SnsException e) {
[Link]([Link]().errorMessage());
[Link](1);
}
}
JavaScript
331
Amazon Simple Notification
Service Guía para desarrolladores
Cómo obtener las propiedades de un tema
• Para ver los detalles de la APl, consulte GetTopicAttributes en la Referencia de la API de AWS
SDK for JavaScript.
SDK para JavaScript V2
Kotlin
Esta es una documentación preliminar para una característica en versión de vista previa.
Está sujeta a cambios.
332
Amazon Simple Notification
Service Guía para desarrolladores
Cómo obtener la configuración para enviar mensajes SMS
PHP
$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';
try {
$result = $SnSclient->getTopicAttributes([
'TopicArn' => $topic,
]);
var_dump($result);
} catch (AwsException $e) {
// output error message if fails
error_log($e->getMessage());
}
Para obtener una lista completa de las guías para desarrolladores del SDK de AWS y ejemplos de código,
consulte Uso de Amazon SNS con un AWS SDK (p. 6). En este tema también se incluye información sobre
cómo comenzar a utilizar el SDK y detalles sobre sus versiones anteriores.
C++
Aws::SDKOptions options;
Aws::InitAPI(options);
{
Aws::SNS::SNSClient sns;
Aws::SNS::Model::GetSMSAttributesRequest gsmst_req;
//Set the request to only retrieve the DefaultSMSType setting.
//Without the following line, GetSMSAttributes would retrieve all settings.
gsmst_req.AddAttributes("DefaultSMSType");
if (gsmst_out.IsSuccess())
{
for (auto const& att : gsmst_out.GetResult().GetAttributes())
{
std::cout << [Link] << ": " << [Link] << std::endl;
333
Amazon Simple Notification
Service Guía para desarrolladores
Cómo obtener la configuración para enviar mensajes SMS
}
}
else
{
std::cout << "Error while getting SMS Type: '" <<
gsmst_out.GetError().GetMessage()
<< "'" << std::endl;
}
}
Aws::ShutdownAPI(options);
Java
try {
GetSubscriptionAttributesRequest request =
[Link]()
.subscriptionArn(topicArn)
.build();
} catch (SnsException e) {
[Link]([Link]().errorMessage());
[Link](1);
}
JavaScript
334
Amazon Simple Notification
Service Guía para desarrolladores
Cómo obtener la configuración para enviar mensajes SMS
PHP
require 'vendor/[Link]';
use Aws\Sns\SnsClient;
use Aws\Exception\AwsException;
/**
* Get the type of SMS Message sent by default from the AWS SNS service.
*
* This code expects that you have AWS credentials set up per:
* [Link]
guide_credentials.html
*/
335
Amazon Simple Notification
Service Guía para desarrolladores
Lista de números de teléfono desactivados
try {
$result = $SnSclient->getSMSAttributes([
'attributes' => ['DefaultSMSType'],
]);
var_dump($result);
} catch (AwsException $e) {
// output error message if fails
error_log($e->getMessage());
}
Para obtener una lista completa de las guías para desarrolladores del SDK de AWS y ejemplos de código,
consulte Uso de Amazon SNS con un AWS SDK (p. 6). En este tema también se incluye información sobre
cómo comenzar a utilizar el SDK y detalles sobre sus versiones anteriores.
Java
try {
ListPhoneNumbersOptedOutRequest request =
[Link]().build();
ListPhoneNumbersOptedOutResponse result =
[Link](request);
[Link]("Status is " + [Link]().statusCode()
+ "\n\nPhone Numbers: \n\n" + [Link]());
} catch (SnsException e) {
[Link]([Link]().errorMessage());
[Link](1);
}
}
336
Amazon Simple Notification
Service Guía para desarrolladores
Lista de suscriptores de un tema
PHP
require 'vendor/[Link]';
use Aws\Sns\SnsClient;
use Aws\Exception\AwsException;
/**
* Returns a list of phone numbers that are opted out of receiving SMS messages
from your AWS SNS account.
*
* This code expects that you have AWS credentials set up per:
* [Link]
guide_credentials.html
*/
try {
$result = $SnSclient->listPhoneNumbersOptedOut([
]);
var_dump($result);
} catch (AwsException $e) {
// output error message if fails
error_log($e->getMessage());
}
Para obtener una lista completa de las guías para desarrolladores del SDK de AWS y ejemplos de código,
consulte Uso de Amazon SNS con un AWS SDK (p. 6). En este tema también se incluye información sobre
cómo comenzar a utilizar el SDK y detalles sobre sus versiones anteriores.
.NET
/// <summary>
/// This example will retrieve a list of the existing Amazon Simple
337
Amazon Simple Notification
Service Guía para desarrolladores
Lista de suscriptores de un tema
DisplaySubscriptionList(subscriptions);
}
/// <summary>
/// Gets a list of the existing Amazon SNS subscriptions.
/// </summary>
/// <param name="client">The initialized Amazon SNS client object used
/// to obtain the list of subscriptions.</param>
/// <returns>A List containing information about each subscription.</
returns>
public static async Task<List<Subscription>>
GetSubscriptionsListAsync(IAmazonSimpleNotificationService client)
{
var response = await [Link]();
return [Link];
}
/// <summary>
/// Display a list of Amazon SNS subscription information.
/// </summary>
/// <param name="subscriptionList">A list containing details for existing
/// Amazon SNS subscriptions.</param>
public static void DisplaySubscriptionList(List<Subscription>
subscriptionList)
{
foreach (var subscription in subscriptionList)
{
[Link]($"Owner: {[Link]}");
[Link]($"Subscription ARN:
{[Link]}");
[Link]($"Topic ARN: {[Link]}");
[Link]($"Endpoint: {[Link]}");
[Link]($"Protocol: {[Link]}");
[Link]();
}
}
}
C++
Aws::SDKOptions options;
338
Amazon Simple Notification
Service Guía para desarrolladores
Lista de suscriptores de un tema
Aws::InitAPI(options);
{
Aws::SNS::SNSClient sns;
Aws::SNS::Model::ListSubscriptionsRequest ls_req;
if (ls_out.IsSuccess())
{
std::cout << "Subscriptions list:" << std::endl;
for (auto const& subscription : ls_out.GetResult().GetSubscriptions())
{
std::cout << " * " << [Link]() << std::endl;
}
}
else
{
std::cout << "Error listing subscriptions " << ls_out.GetError().GetMessage()
<<
std::endl;
}
}
Aws::ShutdownAPI(options);
Go
SDK para Go V2
• Encuentre instrucciones y más código en GitHub.
• Para ver los detalles de la API, consulte ListSubscriptions en la Referencia de la API de AWS
SDK for Go.
Java
try {
ListSubscriptionsRequest request = [Link]()
.build();
ListSubscriptionsResponse result =
[Link](request);
[Link]([Link]());
} catch (SnsException e) {
[Link]([Link]().errorMessage());
[Link](1);
}
}
339
Amazon Simple Notification
Service Guía para desarrolladores
Lista de suscriptores de un tema
JavaScript
Kotlin
Esta es una documentación preliminar para una característica en versión de vista previa.
Está sujeta a cambios.
340
Amazon Simple Notification
Service Guía para desarrolladores
Lista de suscriptores de un tema
PHP
require 'vendor/[Link]';
use Aws\Sns\SnsClient;
use Aws\Exception\AwsException;
/**
* Returns a list of Amazon SNS subscriptions in the requested region.
*
* This code expects that you have AWS credentials set up per:
* [Link]
guide_credentials.html
*/
try {
$result = $SnSclient->listSubscriptions([
]);
var_dump($result);
} catch (AwsException $e) {
// output error message if fails
error_log($e->getMessage());
}
Python
class SnsWrapper:
"""Encapsulates Amazon SNS topic and subscription functions."""
341
Amazon Simple Notification
Service Guía para desarrolladores
Lista de suscriptores de un tema
Ruby
def run_me
topic_arn = 'SNS_TOPIC_ARN'
region = 'REGION'
if show_subscriptions?(sns_client, topic_arn)
else
puts 'There was an error. Stopping program.'
exit 1
342
Amazon Simple Notification
Service Guía para desarrolladores
Enumeración de temas
end
end
Para obtener una lista completa de las guías para desarrolladores del SDK de AWS y ejemplos de código,
consulte Uso de Amazon SNS con un AWS SDK (p. 6). En este tema también se incluye información sobre
cómo comenzar a utilizar el SDK y detalles sobre sus versiones anteriores.
.NET
await GetTopicListAsync(client);
}
/// <summary>
/// Retrieves the list of Amazon SNS topics in groups of up to 100
/// topics.
/// </summary>
/// <param name="client">The initialized Amazon SNS client object used
/// to retrieve the list of topics.</param>
public static async Task GetTopicListAsync(IAmazonSimpleNotificationService
client)
{
// If there are more than 100 Amazon SNS topics, the call to
// ListTopicsAsync will return a value to pass to the
// method to retrieve the next 100 (or less) topics.
string nextToken = [Link];
do
{
var response = await [Link](nextToken);
DisplayTopicsList([Link]);
nextToken = [Link];
}
while ();
}
/// <summary>
343
Amazon Simple Notification
Service Guía para desarrolladores
Enumeración de temas
C++
Aws::SDKOptions options;
Aws::InitAPI(options);
{
Aws::SNS::SNSClient sns;
Aws::SNS::Model::ListTopicsRequest lt_req;
if (lt_out.IsSuccess())
{
std::cout << "Topics list:" << std::endl;
for (auto const &topic : lt_out.GetResult().GetTopics())
{
std::cout << " * " << [Link]() << std::endl;
}
}
else
{
std::cout << "Error listing topics " << lt_out.GetError().GetMessage() <<
std::endl;
}
}
Aws::ShutdownAPI(options);
Go
SDK para Go V2
• Encuentre instrucciones y más código en GitHub.
• Para ver los detalles de la API, consulte ListTopics en la Referencia de la API de AWS SDK for
Go.
344
Amazon Simple Notification
Service Guía para desarrolladores
Enumeración de temas
Java
try {
ListTopicsRequest request = [Link]()
.build();
} catch (SnsException e) {
[Link]([Link]().errorMessage());
[Link](1);
}
}
JavaScript
345
Amazon Simple Notification
Service Guía para desarrolladores
Enumeración de temas
• Para obtener más información, consulte la Guía para desarrolladores de AWS SDK for
JavaScript.
• Para ver los detalles de la API, consulte ListTopics en la Referencia de la API de AWS SDK for
JavaScript.
Kotlin
Esta es una documentación preliminar para una característica en versión de vista previa.
Está sujeta a cambios.
PHP
require 'vendor/[Link]';
use Aws\Sns\SnsClient;
use Aws\Exception\AwsException;
/**
* Returns a list of the requester's topics from your AWS SNS account in the region
specified.
*
* This code expects that you have AWS credentials set up per:
* [Link]
guide_credentials.html
*/
try {
$result = $SnSclient->listTopics([
]);
var_dump($result);
} catch (AwsException $e) {
// output error message if fails
346
Amazon Simple Notification
Service Guía para desarrolladores
Enumeración de temas
error_log($e->getMessage());
}
Python
class SnsWrapper:
"""Encapsulates Amazon SNS topic and subscription functions."""
def __init__(self, sns_resource):
"""
:param sns_resource: A Boto3 Amazon SNS resource.
"""
self.sns_resource = sns_resource
def list_topics(self):
"""
Lists topics for the current account.
Ruby
def list_topics?(sns_client)
sns_client.[Link] do |topic|
puts [Link]
rescue StandardError => e
puts "Error while listing the topics: #{[Link]}"
end
end
def run_me
region = 'REGION'
sns_client = Aws::SNS::[Link](region: region)
347
Amazon Simple Notification
Service Guía para desarrolladores
Publicación de un mensaje SMS
if list_topics?(sns_client)
else
puts 'The bucket was not created. Stopping program.'
exit 1
end
end
run_me if $PROGRAM_NAME == __FILE__
Rust
Esta documentación es para un SDK en versión preliminar. El SDK está sujeto a cambios
y no se debe utilizar en producción.
println!("Topic ARNs:");
Ok(())
}
Para obtener una lista completa de las guías para desarrolladores del SDK de AWS y ejemplos de código,
consulte Uso de Amazon SNS con un AWS SDK (p. 6). En este tema también se incluye información sobre
cómo comenzar a utilizar el SDK y detalles sobre sus versiones anteriores.
C++
348
Amazon Simple Notification
Service Guía para desarrolladores
Publicación de un mensaje SMS
/**
* Publish SMS: use Amazon SNS to send an SMS text message to a phone number.
* Note: This requires additional AWS configuration prior to running example.
*
* NOTE: When you start using Amazon SNS to send SMS messages, your AWS account is
in the SMS sandbox and you can only
* use verified destination phone numbers. See [Link]
latest/dg/[Link].
* NOTE: If destination is in the US, you also have an additional restriction that
you have use a dedicated
* origination ID (phone number). You can request an origination number using
Amazon Pinpoint for a fee.
* See [Link]
origination-numbers-with-amazon-sns/
* for more information.
*
* <phone_number_value> input parameter uses E.164 format.
* For example, in United States, this input value should be of the form:
+12223334444
*/
int main(int argc, char ** argv)
{
if (argc != 3)
{
std::cout << "Usage: publish_sms <message_value> <phone_number_value> " <<
std::endl;
return 1;
}
Aws::SDKOptions options;
Aws::InitAPI(options);
{
Aws::SNS::SNSClient sns;
Aws::String message = argv[1];
Aws::String phone_number = argv[2];
Aws::SNS::Model::PublishRequest psms_req;
psms_req.SetMessage(message);
psms_req.SetPhoneNumber(phone_number);
if (psms_out.IsSuccess())
{
std::cout << "Message published successfully " <<
psms_out.GetResult().GetMessageId()
<< std::endl;
}
else
{
std::cout << "Error while publishing message " <<
psms_out.GetError().GetMessage()
<< std::endl;
}
}
Aws::ShutdownAPI(options);
return 0;
}
349
Amazon Simple Notification
Service Guía para desarrolladores
Publicación de un mensaje SMS
Java
} catch (SnsException e) {
[Link]([Link]().errorMessage());
[Link](1);
}
}
Kotlin
Esta es una documentación preliminar para una característica en versión de vista previa.
Está sujeta a cambios.
PHP
350
Amazon Simple Notification
Service Guía para desarrolladores
Publicación de un mensaje SMS
require 'vendor/[Link]';
use Aws\Sns\SnsClient;
use Aws\Exception\AwsException;
/**
* Sends a a text message (SMS message) directly to a phone number using Amazon
SNS.
*
* This code expects that you have AWS credentials set up per:
* [Link]
guide_credentials.html
*/
try {
$result = $SnSclient->publish([
'Message' => $message,
'PhoneNumber' => $phone,
]);
var_dump($result);
} catch (AwsException $e) {
// output error message if fails
error_log($e->getMessage());
}
Python
class SnsWrapper:
"""Encapsulates Amazon SNS topic and subscription functions."""
def __init__(self, sns_resource):
"""
:param sns_resource: A Boto3 Amazon SNS resource.
"""
self.sns_resource = sns_resource
:param phone_number: The phone number that receives the message. This must
be
in E.164 format. For example, a United States phone
number might be +12065550101.
351
Amazon Simple Notification
Service Guía para desarrolladores
Publicación de un tema
Para obtener una lista completa de las guías para desarrolladores del SDK de AWS y ejemplos de código,
consulte Uso de Amazon SNS con un AWS SDK (p. 6). En este tema también se incluye información sobre
cómo comenzar a utilizar el SDK y detalles sobre sus versiones anteriores.
.NET
C++
Aws::SDKOptions options;
Aws::InitAPI(options);
{
Aws::SNS::SNSClient sns;
Aws::String message = argv[1];
Aws::String topic_arn = argv[2];
Aws::SNS::Model::PublishRequest psms_req;
psms_req.SetMessage(message);
psms_req.SetTopicArn(topic_arn);
if (psms_out.IsSuccess())
{
std::cout << "Message published successfully " << std::endl;
}
else
352
Amazon Simple Notification
Service Guía para desarrolladores
Publicación de un tema
{
std::cout << "Error while publishing message " <<
psms_out.GetError().GetMessage()
<< std::endl;
}
}
Aws::ShutdownAPI(options);
Go
SDK para Go V2
• Encuentre instrucciones y más código en GitHub.
• Para ver los detalles de la API, consulte Publish (Publicar) en la Referencia de la API de AWS
SDK for Go.
Java
try {
PublishRequest request = [Link]()
.message(message)
.topicArn(topicArn)
.build();
} catch (SnsException e) {
[Link]([Link]().errorMessage());
[Link](1);
}
}
JavaScript
353
Amazon Simple Notification
Service Guía para desarrolladores
Publicación de un tema
Kotlin
Esta es una documentación preliminar para una característica en versión de vista previa.
Está sujeta a cambios.
354
Amazon Simple Notification
Service Guía para desarrolladores
Publicación de un tema
PHP
require 'vendor/[Link]';
use Aws\Sns\SnsClient;
use Aws\Exception\AwsException;
/**
* Sends a message to an Amazon SNS topic.
*
* This code expects that you have AWS credentials set up per:
* [Link]
guide_credentials.html
*/
try {
$result = $SnSclient->publish([
'Message' => $message,
'TopicArn' => $topic,
]);
var_dump($result);
} catch (AwsException $e) {
// output error message if fails
error_log($e->getMessage());
}
Python
Publique un mensaje con atributos para que una suscripción pueda filtrar en función de los
atributos.
class SnsWrapper:
"""Encapsulates Amazon SNS topic and subscription functions."""
def __init__(self, sns_resource):
"""
355
Amazon Simple Notification
Service Guía para desarrolladores
Publicación de un tema
Publique un mensaje que toma diferentes formas en función del protocolo del suscriptor.
class SnsWrapper:
"""Encapsulates Amazon SNS topic and subscription functions."""
def __init__(self, sns_resource):
"""
:param sns_resource: A Boto3 Amazon SNS resource.
"""
self.sns_resource = sns_resource
def publish_multi_message(
topic, subject, default_message, sms_message, email_message):
"""
Publishes a multi-format message to a topic. A multi-format message takes
different forms based on the protocol of the subscriber. For example,
an SMS subscriber might receive a short, text-only version of the message
while an email subscriber could receive an HTML version of the message.
356
Amazon Simple Notification
Service Guía para desarrolladores
Publicación de un tema
try:
message = {
'default': default_message,
'sms': sms_message,
'email': email_message
}
response = [Link](
Message=[Link](message), Subject=subject,
MessageStructure='json')
message_id = response['MessageId']
[Link]("Published multi-format message to topic %s.", [Link])
except ClientError:
[Link]("Couldn't publish message to topic %s.", [Link])
raise
else:
return message_id
Ruby
def run_me
topic_arn = 'SNS_TOPIC_ARN'
region = 'REGION'
message = 'MESSAGE' # The text of the message to send.
357
Amazon Simple Notification
Service Guía para desarrolladores
Configuración de una cola de
mensajes fallidos para una suscripción
• Para ver los detalles de la API, consulte Publish (Publicar) en la Referencia de la API de AWS
SDK for Ruby.
Rust
Esta documentación es para un SDK en versión preliminar. El SDK está sujeto a cambios
y no se debe utilizar en producción.
async fn subscribe_and_publish(
client: &Client,
topic_arn: &str,
email_address: &str,
) -> Result<(), Error> {
println!("Receiving on topic with ARN: `{}`", topic_arn);
Ok(())
}
Para obtener una lista completa de las guías para desarrolladores del SDK de AWS y ejemplos de código,
consulte Uso de Amazon SNS con un AWS SDK (p. 6). En este tema también se incluye información sobre
cómo comenzar a utilizar el SDK y detalles sobre sus versiones anteriores.
358
Amazon Simple Notification
Service Guía para desarrolladores
Configuración de una política de filtrado
Java
// Specify the ARN of the Amazon SQS queue to use as a dead-letter queue.
String redrivePolicy =
"{\"deadLetterTargetArn\":\"arn:aws:sqs:us-
east-2:123456789012:MyDeadLetterQueue\"}";
Para obtener una lista completa de las guías para desarrolladores del SDK de AWS y ejemplos de código,
consulte Uso de Amazon SNS con un AWS SDK (p. 6). En este tema también se incluye información sobre
cómo comenzar a utilizar el SDK y detalles sobre sus versiones anteriores.
Java
try {
SNSMessageFilterPolicy fp = new SNSMessageFilterPolicy();
359
Amazon Simple Notification
Service Guía para desarrolladores
Configuración de una política de filtrado
[Link]("hockey");
[Link]("customer_interests", attributeValues);
} catch (SnsException e) {
[Link]([Link]().errorMessage());
[Link](1);
}
}
Python
class SnsWrapper:
"""Encapsulates Amazon SNS topic and subscription functions."""
def __init__(self, sns_resource):
"""
:param sns_resource: A Boto3 Amazon SNS resource.
"""
self.sns_resource = sns_resource
360
Amazon Simple Notification
Service Guía para desarrolladores
Cómo establecer la configuración
predeterminada para el envío de mensajes SMS
Para obtener una lista completa de las guías para desarrolladores del SDK de AWS y ejemplos de código,
consulte Uso de Amazon SNS con un AWS SDK (p. 6). En este tema también se incluye información sobre
cómo comenzar a utilizar el SDK y detalles sobre sus versiones anteriores.
C++
Aws::SDKOptions options;
Aws::InitAPI(options);
{
Aws::SNS::SNSClient sns;
Aws::String sms_type = argv[1];
Aws::SNS::Model::SetSMSAttributesRequest ssmst_req;
ssmst_req.AddAttributes("DefaultSMSType", sms_type);
if (ssmst_out.IsSuccess())
{
std::cout << "SMS Type set successfully " << std::endl;
}
else
{
std::cout << "Error while setting SMS Type: '" <<
ssmst_out.GetError().GetMessage()
<< "'" << std::endl;
}
}
Aws::ShutdownAPI(options);
Java
try {
SetSmsAttributesRequest request = [Link]()
361
Amazon Simple Notification
Service Guía para desarrolladores
Cómo establecer la configuración
predeterminada para el envío de mensajes SMS
.attributes(attributes)
.build();
} catch (SnsException e) {
[Link]([Link]().errorMessage());
[Link](1);
}
}
JavaScript
362
Amazon Simple Notification
Service Guía para desarrolladores
Cómo establecer los atributos de los temas
• Para obtener más información, consulte la Guía para desarrolladores de AWS SDK for
JavaScript.
• Para ver los detalles de la API, consulte SetSMSAttributes en la Referencia de la API de AWS
SDK for JavaScript.
PHP
try {
$result = $SnSclient->SetSMSAttributes([
'attributes' => [
'DefaultSMSType' => 'Transactional',
],
]);
var_dump($result);
} catch (AwsException $e) {
// output error message if fails
error_log($e->getMessage());
}
Para obtener una lista completa de las guías para desarrolladores del SDK de AWS y ejemplos de código,
consulte Uso de Amazon SNS con un AWS SDK (p. 6). En este tema también se incluye información sobre
cómo comenzar a utilizar el SDK y detalles sobre sus versiones anteriores.
Java
try {
363
Amazon Simple Notification
Service Guía para desarrolladores
Cómo establecer los atributos de los temas
.attributeName(attribute)
.attributeValue(value)
.topicArn(topicArn)
.build();
SetTopicAttributesResponse result =
[Link](request);
[Link]("\n\nStatus was " +
[Link]().statusCode() + "\n\nTopic " + [Link]()
+ " updated " + [Link]() + " to " +
[Link]());
} catch (SnsException e) {
[Link]([Link]().errorMessage());
[Link](1);
}
}
JavaScript
364
Amazon Simple Notification
Service Guía para desarrolladores
Cómo establecer los atributos de los temas
Kotlin
Esta es una documentación preliminar para una característica en versión de vista previa.
Está sujeta a cambios.
PHP
require 'vendor/[Link]';
use Aws\Sns\SnsClient;
use Aws\Exception\AwsException;
/**
* Configure the message delivery status attributes for an Amazon SNS Topic.
*
* This code expects that you have AWS credentials set up per:
* [Link]
guide_credentials.html
*/
365
Amazon Simple Notification
Service Guía para desarrolladores
Cómo establecer los atributos de los temas
]);
$attribute = 'Policy | DisplayName | DeliveryPolicy';
$value = 'First Topic';
$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';
try {
$result = $SnSclient->setTopicAttributes([
'AttributeName' => $attribute,
'AttributeValue' => $value,
'TopicArn' => $topic,
]);
var_dump($result);
} catch (AwsException $e) {
// output error message if fails
error_log($e->getMessage());
}
Ruby
policy = '{
"Version":"2008-10-17",
"Id":"__default_policy_ID",
"Statement":[{
"Sid":"__default_statement_ID",
"Effect":"Allow",
"Principal":{
"AWS":"*"
},
"Action":["SNS:Publish"],
"Resource":"' + MY_TOPIC_ARN + '",
"Condition":{
"ArnEquals":{
"AWS:SourceArn":"' + MY_RESOURCE_ARN + '"}
}
}]
}'
# Replace us-west-2 with the AWS Region you're using for Amazon SNS.
sns = Aws::SNS::[Link](region: 'REGION')
366
Amazon Simple Notification
Service Guía para desarrolladores
Suscripción de una función Lambda a un tema
• Para obtener más información, consulte la Guía para desarrolladores de AWS SDK for Ruby.
• Para ver los detalles de la API, consulte SetTopicAttributes en la Referencia de la API de AWS
SDK for Ruby.
Para obtener una lista completa de las guías para desarrolladores del SDK de AWS y ejemplos de código,
consulte Uso de Amazon SNS con un AWS SDK (p. 6). En este tema también se incluye información sobre
cómo comenzar a utilizar el SDK y detalles sobre sus versiones anteriores.
C++
/**
* Subscribe an AWS Lambda endpoint to a topic - demonstrates how to initiate a
subscription to an Amazon SNS topic with delivery
* to an AWS Lambda function.
*
* NOTE: You must first configure AWS Lambda to run this example.
* See [Link]
[Link] for more information.
*
* <protocol_value> set to "lambda" provides delivery of JSON-encoded message to an
AWS Lambda function
* (see [Link] for
available protocols).
* <topic_arn_value> can be obtained from run_list_topics executable and includes
the "arn:" prefix.
* <lambda_function_arn> is the ARN of an AWS Lambda function.
*/
Aws::SDKOptions options;
Aws::InitAPI(options);
{
Aws::SNS::SNSClient sns;
Aws::String protocol = argv[1];
Aws::String topic_arn = argv[2];
Aws::String endpoint = argv[3];
Aws::SNS::Model::SubscribeRequest s_req;
s_req.SetTopicArn(topic_arn);
s_req.SetProtocol(protocol);
s_req.SetEndpoint(endpoint);
367
Amazon Simple Notification
Service Guía para desarrolladores
Suscripción de una función Lambda a un tema
if (s_out.IsSuccess())
{
std::cout << "Subscribed successfully " << std::endl;
}
else
{
std::cout << "Error while subscribing " << s_out.GetError().GetMessage()
<< std::endl;
}
}
Aws::ShutdownAPI(options);
return 0;
}
Java
try {
} catch (SnsException e) {
[Link]([Link]().errorMessage());
[Link](1);
}
return "";
}
JavaScript
368
Amazon Simple Notification
Service Guía para desarrolladores
Suscripción de una función Lambda a un tema
Kotlin
Esta es una documentación preliminar para una característica en versión de vista previa.
Está sujeta a cambios.
369
Amazon Simple Notification
Service Guía para desarrolladores
Suscripción de una aplicación móvil a un tema
Para obtener una lista completa de las guías para desarrolladores del SDK de AWS y ejemplos de código,
consulte Uso de Amazon SNS con un AWS SDK (p. 6). En este tema también se incluye información sobre
cómo comenzar a utilizar el SDK y detalles sobre sus versiones anteriores.
C++
/**
* Subscribe an app endpoint to a topic - demonstrates how to initiate a
subscription to an Amazon SNS topic
* with delivery to a mobile app.
*
* NOTE: You must first create an endpoint by registering an app and device.
* See [Link]
[Link] for more information.
*
* <protocol_value> set to "application" provides delivery of JSON-encoded message
to an EndpointArn
* for a mobile app and device (see [Link]
api/API_Subscribe.html for available protocols).
* <topic_arn_value> can be obtained from run_list_topics executable and includes
the "arn:" prefix.
* <mobile_endpoint_arn> is the EndpointArn of a mobile app and device.
*/
int main(int argc, char ** argv)
{
if (argc != 4)
{
std::cout << "Usage: subscribe_app <protocol_value/application>
<topic_arn_value>"
" <mobile_endpoint_arn>" << std::endl;
return 1;
}
Aws::SDKOptions options;
Aws::InitAPI(options);
{
Aws::SNS::SNSClient sns;
Aws::String protocol = argv[1];
Aws::String topic_arn = argv[2];
Aws::String endpoint = argv[3];
Aws::SNS::Model::SubscribeRequest s_req;
370
Amazon Simple Notification
Service Guía para desarrolladores
Suscripción de una aplicación móvil a un tema
s_req.SetTopicArn(topic_arn);
s_req.SetProtocol(protocol);
s_req.SetEndpoint(endpoint);
if (s_out.IsSuccess())
{
std::cout << "Subscribed successfully " << std::endl;
}
else
{
std::cout << "Error while subscribing " << s_out.GetError().GetMessage()
<< std::endl;
}
}
Aws::ShutdownAPI(options);
return 0;
}
JavaScript
371
Amazon Simple Notification
Service Guía para desarrolladores
Suscripción de un punto de enlace HTTP a un tema
run();
Para obtener una lista completa de las guías para desarrolladores del SDK de AWS y ejemplos de código,
consulte Uso de Amazon SNS con un AWS SDK (p. 6). En este tema también se incluye información sobre
cómo comenzar a utilizar el SDK y detalles sobre sus versiones anteriores.
Java
try {
SubscribeRequest request = [Link]()
.protocol("http")
.endpoint(url)
.returnSubscriptionArn(true)
.topicArn(topicArn)
.build();
} catch (SnsException e) {
[Link]([Link]().errorMessage());
[Link](1);
}
}
PHP
require 'vendor/[Link]';
372
Amazon Simple Notification
Service Guía para desarrolladores
Suscripción de una dirección
de correo electrónico a un tema
use Aws\Sns\SnsClient;
use Aws\Exception\AwsException;
/**
* Prepares to subscribe an endpoint by sending the endpoint a confirmation
message.
*
* This code expects that you have AWS credentials set up per:
* [Link]
guide_credentials.html
*/
$protocol = 'https';
$endpoint = '[Link]
$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';
try {
$result = $SnSclient->subscribe([
'Protocol' => $protocol,
'Endpoint' => $endpoint,
'ReturnSubscriptionArn' => true,
'TopicArn' => $topic,
]);
var_dump($result);
} catch (AwsException $e) {
// output error message if fails
error_log($e->getMessage());
}
Para obtener una lista completa de las guías para desarrolladores del SDK de AWS y ejemplos de código,
consulte Uso de Amazon SNS con un AWS SDK (p. 6). En este tema también se incluye información sobre
cómo comenzar a utilizar el SDK y detalles sobre sus versiones anteriores.
C++
/**
* Subscribe an email address endpoint to a topic - demonstrates how to initiate a
subscription to an Amazon SNS topic with delivery
* to an email address.
373
Amazon Simple Notification
Service Guía para desarrolladores
Suscripción de una dirección
de correo electrónico a un tema
*
* SNS will send a subscription confirmation email to the email address provided
which you need to confirm to
* receive messages.
*
* <protocol_value> set to "email" provides delivery of message via SMTP (see
[Link] for available
protocols).
* <topic_arn_value> can be obtained from run_list_topics executable and includes
the "arn:" prefix.
*/
Aws::SDKOptions options;
Aws::InitAPI(options);
{
Aws::SNS::SNSClient sns;
Aws::String protocol = argv[1];
Aws::String topic_arn = argv[2];
Aws::String endpoint = argv[3];
Aws::SNS::Model::SubscribeRequest s_req;
s_req.SetTopicArn(topic_arn);
s_req.SetProtocol(protocol);
s_req.SetEndpoint(endpoint);
if (s_out.IsSuccess())
{
std::cout << "Subscribed successfully " << std::endl;
}
else
{
std::cout << "Error while subscribing " << s_out.GetError().GetMessage()
<< std::endl;
}
}
Aws::ShutdownAPI(options);
return 0;
}
Go
SDK para Go V2
• Encuentre instrucciones y más código en GitHub.
• Para ver los detalles de la API, consulte Subscribe (Suscríbase) en la Referencia de la API de
AWS SDK for Go.
374
Amazon Simple Notification
Service Guía para desarrolladores
Suscripción de una dirección
de correo electrónico a un tema
Java
try {
SubscribeRequest request = [Link]()
.protocol("email")
.endpoint(email)
.returnSubscriptionArn(true)
.topicArn(topicArn)
.build();
} catch (SnsException e) {
[Link]([Link]().errorMessage());
[Link](1);
}
}
JavaScript
375
Amazon Simple Notification
Service Guía para desarrolladores
Suscripción de una dirección
de correo electrónico a un tema
const data = await [Link](new SubscribeCommand(params));
[Link]("Success.", data);
return data; // For unit tests.
} catch (err) {
[Link]("Error", [Link]);
}
};
run();
Kotlin
Esta es una documentación preliminar para una característica en versión de vista previa.
Está sujeta a cambios.
PHP
require 'vendor/[Link]';
use Aws\Sns\SnsClient;
use Aws\Exception\AwsException;
/**
* Prepares to subscribe an endpoint by sending the endpoint a confirmation
message.
376
Amazon Simple Notification
Service Guía para desarrolladores
Suscripción de una dirección
de correo electrónico a un tema
*
* This code expects that you have AWS credentials set up per:
* [Link]
guide_credentials.html
*/
$protocol = 'email';
$endpoint = 'sample@[Link]';
$topic = 'arn:aws:sns:us-east-1:111122223333:MyTopic';
try {
$result = $SnSclient->subscribe([
'Protocol' => $protocol,
'Endpoint' => $endpoint,
'ReturnSubscriptionArn' => true,
'TopicArn' => $topic,
]);
var_dump($result);
} catch (AwsException $e) {
// output error message if fails
error_log($e->getMessage());
}
Python
class SnsWrapper:
"""Encapsulates Amazon SNS topic and subscription functions."""
def __init__(self, sns_resource):
"""
:param sns_resource: A Boto3 Amazon SNS resource.
"""
self.sns_resource = sns_resource
377
Amazon Simple Notification
Service Guía para desarrolladores
Suscripción de una dirección
de correo electrónico a un tema
"""
try:
subscription = [Link](
Protocol=protocol, Endpoint=endpoint, ReturnSubscriptionArn=True)
[Link]("Subscribed %s %s to topic %s.", protocol, endpoint,
[Link])
except ClientError:
[Link](
"Couldn't subscribe %s %s to topic %s.", protocol, endpoint,
[Link])
raise
else:
return subscription
Ruby
protocol = 'email'
endpoint = 'EMAIL_ADDRESS'
topic_arn = 'TOPIC_ARN'
region = 'REGION'
378
Amazon Simple Notification
Service Guía para desarrolladores
Situaciones
• Para ver los detalles de la API, consulte Subscribe (Suscríbase) en la Referencia de la API de
AWS SDK for Ruby.
Rust
Esta documentación es para un SDK en versión preliminar. El SDK está sujeto a cambios
y no se debe utilizar en producción.
async fn subscribe_and_publish(
client: &Client,
topic_arn: &str,
email_address: &str,
) -> Result<(), Error> {
println!("Receiving on topic with ARN: `{}`", topic_arn);
Ok(())
}
Para obtener una lista completa de las guías para desarrolladores del SDK de AWS y ejemplos de código,
consulte Uso de Amazon SNS con un AWS SDK (p. 6). En este tema también se incluye información sobre
cómo comenzar a utilizar el SDK y detalles sobre sus versiones anteriores.
379
Amazon Simple Notification
Service Guía para desarrolladores
Creación de un punto de enlace de la
plataforma para notificaciones push
Ejemplos
• Creación de un punto de enlace de la plataforma para las notificaciones push de Amazon SNS
mediante un SDK de AWS (p. 380)
• Creación y publicación en un tema FIFO de Amazon SNS mediante un SDK de AWS (p. 382)
• Publicación de mensajes SMS en un tema de Amazon SNS mediante un SDK de AWS (p. 384)
• Publicación de un mensaje de gran tamaño en Amazon SNS con Amazon S3 mediante un SDK de
AWS (p. 385)
Java
class RegistrationExample {
if (createNeeded) {
// No platform endpoint ARN is stored; need to call createEndpoint.
endpointArn = createEndpoint();
createNeeded = false;
}
updateNeeded = ![Link]().get("Token").equals(token)
|| ![Link]().get("Enabled").equalsIgnoreCase("true");
380
Amazon Simple Notification
Service Guía para desarrolladores
Creación de un punto de enlace de la
plataforma para notificaciones push
if (createNeeded) {
createEndpoint(token);
}
if (updateNeeded) {
// The platform endpoint is out of sync with the current data;
// update the token and enable it.
[Link]("Updating platform endpoint " + endpointArn);
Map attribs = new HashMap();
[Link]("Token", token);
[Link]("Enabled", "true");
SetEndpointAttributesRequest saeReq =
new SetEndpointAttributesRequest()
.withEndpointArn(endpointArn)
.withAttributes(attribs);
[Link](saeReq);
}
}
/**
* @return never null
* */
private String createEndpoint(String token) {
/**
* @return the ARN the app was registered under previously, or null if no
* platform endpoint ARN is stored.
*/
private String retrieveEndpointArn() {
// Retrieve the platform endpoint ARN from permanent storage,
// or return null if null is stored.
return arnStorage;
381
Amazon Simple Notification
Service Guía para desarrolladores
Creación y publicación en un tema FIFO
/**
* Stores the platform endpoint ARN in permanent storage for lookup next time.
* */
private void storeEndpointArn(String endpointArn) {
// Write the platform endpoint ARN to permanent storage.
arnStorage = endpointArn;
}
}
Para obtener una lista completa de las guías para desarrolladores del SDK de AWS y ejemplos de código,
consulte Uso de Amazon SNS con un AWS SDK (p. 6). En este tema también se incluye información sobre
cómo comenzar a utilizar el SDK y detalles sobre sus versiones anteriores.
Java
[Link]("FifoTopic", "true");
[Link]("ContentBasedDeduplication", "false");
[Link]("FifoQueue", "true");
382
Amazon Simple Notification
Service Guía para desarrolladores
Creación y publicación en un tema FIFO
String wholesaleSubscriptionArn =
[Link](sns, sqs, topicArn, wholesaleQueueUrl);
String retailSubscriptionArn =
[Link](sns, sqs, topicArn, retailQueueUrl);
Establezca una política de filtro en cada suscripción para que cada aplicación de suscriptor reciba
solo las actualizaciones de precios que necesita.
[Link](
attributeName,
new MessageAttributeValue()
.withDataType("String")
.withStringValue(attributeValue));
[Link](
new PublishRequest()
.withTopicArn(topicArn)
.withSubject(subject)
.withMessage(payload)
.withMessageGroupId(groupId);
383
Amazon Simple Notification
Service Guía para desarrolladores
Publicación de mensajes SMS en un tema
.withMessageDeduplicationId(dedupId)
.withMessageAttributes(attributes);
Para obtener una lista completa de las guías para desarrolladores del SDK de AWS y ejemplos de código,
consulte Uso de Amazon SNS con un AWS SDK (p. 6). En este tema también se incluye información sobre
cómo comenzar a utilizar el SDK y detalles sobre sus versiones anteriores.
Java
Establezca atributos en el mensaje, como el ID del remitente, el precio máximo y su tipo. Los
atributos de mensaje son opcionales.
384
Amazon Simple Notification
Service Guía para desarrolladores
Publicación de un mensaje de gran tamaño
Llame a las funciones anteriores para crear un tema, suscribir un número de teléfono, establecer
atributos de mensaje y publicar un mensaje en el tema.
Para obtener una lista completa de las guías para desarrolladores del SDK de AWS y ejemplos de código,
consulte Uso de Amazon SNS con un AWS SDK (p. 6). En este tema también se incluye información sobre
cómo comenzar a utilizar el SDK y detalles sobre sus versiones anteriores.
385
Amazon Simple Notification
Service Guía para desarrolladores
Publicación de un mensaje de gran tamaño
Java
Para publicar mensajes grandes, utilice la biblioteca de clientes extendidos de Amazon SNS para
Java. El mensaje que envía hace referencia a un objeto de Amazon S3 en el que se incluye el
contenido real del mensaje.
import [Link];
import [Link];
import [Link];
import [Link];
import [Link].s3.AmazonS3;
import [Link].s3.AmazonS3ClientBuilder;
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
//Message threshold controls the maximum message size that will be allowed
to be published
//through SNS using the extended client. Payload of messages exceeding this
value will be stored in
//S3. The default value of this parameter is 256 KB which is the maximum
message size in SNS (and SQS).
final int EXTENDED_STORAGE_MESSAGE_SIZE_THRESHOLD = 32;
386
Amazon Simple Notification
Service Guía para desarrolladores
Ejemplos de servicios combinados
Para obtener una lista completa de las guías para desarrolladores del SDK de AWS y ejemplos de código,
consulte Uso de Amazon SNS con un AWS SDK (p. 6). En este tema también se incluye información sobre
cómo comenzar a utilizar el SDK y detalles sobre sus versiones anteriores.
Ejemplos
• Creación de una aplicación para enviar datos a una tabla de DynamoDB (p. 388)
• Creación de una aplicación de publicación y suscripción que traduzca mensajes (p. 389)
• Creación de una aplicación de exploración de Amazon Textract (p. 390)
387
Amazon Simple Notification
Service Guía para desarrolladores
Creación de una aplicación para enviar
datos a una tabla de DynamoDB
• Detecte personas y objetos en un vídeo con Amazon Rekognition mediante un SDK de AWS (p. 391)
• Uso de API Gateway para invocar una función Lambda (p. 392)
• Uso de eventos programados para invocar una función Lambda (p. 393)
Java
Indica cómo crear una aplicación web dinámica que envíe datos mediante la API Java de Amazon
DynamoDB y un mensaje de texto mediante la API Java de Amazon Simple Notification Service.
Para ver el código fuente completo y las instrucciones de configuración y ejecución, consulte el
ejemplo completo en GitHub.
JavaScript
Este ejemplo indica cómo crear una aplicación que permita a los usuarios enviar datos a una
tabla de Amazon DynamoDB y un mensaje de texto al administrador mediante Amazon Simple
Notification Service (Amazon SNS).
Para ver el código fuente completo y las instrucciones de configuración y ejecución, consulte el
ejemplo completo en GitHub.
Este ejemplo también está disponible en la guía para desarrolladores de AWS SDK for JavaScript
v3.
Kotlin
Muestra cómo crear una aplicación de Android nativa que envíe datos mediante la API de Kotlin
de Amazon DynamoDB y un mensaje de texto mediante la API de Kotlin de Amazon SNS.
Para ver el código fuente completo y las instrucciones de configuración y ejecución, consulte el
ejemplo completo en GitHub.
388
Amazon Simple Notification
Service Guía para desarrolladores
Creación de una aplicación de Amazon SNS
Para obtener una lista completa de las guías para desarrolladores del SDK de AWS y ejemplos de código,
consulte Uso de Amazon SNS con un AWS SDK (p. 6). En este tema también se incluye información sobre
cómo comenzar a utilizar el SDK y detalles sobre sus versiones anteriores.
.NET
Indica cómo utilizar la API .NET de Amazon Simple Notification Service para crear una aplicación
web con funcionalidad de suscripción y publicación. Además, esta aplicación de ejemplo también
traduce los mensajes.
Para ver el código fuente completo y las instrucciones de configuración y ejecución, consulte el
ejemplo completo en GitHub.
Java
Indica cómo utilizar la API de Java de Amazon Simple Notification Service para crear una
aplicación web con funcionalidad de suscripción y publicación. Además, esta aplicación de
ejemplo también traduce los mensajes.
Para ver el código fuente completo y las instrucciones de configuración y ejecución, consulte el
ejemplo completo en GitHub.
Para obtener el código fuente completo e instrucciones sobre cómo configurar y ejecutar el
ejemplo que utiliza la API Java Async, consulte el ejemplo completo en GitHub.
Kotlin
389
Amazon Simple Notification
Service Guía para desarrolladores
Creación de una aplicación de
exploración de Amazon Textract
Muestra cómo utilizar la API de Kotlin de Amazon SNS para crear una aplicación que cuente con
funcionalidad de suscripción y publicación. Además, esta aplicación de ejemplo también traduce
los mensajes.
Para ver el código fuente completo y las instrucciones sobre cómo crear una aplicación web,
consulte el ejemplo completo en GitHub.
Para ver el código fuente completo y las instrucciones sobre cómo crear una aplicación Android
nativa, consulte el ejemplo completo en GitHub.
Para obtener una lista completa de las guías para desarrolladores del SDK de AWS y ejemplos de código,
consulte Uso de Amazon SNS con un AWS SDK (p. 6). En este tema también se incluye información sobre
cómo comenzar a utilizar el SDK y detalles sobre sus versiones anteriores.
JavaScript
Indica cómo utilizar el AWS SDK for JavaScript para crear una aplicación React que utilice
Amazon Textract para extraer datos de la imagen de un documento y presentarlos en una
página web interactiva. Este ejemplo se ejecuta en un navegador web y requiere una identidad
autenticada de Amazon Cognito para las credenciales. Para el almacenamiento utiliza Amazon
Simple Storage Service (Amazon S3) y para las notificaciones consulta una cola de Amazon
Simple Queue Service (Amazon SQS) que está suscrita a un tema de Amazon Simple Notification
Service (Amazon SNS).
Para ver el código fuente completo y las instrucciones de configuración y ejecución, consulte el
ejemplo completo en GitHub.
Python
Indica cómo utilizar AWS SDK for Python (Boto3) con Amazon Textract para detectar elementos
de texto, formularios y tablas en la imagen de un documento. La imagen de entrada y la salida
390
Amazon Simple Notification
Service Guía para desarrolladores
Detecte personas y objetos en un vídeo
de Amazon Textract aparecen en una aplicación Tkinter que permite explorar los elementos
detectados.
• Envía la imagen de un documento a Amazon Textract y explora el resultado de los elementos
detectados.
• Envía imágenes directamente a Amazon Textract o mediante un bucket de Amazon Simple
Storage Service (Amazon S3).
• Utilice las API asíncronas para iniciar un trabajo que publique una notificación en un tema de
Amazon Simple Notification Service (Amazon SNS) cuando el trabajo se finalice.
• Consulta una cola de Amazon Simple Queue Service (Amazon SQS) en busca de un mensaje
de finalización de trabajo y muestra los resultados.
Para ver el código fuente completo y las instrucciones de configuración y ejecución, consulte el
ejemplo completo en GitHub.
Para obtener una lista completa de las guías para desarrolladores del SDK de AWS y ejemplos de código,
consulte Uso de Amazon SNS con un AWS SDK (p. 6). En este tema también se incluye información sobre
cómo comenzar a utilizar el SDK y detalles sobre sus versiones anteriores.
Python
Utilice Amazon Rekognition para detectar caras, objetos y personas en vídeos iniciando trabajos
de detección asíncronos. Este ejemplo también configura Amazon Rekognition para que notifique
un tema de Amazon Simple Notification Service (Amazon SNS) cuando se finalicen los trabajos
y suscribe una cola de Amazon Simple Queue Service (Amazon SQS) al tema. Cuando la cola
recibe un mensaje sobre un trabajo, se recupera el trabajo y se muestran los resultados
Este ejemplo se puede ver mejor en GitHub. Para ver el código fuente completo y las
instrucciones de configuración y ejecución, consulte el ejemplo completo en GitHub.
Para obtener una lista completa de las guías para desarrolladores del SDK de AWS y ejemplos de código,
consulte Uso de Amazon SNS con un AWS SDK (p. 6). En este tema también se incluye información sobre
cómo comenzar a utilizar el SDK y detalles sobre sus versiones anteriores.
391
Amazon Simple Notification
Service Guía para desarrolladores
Uso de API Gateway para invocar una función Lambda
Java
Indica cómo crear una función AWS Lambda utilizando la API de tiempo de ejecución de
Java Lambda. Este ejemplo invoca diferentes servicios de AWS para realizar un caso de uso
específico. En este ejemplo se indica cómo crear una función de Lambda invocada por Amazon
API Gateway que escanea una tabla de Amazon DynamoDB en busca de aniversarios laborales y
utiliza Amazon Simple Notification Service (Amazon SNS) para enviar un mensaje de texto a sus
empleados que les felicite en la fecha de su primer aniversario.
Para ver el código fuente completo y las instrucciones de configuración y ejecución, consulte el
ejemplo completo en GitHub.
JavaScript
Indica cómo crear una función AWS Lambda mediante el uso de la API de tiempo de ejecución
de Lambda JavaScript. Este ejemplo invoca diferentes servicios de AWS para realizar un caso
de uso específico. En este ejemplo se indica cómo crear una función de Lambda invocada por
Amazon API Gateway que escanea una tabla de Amazon DynamoDB en busca de aniversarios
laborales y utiliza Amazon Simple Notification Service (Amazon SNS) para enviar un mensaje de
texto a sus empleados que les felicite en la fecha de su primer aniversario.
Para ver el código fuente completo y las instrucciones de configuración y ejecución, consulte el
ejemplo completo en GitHub.
Este ejemplo también está disponible en la guía para desarrolladores de AWS SDK for JavaScript
v3.
Para obtener una lista completa de las guías para desarrolladores del SDK de AWS y ejemplos de código,
consulte Uso de Amazon SNS con un AWS SDK (p. 6). En este tema también se incluye información sobre
cómo comenzar a utilizar el SDK y detalles sobre sus versiones anteriores.
392
Amazon Simple Notification
Service Guía para desarrolladores
Uso de eventos programados
para invocar una función Lambda
Java
Indica cómo crear un evento programado de Amazon EventBridge que invoque una función AWS
Lambda. Configuración de EventBridge para que utilice una expresión cron para programar la
invocación de la función Lambda. En este ejemplo, creará una función Lambda utilizando la API
de tiempo de ejecución de Lambda Java. Este ejemplo invoca diferentes servicios de AWS para
realizar un caso de uso específico. Este ejemplo indica cómo crear una aplicación que envíe un
mensaje de texto a sus empleados para felicitarles por su primer aniversario.
Para ver el código fuente completo y las instrucciones de configuración y ejecución, consulte el
ejemplo completo en GitHub.
JavaScript
Indica cómo crear un evento programado de Amazon EventBridge que invoque una función AWS
Lambda. Configuración de EventBridge para que utilice una expresión cron para programar la
invocación de la función Lambda. En este ejemplo, creará una función Lambda utilizando la API
de tiempo de ejecución de Lambda JavaScript. Este ejemplo invoca diferentes servicios de AWS
para realizar un caso de uso específico. Este ejemplo indica cómo crear una aplicación que envíe
un mensaje de texto a sus empleados para felicitarles por su primer aniversario.
Para ver el código fuente completo y las instrucciones de configuración y ejecución, consulte el
ejemplo completo en GitHub.
Este ejemplo también está disponible en la guía para desarrolladores de AWS SDK for JavaScript
v3.
Para obtener una lista completa de las guías para desarrolladores del SDK de AWS y ejemplos de código,
consulte Uso de Amazon SNS con un AWS SDK (p. 6). En este tema también se incluye información sobre
cómo comenzar a utilizar el SDK y detalles sobre sus versiones anteriores.
393
Amazon Simple Notification
Service Guía para desarrolladores
Protección de los datos
Temas
• Protección de los datos (p. 394)
• Identity and Access Management en Amazon SNS (p. 416)
• Registro y monitoreo en Amazon SNS (p. 441)
• Validación de la conformidad de Amazon SNS (p. 449)
• Resiliencia en Amazon SNS (p. 450)
• Seguridad de la infraestructura en Amazon SNS (p. 450)
• Prácticas recomendadas de seguridad para Amazon SNS (p. 451)
Con fines de protección de datos, recomendamos proteger las credenciales de Cuenta de AWS y
configurar cuentas de usuario individuales con AWS Identity and Access Management (IAM). De esta
manera, solo se otorgan a cada usuario los permisos necesarios para cumplir con sus obligaciones
laborales. También recomendamos proteger sus datos de las siguientes formas:
394
Amazon Simple Notification
Service Guía para desarrolladores
Cifrado de datos
En las siguientes secciones, se proporciona más información sobre la protección de datos en Amazon
SNS.
Temas
• Cifrado de datos (p. 395)
• Privacidad del tráfico entre redes (p. 404)
Cifrado de datos
La protección de datos se refiere a salvaguardarlos en tránsito (al desplazarse desde y hacia Amazon
SNS) y en reposo (almacenado en discos en centros de datos Amazon SNS). Puede proteger los datos
en tránsito con una Capa de sockets seguros (SSL, Secure Sockets Layer) o con el cifrado del lado del
cliente. Puede proteger los datos en reposo si solicita a Amazon SNS que cifre los mensajes antes de
guardarlos en el disco en sus centros de datos y, a continuación, que los descifre cuando se reciban los
mensajes.
Temas
• Cifrado en reposo (p. 395)
• Administración de claves (p. 397)
• Habilitación del cifrado del lado del servidor (SSE) para un tema de Amazon SNS (p. 401)
• Habilitación del cifrado del lado del servidor (SSE) para un tema de Amazon SNS con una cola cifrada
de Amazon SQS suscrita (p. 402)
Cifrado en reposo
El cifrado del lado del servidor (SSE) le permite almacenar información confidencial en temas cifrados.
SSE protege el contenido de los mensajes en temas de Amazon SNS mediante claves administradas en
AWS Key Management Service (AWS KMS).
Para obtener información sobre cómo administrar SSE utilizando la AWS Management Console o
AWS SDK for Java (estableciendo el atributo KmsMasterKeyId mediante las acciones CreateTopic
y SetTopicAttributes de la API), consulte Habilitación del cifrado del lado del servidor (SSE)
para un tema de Amazon SNS (p. 401). Para obtener información sobre cómo crear temas cifrados
mediante AWS CloudFormation (al establecer la propiedad KmsMasterKeyId mediante el recurso
AWS::SNS::Topic), consulte la Guía del usuario de AWS CloudFormation.
SSE cifra los mensajes en cuanto Amazon SNS los recibe. Los mensajes se almacenan cifrados y Amazon
SNS los descifra únicamente cuando se envían.
Important
Todas las solicitudes hechas a los temas con SSE habilitado deben usar HTTPS y Signature
Version 4.
Para obtener información acerca de la compatibilidad de otros servicios con temas de cifrado,
consulte la documentación de los servicios.
AWS KMS combina hardware y software seguros de alta disponibilidad para ofrecer un sistema de
administración de claves adaptado a la nube. Cuando utiliza Amazon SNS con AWS KMS, las claves de
datos (p. 396) que cifran los datos de los mensajes también se cifran y almacenan con los datos que
protegen.
• Puede crear y administrar usted mismo claves maestras de clientes (CMK) (p. 396).
• También puede utilizar claves KMS administradas por AWS para Amazon SNS, que son únicas para
cada cuenta y región.
395
Amazon Simple Notification
Service Guía para desarrolladores
Cifrado de datos
• Los estándares de seguridad de AWS KMS pueden ayudarle a cumplir los requisitos de conformidad
relacionados con el cifrado.
Para obtener más información, consulte ¿Qué es AWS Key Management Service? en la Guía para
desarrolladores de AWS Key Management Service.
Temas
• Ámbito de cifrado (p. 396)
• Términos clave (p. 396)
Ámbito de cifrado
SSE cifra el cuerpo de un mensaje en un tema de Amazon SNS.
Note
Términos clave
Los siguientes términos clave pueden ayudarle a comprender mejor la funcionalidad de SSE. Para obtener
descripciones detalladas, consulte la Referencia de la API de Amazon Simple Notification Service.
Clave de datos
La clave de cifrado de datos (DEK) es responsable de cifrar el contenido de los mensajes de Amazon
SNS.
Para obtener más información, consulte Claves de datos en la Guía para desarrolladores de AWS Key
Management Service y Cifrado de sobre en la Guía para desarrolladores de AWS Encryption SDK.
ID de clave maestra del cliente
El alias, el ARN de alias, el ID de clave o el ARN de clave de una clave maestra del cliente (CMK)
administrada por AWS o una CMK personalizada ya sea de su cuenta o de otra cuenta. Aunque el
alias de la CMK administrada por AWS para Amazon SNS siempre es alias/aws/sns, el alias de
una CMK personalizada puede ser, por ejemplo, alias/MyAlias. Puede utilizar estas CMK para
proteger los mensajes que se encuentran en los temas de Amazon SNS.
Note
396
Amazon Simple Notification
Service Guía para desarrolladores
Cifrado de datos
Puede crear varias CMK, definir las políticas que controlan cómo se pueden utilizar y auditar su uso
en la sección Customer managed keys (Claves administradas por el cliente) de la consola de AWS
KMS o la acción CreateKey AWS KMS. Para obtener más información, consulte Claves maestras
del cliente (CMK) y Creación de claves en la Guía para desarrolladores de AWS Key Management
Service. Para obtener más ejemplos de identificadores de CMK, consulte KeyId en la Referencia
de la API de AWS Key Management Service. Para obtener información sobre la búsqueda de
identificadores de CMK, consulte Encontrar el ID y el ARN de la clave en la Guía para desarrolladores
de AWS Key Management Service.
Important
La utilización de conlleva cargos adicionales AWS KMS. Para obtener más información,
consulte Estimación de los costos de AWS KMS (p. 397) y Precios de AWS Key
Management Service.
Administración de claves
En las siguientes secciones se proporciona información sobre cómo trabajar con claves administradas en
AWS Key Management Service (AWS KMS).
Temas
• Estimación de los costos de AWS KMS (p. 397)
• Configuración de los permisos de AWS KMS (p. 398)
• AWS KMSErrores de (p. 400)
Si bien la siguiente fórmula puede brindarle una muy buena idea de los costos esperados, los
costos reales podrían ser más elevados debido a la naturaleza distribuida de Amazon SNS.
Para calcular el número de solicitudes de la API (R) por tema, utilice la siguiente fórmula:
R = B / D * (2 * P)
D es el período de reutilización de claves de datos (en segundos, Amazon SNS reutiliza una clave de datos
durante un máximo de 5 minutos).
P es el número de entidades principales de publicación que realizan envíos al tema de Amazon SNS.
A continuación se muestran algunos cálculos de ejemplo. Para obtener información exacta sobre precios,
consulte Precios de AWS Key Management Service.
Ejemplo 1: Cálculo del número de llamadas a la API de AWS KMS con 1 publicador y 1 tema
Este ejemplo presupone lo siguiente:
397
Amazon Simple Notification
Service Guía para desarrolladores
Cifrado de datos
Ejemplo 2: Cálculo del número de llamadas a la API de AWS KMS con varios publicadores y 2
temas
También puede administrar los permisos para las claves de KMS mediante políticas de IAM. Para
obtener más información, consulte Uso de políticas de IAM con AWS KMS.
Aunque puede configurar permisos globales para realizar envíos a Amazon SNS, y recibir
información de este, AWS KMS requiere que se indique explícitamente el ARN completo de las
CMK en regiones específicas de la sección Resource de una política de IAM.
También debe asegurar que las políticas de claves de la CMK (clave maestra de cliente) conceden los
permisos necesarios. Para ello, asigne un nombre a las entidades principales que producen y consumen
mensajes cifrados en Amazon SNS como usuarios de la política de claves de CMK.
Si lo desea, también puede especificar las acciones de AWS KMS necesarias y el ARN de CMK en una
política de IAM asignada a las entidades principales que publican mensajes cifrados en Amazon SNS y se
suscriben para recibirlos. Para obtener más información, consulte Administración del acceso a las CMK de
AWS KMS en la Guía para desarrolladores de AWS Key Management Service.
El publicador debe tener los permisos kms:GenerateDataKey y kms:Decrypt para la clave maestra de
cliente (CMK).
{
"Statement": [{
"Effect": "Allow",
"Action": [
"kms:GenerateDataKey",
"kms:Decrypt"
],
"Resource": "arn:aws:kms:us-
east-2:123456789012:key/1234abcd-12ab-34cd-56ef-1234567890ab"
}, {
"Effect": "Allow",
398
Amazon Simple Notification
Service Guía para desarrolladores
Cifrado de datos
"Action": [
"sns:Publish"
],
"Resource": "arn:aws:sns:*:123456789012:MyTopic"
}]
}
Habilitar la compatibilidad entre los orígenes de eventos de los servicios de AWS y los temas
cifrados
Varios servicios de AWS publican eventos en los temas de Amazon SNS. Para que estos orígenes
de eventos funcionen con los temas cifrados, es preciso llevar a cabo los pasos que se describen a
continuación:
1. Utilice una CMK administrada por el cliente. Para obtener más información, consulte Creación de
claves en la Guía para desarrolladores de AWS Key Management Service.
2. Para permitir que el servicio de AWS disponga de los permisos kms:GenerateDataKey* y
kms:Decrypt, añada la siguiente instrucción a la política de la CMK.
{
"Statement": [{
"Effect": "Allow",
"Principal": {
"Service": "[Link]"
},
"Action": [
"kms:GenerateDataKey*",
"kms:Decrypt"
],
"Resource": "*"
}]
}
399
Amazon Simple Notification
Service Guía para desarrolladores
Cifrado de datos
Note
Para algunas fuentes de eventos de Amazon SNS, se debe proporcionar un rol de IAM (en
lugar de la entidad principal de servicio) en la política de claves de AWS KMS.
AWS KMSErrores de
Al trabajar con Amazon SNS y AWS KMS, es posible que se produzcan errores. En la siguiente lista se
describen los errores y sus posibles soluciones.
KMSAccessDeniedException
El texto cifrado hace referencia a una clave que no existe o a la que no tiene acceso.
La solicitud se rechazó porque el estado del recurso especificado no es válido para esta solicitud. Para
obtener más información, consulte Cómo afecta al estado de la clave el uso de una clave maestra del
cliente en la Guía para desarrolladores de AWS Key Management Service.
La solicitud se denegó debido a una limitación controlada. Para obtener más información sobre la
limitación controlada, consulte Límites en la Guía para desarrolladores de AWS Key Management
Service.
400
Amazon Simple Notification
Service Guía para desarrolladores
Cifrado de datos
Habilitación del cifrado del lado del servidor (SSE) para un tema
de Amazon SNS
Puede habilitar el cifrado del lado del servidor (SSE) para un tema con el fin de proteger sus datos. Para
obtener más información acerca del uso de SSE, consulte Cifrado en reposo (p. 395).
Important
Todas las solicitudes hechas a los temas con SSE habilitado deben usar HTTPS y Signature
Version 4.
En esta página, se muestra cómo habilitar, desactivar y configurar SSE para un tema de Amazon SNS
existente mediante la AWS Management Console.
Con el fin de habilitar el cifrado del lado del servidor (SSE) para un tema de
Amazon SNS mediante la , siga estos pasos: AWS Management Console
1. Inicie sesión en la consola de Amazon SNS.
2. En el panel de navegación, elija Topics (Temas).
3. En la página Topics (Temas), seleccione un tema y elija Actions (Acciones), Edit (Editar).
4. Expanda la sección Encryption (Cifrado) y haga lo siguiente:
Se muestran los valores de Description (Descripción), Account (Cuenta) y CMK ARN (ARN de
CMK) de cada CMK.
Important
Si no es el propietario de la CMK o si ha iniciado sesión con una cuenta que no tiene los
permisos kms:ListAliases y kms:DescribeKey, no podrá ver la información sobre
la CMK en la consola de Amazon SNS.
Pida al propietario de la CMK que le conceda estos permisos. Para obtener más
información, consulte Permisos API de AWS KMS: referencia de recursos y acciones en
la Guía para desarrolladores de AWS Key Management Service.
• De forma predeterminada, se selecciona la CMK administrada por AWS en Amazon SNS alias/
aws/sns (predeterminado).
Note
401
Amazon Simple Notification
Service Guía para desarrolladores
Cifrado de datos
• Para usar un ARN de CMK personalizado desde su cuenta de AWS o desde otra cuenta de
AWS, ingréselo en el campo Clave maestra del cliente (CMK).
5. Elija Save changes.
El estado Encryption (Cifrado), la Account (Cuenta) de AWS, la Customer master key (CMK) [Clave
maestra del cliente (CMK)], el CMK ARN (ARN de la CMK) y la Description (Descripción) del tema se
muestran en la pestaña Encryption (Cifrado).
Habilitación del cifrado del lado del servidor (SSE) para un tema
de Amazon SNS con una cola cifrada de Amazon SQS suscrita
Puede habilitar el cifrado del lado del servidor (SSE) para un tema con el fin de proteger sus datos. Para
permitir que Amazon SNS envíe mensajes a colas de Amazon SQS cifradas, la clave maestra del cliente
(CMK) asociada a la cola de Amazon SQS debe tener una instrucción de política que conceda a la entidad
principal de servicio de Amazon SNS acceso a las acciones GenerateDataKey y Decrypt de la API de
AWS KMS. Debido a que las CMK administradas por AWS no admiten modificaciones de políticas, debe
utilizar una CMK personalizada. Para obtener más información acerca del uso de SSE, consulte Cifrado en
reposo (p. 395).
En esta página, se muestra cómo puede habilitar SSE para un tema de Amazon SNS al que se ha suscrito
una cola de Amazon SQS cifrada mediante la AWS Management Console.
{
"Sid": "Allow Amazon SNS to use this key",
"Effect": "Allow",
"Principal": {
"Service": "[Link]"
},
"Action": [
"kms:Decrypt",
"kms:GenerateDataKey*"
],
"Resource": "*"
}
402
Amazon Simple Notification
Service Guía para desarrolladores
Cifrado de datos
a. Elija Enable server-side encryption (Habilitar cifrado del lado del servidor).
b. Especifique la clave maestra del cliente (CMK). Para obtener más información, consulte Términos
clave (p. 396).
Se muestran los valores de Description (Descripción), Account (Cuenta) y CMK ARN (ARN de
CMK) de cada CMK.
Important
Si no es el propietario de la CMK o si ha iniciado sesión con una cuenta que no tiene los
permisos kms:ListAliases y kms:DescribeKey, no podrá ver la información sobre
la CMK en la consola de Amazon SNS.
Pida al propietario de la CMK que le conceda estos permisos. Para obtener más
información, consulte Permisos API de AWS KMS: referencia de recursos y acciones en
la Guía para desarrolladores de AWS Key Management Service.
c. En Customer master key (CMK) (Clave maestra del cliente (CMK)), elija la clave MyCustomCMK
que creó antes (p. 402) y, a continuación, seleccione Enable server-side encryption (Habilitar
cifrado del lado del servidor).
6. Elija Save changes.
El estado Encryption (Cifrado), la Account (Cuenta) de AWS, la Customer master key (CMK) [Clave
maestra del cliente (CMK)], el CMK ARN (ARN de la CMK) y la Description (Descripción) del tema se
muestran en la pestaña Encryption (Cifrado).
403
Amazon Simple Notification
Service Guía para desarrolladores
Privacidad del tráfico entre redes
Las suscripciones de las colas cifradas al tema cifrado se muestran en el cuadro de diálogo Topic
Subscription Result (Resultado de suscripción al tema).
7. Seleccione OK (Aceptar).
a. (Opcional) En la sección Message details (Detalles del mensaje), introduzca el Subject (Asunto)
(por ejemplo, Testing message publishing).
b. En la sección Message body (Cuerpo del mensaje), introduzca el cuerpo del mensaje (por
ejemplo, My message body is encrypted at rest.).
c. Elija Publish message (Publicar mensaje).
Si utiliza Amazon Virtual Private Cloud (Amazon VPC) para alojar sus recursos de AWS, puede establecer
una conexión entre su VPC y Amazon SNS. Con esta conexión, puede publicar mensajes en sus temas de
Amazon SNS sin enviarlos a través de la infraestructura pública de Internet.
Amazon VPC es un servicio de AWS que puede utilizar para lanzar recursos de AWS en una red virtual
que usted defina. Con una VPC, puede controlar la configuración de la red, como el rango de direcciones
IP, las subredes, las tablas de ruteo y las gateways de red. Para conectar su VPC a Amazon SNS, debe
definir un punto de enlace de la VPC de tipo interfaz. Este tipo de punto de enlace le permite conectar
404
Amazon Simple Notification
Service Guía para desarrolladores
Privacidad del tráfico entre redes
la VPC a los servicios de AWS. Con el punto de enlace, se ofrece conectividad escalable de confianza
con Amazon SNS sin necesidad de utilizar una gateway de Internet, una instancia de conversión de las
direcciones de red (instancia NAT) o una conexión de VPN. Para obtener más información, consulte
Puntos de enlace de la VPC de la interfaz en la Guía del usuario de Amazon VPC.
La información de esta sección va dirigida a usuarios de Amazon VPC. Para obtener más información y
empezar a crear una VPC, consulte Introducción a Amazon VPC en la Guía del usuario de Amazon VPC.
Note
No puede suscribir un tema de Amazon SNS a una dirección IP privada con los puntos de enlace
de la VPC.
Temas
• Creación de un punto de enlace de la VPC para Amazon SNS (p. 405)
• Creación de una política de punto de enlace de la VPC para Amazon SNS (p. 406)
• Publicación de un mensaje de Amazon SNS desde Amazon VPC (p. 407)
Utilice la siguiente información para crear el punto de enlace y probar la conexión entre su VPC y Amazon
SNS. O, si desea ver un tutorial que le ayude a comenzar desde cero, consulte Publicación de un mensaje
de Amazon SNS desde Amazon VPC (p. 407).
Para obtener información sobre la creación y configuración de un punto de enlace mediante la consola de
Amazon VPC o la AWS CLI, consulte Creación de un punto de enlace de interfaz en la Guía del usuario de
Amazon VPC.
Note
Al crear el punto de enlace, especifique que Amazon SNS es el servicio al que desea que se
conecte la VPC. En la consola de Amazon VPC, los nombres de los servicios varían en función de
la región que haya elegido. Por ejemplo, si elige EE. UU. Este (Norte de Virginia), el nombre del
servicio es [Link].
Para obtener información sobre la creación y configuración de un punto de enlace mediante AWS
CloudFormation, consulte el recurso AWS::EC2::VPCEndpoint en la Guía del usuario de AWS
CloudFormation.
1. Conéctese a una instancia de Amazon EC2 que resida en la VPC. Para obtener más información
acerca de la conexión, consulte Conexión con la instancia de Linux o Conexión con la instancia de
Windows en la documentación de Amazon EC2.
Por ejemplo, para conectarse a una instancia de Linux mediante un cliente SSH, ejecute el siguiente
comando desde un terminal:
405
Amazon Simple Notification
Service Guía para desarrolladores
Privacidad del tráfico entre redes
Donde:
• [Link] es el archivo que contiene el par de claves que Amazon EC2 le proporcionó al
crear la instancia.
• instance-hostname es nombre de host público de la instancia. Para obtener el nombre de host en la
consola de Amazon EC2, elija Instancias, seleccione la instancia y busque el valor de DNS público
(IPv4).
2. Desde su instancia, utilice el comando publish de Amazon SNS con la AWS CLI. Puede enviar un
mensaje sencillo a un tema con el siguiente comando:
Donde:
{
"MessageId": "6c96dfff-0fdf-5b37-88d7-8cba910a8b64"
}
Para obtener más información, consulte Controlar el acceso a servicios con puntos de enlace de la VPC en
la Guía del usuario de Amazon VPC.
En el siguiente ejemplo de política de punto de enlace de la VPC, se especifica que el usuario de MyUser
puede publicar en el tema MyTopic de Amazon SNS.
{
"Statement": [{
"Action": ["sns:Publish"],
"Effect": "Allow",
"Resource": "arn:aws:sns:us-east-2:123456789012:MyTopic",
"Principal": {
"AWS": "arn:aws:iam:123456789012:user/MyUser"
}
}]
406
Amazon Simple Notification
Service Guía para desarrolladores
Privacidad del tráfico entre redes
Se deniega lo siguiente:
Note
El usuario de IAM puede seguir utilizando otras acciones de la API de Amazon SNS desde fuera
de la VPC.
• Utilizar una plantilla de AWS CloudFormation para crear de manera automática una red privada temporal
en su Cuenta de AWS.
• Crear un punto de enlace de la VPC que conecte la VPC con Amazon SNS.
• Iniciar sesión en una instancia de Amazon EC2 y publicar un mensaje de forma privada en un tema de
Amazon SNS.
• Verificar que el mensaje se entregó correctamente.
• Eliminar los recursos que creó en este proceso con el fin de que no permanezcan en su Cuenta de AWS.
En el siguiente diagrama, se muestra la red privada que creará en su cuenta de AWS a medida que realice
estos pasos:
407
Amazon Simple Notification
Service Guía para desarrolladores
Privacidad del tráfico entre redes
Esta red consta de una VPC que contiene una instancia de Amazon EC2. La instancia se conecta a
Amazon SNS a través de un punto de enlace de la VPC de interfaz. Este tipo de punto de enlace se
conecta a los servicios basados en AWS PrivateLink. Con esta conexión establecida, puede iniciar sesión
en la instancia de Amazon EC2 y publicar mensajes en el tema de Amazon SNS, aunque la red esté
desconectada de la Internet pública. El tema distribuye los mensajes que recibe a dos funciones de AWS
Lambda de suscripción. Estas funciones registran los mensajes que reciben en Amazon CloudWatch Logs.
Temas
• Antes de empezar (p. 408)
• Paso 1: Crear un par de claves de Amazon EC2 (p. 408)
• Paso 2: Crear los recursos de AWS (p. 409)
• Paso 3: Confirmar que la instancia de Amazon EC2 carece de acceso a Internet (p. 410)
• Paso 4: Crear un punto de enlace de la VPC para Amazon SNS (p. 411)
• Paso 5: Publicar un mensaje en el tema de Amazon SNS (p. 405)
• Paso 6: Verificar las entregas de mensajes (p. 414)
• Paso 7: limpieza (p. 415)
• Recursos relacionados (p. 416)
Antes de empezar
Antes de empezar, necesita una cuenta de Amazon Web Services (AWS). Al registrarse, su cuenta se
inscribe de manera automática en todos los servicios de AWS, incluidos Amazon SNS y Amazon VPC. Si
todavía no ha creado una cuenta, vaya a [Link] y, a continuación, elija Crear una cuenta
gratuita.
1. Inicie sesión en la AWS Management Console y abra la consola de Amazon EC2 en https://
[Link]/ec2/.
2. En el menú de navegación de la izquierda, busque la sección Network & Security (Red y seguridad). A
continuación, elija Key Pairs (Pares de claves).
3. Seleccione Create Key Pair.
4. En la ventana Create Key Pair (Crear par de claves), en Key pair name (Nombre del par de claves),
escriba VPCE-Tutorial-KeyPair. A continuación, elija Create (Crear).
408
Amazon Simple Notification
Service Guía para desarrolladores
Privacidad del tráfico entre redes
$ cd /filepath_to_private_key/
Debe proporcionar la plantilla a AWS CloudFormation, y AWS CloudFormation aprovisiona los recursos
necesarios como una pila en su Cuenta de AWS. Una pila es una colección de recursos que administra
como una única unidad. Cuando finalice estos pasos, podrá utilizar AWS CloudFormation para eliminar
todos los recursos de la pila a la vez. Estos recursos no permanecen en su Cuenta de AWS, a menos que
desee.
• Una VPC y los recursos de red asociados, incluida una subred, un grupo de seguridad, una gateway de
Internet y una tabla de ruteo.
• Una instancia de Amazon EC2 que se lanza en la subred de la VPC.
• Un tema de Amazon SNS.
• Dos funciones de AWS Lambda. Estas funciones reciben mensajes que se publican en el tema de
Amazon SNS y registran eventos en CloudWatch Logs.
• Métricas y registros de Amazon CloudWatch
• Un rol de IAM con el que la instancia de Amazon EC2 puede utilizar Amazon SNS y otro rol de IAM con
el que las funciones de Lambda pueden escribir en CloudWatch Logs.
409
Amazon Simple Notification
Service Guía para desarrolladores
Privacidad del tráfico entre redes
La consola de AWS CloudFormation abre la página Stacks (Pilas). La pila VPCE-Tutorial-Stack tiene
el estado CREATE_IN_PROGRESS. En unos minutos, después de que se complete el proceso de
creación, el estado cambia a CREATE_COMPLETE.
Tip
Elija el botón Refresh (Actualizar) para ver el estado más reciente de la pila.
En esta parte, se produce un error en la publicación. En un paso posterior, después de crear un punto de
enlace de la VPC para Amazon SNS, el intento de publicación finaliza correctamente.
410
Amazon Simple Notification
Service Guía para desarrolladores
Privacidad del tráfico entre redes
5. Abra un terminal. Desde el directorio que contiene el par de claves, conéctese a la instancia con el
siguiente comando, en el que instance-hostname es el nombre de host que ha copiado de la
consola de Amazon EC2.
$ ping [Link]
Debido a que se produce un error en el intento de conexión, puede cancelar en cualquier momento
(Ctrl + C en Windows o Comando + C en macOS).
Para verificar que la instancia carece de conectividad a Amazon SNS, siga estos pasos:
Debido a que se produce un error en el intento de publicación, puede cancelar en cualquier momento.
Tenga en cuenta que la instancia aún carece de acceso a otros servicios y puntos de enlace de
AWS en Internet.
411
Amazon Simple Notification
Service Guía para desarrolladores
Privacidad del tráfico entre redes
Los nombres de los servicios varían en función de la región que haya elegido. Por ejemplo, si elige
EE. UU. Este (Norte de Virginia), el nombre del servicio es [Link].
6. En VPC, elija la VPC denominada VPCE-Tutorial-VPC.
8. En Enable Private DNS Name (Habilitar nombre de DNS privado), seleccione Enable for this endpoint
(Habilitar para este punto de enlace).
9. En Security group (Grupo de seguridad), elija Select security group (Seleccionar grupo de seguridad) y
seleccione VPCE-Tutorial-SecurityGroup.
412
Amazon Simple Notification
Service Guía para desarrolladores
Privacidad del tráfico entre redes
10. Elija Create endpoint. En la consola de Amazon VPC, se confirma que se creó un punto de enlace de
la VPC.
En la consola de Amazon VPC, se abre la página Puntos de enlace. El nuevo punto de enlace tiene el
estado pending (pendiente). En unos minutos, después de que se complete el proceso de creación, el
estado cambia a available (disponible).
2. Ejecute el mismo comando que usó anteriormente para publicar un mensaje en el tema de Amazon
SNS. Esta vez, el intento de publicación se realiza correctamente y Amazon SNS devuelve un ID de
mensaje:
413
Amazon Simple Notification
Service Guía para desarrolladores
Privacidad del tráfico entre redes
{
"MessageId": "5b111270-d169-5be6-9042-410dfc9e86de"
}
Para verificar que se invocaron las funciones Lambda, siga estos pasos:
El número de invocaciones coincide con el número de veces que ha publicado un mensaje en el tema.
414
Amazon Simple Notification
Service Guía para desarrolladores
Privacidad del tráfico entre redes
d. Elija Log Groups (Grupos de registros) en la parte superior de la consola para volver a la página
Log Groups (Grupos de registros). A continuación, repita los pasos anteriores para el grupo de
registros /aws/lambda/VPCE-Tutorial-Lambda-2/.
¡Enhorabuena! Al agregar un punto de enlace para Amazon SNS a una VPC, pudo publicar un mensaje en
un tema desde de la red que administra la VPC. El mensaje se publicó de forma privada sin exponerse a la
red pública de Internet.
Paso 7: limpieza
A menos que desee retener los recursos que creó, puede eliminarlos ahora. Si elimina los recursos de
AWS que ya no utiliza, evitará gastos innecesarios en su Cuenta de AWS.
En primer lugar, elimine el punto de enlace de la VPC mediante la consola de Amazon VPC.
A continuación, elimine los demás recursos que creó eliminando la pila en la consola de AWS
CloudFormation. Cuando se elimina una pila, AWS CloudFormation elimina los recursos de la pila de su
Cuenta de AWS.
415
Amazon Simple Notification
Service Guía para desarrolladores
Identity and Access Management
El estado del punto de enlace cambia a deleting (eliminando). Cuando finaliza la eliminación, el punto
de enlace se quita de la página.
Recursos relacionados
Para obtener más información, consulte los recursos siguientes.
• AWSBlog de seguridad: Securing messages published to Amazon SNS with AWS PrivateLink
• Qué es Amazon VPC?
• Puntos de enlace de la VPC de
• Qué es Amazon EC2?
• AWS CloudFormation Conceptos de
Temas
• Autenticación (p. 416)
• Control de acceso (p. 417)
• Información general sobre la administración de acceso en Amazon SNS (p. 418)
• Uso de políticas basadas en identidades con Amazon SNS (p. 433)
• Uso de credenciales de seguridad temporales con Amazon SNS (p. 439)
• Permisos de la API de Amazon SNS: referencia de recursos y acciones (p. 439)
Autenticación
Puede obtener acceso a AWS con los siguientes tipos de identidades:
• Usuario raíz de Cuenta de AWS: cuando se crea una Cuenta de AWS por primera vez, se comienza con
una única identidad de inicio de sesión que tiene acceso completo a todos los recursos y Servicios de
AWS de la cuenta. Esta identidad recibe el nombre de usuario raíz de la Cuenta de AWS y se accede
a ella iniciando sesión con el email y la contraseña que utilizó para crear la cuenta. Recomendamos
encarecidamente que no utilice el usuario raíz en sus tareas cotidianas, ni siquiera en las tareas
administrativas. En lugar de ello, es mejor ceñirse a la práctica recomendada de utilizar el usuario final
416
Amazon Simple Notification
Service Guía para desarrolladores
Control de acceso
exclusivamente para crear al primer usuario de IAM. A continuación, guarde las credenciales del usuario
raíz en un lugar seguro y utilícelas tan solo para algunas tareas de administración de cuentas y servicios.
• Usuario de IAM: un usuario de IAM es una identidad dentro de su Cuenta de AWS que tiene permisos
personalizados específicos (por ejemplo, permisos para crear un tema en Amazon SNS). Puede usar
una contraseña y un nombre de usuario de IAM para iniciar sesión en páginas web de AWS seguras,
como AWS Management Console, Foros de debate de AWS o el Centro de AWS Support.
Además de un nombre de usuario y una contraseña, también puede generar claves de acceso para cada
usuario. Puede utilizar estas claves cuando acceda a los Servicios de AWS mediante programación,
ya sea a través de uno de los varios SDK o mediante la AWS Command Line Interface (CLI). El SDK
y las herramientas de CLI utilizan claves de acceso para firmar criptográficamente una solicitud. Si
no utiliza las herramientas de AWS debe firmar usted mismo la solicitud. Amazon SNS es compatible
con Signature Version 4, un protocolo para autenticar solicitudes de API de entrada. Para obtener más
información sobre cómo autenticar solicitudes, consulte Proceso de firma de Signature Version 4 en la
Referencia general de AWS.
• IAM role (Rol de IAM): un rol de IAM es una identidad de IAM que puede crear en la cuenta y que tiene
permisos específicos. Un rol de IAM es similar a un usuario de IAM en que se trata de una identidad
de AWS con políticas de permisos que determinan lo que la identidad puede hacer y lo que no en
AWS. No obstante, en lugar de asociarse exclusivamente a una persona, la intención es que cualquier
usuario pueda asumir un rol que necesite. Además, un rol no tiene asociadas credenciales a largo
plazo estándar, como una contraseña o claves de acceso. En su lugar, cuando se asume un rol,
este proporciona credenciales de seguridad temporales para la sesión de rol. Los roles de IAM con
credenciales temporales son útiles en las siguientes situaciones:
• Acceso de usuarios federados: en lugar de crear un usuario de IAM, puede utilizar identidades
existentes de AWS Directory Service, del directorio de usuarios de la compañía o de un proveedor
de identidades web. A estas identidades se les llama usuarios federados. AWS asigna una función a
un usuario federado cuando se solicita acceso a través de un proveedor de identidad. Para obtener
más información acerca de los usuarios federados, consulte Usuarios federados y roles en la Guía del
usuario de IAM.
• Acceso a Servicio de AWS: un rol de servicio es un rol de IAM que un servicio asume para realizar
acciones en su nombre. Un administrador de IAM puede crear, modificar y eliminar un rol de servicio
desde IAM. Para obtener más información, consulte Creación de roles para delegar permisos a un
Servicio de AWS en la Guía del usuario de IAM.
• Aplicaciones que se ejecutan en Amazon EC2: puede utilizar un rol de IAM que le permita administrar
credenciales temporales para las aplicaciones que se ejecutan en una instancia de EC2 y realizan
solicitudes a la AWS CLI o a la API de AWS. Es preferible hacerlo de este modo a almacenar claves
de acceso en la instancia de EC2. Para asignar un rol de AWS a una instancia de EC2 y ponerla a
disposición de todas las aplicaciones, cree un perfil de instancia adjuntado a la instancia. Un perfil de
instancia contiene el rol y permite a los programas que se ejecutan en la instancia de EC2 obtener
credenciales temporales. Para obtener más información, consulte Uso de un rol de IAM para conceder
permisos a aplicaciones que se ejecutan en instancias Amazon EC2 en la Guía del usuario de IAM.
Control de acceso
Amazon SNS dispone de su propio sistema de permisos basado en recursos que utiliza políticas escritas
en el mismo lenguaje que se emplea para las políticas de AWS Identity and Access Management (IAM).
Esto significa que puede obtener resultados similares con las políticas de Amazon SNS que con las
políticas de IAM.
Note
Es importante entender que todas las Cuentas de AWS pueden delegar sus permisos a los
usuarios de sus cuentas. El acceso entre cuentas permite compartir el acceso a los recursos de
AWS sin necesidad de administrar usuarios adicionales. Para obtener información sobre el uso
del acceso entre cuentas, consulte Habilitación del acceso entre cuentas en la Guía del usuario de
IAM.
417
Amazon Simple Notification
Service Guía para desarrolladores
Información general
Temas
• Cuándo se utiliza el control de acceso (p. 418)
• Conceptos clave (p. 418)
• Información general sobre la arquitectura (p. 421)
• Uso del lenguaje de la política de acceso (p. 422)
• Lógica de evaluación (p. 423)
• Ejemplos de casos de control de acceso con Amazon SNS (p. 427)
• Desea conceder a otra Cuenta de AWS un determinado tipo de acción de tema (p. ej., Publicar). Para
obtener más información, consulte Conceda a Cuenta de AWS acceso a un tema (p. 428) .
• Desea limitar las suscripciones a su tema únicamente al protocolo HTTPS. Para obtener más
información, consulte Limitar las suscripciones a HTTPS (p. 428) .
• Desea permitir que Amazon SNS publique mensajes en su cola de Amazon SQS. Para obtener más
información, consulte Publique en una cola de Amazon SQS. (p. 429) .
Conceptos clave
En las siguientes secciones, se describen los conceptos que necesita comprender para utilizar el lenguaje
de la política de acceso. Se presentan en un orden lógico, con los primeros términos que necesita conocer
en la parte superior de la lista.
Temas
• Permiso (p. 419)
• Statement (p. 419)
• Política (p. 419)
• Emisor (p. 419)
• Entidad principal (p. 419)
• Acción (p. 420)
• Recurso (p. 420)
• Condiciones y claves (p. 420)
• Solicitante (p. 420)
• Evaluación (p. 420)
• Efecto (p. 420)
• Denegación predeterminada (p. 421)
• Permitir (p. 421)
• Denegación explícita (p. 421)
418
Amazon Simple Notification
Service Guía para desarrolladores
Información general
Permiso
Un permiso es el mecanismo por el que se concede o se deniega algún tipo de acceso a un recurso
concreto. Los permisos tienen básicamente esta forma: "A tiene/no tiene permiso para ejecutar B en C
donde D se aplica". Por ejemplo, Jane (A) tiene permiso para publicar (B) en TopicA (C), siempre y cuando
utilice el protocolo HTTP (D). Cuando Jane publica en TopicA, el servicio comprueba si Jane tiene permiso
y si la solicitud cumple las condiciones establecidas en el permiso.
Statement
Una instrucción es la descripción formal de un único permiso, escrita en el lenguaje de la política de
acceso. Una instrucción se escribe siempre como parte de un documento contenedor más amplio conocido
como política (consulte el concepto siguiente).
Política
Una política es un documento (escrito en el lenguaje de la política de acceso) que actúa como contenedor
de una o varias instrucciones. Por ejemplo, una política puede tener dos instrucciones: una que indique
que Jane se puede suscribir mediante el protocolo de correo electrónico y otra que afirme que Bob no
puede publicar en el Tema A. Tal y como se muestra en la figura siguiente, un escenario equivalente
sería tener dos políticas; una que indique que Jane se puede suscribir mediante el protocolo de correo
electrónico y otra que indique que Bob no puede publicar en el Tema A.
Solo se permiten caracteres ASCII en los documentos de política. Puede utilizar aws:SourceAccount y
aws:SourceOwner para solucionar el escenario en el que necesita conectar otros ARN de servicios de
AWS que contienen caracteres que no son ASCII. Vea la diferencia entre aws:SourceAccount frente a
aws:SourceOwner (p. 431).
Emisor
El emisor es la persona que escribe una política para conceder los permisos para un recurso. El emisor
(por definición) siempre es el propietario de los recursos. AWS no permite a los usuarios de servicios de
AWS crear políticas para recursos que no sean propios. Si John es el propietario de los recursos, AWS
autentica la identidad de John cuando este envía la política que ha escrito con el fin de conceder los
permisos para dicho recurso.
Entidad principal
El principal es la persona o las personas que reciben el permiso en la política. El principal es A en la
instrucción “A tiene permiso para hacer B en C, donde D se aplica”. En una política puede configurar el
principal en "anyone" (es decir, puede especificar un comodín para representar a todas las personas).
Puede hacerlo, por ejemplo, si no desea restringir el acceso en función de la identidad real del solicitante,
sino de alguna otra característica identificatoria, como la dirección IP del solicitante.
419
Amazon Simple Notification
Service Guía para desarrolladores
Información general
Acción
La acción es la actividad para cuya ejecución se le da permiso al principal. La acción es B en la
declaración “A tiene permiso para hacer B a C cuando D sea de aplicación”. Por lo general, la acción no
es más que la operación de la solicitud a AWS. Por ejemplo, Jane envía una solicitud a Amazon SNS con
Action=Subscribe. Puede especificar una o varias acciones en una política.
Recurso
El recurso es el objeto al que el principal solicita acceso. El recurso es C en la instrucción “A tiene permiso
para hacer B en C, donde D se aplica”.
Condiciones y claves
Las condiciones consisten en cualquier restricción o detalle sobre el permiso. La condición es D en la
declaración “A tiene permiso para hacer B a C cuando D sea de aplicación”. La parte de la política que
especifica las condiciones puede ser la más detallada y compleja de todas las partes. Las condiciones
típicas están relacionadas con los siguientes elementos:
• Fecha y hora (por ejemplo, la solicitud debe llegar antes de un día determinado).
• Dirección IP (por ejemplo, la dirección IP del solicitante debe formar parte de un determinado intervalo
de CIDR).
Una clave es la característica específica que es la base de la restricción del acceso. Por ejemplo, la fecha
y la hora de la solicitud.
Las condiciones y las claves se utilizan conjuntamente para expresar la restricción. La forma más sencilla
de entender cómo implementar una restricción es utilizando un ejemplo: si desea restringir un acceso
antes del 30 de mayo de 2010, utilice la condición denominada DateLessThan. Utiliza la clave llamada
aws:CurrentTime y la configura en el valor 2010-05-30T[Link]Z. AWS define las condiciones
y las claves que puede utilizar. El propio servicio de AWS, (por ejemplo, Amazon SQS o Amazon SNS),
también podría definir claves específicas del servicio. Para obtener más información, consulte Permisos de
la API de Amazon SNS: referencia de recursos y acciones (p. 439) .
Solicitante
El solicitante es la persona que envía una solicitud a un servicio de AWS y solicita acceso a un recurso
concreto. El solicitante envía una solicitud a AWS en la que básicamente se lee: “¿Se me permitirá hacer B
en C, donde D se aplica?”
Evaluación
La evaluación es el proceso que el servicio de AWS utiliza para determinar si una solicitud entrante debe
denegarse o permitirse en función de las políticas aplicables. Para obtener más información acerca de la
lógica de evaluación, consulte Lógica de evaluación (p. 423).
Efecto
El efecto es el resultado que desea que devuelva una instrucción de política al evaluarla. Debe especificar
este valor cuando escriba las instrucciones de una política, y los valores posibles son deny (denegar) y
allow (permitir).
Por ejemplo, puede escribir una política que tenga una instrucción que deniegue todas las solicitudes que
procedan de la Antártida (efecto = denegar, dado que la solicitud utiliza una dirección IP asignada a la
Antártida). O bien puede escribir una política que tenga una instrucción que permita todas las solicitudes
que no procedan de la Antártida (efecto = permitir, dado que la solicitud no proviene de la Antártida).
Aunque parece que las dos instrucciones hagan lo mismo, en la lógica del lenguaje de la política de
acceso, son diferentes. Para obtener más información, consulte Lógica de evaluación (p. 423) .
420
Amazon Simple Notification
Service Guía para desarrolladores
Información general
Aunque solo se pueden especificar dos valores para el efecto, allow (permitir) o deny (denegar),
pueden obtenerse tres resultados diferentes en el momento de la evaluación de la política: denegación
predeterminada, permitir o denegación explícita. Para obtener más información, consulte los conceptos
siguientes y Lógica de evaluación (p. 423).
Denegación predeterminada
Una denegación predeterminada es el resultado predeterminado de una política a falta de una instrucción
de "permitir" o de una denegación explícita.
Permitir
Permitir es el resultado de una instrucción que tenga effect=allow, suponiendo que se cumplan todas las
condiciones indicadas. Ejemplo: permitir las solicitudes si se reciben antes de las 13:00 horas del 30 de
abril de 2010. Permitir anula todas las denegaciones predeterminadas, aunque nunca una denegación
explícita.
Denegación explícita
Una denegación explícita es el resultado de una instrucción que tenga effect=deny, suponiendo que
se cumplan todas las condiciones indicadas. Ejemplo: denegar todas las solicitudes si proceden de la
Antártida. Cualquier solicitud que proceda de la Antártida siempre se denegará, independientemente de lo
que cualquier otra política pueda permitir.
421
Amazon Simple Notification
Service Guía para desarrolladores
Información general
2 Sus recursos (contenidos en el servicio de AWS; por ejemplo, colas de Amazon SQS).
3 Sus políticas.
Normalmente tiene una política por recurso, aunque puede tener varias. El mismo servicio de
AWS proporciona una API que utiliza para cargar y administrar sus políticas.
Es el conjunto de código del servicio de AWS que evalúa las solicitudes entrantes en relación
con las políticas aplicables y determina si se permite al solicitante obtener acceso al recurso.
Para obtener más información acerca de cómo toma la decisión el servicio, consulte Lógica de
evaluación (p. 423).
Por ejemplo, puede escribir una política para especificar permisos para sus temas de Amazon
SNS.
El mismo servicio de AWS proporciona una API que puede utilizar para cargar sus políticas.
Por ejemplo, utilice la acción SetTopicAttributes de Amazon SNS con el fin de cargar una
política para un tema de Amazon SNS concreto.
Por ejemplo, un usuario envía una solicitud a Amazon SNS para utilizar uno de sus temas.
Por ejemplo, Amazon SNS busca en todas las políticas de Amazon SNS disponibles y determina
cuáles son aplicables (en función de cuál es el recurso, quién es el solicitante, etcétera).
422
Amazon Simple Notification
Service Guía para desarrolladores
Información general
Por ejemplo, Amazon SNS evalúa las políticas y determina si se permite al solicitante utilizar su
tema o no. Para obtener más información acerca de la lógica de decisión, consulte Lógica de
evaluación (p. 423).
Lógica de evaluación
El objetivo en el momento de la evaluación es decidir si una determinada solicitud debe autorizarse o
denegarse. La lógica de evaluación sigue varias reglas básicas:
• De forma predeterminada, todas las solicitudes para utilizar su recurso procedentes de cualquier
persona que no sea usted se deniegan
• Una instrucción "permitir" anula todas las denegaciones predeterminadas.
• Una denegación explícita invalida cualquier instrucción "permitir"
• El orden en que se evalúan las políticas no es importante
El siguiente diagrama de flujo y el debate describen con más detalle cómo se toma la decisión.
423
Amazon Simple Notification
Service Guía para desarrolladores
Información general
2 El código de aplicación evalúa todas las políticas aplicables a la solicitud (en función del recurso,
el principal, la acción y las condiciones).
3 En todas estas políticas, el código de aplicación buscará una instrucción de denegación explícita
que se aplique a la solicitud.
Aunque solo detecte una, el código de cumplimiento devolverá una decisión de "denegación"
y el proceso finalizará (es una denegación explícita; para obtener más información, consulte
Denegación explícita (p. 421)).
424
Amazon Simple Notification
Service Guía para desarrolladores
Información general
También se deniega una política en una denegación predeterminada si no se cumple una condición de
una instrucción. Si se cumplen todas las condiciones de la instrucción, la política dará como resultado una
instrucción "permitir" o una denegación explícita, en función del valor del elemento Effect en la política. Las
políticas no especifican qué es lo que se debe hacer si no se cumple una condición, por lo que el resultado
predeterminado en ese caso es una denegación predeterminada.
Por ejemplo, supongamos que desea evitar las solicitudes que procedan de la Antártida. Puede escribir
una política (denominada Policy A1) que permita una solicitud solo si no procede de la Antártida. El
siguiente diagrama ilustra esta política.
Si alguien envía una solicitud desde los Estados Unidos, dicha condición se cumple (la solicitud no procede
de la Antártida). Por lo tanto, la solicitud se permite. Pero, si alguien envía una solicitud desde la Antártida,
la condición no se cumple y, por lo tanto, la política genera una denegación predeterminada.
Puede convertir el resultado en una denegación explícita reescribiendo la política (denominada Policy
A2) como se indica en el siguiente diagrama. Aquí la política deniega de forma explícita una solicitud si
procede de la Antártida.
425
Amazon Simple Notification
Service Guía para desarrolladores
Información general
Si alguien envía una solicitud desde la Antártida, la condición se cumple y, por lo tanto, el resultado de la
política es una denegación explícita.
La diferencia entre una denegación predeterminada y una denegación explícita es importante, ya que
una denegación predeterminada se puede anular mediante una instrucción "permitir", mientras que una
denegación explícita, no. Por ejemplo, supongamos que hay otra política que permite las solicitudes que
llegan el 1 de junio de 2010. ¿Cómo afecta esta política al resultado general cuando se asocia a la política
que restringe el acceso desde la Antártida? Vamos a comparar el resultado general cuando se asocia la
política basada en la fecha (denominada Policy B) a las políticas anteriores A1 y A2. En el escenario 1 se
asocia Policy A1 a Policy B y, en el escenario 2, se asocia Policy A2 a Policy B. La figura y la discusión
siguientes muestran el resultado que se obtiene cuando llega una solicitud procedente de la Antártida el 1
de junio de 2010.
426
Amazon Simple Notification
Service Guía para desarrolladores
Información general
En el escenario 2, la Policy A2 devuelve una denegación explícita, tal y como se ha descrito anteriormente
en esta sección. De nuevo, la Policy B da como resultado "permitir". La denegación explícita de Policy A2
anula el resultado "permitir" de Policy B y, por dicho motivo, la solicitud se deniega.
427
Amazon Simple Notification
Service Guía para desarrolladores
Información general
• Permitir que las notificaciones de eventos de Amazon S3 publiquen en un tema (p. 430)
• Permitir que Amazon SES publique en un tema propiedad de otra cuenta (p. 430)
• aws:SourceAccount frente a aws:SourceOwner (p. 431)
• Permitir que las cuentas de una organización de AWS Organizations publiquen en un tema de una
cuenta diferente (p. 432)
• Permitir que cualquier alarma de CloudWatch publique en un tema de una cuenta diferente (p. 432)
• Restringir las publicaciones en un tema de Amazon SNS únicamente desde un punto de enlace de la
VPC específico (p. 433)
En esta sección, se ofrecen algunos ejemplos de casos de uso habituales de control de acceso.
Para ello, utilice la acción de API de Amazon SNS AddPermission. Toma un tema, una lista de ID de
Cuenta de AWS, una lista de acciones y una etiqueta, y crea de manera automática una nueva instrucción
en la política de control de acceso del tema. En este caso, no escribe una política usted mismo, ya que
Amazon SNS genera de manera automática la nueva instrucción de política. Puede eliminar la instrucción
más tarde, llamando a RemovePermission con su etiqueta.
{
"Statement": [{
"Sid": "grant-1234-publish",
"Effect": "Allow",
"Principal": {
"AWS": "111122223333"
},
"Action": ["sns:Publish"],
"Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic"
}]
}
Una vez que se agrega esta instrucción, el usuario con la Cuenta de AWS 1111-2222-3333 puede publicar
mensajes en el tema.
Debe saber cómo escribir su propia política para el tema, porque no puede especificar una restricción de
protocolo al conceder a alguien acceso al tema con la acción AddPermission de Amazon SNS. En este
caso deberá escribir su propia política y luego utilizar la acción SetTopicAttributes para establecer el
atributo Policy del tema en su nueva política.
{
"Statement": [{
"Sid": "Statement1",
428
Amazon Simple Notification
Service Guía para desarrolladores
Información general
"Effect": "Allow",
"Principal": {
"AWS": "111122223333"
},
"Action": ["sns:Subscribe"],
"Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic",
"Condition": {
"StringEquals": {
"sns:Protocol": "https"
}
}
}]
}
Además, deberá saber cómo escribir su propia política, ya que la acción AddPermission de Amazon
SQS no crea instrucciones de política con las condiciones.
Note
Tenga en cuenta que el ejemplo que se presenta a continuación es una política de Amazon SQS
(que controla el acceso a la cola) y no una política de Amazon SNS (que controla el acceso al
tema). Las acciones son acciones de Amazon SQS y el recurso es el nombre de recurso de
Amazon (ARN) de la cola. Puede determinar el ARN de la cola recuperando el atributo QueueArn
de la cola con la acción GetQueueAttributes.
{
"Statement": [{
"Sid": "Allow-SNS-SendMessage",
"Effect": "Allow",
"Principal": {
"Service": "[Link]"
},
"Action": ["sqs:SendMessage"],
"Resource": "arn:aws:sqs:us-east-2:444455556666:MyQueue",
"Condition": {
"ArnEquals": {
"aws:SourceArn": "arn:aws:sns:us-east-2:444455556666:MyTopic"
}
}
}]
}
Esta política utiliza la condición aws:SourceArn para restringir el acceso a la cola en función del origen
del mensaje que se envíe a esta. Puede utilizar este tipo de política para permitir que Amazon SNS envíe
mensajes a la cola únicamente si los mensajes proceden de uno de sus propios temas. En este caso, debe
especificar uno de sus temas, cuyo ARN sea arn:aws:sns:us-east-2:444455556666:MyTopic.
La política anterior es un ejemplo de la política de Amazon SQS que puede escribir y agregar a una cola
específica. Otorgaría acceso a Amazon SNS y a otros servicios de AWS. Amazon SNS otorga una política
predeterminada para todos los temas que recién creados. La política predeterminada concede a todos
los demás servicios de AWS acceso al tema. En esta política predeterminada, se utiliza una condición
aws:SourceArn para garantizar el acceso de los servicios de AWS al tema únicamente en nombre de los
recursos de AWS de su propiedad.
429
Amazon Simple Notification
Service Guía para desarrolladores
Información general
En este ejemplo se presupone que ha escrito su propia política y luego ha utilizado la acción
SetTopicAttributes para establecer el atributo Policy del tema en su nueva política.
En la instrucción del siguiente ejemplo, se utiliza la condición SourceAccount para asegurarse de que
solo la cuenta del propietario de Amazon S3 pueda tener acceso al tema. En este ejemplo, el propietario
del tema es 111122223333 y el propietario de Amazon S3 es 444455556666. En el ejemplo, se establece
que cualquier bucket de Amazon S3 propiedad de 444455556666 tiene permiso para publicar en MiTema.
{
"Statement": [{
"Effect": "Allow",
"Principal": {
"Service": "[Link]"
},
"Action": "sns:Publish",
"Resource": "arn:aws:sns:us-east-2:111122223333:MyTopic",
"Condition": {
"StringEquals": {
"AWS:SourceAccount": "444455556666"
}
}
}]
}
Al publicar eventos en Amazon SNS, los siguientes servicios son compatibles con aws:SourceAccount:
430
Amazon Simple Notification
Service Guía para desarrolladores
Información general
un correo electrónico. Para publicar notificaciones sobre este correo electrónico en un tema de Amazon
SNS que posee la cuenta 444455556666, debe crear una política como la siguiente. Para ello, debe
proporcionar información sobre la entidad principal (el otro servicio) y la propiedad de cada recurso. En la
instrucción Resource, se proporciona el tema ARN, que incluye el ID de cuenta del propietario del tema,
444455556666. En la instrucción "aws:SourceOwner": "111122223333", se especifica que su cuenta
es propietaria del correo electrónico.
{
"Version": "2008-10-17",
"Id": "__default_policy_ID",
"Statement": [
{
"Sid": "__default_statement_ID",
"Effect": "Allow",
"Principal": {
"Service": "[Link]"
},
"Action": "SNS:Publish",
"Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic",
"Condition": {
"StringEquals": {
"aws:SourceOwner": "111122223333"
}
}
}
]
}
Al publicar eventos en Amazon SNS, los siguientes servicios son compatibles con aws:SourceOwner:
431
Amazon Simple Notification
Service Guía para desarrolladores
Información general
• Consulte Permitir que las notificaciones de eventos de Amazon S3 publiquen en un tema (p. 430) para
saber cómo las notificaciones de Amazon S3 utilizan aws:SourceAccount y una lista de los servicios
de AWS que admiten esa condición.
• Consulte Permitir que Amazon SES publique en un tema propiedad de otra cuenta (p. 430) para saber
cómo Amazon SES utiliza aws:SourceOwner y una lista de los servicios de AWS que admiten esa
condición.
En este ejemplo, cualquier Cuenta de AWS de la organización myOrgId puede publicar en el tema
MyTopic de Amazon SNS de la cuenta 444455556666. La política comprueba el valor del ID de
organización mediante la clave de condición global aws:PrincipalOrgID.
{
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "SNS:Publish",
"Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic",
"Condition": {
"StringEquals": {
"aws:PrincipalOrgID": "myOrgId"
}
}
}
]
}
{
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "SNS:Publish",
"Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic",
"Condition": {
"ArnLike": {
"aws:SourceArn": "arn:aws:cloudwatch:us-east-2:111122223333:alarm:*"
}
}
}
432
Amazon Simple Notification
Service Guía para desarrolladores
Uso de políticas basadas en identidades
]
}
{
"Statement": [{
"Effect": "Deny",
"Principal": "*",
"Action": "SNS:Publish",
"Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic",
"Condition": {
"StringNotEquals": {
"aws:sourceVpce": "vpce-1ab2c34d"
}
}
}]
}
Amazon Simple Notification Service se integra con AWS Identity and Access Management (IAM) para
que pueda especificar qué acciones de Amazon SNS puede realizar un usuario en su Cuenta de AWS
con recursos de Amazon SNS. Puede especificar un tema determinado de la política. Por ejemplo, puede
utilizar variables cuando crea una política de IAM a fin de conceder permiso a determinados usuarios de
su organización para utilizar la acción Publish en temas específicos de su Cuenta de AWS. Para obtener
más información, consulte Variables de las políticas en la Guía del usuario de IAM.
Important
El uso de Amazon SNS con IAM no cambia la forma de utilizar Amazon SNS. No hay cambios en
las acciones de Amazon SNS ni acciones nuevas de Amazon SNS relacionados con los usuarios
y el control de acceso.
Para ver ejemplos de políticas que abarcan acciones y recursos de Amazon SNS, consulte Ejemplos de
políticas para Amazon SNS (p. 437).
433
Amazon Simple Notification
Service Guía para desarrolladores
Uso de políticas basadas en identidades
Puede utilizar una política de Amazon SNS con un tema determinado para restringir quién puede trabajar
en ese tema (por ejemplo, quién puede publicar mensajes en el tema, quién puede suscribirse al tema,
etcétera). Las políticas de Amazon SNS pueden conceder acceso a otras Cuentas de AWS o a usuarios
dentro de su propiaCuenta de AWS.
Con el fin de otorgar a sus usuarios permisos para sus temas de Amazon SNS, puede utilizar políticas de
IAM, políticas de Amazon SNS o ambas. La mayoría de las veces, puede conseguir los mismos resultados
con ambas. Por ejemplo, en el siguiente diagrama se muestra una política de IAM y una política de
Amazon SNS equivalentes. Con la política de IAM, se permite la acción Subscribe de Amazon SNS para
el tema denominado topic_xyz de su cuenta de AWS. La política de IAM está asociada a los usuarios Bob
y Susan (lo que significa que Bob y Susan tienen los permisos indicados en la política). Con la política
de Amazon SNS, también se les concede a Bob y Susan permiso para obtener acceso a Subscribe en
relación con topic_xyz.
Note
En el ejemplo anterior se muestran políticas sencillas sin condiciones. Puede especificar una
condición determinada en cualquiera de las dos políticas y obtener el mismo resultado.
Hay una diferencia entre las políticas de Amazon SNS e IAM de AWS: con el sistema de políticas de
Amazon SNS, se pueden conceder permisos a otras Cuentas de AWS, mientras que en la política de IAM
no.
Basándose en sus necesidades, decida el uso que quiere hacer de ambos sistemas para administrar los
permisos. Los siguientes ejemplos muestran cómo funcionan conjuntamente los dos sistemas de política.
Example 1
En este ejemplo, se aplica a Bob tanto una política de IAM como una política de Amazon SNS. Con la
política de IAM, se le concede el permiso para Subscribe en cualquier tema de la Cuenta de AWS,
mientras que en la política de Amazon SNS se le concede el permiso para utilizar Publish en un tema
específico (topic_xyz). El siguiente diagrama ilustra este concepto.
434
Amazon Simple Notification
Service Guía para desarrolladores
Uso de políticas basadas en identidades
Si Bob quiere enviar una solicitud de suscripción a cualquier tema de la cuenta de AWS, la política de IAM
permitirá la acción. Si Bob quiere enviar una solicitud para publicar un mensaje en topic_xyz, la política de
Amazon SNS permitirá la acción.
Example 2
En este ejemplo, nos basamos en el ejemplo 1 (en el que se aplican dos políticas a Bob). Supongamos
que Bob publica mensajes en topic_xyz que no debería haber publicado y usted decide quitarle por
completo su capacidad para publicar en temas. Para ello, lo más fácil es agregar una política de IAM
que le deniegue acceso a la acción Publish en todos los temas. Esta tercera política anula la política
de Amazon SNS que anteriormente le daba permiso para publicar en topic_xyz, ya que una denegación
explícita siempre anula una instrucción “permitir” (para obtener más información sobre la lógica de
evaluación de políticas, consulte Lógica de evaluación (p. 423)). El siguiente diagrama ilustra este
concepto.
435
Amazon Simple Notification
Service Guía para desarrolladores
Uso de políticas basadas en identidades
Para ver ejemplos de políticas que abarcan acciones y recursos de Amazon SNS, consulte Ejemplos de
políticas para Amazon SNS (p. 437). Para obtener más información sobre la escritura de las políticas de
Amazon SNS, consulte la documentación técnica de Amazon SNS.
arn:aws:sns:region:account_ID:topic_name
Para obtener más información sobre los ARN, vaya a ARN en la Guía del usuario de IAM.
Example
A continuación, se muestra el ARN de un tema denominado MiTema de la región us-east-2, que pertenece
a Cuenta de AWS 123456789012.
arn:aws:sns:us-east-2:123456789012:MyTopic
Example
Si tuviera un tema denominado MiTema en cada una de las diferentes regiones que Amazon SNS admite,
podría especificar los temas con el siguiente ARN.
arn:aws:sns:*:123456789012:MyTopic
Puede utilizar los caracteres comodín * e ? en el nombre del tema. Por ejemplo, el ejemplo siguiente podría
hacer referencia a todos los temas creados por Bob a los que ha puesto el prefijo bob_.
436
Amazon Simple Notification
Service Guía para desarrolladores
Uso de políticas basadas en identidades
arn:aws:sns:*:123456789012:bob_*
Para facilitarle su tarea, cuando crea un tema, Amazon SNS devuelve el ARN del tema en la respuesta.
Cada acción que especifique en una política debe ir prefijada con la cadena en minúsculas sns:. Para
especificar todas las acciones de Amazon SNS, utilizaría, por ejemplo, sns:*. Para obtener una lista de
las acciones, vaya a la Referencia de la API de Amazon Simple Notification Service.
Para obtener una lista de las claves de condición que admite cada Servicio de AWS, consulte Acciones,
recursos y claves de condición para Servicios de AWS en la Guía del usuario de IAM. Para obtener una
lista de claves de condición que pueden utilizarse en múltiples Servicios de AWS, consulte Claves de
contexto de condición global de AWS en la Guía del usuario de IAM.
Amazon SNS utiliza las siguientes claves específicas de servicio. Utilice estas claves en políticas que
restringen el acceso a solicitudes Subscribe.
• sns:Endpoint: la URL, la dirección de correo electrónico o el ARN de una solicitud Subscribe o una
suscripción confirmada anteriormente. Utilícela con las condiciones de la cadena (consulte Ejemplos
de políticas para Amazon SNS (p. 437)) para restringir el acceso a puntos de enlace específicos (por
ejemplo, *@[Link]).
• sns:Protocol: el valor protocol de una solicitud Subscribe o de una suscripción confirmada
anteriormente. Utilícela con las condiciones de la cadena (consulte Ejemplos de políticas para Amazon
SNS (p. 437)) para restringir la publicación en protocolos de entrega (por ejemplo, https).
En el futuro, Amazon SNS podría agregar nuevas acciones que deberán, lógicamente, incluirse en
una de las políticas siguientes, en función de los objetivos indicados en esta.
En este ejemplo, creamos una política que concede acceso a CreateTopic, ListTopics,
SetTopicAttributes y DeleteTopic.
{
"Statement": [{
"Effect": "Allow",
437
Amazon Simple Notification
Service Guía para desarrolladores
Uso de políticas basadas en identidades
En este ejemplo, creamos un grupo de TI y asignamos una política que concede acceso a Publish en el
tema de interés específico.
{
"Statement": [{
"Effect": "Allow",
"Action": "sns:Publish",
"Resource": "arn:aws:sns:*:123456789012:MyTopic"
}]
}
Example 3: Conceder a los usuarios de la Cuenta de AWS capacidad para suscribirse a temas
En este ejemplo, creamos una política que concede acceso a la acción Subscribe, con condiciones de
coincidencia de la cadena para las claves de política sns:Protocol y sns:Endpoint.
{
"Statement": [{
"Effect": "Allow",
"Action": ["sns:Subscribe"],
"Resource": "*",
"Condition": {
"StringLike": {
"SNS:Endpoint": "*@[Link]"
},
"StringEquals": {
"sns:Protocol": "email"
}
}
}]
}
Puede utilizar una política de Amazon SNS o una política de IAM para permitir a un socio publicar en
un tema concreto. Si el socio tiene una Cuenta de AWS, puede que sea más fácil utilizar una política de
Amazon SNS. Sin embargo, cualquier usuario de la empresa del socio que posea las credenciales de
seguridad de AWS puede publicar mensajes en el tema. En este ejemplo se presupone que quiere limitar
el acceso a una determinada persona (o aplicación). Para ello, debe tratar al socio como un usuario de su
propia compañía y utilizar una política de IAM en vez de una política de Amazon SNS.
En este ejemplo, creamos un grupo denominado WidgetCo que representa a la compañía del socio;
creamos un usuario para la persona (o la aplicación) específica en la compañía de la empresa que
necesita el acceso y, a continuación, incluimos el usuario en el grupo.
Después asociamos una política que concede al grupo el acceso Publish para el tema específico
denominado WidgetPartnerTopic.
También queremos evitar que el grupo WidgetCo ejecute cualquier otra acción en los temas, por lo que
agregamos una instrucción que deniega el permiso para ejecutar cualquier acción de Amazon SNS que
no sea Publish en los temas que no sean WidgetPartnerTopic. Este paso es necesario solo si existe una
438
Amazon Simple Notification
Service Guía para desarrolladores
Uso de credenciales temporales
política amplia en cualquier otra parte del sistema que concede a los usuarios un acceso amplio a Amazon
SNS.
{
"Statement": [{
"Effect": "Allow",
"Action": "sns:Publish",
"Resource": "arn:aws:sns:*:123456789012:WidgetPartnerTopic"
},
{
"Effect": "Deny",
"NotAction": "sns:Publish",
"NotResource": "arn:aws:sns:*:123456789012:WidgetPartnerTopic"
}
]
}
Puede utilizar estas credenciales de seguridad temporales para realizar solicitudes a Amazon SNS. Las
bibliotecas de la API computan el valor de firma necesario con esas credenciales para autenticar su
solicitud. Si envía las solicitudes con las credenciales vencidas, Amazon SNS deniega la solicitud.
Para obtener más información sobre la compatibilidad de IAM con las credenciales de seguridad
temporales, vaya a Concesión de acceso temporal a sus recursos de AWS en Uso de IAM.
Example Uso de credenciales de seguridad temporales para autenticar una solicitud de Amazon
SNS
En el siguiente ejemplo, se muestra cómo obtener credenciales de seguridad temporales para autenticar
una solicitud de Amazon SNS.
[Link]
?Name=My-Topic
&Action=CreateTopic
&Signature=gfzIF53exFVdpSNb8AiwN3Lv%2FNYXh6S%2Br3yySK70oX4%3D
&SignatureVersion=2
&SignatureMethod=HmacSHA256
&Timestamp=2010-03-31T12%3A00%3A00.000Z
&SecurityToken=SecurityTokenValue
&AWSAccessKeyId=Access Key ID provided by AWS Security Token Service
439
Amazon Simple Notification
Service Guía para desarrolladores
Referencia de permisos de la API
• Cada política debe cubrir únicamente un único tema (a la hora de escribir una política, no incluya
instrucciones que abarquen diferentes temas).
• Cada política debe tener un Id de política único.
• Cada instrucción de una política debe tener un sid de instrucción exclusivo.
Cuotas de política
En la siguiente tabla se muestran las cuotas máximas para una instrucción de política.
Bytes 30 kb
Instrucciones 100
Acción Descripción
• sns:Endpoint: la URL, la dirección de correo electrónico o el ARN de una solicitud Subscribe o una
suscripción confirmada anteriormente. Utilícela con las condiciones de la cadena (consulte Ejemplos
440
Amazon Simple Notification
Service Guía para desarrolladores
Registro y monitoreo
de políticas para Amazon SNS (p. 437)) para restringir el acceso a puntos de enlace específicos (por
ejemplo, *@[Link]).
• sns:Protocol: el valor protocol de una solicitud Subscribe o de una suscripción confirmada
anteriormente. Utilícela con las condiciones de la cadena (consulte Ejemplos de políticas para Amazon
SNS (p. 437)) para restringir la publicación en protocolos de entrega (por ejemplo, https).
Important
Cuando utiliza una política para controlar el acceso por sns:Endpoint, debe ser consciente de que
los problemas de DNS podrían afectar posteriormente a la resolución de nombres del punto de
enlace.
Temas
• Registro de llamadas a la API de Amazon SNS mediante CloudTrail (p. 441)
• Monitoreo de los temas de Amazon SNS mediante Amazon CloudWatch (p. 444)
Para obtener más información acerca de CloudTrail, incluso cómo configurarlo y habilitarlo, consulte la
Guía del usuario de AWS CloudTrail.
Para mantener un registro continuo de los eventos de la Cuenta de AWS, incluidos los eventos de Amazon
SNS, cree un registro de seguimiento. Un registro de seguimiento permite a CloudTrail enviar archivos de
registro a un bucket de Amazon S3. De forma predeterminada, cuando se crea un registro de seguimiento
en la consola, el registro de seguimiento se aplica a todas las regiones de AWS. El registro de seguimiento
registra los eventos de todas las regiones de la partición de AWS y envía los archivos de registro al bucket
de Amazon S3 especificado. También es posible configurar otros servicios de AWS para analizar en
profundidad y actuar en función de los datos de eventos recopilados en los registros de CloudTrail. Para
obtener más información, consulte los siguientes temas:
441
Amazon Simple Notification
Service Guía para desarrolladores
Registro de llamadas a la API mediante CloudTrail
Amazon SNS admite el registro de las siguientes acciones como eventos en archivos de registros de
CloudTrail:
• AddPermission
• CheckIfPhoneNumberIsOptedOut
• ConfirmSubscription
• CreatePlatformApplication
• CreatePlatformEndpoint
• CreateSMSSandboxPhoneNumber
• CreateTopic
• DeleteEndpoint
• DeletePlatformApplication
• DeleteSMSSandboxPhoneNumber
• DeleteTopic
• GetEndpointAttributes
• GetPlatformApplicationAttributes
• GetSMSAttributes
• GetSMSSandboxAccountStatus
• GetSubscriptionAttributes
• GetTopicAttributes
• ListEndpointsByPlatformApplication
• ListOriginationNumbers
• ListPhoneNumbersOptedOut
• ListPlatformApplications
• ListSMSSandboxPhoneNumbers
• ListSubscriptions
• ListSubscriptionsByTopic
• ListTagsForResource
• ListTopics
• OptInPhoneNumber
• RemovePermission
• SetEndpointAttributes
• SetPlatformApplicationAttributes
• SetSMSAttributes
• SetSubscriptionAttributes
• SetTopicAttributes
• Subscribe
• TagResource
• Unsubscribe
• UntagResource
• VerifySMSSandboxPhoneNumber
442
Amazon Simple Notification
Service Guía para desarrolladores
Registro de llamadas a la API mediante CloudTrail
Note
Si no ha iniciado sesión en Amazon Web Services (modo sin autenticar) y se invocan las acciones
ConfirmSubscription o Unsubscribe, no se registrarán en CloudTrail. Por ejemplo, al elegir el
vínculo proporcionado en una notificación por correo electrónico para confirmar la suscripción
pendiente en un tema, se invoca la acción ConfirmSubscription en modo sin autenticar. En
este ejemplo, la acción ConfirmSubscription no se registra en CloudTrail.
Cada entrada de registro o evento contiene información sobre quién generó la solicitud. La información de
identidad del usuario le ayuda a determinar lo siguiente:
• Si la solicitud se realizó con credenciales de usuario AWS Identity and Access Management (IAM) o
credenciales de usuario raíz.
• Si la solicitud se realizó con credenciales de seguridad temporales de un rol o fue un usuario federado.
• Si la solicitud la realizó otro servicio de AWS.
En el ejemplo siguiente, se muestra una entrada de registro de CloudTrail que ilustra las acciones
ListTopics, CreateTopic y DeleteTopic.
{
"Records": [
{
"eventVersion": "1.02",
"userIdentity": {
"type":"IAMUser",
"userName":"Bob"
"principalId": "EX_PRINCIPAL_ID",
"arn": "arn:aws:iam::123456789012:user/Bob",
"accountId": "123456789012",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE"
},
"eventTime": "2014-09-30T[Link]Z",
"eventSource": "[Link]",
"eventName": "ListTopics",
"awsRegion": "us-west-2",
"sourceIPAddress": "[Link]",
"userAgent": "aws-sdk-java/unknown-version",
"requestParameters": {
"nextToken": "ABCDEF1234567890EXAMPLE=="
},
"responseElements": null,
"requestID": "example1-b9bb-50fa-abdb-80f274981d60",
"eventID": "example0-09a3-47d6-a810-c5f9fd2534fe",
"eventType": "AwsApiCall",
"recipientAccountId": "123456789012"
},
{
"eventVersion": "1.02",
"userIdentity": {
"type":"IAMUser",
443
Amazon Simple Notification
Service Guía para desarrolladores
Monitoreo de los temas mediante Amazon CloudWatch
"userName":"Bob"
"principalId": "EX_PRINCIPAL_ID",
"arn": "arn:aws:iam::123456789012:user/Bob",
"accountId": "123456789012",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE"
},
"eventTime": "2014-09-30T[Link]Z",
"eventSource": "[Link]",
"eventName": "CreateTopic",
"awsRegion": "us-west-2",
"sourceIPAddress": "[Link]",
"userAgent": "aws-sdk-java/unknown-version",
"requestParameters": {
"name": "hello"
},
"responseElements": {
"topicArn": "arn:aws:sns:us-west-2:123456789012:hello-topic"
},
"requestID": "example7-5cd3-5323-8a00-f1889011fee9",
"eventID": "examplec-4f2f-4625-8378-130ac89660b1",
"eventType": "AwsApiCall",
"recipientAccountId": "123456789012"
},
{
"eventVersion": "1.02",
"userIdentity": {
"type":"IAMUser",
"userName":"Bob"
"principalId": "EX_PRINCIPAL_ID",
"arn": "arn:aws:iam::123456789012:user/Bob",
"accountId": "123456789012",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE"
},
"eventTime": "2014-09-30T[Link]Z",
"eventSource": "[Link]",
"eventName": "DeleteTopic",
"awsRegion": "us-west-2",
"sourceIPAddress": "[Link]",
"userAgent": "aws-sdk-java/unknown-version",
"requestParameters": {
"topicArn": "arn:aws:sns:us-west-2:123456789012:hello-topic"
},
"responseElements": null,
"requestID": "example5-4faa-51d5-aab2-803a8294388d",
"eventID": "example8-6443-4b4d-abfd-1b867280d964",
"eventType": "AwsApiCall",
"recipientAccountId": "123456789012"
},
]
}
444
Amazon Simple Notification
Service Guía para desarrolladores
Monitoreo de los temas mediante Amazon CloudWatch
Note
Las métricas que configure con CloudWatch para sus temas de Amazon SNS se recopilan e
insertan de manera automática en CloudWatch en intervalos de 1 minuto. Estas métricas se
recopilan en todos los temas que cumplen las directrices de CloudWatch para considerarse
activos. CloudWatch considera que un tema se mantiene activo durante seis horas desde la última
actividad (por ejemplo, cualquier llamada a la API) que ha tenido lugar en el tema.
No se aplica ningún cargo por las métricas de Amazon SNS que se muestran en CloudWatch; se
ofrecen como parte del servicio de Amazon SNS.
445
Amazon Simple Notification
Service Guía para desarrolladores
Monitoreo de los temas mediante Amazon CloudWatch
electrónico), puede definir el nombre y las direcciones de correo electrónico de un tema nuevo. Esta
lista se guardará y aparecerá en el cuadro desplegable para futuras alarmas. Elija Continue.
Note
Si utiliza Crear nuevo tema de correo electrónico para crear un tema nuevo de Amazon
SNS, deberá verificar las direcciones de correo electrónico para que puedan recibir las
notificaciones. Los correos electrónicos solo se envían cuando la alarma entra en estado de
alarma. Si este cambio en el estado de la alarma se produce antes de que se verifiquen las
direcciones de correo electrónico, no recibirá una notificación.
6. En este momento, el asistente Create Alarm (Crear alarma) le da la oportunidad de revisar la alarma
que está a punto de crear. Si necesita hacer algún cambio, puede utilizar los enlaces Edit (Editar) de la
derecha. Cuando esté satisfecho, elija Create Alarm (Crear alarma).
Para obtener más información sobre el uso de CloudWatch y las alarmas, consulte la documentación de
CloudWatch.
Métrica Descripción
Unidades: recuento
Unidades: recuento
446
Amazon Simple Notification
Service Guía para desarrolladores
Monitoreo de los temas mediante Amazon CloudWatch
Métrica Descripción
en 1 cuando Amazon SNS deja de intentar la entrega de
mensajes. En los puntos de enlace HTTP o HTTPS, la
métrica incluye todos los intentos de entrega erróneos,
incluidos los intentos repetidos que siguen al intento
inicial. Para todos los demás puntos de enlace, el
recuento aumenta en 1 cuando no se logra entregar el
mensaje (independientemente del número de intentos).
Unidades: recuento
Unidades: recuento
Unidades: recuento
Unidades: recuento
447
Amazon Simple Notification
Service Guía para desarrolladores
Monitoreo de los temas mediante Amazon CloudWatch
Métrica Descripción
Unidades: recuento
Unidades: recuento
Unidades: bytes
Unidades: USD
448
Amazon Simple Notification
Service Guía para desarrolladores
Validación de la conformidad
Métrica Descripción
Unidades: recuento
Dimensión Descripción
Para obtener una lista de los servicios de AWS en el ámbito de programas de conformidad específicos,
consulte Servicios de AWS en el ámbito del programa de conformidad. Para obtener información general,
consulte Programas de conformidad de AWS.
Puede descargar los informes de auditoría de terceros utilizando AWS Artifact. Para obtener más
información, consulte Descarga de informes en AWS Artifact.
449
Amazon Simple Notification
Service Guía para desarrolladores
Resiliencia
Utilice las acciones de la API de AWS para acceder a Amazon SNS a través de la red. Los clientes deben
ser compatibles con Transport Layer Security (TLS) 1.0 o una versión posterior. Le recomendamos TLS
1.2 o una versión posterior. Los clientes también deben ser compatibles con conjuntos de cifrado con
confidencialidad directa total (PFS) tales como Ephemeral Diffie-Hellman (DHE) o Elliptic Curve Ephemeral
Diffie-Hellman (ECDHE).
Debe firmar las solicitudes mediante un ID de clave de acceso y una clave de acceso secreta asociada
a una entidad principal de IAM. También puede utilizar AWS Security Token Service (AWS STS) para
generar credenciales de seguridad temporales para firmar solicitudes.
Puede llamar a estas acciones de la API desde cualquier ubicación de red, pero Amazon SNS admite
políticas de acceso basadas en recursos, que pueden incluir restricciones en función de la dirección IP
de la fuente. También puede utilizar políticas de Amazon SNS para controlar el acceso desde puntos de
enlace específicos de Amazon VPC o VPC específicas. Esto aísla con eficacia el acceso de red a una cola
de Amazon SNS determinada únicamente desde la VPC específica de la red de AWS. Para obtener más
información, consulte Restringir las publicaciones en un tema de Amazon SNS únicamente desde un punto
de enlace de la VPC específico (p. 433).
450
Amazon Simple Notification
Service Guía para desarrolladores
Prácticas recomendadas
Las instrucciones para estas características de seguridad se aplican a los casos de uso comunes
y a las implementaciones. Le sugerimos que revise estas prácticas recomendadas en el contexto
de su caso de uso, arquitectura y modelo de amenaza concretos.
Temas
• Asegúrese de que los temas no sean accesibles de forma pública (p. 451)
• Implementación del acceso a los privilegios mínimos (p. 451)
• Uso de roles de IAM para aplicaciones y servicios de AWS que requieren acceso a Amazon
SNS (p. 452)
• Implementación del cifrado en el servidor (p. 452)
• Aplicación del cifrado de los datos en tránsito (p. 452)
• Considere el uso de puntos de enlace de la VPC para obtener acceso a Amazon SNS (p. 453)
• Asegúrese de que las suscripciones no están configuradas para entregar en puntos de enlace HTTP
sin procesar (p. 453)
Siga el consejo de seguridad estándar de concesión del privilegio mínimo. Es decir, conceda solo los
permisos necesarios para realizar una tarea específica. Puede implementar los privilegios mínimos
mediante una combinación de políticas de seguridad relacionadas con el acceso de los usuarios.
Amazon SNS utiliza el modelo de editor-suscriptor, que requiere tres tipos de acceso a la cuenta de
usuario:
451
Amazon Simple Notification
Service Guía para desarrolladores
Prácticas recomendadas preventivas
Debe utilizar un rol de IAM para administrar de manera temporal credenciales para las aplicaciones o
los servicios que necesiten acceder a Amazon SNS. Al utilizar un rol, no tiene que distribuir credenciales
a largo plazo (como un nombre de usuario, una contraseña y claves de acceso) a una instancia EC2 o
un servicio de AWS como AWS Lambda. En vez de ello, el rol proporciona permisos temporales que las
aplicaciones pueden utilizar al realizar llamadas a otros recursos de AWS.
Para obtener más información, consulte Roles de IAM y Situaciones habituales con los roles: usuarios,
aplicaciones y servicios en la Guía del usuario de IAM.
Para obtener más información, consulte Cifrado en reposo (p. 395) y Administración de claves (p. 397).
AWS recomienda que utilice HTTPS en lugar de HTTP. Cuando utiliza HTTPS, los mensajes se cifran de
manera automática durante el tránsito, incluso si el tema de SNS no está cifrado. Sin HTTPS, un atacante
basado en red puede espiar el tráfico de la red o manipularlo, con un ataque como MTM (man-in-the-
middle).
Para imponer solo conexiones cifradas a través de HTTPS, agregue la condición aws:SecureTransport
en la política de IAM adjunta a temas de SNS no cifrados. De esta manera, los publicadores utilizan
HTTPS en lugar de HTTP. Puede utilizar la política de ejemplo siguiente como guía:
{
"Id": "ExamplePolicy",
"Version": "2012-10-17",
"Statement": [
452
Amazon Simple Notification
Service Guía para desarrolladores
Prácticas recomendadas preventivas
{
"Sid": "AllowPublishThroughSSLOnly",
"Action": "SNS:Publish",
"Effect": "Deny",
"Resource": [
"arn:aws:sns:us-east-1:1234567890:test-topic"
],
"Condition": {
"Bool": {
"aws:SecureTransport": "false"
}
},
"Principal": "*"
}
]
}
Los puntos de enlace de la VPC de Amazon SNS brindan dos maneras de controlar el acceso a los
mensajes:
• Puede controlar qué solicitudes, usuarios o grupos obtienen acceso a través de un punto de enlace de la
VPC específico.
• Puede controlar qué VPC o puntos de enlace de la VPC tienen acceso a su tema con una política de
temas.
Para obtener más información, consulte Creación del punto de enlace (p. 405) y Creación de una política
de punto de enlace de la VPC para Amazon SNS (p. 406).
453
Amazon Simple Notification
Service Guía para desarrolladores
Solución de problemas de temas mediante X-Ray
Puede utilizar X-Ray con Amazon SNS para rastrear y analizar los mensajes que pasan por su aplicación.
Puede usar la AWS Management Console para ver el mapa de conexiones entre Amazon SNS y otros
servicios que utiliza su aplicación. También puede utilizar la consola para ver métricas como la latencia
media y las tasas de errores. Para obtener más información, consulte Amazon SNS y AWS X-Ray en la
Guía para desarrolladores de AWS X-Ray.
454
Amazon Simple Notification
Service Guía para desarrolladores
Historial de revisión
En la siguiente tabla, se describen los cambios recientes en la Guía para desarrolladores de Amazon
Simple Notification Service.
Asistencia final para códigos A partir del 1 de junio de 16 de febrero de 2021
largos P2P a destinos de EE. UU 2021, los proveedores
de telecomunicaciones
estadounidenses ya no admiten
el uso de códigos largos de
persona a persona (P2P) para
las comunicaciones de aplicación
a persona (A2P) a destinos de
Estados Unidos. En su lugar,
puede usar códigos cortos,
números gratuitos o un nuevo
tipo de número de fuente llamado
10DLC.
455
Amazon Simple Notification
Service Guía para desarrolladores
Se dispone de SSE en las Se dispone del cifrado del lado 20 de enero de 2020
regiones de China del servidor (SSE) de Amazon
SNS en las regiones de China.
Asistencia con el uso de DLQ Para capturar los mensajes que 14 de noviembre de 2019
para capturar mensajes que no no se pueden entregar, puede
se pueden entregar utilizar una cola de mensajes
fallidos (DLQ) de Amazon SQS
con una suscripción a Amazon
SNS.
456
Amazon Simple Notification
Service Guía para desarrolladores
457
Amazon Simple Notification
Service Guía para desarrolladores
AWSGlosario
Contiene la más recienteAWSterminología, consulte laAWSGlosarioen laAWSReferencia general de.
458