Olá pessoal, tudo bem? Bem-vindos de volta à nossa jornada cloud. Vamos estar falando agora sobre um dos serviços mais importantes da AWS. Um dos serviços que objetivamente vai estar presente aqui no dia a dia de quem trabalha com a cloud pública. Estamos falando agora do Amazon SMS ou Amazon Simple Notification Service. Então, basicamente, o que ele é? Ele é um serviço de notificação de eventos dentro da AWS. Ele é um barramento, poderíamos entender assim, de distribuição de informação, tá bom? Então, vamos fazer um paralelo aqui para a gente entender. Alguns momentos a gente aprendeu a lidar com SQS, a gente aprendeu a trabalhar com aquela fila da AWS, né? Qual é a diferença objetiva de um SQS para um SNS. O SQS tem o objetivo de, vamos dizer, se eu não quiser ter perdas de mensagens, eu tenho um ou N produtores, mas eu tenho um consumidor, para que o consumidor não fique ali pegando a mensagem do outro. O SNS não nasce com essa premissa de ter um consumidor. O SNS não nasce com essa premissa de ter um consumidor. Na verdade, ele nasce com a premissa de ter uma distribuição de informações. Então, o que é o Amazon SNS? Ele recebe uma informação no tópico, publica uma informação no tópico SNS, e ele tem a capacidade de distribuir essa informação para aqueles que estão inscritos dentro do seu tópico tá bom que eu posso escrever dentro desse tópico por exemplo eu posso enviar um e mail eu posso publicar um item ali no topo do SNS e fazer ali uma distribuição para vários e-mails. Posso enviar um ou vários e-mails ali, distribuir para vários endereços. Eu posso também criar ali, escrever uma fila SQS dentro do meu tópico. Então, basicamente, eu posso publicar um item dentro do SNS e ele vai publicar isso para mim, produzir essa mensagem em um SQS, ou em dois SQS, ou em três SQS, tá bom? Ele também consegue fazer push notification. Então, eu posso, ali dentro dos mecanismos mobile do SNS, enviar push para um aplicativo enviar punch para um cliente posso enviar também um sms então ele tem a capacidade de envio de sms então basicamente que seria o sns ele é o serviço de notificação simples da aws e ele segue os mesmos padrões da fila SQS. Ele tem o SNS Default e ele também vai ter o SNS FIFO. Para ter um SNS FIFO, é necessário que tudo aquilo de fila que fosse integrado a ele, por exemplo, se eu precisar que ele publique uma fila SQS, essas filas também precisam ser FIFO, tá bom? Então, ele fala padrão pra padrão FIFO pra FIFO, ok? Então, o que seria aí o SNS, tá bom? Ele é basicamente um barramento de publicação, por exemplo o que ele pode fazer aqui eu posso publicar um item lá dentro que vem aqui pro meu sms pode colocar aqui por exemplo uma fila de e-mail pode enviar e-mail pode mandar pra uma sqs ele pode mandar para uma lambda ele pode publicar em um top do kinesis tá que é aí um stream também na AWS, ele pode ter várias formas de subscrições. Esse detalhe aí você me fala, mas para eu ter esse recurso, para eu fazer o uso desse recurso dentro da minha aplicação, eu posso publicar um item e eu ter distribuição desse item para vários interessados? Eu vou pagar muito caro para ter isso. Mais uma vez a AWS aqui nos surpreendendo com os seus preços, tá bom? Então vamos pensar aqui, no norte de Virgínia, solicitações dos tópicos, ou seja, as publicação ou publicação em lote, ele vai me cobrar aqui, o primeiro 1 milhão de solicitações na SNS, ele é também gratuito, então esse primeiro milhão de solicitações que eu jogo lá dentro, ele é gratuito. E depois eu pago 50 centavos de dólar pelo outro primeiro milhão de notificações. Então, é muito barato e se assimila muito ao preço do SQS. Tá bom, pessoal? Mas aqui tem uma coisa interessante. Diferente do SQS, que ele vai conhecer uma mensagem até 256 KB, o SMS tem também essa questão de eu conheço uma mensagem com 256 KB, porém, ele tem uma particularidade. Ele quebra ali a cada 64 KB, ele não vai truncar a mensagem, mas ele quebra o modelo de solicitação. Então, a cada 64 KB de dados publicados, é cobrado como uma solicitação. Então, se eu mando ali dentro 256K bytes, ele vai cobrar quatro solicitações. Ele vai entregar a mensagem de forma íntegra, mas ele vai cobrar com quatro. Então, aqui a gente tem, por exemplo, outras formas. Entrega de notificações aí, tá bom? Isso aqui é solicitação de API, é para eu publicar lá dentro. Então, quando ele notifica, primeiro um milhão de notificações também é gratuito, tá bom? Depois ele cobra o mesmo preço, 50 centavos de dólar aqui por milhão de notificações. vamos dizer que eu publiquei apenas 1.999.000 itens desse tópico e eu também notifiquei esses itens. Ele vai me cobrar um dólar basicamente por isso, porque ele vai cobrar o primeiro milhão de notificações e de requisições de API gratuito e o segundo milhão ele vai cobrar esses 50 centavos né de cada um. Para e-mail tá bom e-mail então ali se eu tiver ali um e-mail para enviar as primeiras mil notificações são gratuitas depois eu pago dois dólares por cada 100 mil notificações. Então, gente, não é caro. Solistações de API, tá bom? HTTP ou HTTPS. Os primeiros 100 mil notificações são gratuitos. Depois ele me cobra 60 centavos de dólar por cada milhão de notificações. Para a SQS, aqui que fica legal. Ele não te cobra para poder entregar no SQS. Como ele entende que está dentro da mesma infra da AWS, ele vai te entregar para um SQS ou para vários SQS de forma gratuita. Por quê? Porque ele já está te cobrando no SQS. O que o SNS vai fazer basicamente? Ele vai fazer uma publicação na sua fila. Ele vai simplesmente colocar mensagem lá e ele já tem um modelo de cobrança então a aws ela não faz a venda casada pra isso tá bom quando ela precisa acessar recursos externos como punch é aqui para dispositivos móveis e mail http que são recursos que ele está indo pra onde você quer que ele entregue, ele vai te dar um nível gratuito, mas também vai te cobrar por isso em algum momento, a partir do número de requisições. Já para os serviços AWS, como Amazon SQS e Amazon Lambda, ele não cobra para entregar. Ele vai te cobrar no modelo que a Lambda é cobrada e no modelo que o SQS é cobrado. O SQS é cobrado por requisição de API. Então, você tem também aquela questão dos primeiros milhões, o primeiro milhão de requisição vai ser gratuito, depois ele te cobra 40 centavos de dólar por milhão na fila padrão e 50 centavos de dólar por milhão na fila fifa. Então ele não vai te cobrar isso e a Lambda ele cobra por execução. Então ele entende que ele já está te cobrando ali no item que está sendo requisitado. Então ele não vai objetivamente, ele não vai te cobrar mais por isso também posso publicar ele aqui em um Kinesis tá bom e o Kinesis a definição é aplicada a definição de preço do próprio stream tá bom então ele cobra aí 19 centavos por milhão de notificações neste caso aqui tá bom então o o sms ele é muito utilizado eu quero enviar e mail é esse cara que eu posso usar na wfp a gente a push notificações e tal é que eu vou usar o da brasil se eu quero fazer o final de tais cara eu vou usar na wfp quer distribuir mensagens trabalhos players esse cara eu vou usar na wfp bom aí vai falar para mim, eu poderia simplesmente subir outros serviços de stream. Poderíamos, poderíamos trabalhar com outros serviços de stream até do mercado e instalá-los aqui nas nossas marcas da AWS, fazer vários modelos que nos possibilitariam fazer fanout ou publicações sintópicas. Mas o que me chama muito atenção no SNS é o conjunto de integração nativa que ele já tem. Então, por que usar o SNS? Porque ele já tem nativamente formas de entregar a mensagem para serviços AWS, para serviços não-AWS, tá bom? Então, e ele vai te cobrar muito barato por isso o preço dele é muito baixo então vamos fazer uma prática com o nosso sms aqui vai lembrar um pouquinho desse desenho que a gente tinha onde eu publico aqui uma mensagem um arquivo né o meu bucket o bucket notifica a nossa lambda, a lambda vem cá ler o arquivo, loga a operação e publicava no nosso SQS, eu vou tirar daqui essa operação, não quero que ele publique no SQS, eu quero que ele publique em SNS, tá bom? é assim é bom olha que o símbolo dele já tá aqui com o filtro tá então ele vai publicar no meu sns publicou no meu sns e eu quero que o meu sns publique essa mensagem em uma inscrição do nosso SQS. Bom, quero que ele distribua aqui para o SQS essa mensagem. Então, vai ficar mais ou menos dessa forma a nossa prática aqui com o SNS. Então vamos lá, primeira coisa como eu acho o SNS, só digitar aqui na barra SNS, vou colocar ele nos meus favoritos já, tá bom? E primeira coisa, vou criar o meu tópico, então vou colocar aqui o meu tópico, vou chamar ele de teste SNS. Vou criar um tópico padrão, tá? Não vou colocar um nome de exibição, não vou configurar criptografia, mas eu posso. Não iria configurar aqui também nenhuma política de acesso diretamente nele. Não vou criar aqui nenhuma política de entrega, mas, por exemplo, aqui eu poderia trabalhar com várias políticas de retentativa e tudo mais para cada tipo de protocolo, tá bom? Poderia fazer assim, são várias as possibilidades que a gente teria. Mas eu vou criar um código simples aqui somente para a gente seguir, padrão, ele tem um maior throughput de public Então, aqui, o FIFO tem um throughput alto, mas é até 300 publicações por segundo. Então, no FIFO, o padrão tem um throughput muito maior. Criar o tópico aqui. E aí, pronto. Já tenho o meu tópico criado tá bom agora eu quero inscrever uma fila que é essa aqui né então o que eu faço lá antes de entrar lá aqui eu tenho meu tópico e aqui eu tenho as opções olha só de notificações então posso criar várias formas de assinatura e de notificação eu vou pegar aquela nossa fila sqs e aqui embaixo já nele eu posso me inscrever em um top então a partir da origem que você quer que receba essas notificações, você vai lá e cria uma assinatura e fala, olha, basicamente você está indo na porta do SQS falando, do SNS, aluga um quartinho aqui para mim e toda vez que entrar uma notificação você entrega para mim aqui dentro. Tá bom? Então, vamos se inscrever? Somente clicar em inscrever, é bem simples. Você já tem aqui todos os recursos do SNS que você teria necessidade. Salvei, pronto, já estou inscrito lá. Então, tudo que entrar naquele tópico, já tem que vir para o nosso SQS ó, eu tenho uma mensagem aqui ainda, para a gente evidenciar o que a gente está falando vou limpar ela aqui, eu poderia contar com outros, mas eu posso esvaziar a minha fila vou esvaziar aqui a minha fila e fila vazia se eu olhar aqui dentro, ela continua com a assinatura, eu vou olhar aqui dentro do SNS, vou dar um atualizar, vou atualizar aqui entrando nele, vou nos tópicos, ó já tem aqui uma assinatura. Confirmada a assinatura, então está aqui o nosso SQS. Então, tudo que entrar nesse tópico tem que cair dentro do nosso SNS. Vamos testar? Aqui eu não vou colocar assunto, vou colocar apenas uma mensagem. assunto ou colocar apenas uma mensagem aqui eu poderia colocar atributos que ele iria aparecer nos metadados da minha mensagem mas não vou colocar nenhum atributo vou apenas publicar aqui a mensagem a mensagem foi publicada. Vamos dar uma olhadinha aqui se ele replicou para a nossa fila. Olha aí. Tem uma mensagem aqui na fila. Então, publiquei o item no topo que ele já entregou aqui para a minha fila. Vamos ver se ele entregou a mesma mensagem? Vou aqui no IA. Vou pesquisar essa mensagem. Opa, tem uma mensagem aqui de 920 bytes, vamos ver, está aqui, toda a parte da mensagem, tópico, teste tópico, uma assinatura, está entregando tudo para mim, então concluído aqui, vamos ver, atributos, detalhes, tudo que a gente precisaria te receber, tá bom? E olha aqui a mensagem que a gente colocou, teste tópico sms, o message deste item, ele fala da onde ele veio e tudo mais. Está vendo? Então, deu certo aqui a nossa comunicação. Eu vou limpar novamente a nossa fila, porque agora eu quero fazer isso acontecer de uma forma mais prática, eu quero que nossa lambda faça isso. Vou ficar com uma longa mensagem, se necessariamente. Vamos lá, esquila vazia, tópico criado. Vamos aqui para a nossa lambda. Então, a primeira coisa que a gente tem que lembrar é que, olha, essa lambda hoje, ela não sabe falar com a SNS. Se eu publicar algum item aqui que vá tentar falar com a SNS, vai dar erro, né? Então, primeira coisa, vamos lá noAN, certo? Vamos pegar aqui a minha política, vamos criar uma política. Então, quero SNS. Aqui, novamente, eu tenho várias formas. Eu quero apenas gravar, eu quero publicar, eu não quero listar, eu não quero alterar tópico, eu não quero ver sobre inscrições, eu quero apenas publicar itens lá dentro. Então, para todos os recursos, uma ação de gravação. Próximo. SNS. Pólis. policy vou chamar de sms policy está limitado a gravação muito curto, muito bem, criado política criei a política agora a gente vai lá na nossa lambda lambda test row vou vou colocar aqui vou adicionar anexar uma política pronto já pode publicar aqui no sms vamos simular clica ali no simulação, vamos ver se essa política me permite publicar pego aqui a minha role sms vamos na ação, publicar permitido, perdinho, permitido. Vamos ver se ele pode fazer outra coisa? Vamos ver se ele pode se subscrever? Não deu nada, porque eu dei apenas a permissão de publicação. Perfeito, então se eu olhar aqui, a minha enroll agora já pode publicar no meu sns então vamos fazer uma publicação de código no nosso sns dentro vamos fazer o upload de um zip sns está fazendo a publicação atualizando a lambda feita já criei aqui uma lambda que tem capacidade aí pra fazer entregas aqui no topo do snf então ela continua com seu gatilho do s3 vamos lá no s3 pra gente colocar lá no nosso bucket um arquivinho de teste né, vamos lá, então vou jogar aqui meu teste, carreguei, perfeito, agora vamos dar uma olhadinha lá no CloudWatch, no nosso log, e vamos ver se ele fez o que a gente pediu. Vamos ver se está aqui. Tem o último log. Opa, olha só. Iniciou o processamento, abriu o arquivo, então o conteúdo do arquivo aqui, em JSON teste, teste, conteúdo enviado para o tópico SNS, vamos ver se ele enviou mesmo, porque se ele publicou aqui dentro do nosso SNS, esse item tem que ter vindo parar na nossa fila, SMS, esse item tem que ter vindo parar na nossa fila. Opa, tem uma mensagem disponível aqui na fila. Que legal. Vamos ver se essa mensagem tem esse mesmo conteúdo aqui, esse teste, teste que é esse JSONzinho aqui. Vamos dar uma olhadinha. Vamos ver. Detalhes da fila, enviar e receber mensagens. Vamos pesquisar. Tem uma mensagem, vou abrir. Aqui, tipo, da mensagem notificação, message, teste, teste. É isso. Temos uma mensagem em fila, temos comunicação, temos uma mensagem fila temos comunicação temos uma lâmpada publicando e se eu f, vou criar a fila aqui, criei, tem uma fila 2 agora, se eu olhar aqui em filas, eu tenho duas filas, uma tem um item já disponível e outra zero, vou escrever essa fila aqui também no nosso SNS. Vamos lá? Então eu quero escrever esse cara aqui no meu SNS. Publicado. Se eu olhar aqui dentro agora do meu SNS, vamos ver? Eu tenho duas assinaturas já confirmadas. TXSQS e TXSQS2. Vamos colocar mais um arquivo aqui. E vamos ver se ele entrega para as duas filas. Vamos dar uma olhadinha. Fez o processamento. Vamos ver aqui dentro. Ele está no mesmo stream log. Está no mesmo stream, bem provável. Sim, está no mesmo stream. Então, abriu aqui o arquivo. Fez também a entrega. Está vendo? Teste, teste. Vamos dar uma olhada nas filas? Opa! Olha só, agora na fila teste SQS, eu tenho duas mensagens, porque ele fez duas entregas, mas no SQS2 ele tem um que eu escrevi depois. Então, tem a mensagem aqui. Vamos ver se a mensagem é a mesma? Vamos pesquisar. Está aqui. Teste, teste, concluído. Então, você viu aqui, pessoal, a partir de uma publicação, eu consegui fazer distribuição dessa mensagem para duas filas diferentes. E eu estou sendo cobrado nessas filas no mesmo padrão, um milhão de requisições gratuito dentro do SQS, tá bom? Depois ele cobra ali por requisição, por milhão de requisição na fila de frutos, tá bom? Então, basicamente é isso. O SNS é uma grande ferramenta, tá bom? É uma ferramenta muito útil pra se usar no seu dia a dia, ela vai estar presente no seu aprendizado, ela vai estar presente no seu dia a dia, sempre que você precisar comunicar algum evento para uma Lambda, você pode fazer isso, sempre que você precisar comunicar um push notification, um enviar um e-mail ou distribuir mensagens aí pra várias filas, tá bom? ou notificar várias lâmpadas também tá? pra fazer isso aí então, basicamente é quantos itens eu vou escrever dentro do tópico, ele vai ter essa garantia de entrega ali pra mim distribuição da mensagem, tá bom? Então, é isso pessoal, explorem mais o Amazon SMS, ele é um item muito útil no dia a dia, com um custo baixíssimo e que vai fazer parte, com certeza, do seu desenvolvimento, tá bom? Então, é isso por momento, agradeço a vocês por me acompanharem mais uma vez até aqui e boa sorte!