TUTORIAL 2023 AWS SNS para Principiantes todo lo que debes saber.


AWS SNS es un servicio de envió de mensajes que ha cambiados con los años en este post vamos a mostrate todo lo que debes saber para dominarlo ahora en el 2023 


vamos con todo pero desde el inicio

Que es AWS SNS

es un manejador de mensaje que permite enviar mensajes a EMAIL,SMS y tambien y la parte más importante para mí es: que se puede enviar mensajes a http y también a servicios de aws

aws sns Pricing

 Las solicitudes de temas estándar incluyen publicaciones, publicaciones por lotes, operaciones de propietarios de temas y operaciones de propietarios de suscripciones.  

El primer millón de solicitudes de Amazon SNS por mes son gratis, y luego  $0.50 por 1 millón de solicitudes.

 Nota: Cada porción de 64 KB de datos publicados se factura como 1 solicitud. Por ejemplo, una sola publicación con una carga útil de 256 KB se factura como cuatro solicitudes.

 

Partes de AWS SNS

Es muy simple, realmente solo puede crear Topic y Suscribciones:

aws sns TOPIC

Son temas donde se crea una ruta la cual puedes enviar mensajes, los Topic son encargados de repartir tus mensajes entre los suscriptores; en AWS SNS la lista de subscriptores es bastante amplia, te muestro esta imagen que seguro te ayudara mas comparado con una lista simple escrita.

aws SNS topic limitacion

puedes crear por cuenta 100000 topics estandar y 1000 fifo topic

 

AWS SNS Suscriptions

Los subscriptores al final son otros servicios y AWS SNS enviará tu mensaje a ellos

puedes tener teóricamente muchos subs por topic, la recomendación es que cada topic sea definido para un solo tipo de suscriptor, ejemplo un topic de correo y otras de SMS

AWS SNS Project

Aplicación comunicándose con otra

tú puedes hacer que tu código pueda usar AWS SNS para comunicarte con otros servicios u otra aplicación

esto tiene mucho valor porque se puede dar el caso de tener una app en un entorno privado ya sea en una nube o en una infra local, con AWS SNS podrás enviar mensaje e incluso recibir mensajes dándote un canal seguro por donde puedes poco a poco comunicarse con el exterior

Aplicación comunicándose con un servicio de amazon

 Aunque es parte de lo mismo que el punto anterior, aquí intento hacer énfasis en que puedes usar servicios de AWS diferentes a AWS SNS,  el gatillador de esos procesos lo puede hacer un AWS SNS que fue notificado por una aplicación en cualquier parte del mundo.

Servicio de amazon comunicándose con tu app

Muchos de los servicios de AWS pueden usar AWS SNS para enviar un mensaje y que este alerte a una app o incluso a un especialista, con esto podrás actuar a tiempo 

AWS SNS notificando a tus clientes

Un caso de uso puede ser enviar mensajes a los correos o teléfonos de tus clientes para avisar de cosas, alertar de problemas o promociones. Desde un proceso o desde una misma app, incluso podrás crear push notifications.

en los siguientes apartados voy a darte código y documentación para que puedas usar AWS SNS en tu plataforma/aplicación, incluso de forma manual con aws cli para tus pruebas iniciales, te deseo suerte creando tu maravillosa aplicación.

 

golang AWS SNS publish example

 en el siguiente enlace te dejaré un buen ejemplo de como crear con golang y aws sns un buen ejemplo de la función publish message

 aws sns publish example

 

AWS SNS documentation

en este link podrás encontrar la documentación de aws sns para go 


Comandos para aws sns cli

AWS SNS para Crear topic

como mínimo necesita solo el hombre del topic esta función te dará el arn del tópico lo cual podrás usar para las siguientes funciones

aws sns create-topic --name mitopicname
 

Te dejo el link aws create-topic with aws cli

AWS SNS para crear suscripcion

Este comando necesita el topic arn el protocolo y al final el correo o número de telefono depende del protocolo que uses revisa la doc te dejo el link aquí para aws sns subscribe

aws sns subscribe --topic-arn arn:aws:sns:us-west-2:123456789012:my-topic \
    --protocol email --notification-endpoint my-email@example.com

AWS SNS publicar mensaje

esta función tiene varias cosas interesantes, la primera es que puedes tener el mensaje en un archivo, y también puedes publicar directo a un número

te dejo los ejemplos en las siguientes lineas:

publicar desde un archivo: 
aws sns publish \
    --topic-arn "arn:aws:sns:us-west-2:123456789012:my-topic" \
    --message file://message.txt
 publicar un mensaje sin archivo 
aws sns publish \
    --topic-arn "arn:aws:sns:us-west-2:123456789012:my-topic" \ 
    --message "mi mensaje sin archivo" 
 
publicar a un numero sin pasar por topic 
aws sns publish \
    --message "Hello world!" --phone-number +1-555-555-0100 


AWS SNS PROJECT

El siguiente código es para usarlos con lambdas, te permite tomar un evento cualquiera y envía un mensaje a un topico

recuerda el código está en Node.js y está hecho por AWS lambdas y debes agregarle el permiso sns:publish al rol que consuma esta lambda si no entiendes revisa el video allí te lo explico AWS SNS projects en node.js para publicar mensaje

exports.handler = (event) => {
const AWS = require('aws-sdk');
var message = "hola nuevo mensaje";
var topicArn = "arn:aws:sns:us-east-1:123601231238:standartopic";
var sns = new AWS.SNS();
sns.publish({
TopicArn: topicArn,
Message: JSON.stringify(message)
}, function (err, data) {
if (err) {
console.error('error publishing to SNS');
} else {
console.info('message published to SNS');
}
});
};

 

El siguiente código es para recibir mensajes desde un SNS

con node.js dentro de una lambda capturaremos un mensaje enviado por un topic de aws sns y luego lo procesaremos

recuerdas que el ejemplo solo es para capturar el proceso del mensaje, deberías hacerlo tú, también debes agregar al topic el arn de la lambda como suscriber si no sabes como te dejo el video para que puedas entenderlo mejor aws sns project en node.js para recibir un mensaje desde sns


console.log('Loading function');
exports.handler = async (event, context) => {
//console.log('Received event:', JSON.stringify(event, null, 2));
const message = event.Records[0].Sns.Message;
console.log('From SNS:', message);
return message;
};





Comentarios

Entradas populares de este blog

Formato yaml TODO LO QUE DEBES SABER PARA DOMINARLO

Solucion: Docker Error: No such container:

AWS SAM y AWS Lambda docker Container Image tutorial con PYTHON USANDO A...