Giter Site home page Giter Site logo

2970-serverless-base-back's Introduction

Curso Serverless II

Esta e a API base para o projeto do curso de Serverless da Alura.

Requisitos

Os requisitos para executar este projeto em produção são:

  • Conta ativa na AWS
  • WSL (para usuários Windows)
  • Visual Studio Code (recomendado)

O restante da stack será instalado pelo Terraform a partir dos arquivos de configuração na raiz do próprio repositório e do repositório do projeto no DockerHub.

Instalação

Para usuários de Linux e MacOs

  • Faça o fork e o clone do projeto para seu computador
  • Navegue até a pasta-raiz do projeto

Uso do WSL

ATENÇÃO: Este passo só é necessário para usuários Windows.

Se você for usuário Windows, é necessário clonar os arquivos do repositório diretamente no ambiente Linux por motivos de formato e conversão de arquivos.

Caso seja necessário instalar o WSL pela primeira vez, temos um artigo dando mais detalhes sobre esta ferramenta e como instalar.

Com o WSL instalado, siga os passos abaixo:

  1. Acesse o terminal do Ubuntu/WSL;
  2. Acesse a pasta home através do comando cd ~;
  3. A partir da pasta home do ambiente Linux, você poderá criar ou selecionar subpastas usando cd ou mkdir, caso deseje organizar seus projetos;
  4. Clonar o repositório do projeto no local desejado dentro do WSL, usando o comando usual git clone <endereço do repositório>.

Criação de perfil e user na AWS

Antes de instalar a interface de linha de comando da AWS (aws-cli) que usaremos no curso, você precisa ter uma conta ativa na AWS.

Os passos do processo são:

  • Fazer o cadastro na AWS;
  • Criar uma conta IAM;
  • Criar uma chave de acesso e chave secreta (access key e secret key).

Siga estes passos para criar e acessar chaves ou siga a documentação:

  1. Após criar um usuário root, faça o login e acesse o console da AWS;
  2. Na página principal do console, acesse o menu IAM (caso não esteja visível, procure por IAM no campo de busca de serviços na parte superior da tela);

Imagem da tela do console da AWS. O menu "services", localizado na parte superior da tela, está selecionado e o campo de texto está preenchido com a palavra "iam". Abaixo do campo de texto, um submenu está aberto com as correpondências da busca. Em primeiro lugar está um link para o recurso buscado, "IAM". Abaixo, outras ocorrências: "IAM Identity Center", "Resource Access Manager" e "Serverless Application Repository".

  1. Dentro da seção IAM, no menu à direita, acesse "Users";
  2. Na próxima tela "Usuários", clique em "Add users"/"Adicionar usuários", no canto superior direito, para criar um novo usuário IAM;

Tela do menu "Identity and Access Manager (IAM)". Na parte esquerda, um menu vertical com as opções "Gerenciamento de Acesso", "Grupos de usuários", "Usuários", "Funções", "Políticas", "Provedores de identidade" e "Configurações de conta". A opção "Usuários" está selecionada. Na parte central da tela, uma seção "usuários", com um campo vazio de listagem de usuários e a mensagem "não há recursos para exibir". Na direita do campo, um botão azul "Adicionar usuários".

  1. Na tela "Especificar detalhes do usuário", preencha o nome do novo usuário e deixe em branco a opção de fornecer acesso ao console de gerenciamento IAM. O nome do usuário para este projeto pode ser relacionado ao curso para facilitar a identificação, como "serverless". Clique em "Próximo";

Janela do menu "Criar usuários", com o título "Especificar detalhes do usuário", abaixo o campo de texto "Nome do usuário", seguido do checkbox "Fornecer acesso para os usuários ao console de gerenciamento da AWS - opcional". O checkbox não está marcado. Abaixo, os botões "cancelar" e "próximo".

  1. Na tela "add permissions"/"Definir permissões", selecionar a opção "Attach policies directly"/"Anexar políticas diretamente";
  2. Na lista abaixo, selecione a opção "AdministratorAccess";

Janela do menu "Definir permissões" da AWS. Na parte superior da tela, três opções de botão de rádio: "Adicionar usuário ao grupo", "Copiar permissões" e "Anexar políticas diretamente". A última opção está selecionada. Abaixo, uma listagem de checkboxes com o título "Política de permissões". A segunda opção está marcada, com o nome "AdministratorAccess".

  1. Confirmar clicando em "Next"/"Próximo" na parte de baixo da tela;
  2. Revise as informações e clique em "Create user"/"Criar usuário";
  3. Você voltará para a tela de "Users". Clique novamente no usuário recém-criado na lista e acesse o submenu "Security credentials"/"Credenciais de segurança";

Tela de menu de usuário IAM da AWS. Na parte superior está o nome do usuário criado "serverless". Abaixo, seção "Resumo" com informações sobre o usuário como data de criação e ARN. Abaixo, um menu horizontal com as opções "Permissões", "Grupos", "Etiquetas", "Credenciais de acesso" e "Consultor de acesso". A opção "Credenciais de acesso" está selecionada.

  1. Role a tela até a opção "Access keys"/"Chaves de acesso". Clique em "Create access key"/"Criar chaves de acesso";

