Projeto Terraform para o gerenciamento de recursos AWS para exemplificar o funcionamento de uma arquitetura de microsserviços.
- Cliente realiza conexão através de front-end Amplify e do Application Load Balacer.
- As conexões HTTP do ALB são encaminhadas ao serviço
store-resource
. store-resource
é responsável por tratar as requisições HTTP e por encaminhar as requisições para os serviçospets
eorder
, utilizando o serviço de descoberta do Cloud Map e protocolo gRPC. APIpets
eorder
são responsáveis pelo controle destes serviços e interações necessárias com o banco DocumentDB assim como a publicação de eventos no SNS.listener
é responsável por consumir os eventos no SQS.- É necessário que os serviços contenham uma política IAM atrelada para interação dos eventos no SNS e SQS.
- O banco DocumentDB publica sua senha em um segredo no Secrets Manager, os serviços utilizam esse valor via variável de ambiente.
- Os logs dos serviços são enviados ao CloudWatch.
- As métricas dos serviços são enviadas ao Prometheus.
- A visualização das métricas ocorre através do Grafana.
To run this example you need to execute:
$ terraform init
$ terraform plan
$ terraform apply
Note that this example may create resources which cost money. Run terraform destroy
when you don't need these resources.
Name | Version |
---|---|
terraform | >= 1.0.0 |
aws | >= 5.0 |
Name | Version |
---|---|
aws | 5.9.0 |
Name | Source | Version |
---|---|---|
acm | terraform-aws-modules/acm/aws | ~> 4.3.0 |
alb_sg | terraform-aws-modules/security-group/aws//modules/https-443 | ~> 4.0 |
amplify | brunordias/amplify-app/aws | ~> 1.0.0 |
documentdb_cluster | cloudposse/documentdb-cluster/aws | 0.22.0 |
ecs_cluster | brunordias/ecs-cluster/aws | ~> 2.0.0 |
ecs_fargate_listener | brunordias/ecs-fargate/aws | ~> 8.0.0 |
ecs_fargate_order | brunordias/ecs-fargate/aws | ~> 8.0.0 |
ecs_fargate_pets | brunordias/ecs-fargate/aws | ~> 8.0.0 |
ecs_fargate_store_resource | brunordias/ecs-fargate/aws | ~> 8.0.0 |
vpc | terraform-aws-modules/vpc/aws | ~> 5.1.0 |
Name | Type |
---|---|
aws_iam_policy.policy | resource |
aws_kms_key.docdb | resource |
aws_lb.alb | resource |
aws_lb_listener.https | resource |
aws_route53_record.api | resource |
aws_secretsmanager_secret.docdb | resource |
aws_secretsmanager_secret_version.docdb | resource |
aws_service_discovery_private_dns_namespace.local | resource |
aws_service_discovery_service.local | resource |
aws_route53_zone.this | data source |
Name | Description | Type | Default | Required |
---|---|---|---|---|
access_token_github | GitHub Access Token | string |
n/a | yes |
api_url | Define URL da API | string |
n/a | yes |
docdb_password | Senha do DocumentDB | string |
n/a | yes |
name | Utilizado para nomear os recursos | string |
"ugf-store" |
no |
region | Código da região AWS | string |
"us-east-1" |
no |
route53_domain | Define dominio do Route53 | string |
n/a | yes |
tags | Tags dos recursos | map(any) |
{ |
no |
Name | Description |
---|---|
alb_dns_name | Use this URL to access your UGF Store API |