-
Para criar um serviço na AWS
integrado com os demais serviços,
-
o ideal é que preparemos
uma solução integrada
-
para que fique mais fácil
-
de entendermos
os passos necessários
-
para fazer a distribuição
-
e a comunicação entre
os serviços na AWS.
-
Então, eu preparei para vocês
um diagrama para visualizarmos
-
os principais serviços
que vamos utilizar
-
para receber imagens
-
por meio de uma API,
-
e depois distribuir
para diversos clientes
-
por meio de e-mails,
por exemplo.
-
Então, aqui
nós temos um diagrama,
-
nós temos, por exemplo,
a nossa nuvem na AWS,
-
que está dentro
da região "us-east-1"
-
e na nossa
rede padrão,
-
a nossa VPC padrão.
-
E eu tenho três
serviços da AWS,
-
o SNS, que é um serviço
para mensageria
-
do tipo pub/sub,
-
vai ser o primeiro serviço
que ele vai criar.
-
Na sequência vamos criar
uma função Lambda
-
para poder receber
dados de uma API
-
e depois encaminhar
para o SNS.
-
E para isso eu vou
criar a minha API
-
que vai se integrar
com a função Lambda.
-
E por último, quando todos
os serviços estiverem prontos,
-
nós vamos fazer a integração
recebendo o arquivo JSON
-
por meio da nossa API.
-
E por último, nós vamos
enviar um e-mail
-
para o destinatário
já pré-configurado.
-
Então, para criar
a nossa solução integrada,
-
a primeira coisa que vamos
criar é um tópico no SNS.
-
Então, eu vou mostrar para vocês
-
como podemos criar isso acessando
a área do dashboard da AWS,
-
o nosso console da AWS.
-
Então, aqui no nosso console,
-
vou buscar aqui o serviço do SNS
-
que é o "Simple
Notification Service",
-
clico nele.
-
E aqui eu tenho
o painel do SNS,
-
vou ver aqui quantos
tópicos nós temos,
-
já tenho aqui um
pré-configurado para mim.
-
Vou criar um novo tópico,
-
clicando aqui
no botão "Criar Tópico".
-
Aqui nós temos
algumas opções.
-
Vamos escolher a opção padrão,
que é a opção mais simples
-
e vou colocar aqui o nome
do tópico de "recebe-pedidos"
-
porque nós vamos simular
o recebimento de pedidos
-
de um parceiro
de um e-commerce, por exemplo.
-
Vamos colocar o mesmo
para o nome de exibição,
-
não preciso marcar mais nada
-
e vou clicar aqui em "Criar Tópico".
-
Pronto, nós temos já aqui
o tópico criado,
-
já posso listar novamente,
que é a primeira da nossa solução.
-
Então, esse tópico serve
-
para poder receber as informações
que vão vir, por exemplo,
-
de uma API que ainda
vamos construir.
-
Mas antes disso precisamos criar
uma função Lambda
-
que será integrada
com a nossa API.
-
Então, já temos
aqui o tópico criado,
-
vamos criar a função Lambda.
-
Volto aqui na busca,
digito "Lambda"
-
e vou acessar
a função Lambda.
-
Então, vou criar
aqui uma nova função,
-
selecionei aqui
o botão "Criar função"
-
e vou dar
um nome para ela,
-
"recebe-pedidos".
-
Nós vamos desenvolver
a função em Python,
-
já temos ela pronta aqui, né,
-
pode ser essa versão
do "Python 3.9".
-
Nas permissões,
-
como estávamos usando
o ambiente de testes,
-
que é o que vocês
têm acesso,
-
nós vamos alterar aqui
a função de execução
-
para uma função existente,
-
que é a função
chamada "LabRole".
-
E aí eu vou clicar
aqui em "Criar função".
-
Já temos aqui
a nossa visão geral da função,
-
cabe agora colocarmos
o código da função.
-
Então, vou colocar
aqui o código
-
que eu já tinha copiado
aqui da minha colinha,
-
vamos ver aqui
em detalhes o código.
-
Esse código vai acessar
o tópico do SNS,
-
nós vamos pegar o nome
do tópico já já,
-
para poder colocar aqui,
-
e vamos receber uma informação
que vem da API.
-
Se a requisição
não estiver vazia
-
então, ela vai ter
um corpo preenchido,
-
um JSON, por exemplo.
-
E aí ele vai fazer uma postagem
dentro desse tópico do SNS, tá?
-
Se der certo, ele vai retornar
o "statusCode: 200",
-
se não, vai dar
um erro interno, que é "500".
-
O que falta nós fazermos?
-
Pegar primeiro o nome
do tópico do SNS,
-
para isso eu vou abrir
uma nova aba,
-
vou clicar aqui
no logo da AWS
-
com o botão do meio
do mouse,
-
abrir aqui
uma nova guia.
-
Vou voltar aqui para o SNS,
-
já tem até aqui um atalho,
-
Simple Notification Service
-
e vou clicar aqui em "Tópicos",
-
que foi o tópico
que nós criamos agora há pouco.
-
Por quê?
-
Porque eu preciso
desse número aqui,
-
que na verdade é o endereço
do tópico dentro da AWS,
-
é o "Amazon Resource Name".
-
Copiei com o Ctrl + C,
-
vou voltar aqui para minha
função Lambda
-
e vou criar uma variável de ambiente
chamada "SNS_TOPIC_ARN".
-
Aqui embaixo, do lado
esquerdo inferior,
-
tem aqui "Environment variables",
-
nós temos aqui as variáveis
de ambiente.
-
Vou adicionar aqui
uma nova variável de ambiente,
-
vou adicionar uma nova variável
clicando no botão:
-
"Adicionar variáveis de ambiente"
e colocar "SNS_TOPIC_ARN"
-
e vou colar o valor
-
que nós copiamos
do endereço do tópico.
-
Vou clicar em "Salvar",
-
"SNS_TOPIC_ARN",
-
vou conferir aqui
se já está aqui criado.
-
Já estamos aqui
com a variável criada
-
nas variáveis de ambiente.
-
E aí finalmente eu posso fazer
-
o deploy da minha
função Lambda.
-
Vou clicar aqui em "Deploy",
-
ele demora alguns instantes.
-
Já tem aqui a parte
da minha função Lambda pronta
-
para receber
informações de uma API.
-
O próximo passo vai ser criar a API
-
para poder receber o arquivo de resumo
que vai acionar a função lambda,
-
e na sequência, encaminhar
uma mensagem para o nosso SNS.
-
Então, agora vamos criar
a nossa API
-
para poder receber
o arquivo de resumo
-
e depois encaminhar a informação
para a nossa função Lambda,
-
e na sequência, nós vamos
cadastrar uma assinatura
-
dentro do tópico
para receber um e-mail
-
toda vez que recebermos
uma nova requisição.
-
Então, vou clicar aqui em busca
-
e vou digitar,
por exemplo, API
-
para selecionar
o serviço do API Gateway,
-
vou clicar nele.
-
E vou criar aqui
uma nova API.
-
Vou criar uma API simples,
uma API HTTP,
-
vou clicar na opção "Compilar"
-
e vou dar um nome
para API:
-
"api-recebe-pedidos".
-
Vou clica em "Avançar",
-
não marquei nada
por enquanto.
-
Aqui também vou clicar
em "Avançar"
-
e vou criar a nossa API.
-
Pronto, a nossa
API foi criada,
-
falta agora criar as rotas.
-
Então, vou clicar aqui em "Criar"
-
e vou criar uma rota
-
usando o método POST
do protocolo HTTP
-
para o endereço
"/pedidos".
-
Então, toda vez que
eu fizer uma requisição
-
para esse endereço,
-
no endereço
da API "/pedidos",
-
ele vai solicitar a função
Lambda para poder gravar
-
no nosso tópico do SNS.
-
Vou clicar aqui em Criar,
-
já foi criado com sucesso.
-
Vou selecionar aqui o "POST"
-
e vou anexar a minha função
Lambda nesse método POST.
-
Vou clicar aqui
em "Anexar Integração",
-
vou criar
uma nova integração.
-
Vou selecionar aqui,
por exemplo, a função do Lambda,
-
e aqui na nossa
região "us-east-1",
-
vou selecionar
as funções existentes.
-
Então, eu já criei aqui a função,
-
tem a nossa função
"recebe-pedidos"
-
que nós criamos
agora a pouco,
-
e vou clicar aqui em "Criar".
-
Pronto, já temos
aqui a API pronta
-
para poder receber
uma informação do pedido
-
e encaminhar isso para
a função Lambda.
-
Eu preciso anotar aqui
só o endereço da API,
-
então, clicamos aqui na API
e copia o endereço
-
de invocação
dessa própria API,
-
nós vamos usar isso para poder
acionar a nossa função.
-
Só que antes disso, eu vou abrir
aqui mais uma guia nova.
-
E vou voltar para
o nosso tópico do SNS.
-
Aqui nós temos nosso tópico
"recebe-pedidos"
-
e aí eu vou criar uma assinatura
-
para toda vez
que eu receber uma informação
-
que vem lá da API,
que passou para Lambda,
-
ele vai mandar um e-mail
me notificando.
-
Vou clicar aqui em assinaturas,
-
"Criar assinatura".
-
E aí eu seleciono o tópico
que eu quero criar assinatura.
-
Quero ser um assinante para
o tópico "recebe-pedidos",
-
Então, toda vez que eu receber
uma informação nesse tópico,
-
ele vai me mandar um e-mail.
-
Vou selecionar aqui o protocolo
para ele poder me enviar um e-mail
-
e vou colocar o meu e-mail,
-
no caso, vocês coloquem
o e-mail de vocês.
-
E aí clica em "Criar Assinatura".
-
Vou colocar aqui
as minhas informações,
-
"Criar assinatura".
-
Já posso visualizar
as assinaturas criadas.
-
O que ele nos pergunta?
-
Toda vez quando eu adiciono
uma nova assinatura,
-
principalmente por e-mail,
ele pede uma confirmação.
-
Então, eu estou aqui
com a confirmação pendente,
-
vou acessar aqui o meu e-mail.
-
Já recebi uma notificação
de "recebe-pedidos",
-
que é o e-mail que a própria
AWS nos manda.
-
Então, o SNS já enviou
um e-mail para mim
-
para confirmar essa assinatura.
-
Vou clicar
em "Confirmar subscrição",
-
já foi confirmado.
-
Então, toda vez que chegar
uma informação no tópico,
-
eu vou receber
essa informação por e-mail,
-
Então, vou voltar aqui
para o nosso SNS,
-
vou dar uma atualizada
na página,
-
acessar aqui
de novo as assinaturas.
-
Já está confirmado,
-
agora já está pronto para poder
simular o envio de um JSON,
-
de um pedido para
nossa solução integrada.
-
Então, agora você já viu
-
como que nós fazemos
para criar uma solução integrada
-
para receber pedidos
por meio de uma API na AWS.