Skip to content

marciojg/aws-architecture

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AWS ARCHITECTURE

Projeto feito com o objetivo de criar uma infra como código na AWS Cloud utilizando Terraform e Serveless Framework.



Motivador



Arquitetura do projeto

Arquitetura do projeto



Passos para execução do projeto

Criar ambiente

Siga as instruções deste repositório para montar seu ambiente no Cloud9 juntamente com a instalação do Terraform e Serveless Framework.

Subir projeto

Assim que tiver seu ambiente montado siga as instruções abaixo:

Clone do repositório

  1. Volte para a pasta raiz do cloud9 cd ~/environment
  2. Clone este projeto git clone https://github.com/marciojg/aws-architecture.git
  3. Entre na psta do projeto cd aws-architecture

Subir Bucket S3 para guardar o estado do terraform

  1. Entre na pasta 'S3' com o comando cd terraform/S3
  2. Execute o comando terraform init
  3. Execute o comando terraform apply -auto-approve
  4. Saia da pasta com cd ..

bucket-s3-terraform-state

Subir SNS, SQS, Bucket/S3 suas subscrições e políticas

  1. Execute o comando a seguir bash ../replace-vars.bash vars.tf e informe <SEU-EMAIL-AQUI> no Valor a ser procurado e no Novo valor deve ser seu email. Ex:

bash-replace-var-example

  1. Execute o comando a seguir bash ../replace-vars.bash state.tf e informe <ACCOUNT-ID-AQUI> no Valor a ser procurado e no Novo valor deve ser o ID da sua conta AWS que pode ser encontrado no resultado do comando da linha 6 que você executou anteriormente. Ex:

bucket-s3-state-account-id

  1. Execute o comando terraform init
  2. Execute o comando terraform apply -auto-approve

sns-topic sqs-queue-e-dlq-queue bucket-s3-final-e-bucket-s3-log

Subir Lambdas e API Gateway e suas conexões

  1. Vá para a pasta serveless cd ../serveless
  2. Crie uma pasta chamada layer utilizando o comando no terminal mkdir layer
  3. Execute os comandos abaixo para instalar todas as dependencias listadas no arquivo requirements.txt dentro da pasta layer.
  python3 -m venv ~/venv
  source ~/venv/bin/activate

  pip3 install -r requirements.txt -t layer

  deactivate
  1. Execute o comando a seguir bash ../replace-vars.bash serverless.yml e informe <ACCOUNT-ID-AQUI> no Valor a ser procurado e no Novo valor deve ser o ID da sua conta AWS que pode ser encontrado no resultado do comando da linha 6 que você executou anteriormente. Ex:

bucket-s3-state-account-id

  1. Fazer deploy sls deploy
  2. Acesse seu email usado no SNS endpint e confirme a inscrição a partir do email recebido do SNS, conforme imagem abaixo

sns-email-subscription cloud-formation bucket-s3-serveless lambdas api-gateway



Testar projeto

Dados válidos para request

/book/create

{
 "book_name":"harry potter",
 "book_id": 34577,
 "book_preco": 45.87
}

/sell/book

{
 "book_id":2346,
 "customer_id": 12456
}

Os testes podem ser feitos diretamente pelo API Gateway que possui uma interface de testes ou usando curl diretamente do console do Cloud9.

Caso decida fazer os testes usando o curl o endereço das APIs podem ser capturados logo após executar o comando sls deploy.

resultado-serveless

Request válida

Quando enviamos uma request válida, a api retorna 200 e um arquivo será criado no bucket. Ex:

teste-api-gateway

teste-api-gateway-email

teste-api-gateway-book-create

teste-api-gateway-sell-book

objetos-criados-no-bucket-s3


Request Inválida

Quando a request é inválida um erro 400 é retornado e no log é exibido o atributo que está errado

teste-api-gateway-book-create-erro teste-api-gateway-book-create-erro-log

teste-api-gateway-sell-book-erro teste-api-gateway-sell-book-erro-log



Destruir projeto

  1. Serveless down
cd ~/environment/aws-architecture/serveless/
sls remove --force
  1. Terraform down
cd ~/environment/aws-architecture/terraform/
terraform destroy --force
  1. Terraform state down
cd ~/environment/aws-architecture/terraform/S3
terraform destroy --force


Links úteis

About

Criar infra aws utilizando serveless e terraform

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published