Skip to content

Commit

Permalink
The first commit
Browse files Browse the repository at this point in the history
  • Loading branch information
rmalenko committed Oct 21, 2023
1 parent deaaea4 commit de91920
Show file tree
Hide file tree
Showing 625 changed files with 75,508 additions and 2 deletions.
12 changes: 12 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
[submodule "modules/aws-vpc"]
path = modules/aws-vpc
url = [email protected]:terraform-aws-modules/terraform-aws-vpc.git
[submodule "modules/aws-security-group"]
path = modules/aws-security-group
url = https://github.com/terraform-aws-modules/terraform-aws-security-group.git
[submodule "modules/aws-ec2-spot-price"]
path = modules/aws-ec2-spot-price
url = https://github.com/fivexl/terraform-aws-ec2-spot-price.git
[submodule "modules/aws-s3-bucket"]
path = modules/aws-s3-bucket
url = https://github.com/terraform-aws-modules/terraform-aws-s3-bucket.git
6 changes: 6 additions & 0 deletions 00-provider.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
provider "aws" {
shared_credentials_files = ["~/.aws/credentials"]
profile = var.profile
region = var.aws_region
allowed_account_ids = [var.allowed_account_ids]
}
12 changes: 12 additions & 0 deletions 01-backend.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
// The referenced S3 bucket must have been previously created.

terraform {
backend "s3" {
bucket = "asg-wp-terraform-state-us-east-1"
dynamodb_table = "asg-wp-tf-locks-us-east-1"
encrypt = true
key = "asg-wp/terraform.tfstate"
profile = "rmalenko"
region = "us-east-1"
}
}
13 changes: 13 additions & 0 deletions 02-init.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
//////////////////////////////
// Remote states for import //
//////////////////////////////

# data "terraform_remote_state" "remote_state_elasticache" {
# # data "terraform_remote_state" "remote_state_iam_user" {
# backend = "s3"
# config = {
# region = var.aws_region
# bucket = "terragrunt-terraform-state-${var.account_name}-${var.aws_region}/"
# key = "${var.env}/${var.aws_region}/00-init/04-vpc/terraform.tfstate"
# }
# }
678 changes: 678 additions & 0 deletions 03-main.tf

Large diffs are not rendered by default.

71 changes: 71 additions & 0 deletions 99-outputs.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@

# output "intra_subnets" {
# value = module.vpc.intra_subnets
# }

# output "private_subnets" {
# value = module.vpc.private_subnets
# }

# output "public_subnets" {
# value = module.vpc.public_subnets
# }

# output "vpc_id" {
# value = module.vpc.vpc_id
# }

# output "random_pet" {
# value = random_pet.this.id
# }

# output "security_group_id" {
# value = module.security_group.security_group_id
# }

# output "zone_id_public" {
# value = module.aws.route53_zone_zone_id_public
# }

# output "acm_certificate_arn" {
# value = module.acm_certificates.acm_certificate_arn
# }

# output "route53_zone_zone_id_private" {
# value = module.aws.route53_zone_zone_id_private
# }

# output "route53_ns" {
# value = module.aws.route53_ns
# }

output "spot_price_current_max" {
value = module.spot-price.spot_price_current_max
}

output "spot_price_current_max_mod" {
value = module.spot-price.spot_price_current_max_mod
}

output "spot_price_current_min" {
value = module.spot-price.spot_price_current_min
}

output "spot_price_current_min_mod" {
value = module.spot-price.spot_price_current_min_mod
}

output "spot_price_current_optimal" {
value = module.spot-price.spot_price_current_optimal
}

output "spot_price_current_optimal_mod" {
value = module.spot-price.spot_price_current_optimal_mod
}


# output "test" {
# value = module.secrets.example
# # sensitive = true
# }

86 changes: 84 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,84 @@
# terraform-module-aws-alb-autoscaling-ec2
Provisioning on AWS DNS -> ALB -> Autoscaling -> EC2 -> RDS -> ...
# The set of these modules for create ALB, WAF, ASG, EC2, R53, IAM, RDS Secrets, S3, EFS, VPC

