O AWS Lambda é um serviço da Amazon Web Services (AWS) que permite executar seu código em resposta a eventos sem a necessidade de gerenciar servidores. É uma forma simples e escalável de construir aplicações.
Neste tutorial, vou te mostrar como usar o AWS Lambda com outros três serviços:
-
Amazon S3 para armazenar arquivos, imagens e vídeos
-
Amazon Simple Notification Service (SNS) para enviar notificações
-
Amazon EventBridge para agendar mensagens
Vamos passar por tudo passo a passo.
Ao final, com a integração dos outros serviços, você terá construído um aplicativo de Citações de Manifestação de Objetivos que envia mensagens inspiradoras aleatórias para te manter motivado e focado em seus objetivos.
Pré-requisitos
-
Uma conta AWS: Se você não tiver uma, inscreva-se aqui.
-
Um repositório no GitHub: Isso é para armazenar seu código-fonte. Se você não tiver uma conta no GitHub, você pode criar uma aqui.
-
Um Ambiente de Desenvolvimento Integrado (IDE) como o Visual Studio Code ou o Sublime Text.
-
Um conhecimento básico de desenvolvimento web e de qualquer linguagem de programação de sua escolha. Eu usei Python para este tutorial.
O que Você Vai Aprender
-
Como criar um bucket Amazon S3
-
Como usar o Amazon Simple Notification Service (SNS)
-
Como usar o Amazon Lambda
-
Como usar o Amazon EventBridge
Sumário
-
Passo 2: Criar um Serviço de Armazenamento Simples da Amazon (S3)
-
Passo 3: Criar um Serviço de Notificação Simples da Amazon (SNS)
Passo 1: Configurar seu ambiente de desenvolvimento
Neste passo, você irá configurar tudo. Comece fazendo login em sua conta da AWS, em seguida, instale Python se você não tiver no seu IDE.
Passo 2: Criar um Serviço de Armazenamento Simples da Amazon (S3)
Antes de começarmos a criar um bucket S3, vamos primeiro entender o que é o Amazon S3:
O Amazon S3 (Serviço de Armazenamento Simples) é um serviço da Amazon que permite armazenar e acessar qualquer quantidade ou tipo de dados, como fotos, vídeos, documentos e backups, sempre que você precisar.
Agora que você sabe o básico sobre o que é o Amazon S3, vamos voltar ao tutorial.
Criar um Bucket S3
Existem várias maneiras de criar um bucket S3, mas para este tutorial, usaremos o linha de comando Ubuntu (CMD), seu terminal ou Amazon CloudShell, dependendo do que você se sentir mais confortável.
-
Digite boto3 s3 na barra de pesquisa da web para ver uma lista de documentação relacionada.
-
Clique no primeiro resultado.
- Uma vez que a documentação esteja aberta, copie o primeiro comando que você vê.
- Cole-o no seu CMD OU terminal de sua escolha – mas antes, lembre-se de “cd” para o diretório correto.
- Na documentação, role para baixo e clique em “create_bucket.
-
Uma vez aberto, role para baixo até “Request Syntax.” Copie o nome do bucket e a configuração do bucket.
-
Outras variáveis listadas na sintaxe de solicitação são opcionais.
- Uma vez feito isso, certifique-se de salvar.
- Volte e chame o script:
#python3 seu nome de arquivo
- A execução do script cria automaticamente um bucket S3 no seu Amazon S3.
- Agora você pode ir ao console para verificar se ele foi criado:
Carregar Arquivos
Com o bucket criado, agora podemos carregar arquivos através do console. Acredito que também exista uma maneira programática de carregar arquivos e testar, mas ainda não explorei todos os métodos na documentação.
Clique no nome do bucket para ser redirecionado para a página do objeto. É aqui que você irá carregar seus arquivos para armazenamento.
Clique no botão Carregar para enviar um arquivo. Lembre-se, estamos criando um Aplicativo de Citação de Manifestação de Metas.
Agora que configuramos um bucket de armazenamento:
-
Abra uma ferramenta como Google Drive, MS Word, WPS ou qualquer outro editor de documentos.
-
Escreva os objetivos que você deseja alcançar.
-
Salve o arquivo em formato PDF ou DOCX.
-
Leve o documento e carregue-o no seu Amazon S3.o
Para verificar se é o arquivo correto:
-
Navegue até a aba Permissões.
-
Role para baixo até Bloquear acesso público.
-
Clique em Editar e desmarque a caixa.
Como mostrado acima, atualmente está definido como “ativado”. Desmarque para desligá-lo.
-
Na mesma página de configurações do bucket, modifique a política.
-
Role para baixo e você verá que uma política de bucket foi gerada automaticamente.
-
Copie a política.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::your-bucket-name/*"
}
]
}
- Volte para o editor de políticas do bucket e cole a política.
Uma vez que você tenha concluído essas etapas, seu objeto terá acesso público.
Retorne à aba Objetos e clique no URL do Objeto fornecido abaixo:
Com este URL, seu upload agora está visível.
Passo 3: Crie um Amazon Simple Notification Service (SNS)
SNS é um serviço de mensagens totalmente gerenciado fornecido pela AWS. Ele permite a comunicação entre aplicações ou diretamente com os usuários, enviando notificações.
Para criar um SNS, siga estes passos:
1. Faça login no console de gerenciamento da AWS
Em seguida, vá para o Amazon SNS. Navegue até o Painel do SNS e selecione Tópicos no menu à esquerda.
Para criar um tópico:
-
Clique em Criar tópico.
-
Escolha um Tipo de tópico: Padrão (padrão) ou FIFO (para mensagens ordenadas).
-
Insira um Nome para seu tópico. (por exemplo,
MeuPrimeiroTópicoSNS
). -
Configure opções como criptografia, políticas de reenvio de entrega ou tags.
-
Clique em Criar tópico.
2. Adicione Assinaturas:
Uma vez que o tópico é criado, clique nele para abrir a página de detalhes. Selecione a aba Assinaturas.
Clique em Criar Assinatura e escolha:
-
Protocolo pode ser Email, SMS, HTTP/S, Lambda ou SQS.
-
Pontos finais como endereço de email, número de telefone ou URL.
Clique em Criar Assinatura.
3. Confirme a Assinatura:
Se você selecionou e-mail ou SMS, um link ou código de confirmação será enviado para o endpoint fornecido. Siga as instruções para confirmar a assinatura.
Agora que fizemos isso, vamos criar uma função Amazon Lambda que irá acionar o SNS para que a mensagem seja enviada para o seu e-mail.
Passo 4: Criar uma Política IAM
Esta política é criada para autorizar o Amazon Lambda a acionar o evento e garantir que o CloudWatch seja acionado automaticamente para monitorar os eventos da aplicação.
Para criar uma política, siga estes passos:
1. Faça login no console de gerenciamento da AWS.
No menu à esquerda, selecione Políticas. Então:
-
Clique em Criar política.
-
Escolha a aba Visual, em seguida, selecione o serviço SNS.
-
Em seguida, clique na aba Escolher para criar uma política personalizada.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sns:Publish",
"Resource": "arn:aws:sns:REGION:ACCOUNT_ID:goal_topic"
}
]
}
Então, substitua os seguintes espaços reservados com suas informações:
-
region
: Sua região AWS (por exemplo,us-east-1
). -
account-id
: Seu ID de conta AWS. -
nome-do-tópico
: Nome do seu tópico SNS.
2. Visualizar e criar a política:
Você pode fazer isso seguindo estes passos:
-
Clique no botão Revisar.
-
Dê à sua política um Nome (por exemplo,
PolíticaLambdaSNS
), e opcionalmente, uma Descrição. -
Clique em Criar política.
3. Anexar política ao Papel de Execução do Lambda
Agora, você precisa anexar a política ao seu Papel de Execução do Lambda. Para fazer isso, siga estes passos:
-
Vá para a seção Funções no Console IAM.
-
Procure e selecione o papel de execução.
-
Em seguida, procure a política que você acabou de criar e selecione-a.
-
Clique em Anexar política.
Ambas as políticas serão anexadas automaticamente.
Passo 5: Criar uma função Amazon Lambda
Amazon Lambda é um serviço da AWS que permite executar código sem gerenciar servidores. Você faz o upload do seu código e o Lambda o executa automaticamente e o dimensiona quando necessário.
Siga estas etapas para criar uma função Amazon Lambda:
1. Faça login no AWS Management Console:
Navegue até o AWS Lambda.
2. Crie uma Função:
Clique em Criar função e escolha a opção Autor a partir do zero.
Preencha os detalhes:
-
Nome da função: Insira um nome único (por exemplo,
SNSLambdaFunction
). -
Runtime: Selecione o runtime (por exemplo, Python, Node.js, Java, e assim por diante).
- Papel: Escolha ou crie um papel. Se você já tem um papel, selecione Usar um papel existente. Caso contrário, selecione Criar um novo papel com permissões básicas do Lambda.
- Clique no botão Criar função.
3. Cole o código:
Na página da função Lambda, vá para a aba Configuração:
Lembre-se, estamos tentando buscar uma citação. Vou adicionar o ARN do tópico que criamos aqui e incluir minhas chaves da API. Mas para este tutorial, usarei a API diretamente para buscar os dados.
4. Escreva o Código Lambda:
Acesse a aba Código na sua função Lambda. Em seguida, escreva ou cole o código do seu IDE para processar as mensagens SNS recebidas.
Exemplo:
Aqui está o código:
import os
import json
import urllib.request
import boto3
def fetch_random_quote():
"""
Fetches a random quote from the ZenQuotes API.
"""
api_url = "https://zenquotes.io/api/random"
try:
with urllib.request.urlopen(api_url) as response:
data = json.loads(response.read().decode())
if data and isinstance(data, list):
# Formate a citação e o autor
quote = data[0].get("q", "No quote available")
author = data[0].get("a", "Unknown author")
return f'"{quote}" - {author}'
else:
return "No quote available."
except Exception as e:
print(f"Error fetching random quote: {e}")
return "Failed to fetch quote."
def lambda_handler(event, context):
"""
AWS Lambda handler function to fetch a random quote and publish it to an SNS topic.
"""
# Obtenha o ARN do tópico SNS das variáveis de ambiente
sns_topic_arn = os.getenv("SNS_TOPIC_ARN")
sns_client = boto3.client("sns")
# Obtenha uma citação aleatória
quote = fetch_random_quote()
print(f"Fetched Quote: {quote}")
# Publique a citação no SNS
try:
sns_client.publish(
TopicArn=sns_topic_arn,
Message=quote,
Subject="Daily Random Quote to help you stay motivated and inspired to achieve your goals",
)
print("Quote published to SNS successfully.")
except Exception as e:
print(f"Error publishing to SNS: {e}")
return {"statusCode": 500, "body": "Error publishing to SNS"}
return {"statusCode": 200, "body": "Quote sent to SNS"}
5. Salve:
Clique no botão de implantação para salvar.
6. Teste sua Função Lambda:
Vá para a aba Teste e crie um novo evento de teste.
Depois, salve e execute o teste. Se for bem-sucedido, uma mensagem será enviada:
Isso significa que a mensagem foi criada para você
Por fim, verifique seu e-mail ou SMS, dependendo do endpoint que você usou para este tutorial. No meu caso, usei e-mail.
Passo 6: Criar um EventBridge
O Amazon EventBridge é um serviço que ajuda a conectar aplicativos e serviços da AWS, como o Amazon SNS e o Amazon Lambda.
Para criar uma regra do Amazon EventBridge, siga estes passos:
1. Navegue até o EventBridge:
Na barra de pesquisa, digite EventBridge e selecione-o na lista de serviços.
2. Crie uma Regra:
No console do EventBridge, clique em Regras no painel à esquerda. Em seguida, clique no botão Criar regra.
3. Configurar os Detalhes da Regra:
-
Nome: Digite um nome único para sua regra.
-
Descrição (opcional): Adicione uma descrição para explicar o que esta regra faz.
4. Escolha o Barramento de Eventos:
Selecione o barramento de eventos padrão (ou outro barramento de eventos se você criou um).
5. Defina o Padrão de Evento ou Agendamento:
Para Padrão de Evento:
-
Escolha um Serviço AWS como a fonte do evento.
-
Selecione o tipo de evento específico (por exemplo, um upload de arquivo S3 ou uma mudança de estado de instância EC2).
Para Agendamento:
- Escolha a opção Agendamento para executar a regra em um intervalo fixo (por exemplo, a cada 5 minutos).
- Clique em continuar. Isso o levará à página de detalhes específicos onde:
-
Role para baixo e clique no agendador cron. O agendador cron especifica a que horas a mensagem será enviada.
-
Selecione “Desligado” para a opção de janela de tempo flexível.
-
Revise os detalhes da regra para confirmar que tudo está correto.
-
Clique no botão “Próximo” para prosseguir para a página Alvo.
A imagem acima mostra quando as mensagens serão enviadas.
- Na página Alvo, selecione AWS Lambda para invocar sua função.
- Role para baixo para invocar e escolha a função que você criou.
- Clique no botão “Próximo” para prosseguir. Isso o levará à página de configurações. Na seção de permissões, selecione “Usar regra existente.”
- Por último, vá para a revisão e crie um agendamento:
- A próxima página mostra todos os detalhes:
Usar o EventBridge cria um agendador para os usuários.
Passo 7: Faça o Upload do Seu Código
Finalmente, faça o upload do seu código para o GitHub e inclua uma documentação adequada para ajudar a explicar como o código funciona.
Confira esta documentação se você não souber como: Fazendo upload de um projeto para o GitHub.
Conclusão
Se você seguiu todos esses passos, terá criado um Aplicativo de Citação de Manifestação de Metas usando AWS Lambda, Amazon S3, Amazon SNS e Amazon EventBridge. Este aplicativo busca citações motivacionais e as envia aos assinantes em um cronograma.
Você pode encontrar o link do repositório aqui.
Sinta-se à vontade para compartilhar seu progresso ou fazer perguntas se tiver algum problema.
Se você achou este artigo útil, compartilhe com outros.
Fique atualizado com meus projetos me seguindo no Twitter, LinkedIn e GitHub
Obrigado por ler 💖.
Isenção de responsabilidade:
Os recursos mostrados neste artigo, incluindo o bucket S3 e seu ARN, foram excluídos e não existem mais. Os detalhes visíveis nas capturas de tela são usados apenas para fins de demonstração.
Source:
https://www.freecodecamp.org/news/how-to-build-an-application-with-aws-lambda/