Parte da tela do menu "Credenciais de acesso", mostrando a opção "Chaves de acesso". Abaixo, a informação "Nenhuma chave de acesso" e o botão "criar chave de acesso".

  1. Na próxima tela, selecione a opção "Command Line Interface (CLI)" e avance;
  2. As tags são opcionais, você pode deixar em branco e clicar em "Create Access key"/"Criar chave de acesso";
  3. Copie temporariamente para um lugar seguro as duas informações (chave de acesso e chave de acesso secreta) ou faça o download do arquivo .csv até finalizarmos a configuração do CLI.
  4. Processo concluído.

A documentação da AWS tem mais informações sobre todos os passos. Neste curso utilizaremos as credenciais de longo prazo por questões de praticidade.

Instalação da aws-cli

Usuários Windows: Lembre-se de fazer todo o processo a partir do terminal do Ubuntu/WSL, e certifique-se que os comandos estão sendo executados a partir da pasta home/~.

Após criar o IAM e gerar as chaves, instale a interface de linha de comando da AWS. Siga as instruções neste link para instalar em seu sistema operacional.

Se não tiver certeza se já tem a CLI instalada, verifique com o comando aws --version no terminal. Caso esteja instalada, o terminal exibirá a mensagem aws-cli/<versao> Python/<versao> mais as informações sobre o seu sistema operacional. Neste curso utilizamos a versão 2.11.0.

Configuração da aws-cli com as chaves

No mesmo terminal, insira o comando aws configure. Você deverá em seguida adicionar as chaves. Copie e cole com cuidado a Access Key ID:

AWS Access Key ID [************************]: SUACHAVEAQUI

Em seguida, insira a Secret Access Key:

AWS Secret Access Key [************************]: SUACHAVESECRETAAQUI

Na opção Default region name: se você estiver no Brasil, insira us-east-1. Caso você não esteja no Brasil, deverá verificar na documentação da AWS em qual região você está.

Na opção Default output format: insira json.

IMPORTANTE: Estas configurações ficam armazenadas localmente em seu computador. Para saber mais sobre como as credenciais funcionam e como podem ser acessadas e modificadas, acesse a documentação da AWS.

Execução e deploy

A pasta-raiz do projeto deverá ter a seguinte estrutura:

.
├── env
│   └── prod
│       ├── Main.tf
├── infra
│   ├── ALB.tf
│   ├── DocDB.tf
│   ├── ECS.tf
│   ├── GrupoSeguranca.tf
│   ├── IAM.tf
│   ├── Provider.tf
│   ├── Variaveis.tf
│   └── VPC.tf
├── Desligar.sh
├── Infraestrutura.sh
└── README.md

3 directories, 14 files

Para executar e fazer o deploy do projeto na AWS, execute o seguinte comando no terminal:

./Infraestrutura.sh

Você deverá estar na pasta-raiz do projeto, onde está localizado o arquivo Infraestrutura.sh. Este script fará a instalação do Terraform, a execução dos scripts do Terraform e o deploy do projeto na AWS a partir de uma imagem Docker no DockerHub.

Após a finalização do processo, a URL base da API será exibida no terminal:

Outputs:

IP_alb = "curso-serverless2-api-<idDaURL>.us-east-1.elb.amazonaws.com"

Copie e cole a URL para ser utilizada durante o curso. Caso seja necessário, você pode consultar a URL no console da AWS. No menu de "Services" no canto superior esquerdo, acesse EC2 > Load balancers > curso-serverless-2 > DNS Name.

Caso você acesse o menu EC2 e não apareça nenhum Load balancer, certifique-se que a região selecionada está correta: no canto superior direito da tela do console, ao lado do nome do usuário, a região selecionada deve ser us-east-1.

Importante: Para evitar cobranças desnecessárias de serviços da AWS, mantenha a API no ar apenas enquanto estiver acompanhando o curso. Para derrubar a API, execute o script ./Desligar.sh na pasta-raiz do projeto.

Acessando a URL do projeto

Este projeto expõe os seguintes endpoints:

  • GET /alunos
  • GET /alunos/:id
  • POST /alunos
  • PUT /alunos/:id
  • DELETE /alunos/:id

Paginação

Esta API utiliza recurso de paginação para limitar a quantidade de registros retornados via GET. O padrão é 5 registros.

Utilize o query param limite=<número> para estabelecer outros números como limite.

Exemplo:

http://curso-serverless2-api-<id>.us-east-1.elb.amazonaws.com/alunos?limite=50

2970-serverless-base-back's People

Contributors

julianaamoasei avatar

Stargazers

Lucas Marchiori avatar Cristina avatar  avatar Fabrício R. Neves avatar

Watchers

Paulo Silveira avatar Sérgio Lopes avatar Rodrigo da Silva Ferreira Caneppele avatar James Cloos avatar Caio César Mendonça Souza avatar Alex Felipe avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.