## ALB

Rules:

- redirect www to non www
- redirect HTTP to HTTP(S)

## WAF

Rules:

- Managed_Rules_WordPress_Rule_Set
- Managed_Rules_PHP_Rule_Set
- Managed_Rules_SQLi_Rule_Set
- IP_Rate_Based_Rule (`var.ip_rate_limit_reqests_num`)
- Block_country (`var.country_codes_block`)

## ASG

Autoscaling policy:

- UP/DOWN adding 2 instance or remove one
- by CPU UP - (75%), DOWN - (50%)
- ASG 5XX error more 10% and Downscale when less 5%

## EC2

- Placement group
- SSH keys (RSA and DSA)

## Template

- AMI Amazon Linux 2
- Instance type - `local.instance_type`
- Instance type `Spot` - `module.spot-price.spot_price_current_optimal`
- ENS GP3 20Gb


## EFS (NFS)

- Encrypted by (`module.iam.aws_kms_key_arn`)

## IAM

- KMS key
- SSM, EFS, RDF policy

## S3

- Bucket for ALB logs

## Secrets

Password and login for RDS will be available as ENV variables inside instances:

- `MYSQL_PASSWD`
- `MYSQL_LOGIN`
- `MYSQL_DBNAME`
- `MYSQL_ADDRESS`
- Password, Login generated automatically and DB name.

## RDS

- Engine `aurora-mysql`, mode `serverless`
- `scaling_configuration` `min = 1`, `max = 2`

## VPC

Two zones (a and b) and private and public subnets.


## Used modules

`git submodule init`

