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

  • Serviço de Notificação Simples da Amazon (SNS) para enviar notificações

  • Amazon EventBridge para agendar mensagens

Vamos passar por tudo passo a passo.

Ao final, com a integração dos demais serviços, você terá construído um aplicativo de Citações de Manifestação de Metas que envia mensagens inspiradoras aleatórias para te manter motivado e focado em suas metas.

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, 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.

  • API Zenquote Random

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

  1. Passo 1: Configurar seu Ambiente de Desenvolvimento

  2. Passo 2: Criar um Serviço de Armazenamento Simples da Amazon (S3)

  3. Passo 3: Criar um Serviço de Notificação Simples da Amazon (SNS)

  4. Passo 4: Criar uma Política IAM

  5. Passo 5: Criar uma função do Amazon Lambda

  6. Passo 6: Criar um EventBridge

  7. Passo 7: Fazer Upload do Seu Código

  8. Conclusão

Passo 1: Configurar seu Ambiente de Desenvolvimento

Neste passo, você irá configurar tudo. Comece fazendo login na sua conta da AWS, e então instale o 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 precisar.

Agora que você sabe o básico do 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, vamos usar a linha de comando do Ubuntu (CMD), seu terminal, ou Amazon CloudShell, dependendo de qual você se sente mais confortável.

  • Digite boto3 s3 na barra de pesquisa da web para visualizar uma lista de documentação relacionada.

  • Clique no primeiro resultado.

  • Assim que a documentação estiver aberta, copie o primeiro comando que você veja.

  • Cole no seu CMD OU terminal de sua escolha – mas antes disso lembre-se de “cd” para o diretório correto.

  • Na documentação, role para baixo e clique em “create_bucket.

  • Assim que estiver aberto, role para baixo em “Sintaxe de solicitação”. Copie o nome do bucket e a configuração do bucket.

  • Outras variáveis listadas na sintaxe da solicitação são opcionais.

  • Assim que isso estiver feito, certifique-se de salvar.

  • Volte e chame o script:
#python3 nome do seu arquivo
  • Executar o script cria automaticamente um bucket S3 no seu Amazon S3.

  • Agora você pode ir para o 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 haja 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 de objetos. É aqui que você vai carregar seus arquivos para armazenamento.

Clique no botão de Upload para carregar um arquivo. Lembre-se, estamos criando um aplicativo de Cotaçã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 as metas que deseja alcançar.

  • Salve o arquivo em formato PDF ou DOCX.

  • Pegue o documento e faça o upload para o seu Amazon S3.o

Para verificar se é o arquivo correto:

  • Vá para 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 “ligado”. Desmarque para desligar.

  • 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.

  • Vá em frente e 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ítica do bucket e cole a política.

Depois de concluir essas etapas, seu objeto terá acesso público.

Retorne para a guia Objetos e clique no URL do Objeto fornecido abaixo:

Com este URL, seu upload agora está visível.

Passo 3: Criar um Amazon Simple Notification Service (SNS)

O SNS é um serviço de mensagens totalmente gerenciado fornecido pela AWS. Ele permite a comunicação entre aplicativos ou diretamente com usuários por meio do envio de notificações.

Para criar um SNS, siga estes passos:

1. Faça login no console de gerenciamento da AWS

Em seguida, vá para 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 o seu tópico. (por exemplo, MeuPrimeiroTópicoSNS).

  • Configure configurações opcionais como criptografia, políticas de repetição de entrega ou tags.

  • Clique em Criar tópico.

2. Adicionar Assinaturas:

Depois que o tópico for criado, clique nele para abrir a página de detalhes. Selecione a guia Assinaturas.

Clique em Criar Assinatura e escolha:

  • Protocolo pode ser Email, SMS, HTTP/S, Lambda ou SQS.

  • Endpoints como endereço de e-mail, número de telefone ou URL.

Clique em Criar Assinatura.

3. Confirme a Assinatura:

Se você selecionou e-mail ou SMS, um link de confirmação ou código será enviado para o endpoint fornecido. Siga as instruções para confirmar a inscrição.

Agora que concluímos isso, vamos criar uma função do Amazon Lambda que acionará o SNS para que a mensagem seja enviada para o seu e-mail.

Passo 4: Criar uma Política do IAM

Essa 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 estas etapas:

1. Faça login no console de Gerenciamento da AWS.

No menu à esquerda, selecione Políticas. Em seguida:

  • Clique em Criar política.

  • Escolha a guia Visual, depois selecione o serviço SNS.

  • Em seguida, clique na guia 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"
        }
    ]
}

Depois, substitua os seguintes espaços reservados com suas informações:

  • região: Sua região da AWS (por exemplo, us-east-1).

  • id-da-conta: Seu ID da 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

O 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 executa automaticamente e dimensiona conforme necessário.

Siga estes passos para criar uma função Amazon Lambda:

1. Faça login no Console de Gerenciamento da AWS:

Acesse o AWS Lambda.

2. Criar 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).

  • Tempo de Execução: Selecione o tempo de execução (por exemplo, Python, Node.js, Java, e assim por diante).

  • Função: Escolha ou crie uma função. Se você já tiver uma função, selecione Usar uma função existente. Caso contrário, selecione Criar uma nova função 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 de API. Mas para este tutorial, usarei a API diretamente para buscar os dados.

4. Escreva o Código Lambda:

Vá para a aba Código em 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. Salvar:

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.

Em seguida, 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, utilizei o 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 estas etapas:

1. Navegue até o EventBridge:

Na barra de pesquisa, digite EventBridge e selecione-o na lista de serviços.

2. Criar uma Regra:

No console EventBridge, clique em Regras no painel esquerdo. Em seguida, clique no botão Criar regra.

3. Configurar os Detalhes da Regra:

  • Nome: Insira um nome único para a 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ê tiver criado um).

5. Defina o Padrão de Evento ou Agendamento:

Para Padrão de Evento:

  • Escolha um Serviço da AWS como a fonte do evento.

  • Selecione o tipo de evento específico (por exemplo, upload de arquivo no S3 ou mudança de estado de uma instância EC2).

Para Agendamento:

  • Escolha a opção Agendamento para rodar a regra em um intervalo fixo (por exemplo, a cada 5 minutos).

  • Clique em continuar. Isso te levará para a página de detalhes específicos onde:

  • Role a página e clique no agendador cron. O agendador cron especifica o horário em que a mensagem será enviada.

  • Selecione “Desligado” para a opção de janela de tempo flexível.

  • Revise os detalhes da regra para confirmar se 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á para a 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 mostrará todos os detalhes:

O uso do EventBrige cria um agendador para os usuários.

Passo 7: Carregue seu Código

Por fim, faça o upload do seu código para o GitHub e inclua a 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 todas essas etapas, terá criado um Aplicativo de Citações de Manifestação de Metas usando AWS Lambda, Amazon S3, Amazon SNS e Amazon EventBridge. Este aplicativo busca citações motivacionais e as envia para os 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 outras pessoas.

Mantenha-se atualizado com meus projetos me seguindo no Twitter, LinkedIn e GitHub

Obrigada 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.