- An easy way to get the best Spot price to control costs. [terraform-aws-ec2-spot-price](https://github.com/fivexl/terraform-aws-ec2-spot-price)
- Creates S3 bucket on AWS with all (or almost all) features provided by Terraform AWS provider. [terraform-aws-s3-bucket](https://github.com/terraform-aws-modules/terraform-aws-s3-bucket)
- EC2 security group within VPC on AWS. [terraform-aws-security-group](https://github.com/terraform-aws-modules/terraform-aws-security-group)
- AWS VPC Terraform module [terraform-aws-vpc](https://github.com/terraform-aws-modules/terraform-aws-vpc)

![Alt text](https://github.com/rmalenko/terraform-module-aws-alb-autoscaling-ec2/blob/main/docs/Amazon_DynamoDB.png)
![Alt text](https://github.com/rmalenko/terraform-module-aws-alb-autoscaling-ec2/blob/main/docs/aws-asg-wp.drawio.png)
Binary file added docs/Amazon_DynamoDB.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
144 changes: 144 additions & 0 deletions docs/aws-asg-wp.drawio
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
<mxfile host="app.diagrams.net" modified="2023-10-21T10:42:57.385Z" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36" etag="VAOkBKjso75XRef5xKyd" version="21.8.2" type="device">
<diagram name="Page-1" id="-_LTY9yeXIAXHKSbd9Yf">
<mxGraphModel dx="2502" dy="1124" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="PR9d76hwL6Sj0DPpV70U-2" value="VPC" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;gradientColor=#b3b3b3;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=1;pointerEvents=0;collapsible=0;recursiveResize=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_vpc;strokeColor=#666666;fillColor=#f5f5f5;verticalAlign=top;align=left;spacingLeft=30;dashed=0;" vertex="1" parent="1">
<mxGeometry x="-30" y="120" width="750" height="1060" as="geometry" />
</mxCell>
<mxCell id="PR9d76hwL6Sj0DPpV70U-15" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="PR9d76hwL6Sj0DPpV70U-2" source="PR9d76hwL6Sj0DPpV70U-7" target="PR9d76hwL6Sj0DPpV70U-14">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="PR9d76hwL6Sj0DPpV70U-7" value="WAF" style="outlineConnect=0;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;shape=mxgraph.aws3.emr_cluster;fillColor=#F58534;gradientColor=none;" vertex="1" parent="PR9d76hwL6Sj0DPpV70U-2">
<mxGeometry x="137" y="30" width="55.5" height="63" as="geometry" />
</mxCell>
<mxCell id="PR9d76hwL6Sj0DPpV70U-14" value="Rules" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="PR9d76hwL6Sj0DPpV70U-2">
<mxGeometry x="230" y="46.5" width="120" height="30" as="geometry" />
</mxCell>
<mxCell id="PR9d76hwL6Sj0DPpV70U-30" value="" style="group" vertex="1" connectable="0" parent="1">
<mxGeometry x="10" y="310" width="840" height="440" as="geometry" />
</mxCell>
<mxCell id="PR9d76hwL6Sj0DPpV70U-66" value="" style="group" vertex="1" connectable="0" parent="PR9d76hwL6Sj0DPpV70U-30">
<mxGeometry y="-70" width="670" height="440" as="geometry" />
</mxCell>
<mxCell id="PR9d76hwL6Sj0DPpV70U-28" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f5f5;gradientColor=#b3b3b3;strokeColor=#666666;" vertex="1" parent="PR9d76hwL6Sj0DPpV70U-66">
<mxGeometry width="670" height="440" as="geometry" />
</mxCell>
<mxCell id="PR9d76hwL6Sj0DPpV70U-29" value="Public subnet" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="PR9d76hwL6Sj0DPpV70U-66">
<mxGeometry x="136.2162162162162" y="5.116279069767442" width="100" height="30" as="geometry" />
</mxCell>
<mxCell id="PR9d76hwL6Sj0DPpV70U-35" value="" style="group" vertex="1" connectable="0" parent="PR9d76hwL6Sj0DPpV70U-66">
<mxGeometry x="340" y="35.120000000000005" width="290" height="370" as="geometry" />
</mxCell>
<mxCell id="PR9d76hwL6Sj0DPpV70U-36" value="" style="rounded=1;whiteSpace=wrap;html=1;dashed=1;fontSize=14;fontColor=#000000;" vertex="1" parent="PR9d76hwL6Sj0DPpV70U-35">
<mxGeometry width="290" height="370" as="geometry" />
</mxCell>
<mxCell id="PR9d76hwL6Sj0DPpV70U-37" value="Zone B" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="PR9d76hwL6Sj0DPpV70U-35">
<mxGeometry x="115" y="10" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="PR9d76hwL6Sj0DPpV70U-38" value="Target Group" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="PR9d76hwL6Sj0DPpV70U-35">
<mxGeometry x="80" y="50" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="PR9d76hwL6Sj0DPpV70U-39" value="ASG with Templates" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="PR9d76hwL6Sj0DPpV70U-35">
<mxGeometry x="85" y="150" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="PR9d76hwL6Sj0DPpV70U-40" value="EC2" style="outlineConnect=0;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;shape=mxgraph.aws3.ec2;fillColor=#F58534;gradientColor=none;" vertex="1" parent="PR9d76hwL6Sj0DPpV70U-35">
<mxGeometry x="116.75" y="230" width="76.5" height="93" as="geometry" />
</mxCell>
<mxCell id="PR9d76hwL6Sj0DPpV70U-12" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="PR9d76hwL6Sj0DPpV70U-1" target="PR9d76hwL6Sj0DPpV70U-11">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="PR9d76hwL6Sj0DPpV70U-1" value="" style="image;aspect=fixed;perimeter=ellipsePerimeter;html=1;align=center;shadow=0;dashed=0;spacingTop=3;image=img/lib/active_directory/internet_globe.svg;" vertex="1" parent="1">
<mxGeometry x="460" y="27.75" width="50" height="50" as="geometry" />
</mxCell>
<mxCell id="PR9d76hwL6Sj0DPpV70U-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="PR9d76hwL6Sj0DPpV70U-3" target="PR9d76hwL6Sj0DPpV70U-7">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="PR9d76hwL6Sj0DPpV70U-3" value="ALB" style="outlineConnect=0;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;shape=mxgraph.aws3.application_load_balancer;fillColor=#F58534;gradientColor=none;" vertex="1" parent="1">
<mxGeometry x="170" y="10" width="69" height="72" as="geometry" />
</mxCell>
<mxCell id="PR9d76hwL6Sj0DPpV70U-13" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="PR9d76hwL6Sj0DPpV70U-11">
<mxGeometry relative="1" as="geometry">
<mxPoint x="240" y="52.75" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="PR9d76hwL6Sj0DPpV70U-11" value="R53" style="outlineConnect=0;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;shape=mxgraph.aws3.route_53;fillColor=#F58536;gradientColor=none;" vertex="1" parent="1">
<mxGeometry x="310" y="10" width="70.5" height="85.5" as="geometry" />
</mxCell>
<mxCell id="PR9d76hwL6Sj0DPpV70U-31" value="" style="group" vertex="1" connectable="0" parent="1">
<mxGeometry x="10.5" y="720" width="669.5" height="440" as="geometry" />
</mxCell>
<mxCell id="PR9d76hwL6Sj0DPpV70U-32" value="" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f5f5f5;gradientColor=#b3b3b3;strokeColor=#666666;" vertex="1" parent="PR9d76hwL6Sj0DPpV70U-31">
<mxGeometry width="669.5" height="440" as="geometry" />
</mxCell>
<mxCell id="PR9d76hwL6Sj0DPpV70U-33" value="Private subnet" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="PR9d76hwL6Sj0DPpV70U-31">
<mxGeometry x="108.56756756756756" y="4.3023255813953485" width="100" height="30" as="geometry" />
</mxCell>
<mxCell id="PR9d76hwL6Sj0DPpV70U-47" value="" style="group" vertex="1" connectable="0" parent="PR9d76hwL6Sj0DPpV70U-31">
<mxGeometry x="29.5" y="40" width="290" height="370" as="geometry" />
</mxCell>
<mxCell id="PR9d76hwL6Sj0DPpV70U-42" value="" style="rounded=1;whiteSpace=wrap;html=1;dashed=1;fontSize=14;fontColor=#000000;container=0;" vertex="1" parent="PR9d76hwL6Sj0DPpV70U-47">
<mxGeometry width="290" height="370" as="geometry" />
</mxCell>
<mxCell id="PR9d76hwL6Sj0DPpV70U-43" value="Zone A" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="PR9d76hwL6Sj0DPpV70U-47">
<mxGeometry x="115" y="10" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="PR9d76hwL6Sj0DPpV70U-25" value="EFS" style="outlineConnect=0;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;shape=mxgraph.aws3.efs;fillColor=#E05243;gradientColor=none;" vertex="1" parent="PR9d76hwL6Sj0DPpV70U-47">
<mxGeometry x="106.75" y="50" width="76.5" height="93" as="geometry" />
</mxCell>
<mxCell id="PR9d76hwL6Sj0DPpV70U-6" value="RDS" style="outlineConnect=0;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;shape=mxgraph.aws3.rds;fillColor=#2E73B8;gradientColor=none;" vertex="1" parent="PR9d76hwL6Sj0DPpV70U-47">
<mxGeometry x="109" y="200" width="72" height="81" as="geometry" />
</mxCell>
<mxCell id="PR9d76hwL6Sj0DPpV70U-48" value="" style="group" vertex="1" connectable="0" parent="PR9d76hwL6Sj0DPpV70U-31">
<mxGeometry x="349.5" y="40" width="290" height="370" as="geometry" />
</mxCell>
<mxCell id="PR9d76hwL6Sj0DPpV70U-49" value="" style="rounded=1;whiteSpace=wrap;html=1;dashed=1;fontSize=14;fontColor=#000000;container=0;" vertex="1" parent="PR9d76hwL6Sj0DPpV70U-48">
<mxGeometry width="290" height="370" as="geometry" />
</mxCell>
<mxCell id="PR9d76hwL6Sj0DPpV70U-50" value="Zone B" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="PR9d76hwL6Sj0DPpV70U-48">
<mxGeometry x="115" y="10" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="PR9d76hwL6Sj0DPpV70U-51" value="EFS" style="outlineConnect=0;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;shape=mxgraph.aws3.efs;fillColor=#E05243;gradientColor=none;" vertex="1" parent="PR9d76hwL6Sj0DPpV70U-48">
<mxGeometry x="106.75" y="50" width="76.5" height="93" as="geometry" />
</mxCell>
<mxCell id="PR9d76hwL6Sj0DPpV70U-52" value="RDS" style="outlineConnect=0;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;shape=mxgraph.aws3.rds;fillColor=#2E73B8;gradientColor=none;" vertex="1" parent="PR9d76hwL6Sj0DPpV70U-48">
<mxGeometry x="109" y="210" width="72" height="81" as="geometry" />
</mxCell>
<mxCell id="PR9d76hwL6Sj0DPpV70U-34" value="" style="group" vertex="1" connectable="0" parent="1">
<mxGeometry x="40" y="280" width="290" height="370" as="geometry" />
</mxCell>
<mxCell id="PR9d76hwL6Sj0DPpV70U-16" value="" style="rounded=1;whiteSpace=wrap;html=1;dashed=1;fontSize=14;fontColor=#000000;" vertex="1" parent="PR9d76hwL6Sj0DPpV70U-34">
<mxGeometry width="290" height="370" as="geometry" />
</mxCell>
<mxCell id="PR9d76hwL6Sj0DPpV70U-17" value="Zone A" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="PR9d76hwL6Sj0DPpV70U-34">
<mxGeometry x="115" y="10" width="60" height="30" as="geometry" />
</mxCell>
<mxCell id="PR9d76hwL6Sj0DPpV70U-21" value="Target Group" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;" vertex="1" parent="PR9d76hwL6Sj0DPpV70U-34">
<mxGeometry x="80" y="50" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="PR9d76hwL6Sj0DPpV70U-23" value="ASG with Templates" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="PR9d76hwL6Sj0DPpV70U-34">
<mxGeometry x="85" y="150" width="120" height="60" as="geometry" />
</mxCell>
<mxCell id="PR9d76hwL6Sj0DPpV70U-24" value="EC2" style="outlineConnect=0;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;shape=mxgraph.aws3.ec2;fillColor=#F58534;gradientColor=none;" vertex="1" parent="PR9d76hwL6Sj0DPpV70U-34">
<mxGeometry x="106.75" y="230" width="76.5" height="93" as="geometry" />
</mxCell>
<mxCell id="PR9d76hwL6Sj0DPpV70U-54" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="PR9d76hwL6Sj0DPpV70U-24" target="PR9d76hwL6Sj0DPpV70U-25">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="PR9d76hwL6Sj0DPpV70U-55" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="PR9d76hwL6Sj0DPpV70U-24" target="PR9d76hwL6Sj0DPpV70U-6">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="PR9d76hwL6Sj0DPpV70U-65" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="PR9d76hwL6Sj0DPpV70U-40" target="PR9d76hwL6Sj0DPpV70U-52">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="PR9d76hwL6Sj0DPpV70U-69" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.25;exitY=1;exitDx=0;exitDy=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="PR9d76hwL6Sj0DPpV70U-14" target="PR9d76hwL6Sj0DPpV70U-16">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="PR9d76hwL6Sj0DPpV70U-70" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.75;exitY=1;exitDx=0;exitDy=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="PR9d76hwL6Sj0DPpV70U-14" target="PR9d76hwL6Sj0DPpV70U-36">
<mxGeometry relative="1" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>
Binary file added docs/aws-asg-wp.drawio.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit de91920

Please sign in to comment.