From 81b23d048b14639a07fd73a1eb66212a6aaed452 Mon Sep 17 00:00:00 2001 From: Kenneth <kenneth.tanfa@polytech-lille.net> Date: Thu, 30 Jan 2025 16:14:33 +0100 Subject: [PATCH] Update terraform to accept ssh communication --- README.md | 12 + terraform_VPC/Kenneth_Hugo.tfplan | Bin 6836 -> 19683 bytes terraform_VPC/main.tf | 111 +- .../terraform.tfstate.d/DEV/terraform.tfstate | 580 ++++++++- .../DEV/terraform.tfstate.backup | 1109 ++++++++++++++++- 5 files changed, 1747 insertions(+), 65 deletions(-) diff --git a/README.md b/README.md index e3551d2..ad81d23 100644 --- a/README.md +++ b/README.md @@ -86,6 +86,18 @@ Dans le terminal, se placer au niveau de app.py flask app.py ``` +## DUMP d'une base locale + +``` +pg_dump -h localhost -U postgres -d mydb -v -f ~/Cours_Architecture_logiciel/web_app/mydb.dump +``` + +Aller sur le fichier .dump et faite + +il est nécessaire de retrouver le endpoint sur RDs +``` +pg_restore -h kennethhugo-dev-rds-instance.cx4q20s8stp5.eu-west-3.rds.amazonaws.com -U postgres -f mydb.dump +``` ## Sitographie https://medium.com/@samanthasalustri/why-pipenv-is-the-preferred-virtual-environment-tool-for-python-316bc54a5f13 diff --git a/terraform_VPC/Kenneth_Hugo.tfplan b/terraform_VPC/Kenneth_Hugo.tfplan index 31cd4ad9e69005992844b64bb367dd701303dc70..1f8daf206e001cee7d8cbdf2f8e61d9acc184579 100644 GIT binary patch delta 18657 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 M^B5Tz^u0km0B$$w4FCWD delta 5660 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 diff --git a/terraform_VPC/main.tf b/terraform_VPC/main.tf index 2a354af..e3912a0 100644 --- a/terraform_VPC/main.tf +++ b/terraform_VPC/main.tf @@ -43,6 +43,67 @@ data "aws_vpc" "this" { } } + +data "aws_subnet" "public" { + filter { + name = "tag:Name" + values = ["PUBLIC_SUBNET"] + } +} + +data "aws_subnet" "private-a" { + filter { + name = "tag:Name" + values = ["PRIVATE_SUBNET_A"] + } +} + +data "aws_subnet" "private-b" { + filter { + name = "tag:Name" + values = ["PRIVATE_SUBNET_B"] + } +} +data "aws_vpc" "selected" { + filter { + name = "tag:Name" + values = ["VPC"] + } +} +resource "aws_key_pair" "ec2" { + key_name = lower("${var.identifiant}_key") + public_key = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCdgUoVRIPCQHlBoaz6UfrvQ4gw2sxeV3PIgCmCSXUW+I9beSfrBs4ELbiuUsV33Y8rKRNQBxa60+J0bEwNtIXRARN7bfdVmukoIJ/LBPcj1XzjmcVE4RJCxSRQbiMYnbUG6Ps5m1sMXsGf0WoPuXIsYoRKHa4QtcqSqqm/G/BW4a0Kvwdfww2dYCKhNoniSPAnDGPowQpGzTc3nvO/ED7polY9T1b6kqaw5WSCWic/qUfgJ2Lxn+bus72vgelhqZhFSqJgTL2e3xPmqtmrUO/4U2kjF3YH120syEfvQFIg/PozQqfkupbDPB1Cx7/1ThZLpJT5Dv1I/kCuZQuNNZj7" +} +resource "aws_security_group" "ec2" { + name = "${var.identifiant}_SG_EC2" + description = "ec2 Security Group" + vpc_id = data.aws_vpc.selected.id + tags = { Name = "${var.identifiant}_SG_EC2" } + + lifecycle { + create_before_destroy = true + } +} + +resource "aws_security_group_rule" "allow_ec2_to_bastion" { + type = "ingress" + from_port = 22 + to_port = 22 + protocol = "tcp" + source_security_group_id = data.aws_security_group.bastion.id + security_group_id = aws_security_group.ec2.id +} + +resource "aws_security_group_rule" "ssh_api_from_bastion" { + type = "ingress" + from_port = 22 + to_port = 22 + protocol = "tcp" + source_security_group_id = data.aws_security_group.bastion.id + security_group_id = aws_security_group.sg_api.id + description = "SSH from Bastion to API" +} + #################################### # Subnets (A et B) - 2 AZ différentes #################################### @@ -82,16 +143,16 @@ resource "aws_security_group" "sg_client" { from_port = 80 to_port = 80 protocol = "tcp" - cidr_blocks = [var.my_ip] - # var.my_ip = "0.0.0.0/0" par défaut, ou votre IP + security_groups = [data.aws_security_group.bastion.id] + //cidr_blocks = [] + } - # Autorise tout en sortie + # Autorise l'API en sortie egress { - from_port = 0 - to_port = 0 - protocol = -1 - cidr_blocks = ["0.0.0.0/0"] + from_port = 80 + to_port = 80 + protocol = "tcp" } tags = { @@ -109,14 +170,17 @@ resource "aws_security_group" "sg_api" { from_port = 5000 to_port = 5000 protocol = "tcp" - security_groups = [aws_security_group.sg_client.id] + security_groups = [aws_security_group.sg_client.id,data.aws_security_group.bastion.id] } - + # ON autorise la connexion vers le RDS egress { - from_port = 0 - to_port = 0 - protocol = -1 + description = "Allow traffic to RDS (5432)" + from_port = 5432 + to_port = 5432 + protocol = "tcp" cidr_blocks = ["0.0.0.0/0"] + + /*data.aws.subnet.private_subnet_a.cidr_blocks*/ } tags = { @@ -134,7 +198,7 @@ resource "aws_security_group" "sg_rds" { from_port = 5432 to_port = 5432 protocol = "tcp" - security_groups = [aws_security_group.sg_api.id] + security_groups = [aws_security_group.sg_api.id, data.aws_security_group.bastion.id] } egress { @@ -149,6 +213,13 @@ resource "aws_security_group" "sg_rds" { } } +data "aws_security_group" "bastion" { + filter { + name = "tag:Name" + values = ["SG_BASTION_EC2"] + } +} + #################################### # Instances EC2 : Client et API #################################### @@ -172,6 +243,7 @@ data "aws_ami" "amazon_linux_2" { resource "aws_instance" "client" { ami = data.aws_ami.amazon_linux_2.id instance_type = "t2.micro" + key_name = aws_key_pair.ec2.id # On la met, par exemple, dans le subnet A subnet_id = aws_subnet.private_subnet_a.id @@ -186,6 +258,7 @@ resource "aws_instance" "client" { resource "aws_instance" "api" { ami = data.aws_ami.amazon_linux_2.id instance_type = "t2.micro" + key_name = aws_key_pair.ec2.id # On peut la mettre aussi dans le subnet A (ou B, au choix) subnet_id = aws_subnet.private_subnet_a.id @@ -212,15 +285,22 @@ resource "aws_db_subnet_group" "this" { Name = upper("${var.identifiant}_${terraform.workspace}_RDS_SUBNET_GROUP") } } +variable "db_name" { + type = string + description = "Nom de la base de données RDS" + default = "mydb_hk" +} -/* resource "aws_db_instance" "mydb" { allocated_storage = 5 engine = "postgres" engine_version = "14.15" - instance_class = "db.t2.micro" + instance_class = "db.t3.micro" username = "postgres" + db_name = "mydb_HK" password = "mysecretpassword" + multi_az = false + identifier = lower("${var.identifiant}-${terraform.workspace}-RDS-INSTANCE") skip_final_snapshot = true db_subnet_group_name = aws_db_subnet_group.this.name @@ -231,4 +311,3 @@ resource "aws_db_instance" "mydb" { Name = upper("${var.identifiant}_${terraform.workspace}_RDS_INSTANCE") } } -*/ \ No newline at end of file diff --git a/terraform_VPC/terraform.tfstate.d/DEV/terraform.tfstate b/terraform_VPC/terraform.tfstate.d/DEV/terraform.tfstate index 15b71c7..f137cc1 100644 --- a/terraform_VPC/terraform.tfstate.d/DEV/terraform.tfstate +++ b/terraform_VPC/terraform.tfstate.d/DEV/terraform.tfstate @@ -1,7 +1,7 @@ { "version": 4, "terraform_version": "1.10.5", - "serial": 70, + "serial": 113, "lineage": "eded4345-a67f-9a4a-9ad8-c68c205f47c2", "outputs": {}, "resources": [ @@ -125,6 +125,234 @@ } ] }, + { + "mode": "data", + "type": "aws_security_group", + "name": "bastion", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "arn": "arn:aws:ec2:eu-west-3:920373009484:security-group/sg-0a7ccf14d1b6468fa", + "description": "ec2 Security Group", + "filter": [ + { + "name": "tag:Name", + "values": [ + "SG_BASTION_EC2" + ] + } + ], + "id": "sg-0a7ccf14d1b6468fa", + "name": "SG_BASTION_EC2", + "tags": { + "Name": "SG_BASTION_EC2" + }, + "timeouts": null, + "vpc_id": "vpc-08da87242304c9723" + }, + "sensitive_attributes": [] + } + ] + }, + { + "mode": "data", + "type": "aws_subnet", + "name": "private-a", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "arn": "arn:aws:ec2:eu-west-3:920373009484:subnet/subnet-002aaa6589cef6028", + "assign_ipv6_address_on_creation": false, + "availability_zone": "eu-west-3a", + "availability_zone_id": "euw3-az1", + "available_ip_address_count": 240, + "cidr_block": "10.0.1.0/24", + "customer_owned_ipv4_pool": "", + "default_for_az": false, + "enable_dns64": false, + "enable_lni_at_device_index": 0, + "enable_resource_name_dns_a_record_on_launch": false, + "enable_resource_name_dns_aaaa_record_on_launch": false, + "filter": [ + { + "name": "tag:Name", + "values": [ + "PRIVATE_SUBNET_A" + ] + } + ], + "id": "subnet-002aaa6589cef6028", + "ipv6_cidr_block": "", + "ipv6_cidr_block_association_id": "", + "ipv6_native": false, + "map_customer_owned_ip_on_launch": false, + "map_public_ip_on_launch": false, + "outpost_arn": "", + "owner_id": "920373009484", + "private_dns_hostname_type_on_launch": "ip-name", + "state": "available", + "tags": { + "Name": "PRIVATE_SUBNET_A", + "Private": "yes" + }, + "timeouts": null, + "vpc_id": "vpc-08da87242304c9723" + }, + "sensitive_attributes": [] + } + ] + }, + { + "mode": "data", + "type": "aws_subnet", + "name": "private-b", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "arn": "arn:aws:ec2:eu-west-3:920373009484:subnet/subnet-0fc06a60f4305264c", + "assign_ipv6_address_on_creation": false, + "availability_zone": "eu-west-3b", + "availability_zone_id": "euw3-az2", + "available_ip_address_count": 245, + "cidr_block": "10.0.2.0/24", + "customer_owned_ipv4_pool": "", + "default_for_az": false, + "enable_dns64": false, + "enable_lni_at_device_index": 0, + "enable_resource_name_dns_a_record_on_launch": false, + "enable_resource_name_dns_aaaa_record_on_launch": false, + "filter": [ + { + "name": "tag:Name", + "values": [ + "PRIVATE_SUBNET_B" + ] + } + ], + "id": "subnet-0fc06a60f4305264c", + "ipv6_cidr_block": "", + "ipv6_cidr_block_association_id": "", + "ipv6_native": false, + "map_customer_owned_ip_on_launch": false, + "map_public_ip_on_launch": false, + "outpost_arn": "", + "owner_id": "920373009484", + "private_dns_hostname_type_on_launch": "ip-name", + "state": "available", + "tags": { + "Name": "PRIVATE_SUBNET_B", + "Private": "yes" + }, + "timeouts": null, + "vpc_id": "vpc-08da87242304c9723" + }, + "sensitive_attributes": [] + } + ] + }, + { + "mode": "data", + "type": "aws_subnet", + "name": "public", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "arn": "arn:aws:ec2:eu-west-3:920373009484:subnet/subnet-0d9d21b769bca92d7", + "assign_ipv6_address_on_creation": false, + "availability_zone": "eu-west-3a", + "availability_zone_id": "euw3-az1", + "available_ip_address_count": 248, + "cidr_block": "10.0.0.0/24", + "customer_owned_ipv4_pool": "", + "default_for_az": false, + "enable_dns64": false, + "enable_lni_at_device_index": 0, + "enable_resource_name_dns_a_record_on_launch": false, + "enable_resource_name_dns_aaaa_record_on_launch": false, + "filter": [ + { + "name": "tag:Name", + "values": [ + "PUBLIC_SUBNET" + ] + } + ], + "id": "subnet-0d9d21b769bca92d7", + "ipv6_cidr_block": "", + "ipv6_cidr_block_association_id": "", + "ipv6_native": false, + "map_customer_owned_ip_on_launch": false, + "map_public_ip_on_launch": false, + "outpost_arn": "", + "owner_id": "920373009484", + "private_dns_hostname_type_on_launch": "ip-name", + "state": "available", + "tags": { + "Name": "PUBLIC_SUBNET", + "Private": "no" + }, + "timeouts": null, + "vpc_id": "vpc-08da87242304c9723" + }, + "sensitive_attributes": [] + } + ] + }, + { + "mode": "data", + "type": "aws_vpc", + "name": "selected", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "arn": "arn:aws:ec2:eu-west-3:920373009484:vpc/vpc-08da87242304c9723", + "cidr_block": "10.0.0.0/16", + "cidr_block_associations": [ + { + "association_id": "vpc-cidr-assoc-0fd519069ef9f4ba9", + "cidr_block": "10.0.0.0/16", + "state": "associated" + } + ], + "default": false, + "dhcp_options_id": "dopt-06fac3b0fae017c99", + "enable_dns_hostnames": false, + "enable_dns_support": true, + "enable_network_address_usage_metrics": false, + "filter": [ + { + "name": "tag:Name", + "values": [ + "VPC" + ] + } + ], + "id": "vpc-08da87242304c9723", + "instance_tenancy": "default", + "ipv6_association_id": "", + "ipv6_cidr_block": "", + "main_route_table_id": "rtb-06b8cc99d46258d59", + "owner_id": "920373009484", + "state": null, + "tags": { + "Name": "VPC" + }, + "timeouts": null + }, + "sensitive_attributes": [] + } + ] + }, { "mode": "data", "type": "aws_vpc", @@ -172,6 +400,127 @@ } ] }, + { + "mode": "managed", + "type": "aws_db_instance", + "name": "mydb", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 2, + "attributes": { + "address": "kennethhugo-dev-rds-instance.cx4q20s8stp5.eu-west-3.rds.amazonaws.com", + "allocated_storage": 5, + "allow_major_version_upgrade": null, + "apply_immediately": false, + "arn": "arn:aws:rds:eu-west-3:920373009484:db:kennethhugo-dev-rds-instance", + "auto_minor_version_upgrade": true, + "availability_zone": "eu-west-3a", + "backup_retention_period": 0, + "backup_target": "region", + "backup_window": "08:12-08:42", + "blue_green_update": [], + "ca_cert_identifier": "rds-ca-rsa2048-g1", + "character_set_name": "", + "copy_tags_to_snapshot": false, + "custom_iam_instance_profile": "", + "customer_owned_ip_enabled": false, + "db_name": "mydb_HK", + "db_subnet_group_name": "kennethhugo_dev_rds_subnet_group", + "dedicated_log_volume": false, + "delete_automated_backups": true, + "deletion_protection": false, + "domain": "", + "domain_auth_secret_arn": "", + "domain_dns_ips": [], + "domain_fqdn": "", + "domain_iam_role_name": "", + "domain_ou": "", + "enabled_cloudwatch_logs_exports": [], + "endpoint": "kennethhugo-dev-rds-instance.cx4q20s8stp5.eu-west-3.rds.amazonaws.com:5432", + "engine": "postgres", + "engine_lifecycle_support": "open-source-rds-extended-support", + "engine_version": "14.15", + "engine_version_actual": "14.15", + "final_snapshot_identifier": null, + "hosted_zone_id": "ZMESEXB7ZGGQ3", + "iam_database_authentication_enabled": false, + "id": "db-OVJD44ND4UJCBJPN7LPVEZT6CE", + "identifier": "kennethhugo-dev-rds-instance", + "identifier_prefix": "", + "instance_class": "db.t3.micro", + "iops": 0, + "kms_key_id": "", + "latest_restorable_time": "", + "license_model": "postgresql-license", + "listener_endpoint": [], + "maintenance_window": "sun:05:13-sun:05:43", + "manage_master_user_password": null, + "master_user_secret": [], + "master_user_secret_kms_key_id": null, + "max_allocated_storage": 0, + "monitoring_interval": 0, + "monitoring_role_arn": "", + "multi_az": false, + "nchar_character_set_name": "", + "network_type": "IPV4", + "option_group_name": "default:postgres-14", + "parameter_group_name": "default.postgres14", + "password": "mysecretpassword", + "performance_insights_enabled": false, + "performance_insights_kms_key_id": "", + "performance_insights_retention_period": 0, + "port": 5432, + "publicly_accessible": false, + "replica_mode": "", + "replicas": [], + "replicate_source_db": "", + "resource_id": "db-OVJD44ND4UJCBJPN7LPVEZT6CE", + "restore_to_point_in_time": [], + "s3_import": [], + "skip_final_snapshot": true, + "snapshot_identifier": null, + "status": "available", + "storage_encrypted": false, + "storage_throughput": 0, + "storage_type": "gp2", + "tags": { + "Name": "KENNETHHUGO_DEV_RDS_INSTANCE" + }, + "tags_all": { + "Name": "KENNETHHUGO_DEV_RDS_INSTANCE" + }, + "timeouts": null, + "timezone": "", + "upgrade_storage_config": null, + "username": "postgres", + "vpc_security_group_ids": [ + "sg-0501c21c134e1b1e5" + ] + }, + "sensitive_attributes": [ + [ + { + "type": "get_attr", + "value": "password" + } + ] + ], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjozMDAwMDAwMDAwMDAwLCJkZWxldGUiOjM2MDAwMDAwMDAwMDAsInVwZGF0ZSI6NDgwMDAwMDAwMDAwMH0sInNjaGVtYV92ZXJzaW9uIjoiMiJ9", + "dependencies": [ + "aws_db_subnet_group.this", + "aws_security_group.sg_api", + "aws_security_group.sg_client", + "aws_security_group.sg_rds", + "aws_subnet.private_subnet_a", + "aws_subnet.private_subnet_b", + "data.aws_availability_zones.available", + "data.aws_security_group.bastion", + "data.aws_vpc.this" + ] + } + ] + }, { "mode": "managed", "type": "aws_db_subnet_group", @@ -187,8 +536,8 @@ "name": "kennethhugo_dev_rds_subnet_group", "name_prefix": "", "subnet_ids": [ - "subnet-05a7ea15f5fbd3e4b", - "subnet-098844236bb248009" + "subnet-0052f34d50c7c6db5", + "subnet-063715ef5e9c6cb64" ], "supported_network_types": [ "IPV4" @@ -222,7 +571,7 @@ "schema_version": 1, "attributes": { "ami": "ami-03f3bb80e24b71cd8", - "arn": "arn:aws:ec2:eu-west-3:920373009484:instance/i-0f8f755ae35c0dba8", + "arn": "arn:aws:ec2:eu-west-3:920373009484:instance/i-04e9a490e913eb4aa", "associate_public_ip_address": false, "availability_zone": "eu-west-3a", "capacity_reservation_specification": [ @@ -261,7 +610,7 @@ "host_id": "", "host_resource_group_arn": null, "iam_instance_profile": "", - "id": "i-0f8f755ae35c0dba8", + "id": "i-04e9a490e913eb4aa", "instance_initiated_shutdown_behavior": "stop", "instance_lifecycle": "", "instance_market_options": [], @@ -269,7 +618,7 @@ "instance_type": "t2.micro", "ipv6_address_count": 0, "ipv6_addresses": [], - "key_name": "", + "key_name": "kennethhugo_key", "launch_template": [], "maintenance_options": [ { @@ -291,8 +640,8 @@ "password_data": "", "placement_group": "", "placement_partition_number": 0, - "primary_network_interface_id": "eni-047b370670f880b31", - "private_dns": "ip-10-0-35-86.eu-west-3.compute.internal", + "primary_network_interface_id": "eni-043877caa26c09fd3", + "private_dns": "ip-10-0-35-75.eu-west-3.compute.internal", "private_dns_name_options": [ { "enable_resource_name_dns_a_record": false, @@ -300,7 +649,7 @@ "hostname_type": "ip-name" } ], - "private_ip": "10.0.35.86", + "private_ip": "10.0.35.75", "public_dns": "", "public_ip": "", "root_block_device": [ @@ -313,7 +662,7 @@ "tags": {}, "tags_all": {}, "throughput": 0, - "volume_id": "vol-0d1da72e9c08a0cfd", + "volume_id": "vol-0018f0ca34c3fd476", "volume_size": 8, "volume_type": "gp2" } @@ -322,7 +671,7 @@ "security_groups": [], "source_dest_check": true, "spot_instance_request_id": "", - "subnet_id": "subnet-098844236bb248009", + "subnet_id": "subnet-063715ef5e9c6cb64", "tags": { "Name": "KENNETHHUGO_DEV_API_VM" }, @@ -336,17 +685,19 @@ "user_data_replace_on_change": false, "volume_tags": null, "vpc_security_group_ids": [ - "sg-05f936ba39fe9b5df" + "sg-08abb0531ca48d02b" ] }, "sensitive_attributes": [], "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6MTIwMDAwMDAwMDAwMCwicmVhZCI6OTAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH0sInNjaGVtYV92ZXJzaW9uIjoiMSJ9", "dependencies": [ + "aws_key_pair.ec2", "aws_security_group.sg_api", "aws_security_group.sg_client", "aws_subnet.private_subnet_a", "data.aws_ami.amazon_linux_2", "data.aws_availability_zones.available", + "data.aws_security_group.bastion", "data.aws_vpc.this" ] } @@ -362,7 +713,7 @@ "schema_version": 1, "attributes": { "ami": "ami-03f3bb80e24b71cd8", - "arn": "arn:aws:ec2:eu-west-3:920373009484:instance/i-00ce58fcfd7cbeebb", + "arn": "arn:aws:ec2:eu-west-3:920373009484:instance/i-02e813c204183c9ab", "associate_public_ip_address": false, "availability_zone": "eu-west-3a", "capacity_reservation_specification": [ @@ -401,7 +752,7 @@ "host_id": "", "host_resource_group_arn": null, "iam_instance_profile": "", - "id": "i-00ce58fcfd7cbeebb", + "id": "i-02e813c204183c9ab", "instance_initiated_shutdown_behavior": "stop", "instance_lifecycle": "", "instance_market_options": [], @@ -409,7 +760,7 @@ "instance_type": "t2.micro", "ipv6_address_count": 0, "ipv6_addresses": [], - "key_name": "", + "key_name": "kennethhugo_key", "launch_template": [], "maintenance_options": [ { @@ -431,8 +782,8 @@ "password_data": "", "placement_group": "", "placement_partition_number": 0, - "primary_network_interface_id": "eni-0951f25c7b057616e", - "private_dns": "ip-10-0-35-191.eu-west-3.compute.internal", + "primary_network_interface_id": "eni-0ac8c529a1deb3ebb", + "private_dns": "ip-10-0-35-59.eu-west-3.compute.internal", "private_dns_name_options": [ { "enable_resource_name_dns_a_record": false, @@ -440,7 +791,7 @@ "hostname_type": "ip-name" } ], - "private_ip": "10.0.35.191", + "private_ip": "10.0.35.59", "public_dns": "", "public_ip": "", "root_block_device": [ @@ -453,7 +804,7 @@ "tags": {}, "tags_all": {}, "throughput": 0, - "volume_id": "vol-01f8994af25befaff", + "volume_id": "vol-0ef9ef21efc35bacc", "volume_size": 8, "volume_type": "gp2" } @@ -462,7 +813,7 @@ "security_groups": [], "source_dest_check": true, "spot_instance_request_id": "", - "subnet_id": "subnet-098844236bb248009", + "subnet_id": "subnet-063715ef5e9c6cb64", "tags": { "Name": "KENNETHHUGO_DEV_CLIENT_VM" }, @@ -476,21 +827,84 @@ "user_data_replace_on_change": false, "volume_tags": null, "vpc_security_group_ids": [ - "sg-043047f953fdfcc59" + "sg-046489925f564ec8c" ] }, "sensitive_attributes": [], "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6MTIwMDAwMDAwMDAwMCwicmVhZCI6OTAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH0sInNjaGVtYV92ZXJzaW9uIjoiMSJ9", "dependencies": [ + "aws_key_pair.ec2", "aws_security_group.sg_client", "aws_subnet.private_subnet_a", "data.aws_ami.amazon_linux_2", "data.aws_availability_zones.available", + "data.aws_security_group.bastion", "data.aws_vpc.this" ] } ] }, + { + "mode": "managed", + "type": "aws_key_pair", + "name": "ec2", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 1, + "attributes": { + "arn": "arn:aws:ec2:eu-west-3:920373009484:key-pair/kennethhugo_key", + "fingerprint": "a0:93:64:56:10:f9:c5:24:e8:83:68:f5:4f:db:83:fd", + "id": "kennethhugo_key", + "key_name": "kennethhugo_key", + "key_name_prefix": "", + "key_pair_id": "key-04e026cd6bf95d78f", + "key_type": "rsa", + "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCdgUoVRIPCQHlBoaz6UfrvQ4gw2sxeV3PIgCmCSXUW+I9beSfrBs4ELbiuUsV33Y8rKRNQBxa60+J0bEwNtIXRARN7bfdVmukoIJ/LBPcj1XzjmcVE4RJCxSRQbiMYnbUG6Ps5m1sMXsGf0WoPuXIsYoRKHa4QtcqSqqm/G/BW4a0Kvwdfww2dYCKhNoniSPAnDGPowQpGzTc3nvO/ED7polY9T1b6kqaw5WSCWic/qUfgJ2Lxn+bus72vgelhqZhFSqJgTL2e3xPmqtmrUO/4U2kjF3YH120syEfvQFIg/PozQqfkupbDPB1Cx7/1ThZLpJT5Dv1I/kCuZQuNNZj7", + "tags": {}, + "tags_all": {} + }, + "sensitive_attributes": [], + "private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ==" + } + ] + }, + { + "mode": "managed", + "type": "aws_security_group", + "name": "ec2", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 1, + "attributes": { + "arn": "arn:aws:ec2:eu-west-3:920373009484:security-group/sg-021210d8e4366b0bd", + "description": "ec2 Security Group", + "egress": [], + "id": "sg-021210d8e4366b0bd", + "ingress": [], + "name": "KENNETHHUGO_SG_EC2", + "name_prefix": "", + "owner_id": "920373009484", + "revoke_rules_on_delete": false, + "tags": { + "Name": "KENNETHHUGO_SG_EC2" + }, + "tags_all": { + "Name": "KENNETHHUGO_SG_EC2" + }, + "timeouts": null, + "vpc_id": "vpc-08da87242304c9723" + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6OTAwMDAwMDAwMDAwfSwic2NoZW1hX3ZlcnNpb24iOiIxIn0=", + "dependencies": [ + "data.aws_vpc.selected" + ], + "create_before_destroy": true + } + ] + }, { "mode": "managed", "type": "aws_security_group", @@ -500,24 +914,24 @@ { "schema_version": 1, "attributes": { - "arn": "arn:aws:ec2:eu-west-3:920373009484:security-group/sg-05f936ba39fe9b5df", + "arn": "arn:aws:ec2:eu-west-3:920373009484:security-group/sg-08abb0531ca48d02b", "description": "Managed by Terraform", "egress": [ { "cidr_blocks": [ "0.0.0.0/0" ], - "description": "", - "from_port": 0, + "description": "Allow traffic to RDS (5432)", + "from_port": 5432, "ipv6_cidr_blocks": [], "prefix_list_ids": [], - "protocol": "-1", + "protocol": "tcp", "security_groups": [], "self": false, - "to_port": 0 + "to_port": 5432 } ], - "id": "sg-05f936ba39fe9b5df", + "id": "sg-08abb0531ca48d02b", "ingress": [ { "cidr_blocks": [], @@ -527,7 +941,8 @@ "prefix_list_ids": [], "protocol": "tcp", "security_groups": [ - "sg-043047f953fdfcc59" + "sg-046489925f564ec8c", + "sg-0a7ccf14d1b6468fa" ], "self": false, "to_port": 5000 @@ -550,6 +965,7 @@ "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6OTAwMDAwMDAwMDAwfSwic2NoZW1hX3ZlcnNpb24iOiIxIn0=", "dependencies": [ "aws_security_group.sg_client", + "data.aws_security_group.bastion", "data.aws_vpc.this" ] } @@ -564,35 +980,33 @@ { "schema_version": 1, "attributes": { - "arn": "arn:aws:ec2:eu-west-3:920373009484:security-group/sg-043047f953fdfcc59", + "arn": "arn:aws:ec2:eu-west-3:920373009484:security-group/sg-046489925f564ec8c", "description": "Managed by Terraform", "egress": [ { - "cidr_blocks": [ - "0.0.0.0/0" - ], + "cidr_blocks": [], "description": "", - "from_port": 0, + "from_port": 80, "ipv6_cidr_blocks": [], "prefix_list_ids": [], - "protocol": "-1", + "protocol": "tcp", "security_groups": [], "self": false, - "to_port": 0 + "to_port": 80 } ], - "id": "sg-043047f953fdfcc59", + "id": "sg-046489925f564ec8c", "ingress": [ { - "cidr_blocks": [ - "0.0.0.0/0" - ], + "cidr_blocks": [], "description": "Allow HTTP from anywhere", "from_port": 80, "ipv6_cidr_blocks": [], "prefix_list_ids": [], "protocol": "tcp", - "security_groups": [], + "security_groups": [ + "sg-0a7ccf14d1b6468fa" + ], "self": false, "to_port": 80 } @@ -613,6 +1027,7 @@ "sensitive_attributes": [], "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6OTAwMDAwMDAwMDAwfSwic2NoZW1hX3ZlcnNpb24iOiIxIn0=", "dependencies": [ + "data.aws_security_group.bastion", "data.aws_vpc.this" ] } @@ -627,7 +1042,7 @@ { "schema_version": 1, "attributes": { - "arn": "arn:aws:ec2:eu-west-3:920373009484:security-group/sg-0201132761d5986da", + "arn": "arn:aws:ec2:eu-west-3:920373009484:security-group/sg-0501c21c134e1b1e5", "description": "Managed by Terraform", "egress": [ { @@ -644,7 +1059,7 @@ "to_port": 0 } ], - "id": "sg-0201132761d5986da", + "id": "sg-0501c21c134e1b1e5", "ingress": [ { "cidr_blocks": [], @@ -654,7 +1069,8 @@ "prefix_list_ids": [], "protocol": "tcp", "security_groups": [ - "sg-05f936ba39fe9b5df" + "sg-08abb0531ca48d02b", + "sg-0a7ccf14d1b6468fa" ], "self": false, "to_port": 5432 @@ -678,6 +1094,76 @@ "dependencies": [ "aws_security_group.sg_api", "aws_security_group.sg_client", + "data.aws_security_group.bastion", + "data.aws_vpc.this" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_security_group_rule", + "name": "allow_ec2_to_bastion", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 2, + "attributes": { + "cidr_blocks": null, + "description": null, + "from_port": 22, + "id": "sgrule-2888270446", + "ipv6_cidr_blocks": null, + "prefix_list_ids": null, + "protocol": "tcp", + "security_group_id": "sg-021210d8e4366b0bd", + "security_group_rule_id": "sgr-0bd2166515e8bdb08", + "self": false, + "source_security_group_id": "sg-0a7ccf14d1b6468fa", + "timeouts": null, + "to_port": 22, + "type": "ingress" + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjozMDAwMDAwMDAwMDB9LCJzY2hlbWFfdmVyc2lvbiI6IjIifQ==", + "dependencies": [ + "aws_security_group.ec2", + "data.aws_security_group.bastion", + "data.aws_vpc.selected" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_security_group_rule", + "name": "ssh_api_from_bastion", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 2, + "attributes": { + "cidr_blocks": null, + "description": "SSH from Bastion to API", + "from_port": 22, + "id": "sgrule-922087700", + "ipv6_cidr_blocks": null, + "prefix_list_ids": null, + "protocol": "tcp", + "security_group_id": "sg-08abb0531ca48d02b", + "security_group_rule_id": "sgr-021ea52c24d07985f", + "self": false, + "source_security_group_id": "sg-0a7ccf14d1b6468fa", + "timeouts": null, + "to_port": 22, + "type": "ingress" + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjozMDAwMDAwMDAwMDB9LCJzY2hlbWFfdmVyc2lvbiI6IjIifQ==", + "dependencies": [ + "aws_security_group.sg_api", + "aws_security_group.sg_client", + "data.aws_security_group.bastion", "data.aws_vpc.this" ] } @@ -692,7 +1178,7 @@ { "schema_version": 1, "attributes": { - "arn": "arn:aws:ec2:eu-west-3:920373009484:subnet/subnet-098844236bb248009", + "arn": "arn:aws:ec2:eu-west-3:920373009484:subnet/subnet-063715ef5e9c6cb64", "assign_ipv6_address_on_creation": false, "availability_zone": "eu-west-3a", "availability_zone_id": "euw3-az1", @@ -702,7 +1188,7 @@ "enable_lni_at_device_index": 0, "enable_resource_name_dns_a_record_on_launch": false, "enable_resource_name_dns_aaaa_record_on_launch": false, - "id": "subnet-098844236bb248009", + "id": "subnet-063715ef5e9c6cb64", "ipv6_cidr_block": "", "ipv6_cidr_block_association_id": "", "ipv6_native": false, @@ -738,7 +1224,7 @@ { "schema_version": 1, "attributes": { - "arn": "arn:aws:ec2:eu-west-3:920373009484:subnet/subnet-05a7ea15f5fbd3e4b", + "arn": "arn:aws:ec2:eu-west-3:920373009484:subnet/subnet-0052f34d50c7c6db5", "assign_ipv6_address_on_creation": false, "availability_zone": "eu-west-3b", "availability_zone_id": "euw3-az2", @@ -748,7 +1234,7 @@ "enable_lni_at_device_index": 0, "enable_resource_name_dns_a_record_on_launch": false, "enable_resource_name_dns_aaaa_record_on_launch": false, - "id": "subnet-05a7ea15f5fbd3e4b", + "id": "subnet-0052f34d50c7c6db5", "ipv6_cidr_block": "", "ipv6_cidr_block_association_id": "", "ipv6_native": false, diff --git a/terraform_VPC/terraform.tfstate.d/DEV/terraform.tfstate.backup b/terraform_VPC/terraform.tfstate.d/DEV/terraform.tfstate.backup index e31167c..efea968 100644 --- a/terraform_VPC/terraform.tfstate.d/DEV/terraform.tfstate.backup +++ b/terraform_VPC/terraform.tfstate.d/DEV/terraform.tfstate.backup @@ -1,9 +1,1114 @@ { "version": 4, "terraform_version": "1.10.5", - "serial": 61, + "serial": 108, "lineage": "eded4345-a67f-9a4a-9ad8-c68c205f47c2", "outputs": {}, - "resources": [], + "resources": [ + { + "mode": "data", + "type": "aws_ami", + "name": "amazon_linux_2", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "architecture": "x86_64", + "arn": "arn:aws:ec2:eu-west-3::image/ami-03f3bb80e24b71cd8", + "block_device_mappings": [ + { + "device_name": "/dev/xvda", + "ebs": { + "delete_on_termination": "true", + "encrypted": "false", + "iops": "0", + "snapshot_id": "snap-07655f7a65903bcc5", + "throughput": "0", + "volume_size": "8", + "volume_type": "gp2" + }, + "no_device": "", + "virtual_name": "" + } + ], + "boot_mode": "", + "creation_date": "2025-01-23T03:26:36.000Z", + "deprecation_time": "2025-07-01T00:00:00.000Z", + "description": "Amazon Linux 2 AMI 2.0.20250123.4 x86_64 HVM gp2", + "ena_support": true, + "executable_users": null, + "filter": [ + { + "name": "name", + "values": [ + "amzn2-ami-hvm*" + ] + }, + { + "name": "owner-alias", + "values": [ + "amazon" + ] + } + ], + "hypervisor": "xen", + "id": "ami-03f3bb80e24b71cd8", + "image_id": "ami-03f3bb80e24b71cd8", + "image_location": "amazon/amzn2-ami-hvm-2.0.20250123.4-x86_64-gp2", + "image_owner_alias": "amazon", + "image_type": "machine", + "imds_support": "", + "include_deprecated": false, + "kernel_id": "", + "most_recent": true, + "name": "amzn2-ami-hvm-2.0.20250123.4-x86_64-gp2", + "name_regex": null, + "owner_id": "137112412989", + "owners": null, + "platform": "", + "platform_details": "Linux/UNIX", + "product_codes": [], + "public": true, + "ramdisk_id": "", + "root_device_name": "/dev/xvda", + "root_device_type": "ebs", + "root_snapshot_id": "snap-07655f7a65903bcc5", + "sriov_net_support": "simple", + "state": "available", + "state_reason": { + "code": "UNSET", + "message": "UNSET" + }, + "tags": {}, + "timeouts": null, + "tpm_support": "", + "uefi_data": null, + "usage_operation": "RunInstances", + "virtualization_type": "hvm" + }, + "sensitive_attributes": [] + } + ] + }, + { + "mode": "data", + "type": "aws_availability_zones", + "name": "available", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "all_availability_zones": null, + "exclude_names": null, + "exclude_zone_ids": null, + "filter": null, + "group_names": [ + "eu-west-3-zg-1" + ], + "id": "eu-west-3", + "names": [ + "eu-west-3a", + "eu-west-3b", + "eu-west-3c" + ], + "state": "available", + "timeouts": null, + "zone_ids": [ + "euw3-az1", + "euw3-az2", + "euw3-az3" + ] + }, + "sensitive_attributes": [] + } + ] + }, + { + "mode": "data", + "type": "aws_security_group", + "name": "bastion", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "arn": "arn:aws:ec2:eu-west-3:920373009484:security-group/sg-0a7ccf14d1b6468fa", + "description": "ec2 Security Group", + "filter": [ + { + "name": "tag:Name", + "values": [ + "SG_BASTION_EC2" + ] + } + ], + "id": "sg-0a7ccf14d1b6468fa", + "name": "SG_BASTION_EC2", + "tags": { + "Name": "SG_BASTION_EC2" + }, + "timeouts": null, + "vpc_id": "vpc-08da87242304c9723" + }, + "sensitive_attributes": [] + } + ] + }, + { + "mode": "data", + "type": "aws_subnet", + "name": "private-a", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "arn": "arn:aws:ec2:eu-west-3:920373009484:subnet/subnet-002aaa6589cef6028", + "assign_ipv6_address_on_creation": false, + "availability_zone": "eu-west-3a", + "availability_zone_id": "euw3-az1", + "available_ip_address_count": 241, + "cidr_block": "10.0.1.0/24", + "customer_owned_ipv4_pool": "", + "default_for_az": false, + "enable_dns64": false, + "enable_lni_at_device_index": 0, + "enable_resource_name_dns_a_record_on_launch": false, + "enable_resource_name_dns_aaaa_record_on_launch": false, + "filter": [ + { + "name": "tag:Name", + "values": [ + "PRIVATE_SUBNET_A" + ] + } + ], + "id": "subnet-002aaa6589cef6028", + "ipv6_cidr_block": "", + "ipv6_cidr_block_association_id": "", + "ipv6_native": false, + "map_customer_owned_ip_on_launch": false, + "map_public_ip_on_launch": false, + "outpost_arn": "", + "owner_id": "920373009484", + "private_dns_hostname_type_on_launch": "ip-name", + "state": "available", + "tags": { + "Name": "PRIVATE_SUBNET_A", + "Private": "yes" + }, + "timeouts": null, + "vpc_id": "vpc-08da87242304c9723" + }, + "sensitive_attributes": [] + } + ] + }, + { + "mode": "data", + "type": "aws_subnet", + "name": "private-b", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "arn": "arn:aws:ec2:eu-west-3:920373009484:subnet/subnet-0fc06a60f4305264c", + "assign_ipv6_address_on_creation": false, + "availability_zone": "eu-west-3b", + "availability_zone_id": "euw3-az2", + "available_ip_address_count": 246, + "cidr_block": "10.0.2.0/24", + "customer_owned_ipv4_pool": "", + "default_for_az": false, + "enable_dns64": false, + "enable_lni_at_device_index": 0, + "enable_resource_name_dns_a_record_on_launch": false, + "enable_resource_name_dns_aaaa_record_on_launch": false, + "filter": [ + { + "name": "tag:Name", + "values": [ + "PRIVATE_SUBNET_B" + ] + } + ], + "id": "subnet-0fc06a60f4305264c", + "ipv6_cidr_block": "", + "ipv6_cidr_block_association_id": "", + "ipv6_native": false, + "map_customer_owned_ip_on_launch": false, + "map_public_ip_on_launch": false, + "outpost_arn": "", + "owner_id": "920373009484", + "private_dns_hostname_type_on_launch": "ip-name", + "state": "available", + "tags": { + "Name": "PRIVATE_SUBNET_B", + "Private": "yes" + }, + "timeouts": null, + "vpc_id": "vpc-08da87242304c9723" + }, + "sensitive_attributes": [] + } + ] + }, + { + "mode": "data", + "type": "aws_subnet", + "name": "public", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "arn": "arn:aws:ec2:eu-west-3:920373009484:subnet/subnet-0d9d21b769bca92d7", + "assign_ipv6_address_on_creation": false, + "availability_zone": "eu-west-3a", + "availability_zone_id": "euw3-az1", + "available_ip_address_count": 248, + "cidr_block": "10.0.0.0/24", + "customer_owned_ipv4_pool": "", + "default_for_az": false, + "enable_dns64": false, + "enable_lni_at_device_index": 0, + "enable_resource_name_dns_a_record_on_launch": false, + "enable_resource_name_dns_aaaa_record_on_launch": false, + "filter": [ + { + "name": "tag:Name", + "values": [ + "PUBLIC_SUBNET" + ] + } + ], + "id": "subnet-0d9d21b769bca92d7", + "ipv6_cidr_block": "", + "ipv6_cidr_block_association_id": "", + "ipv6_native": false, + "map_customer_owned_ip_on_launch": false, + "map_public_ip_on_launch": false, + "outpost_arn": "", + "owner_id": "920373009484", + "private_dns_hostname_type_on_launch": "ip-name", + "state": "available", + "tags": { + "Name": "PUBLIC_SUBNET", + "Private": "no" + }, + "timeouts": null, + "vpc_id": "vpc-08da87242304c9723" + }, + "sensitive_attributes": [] + } + ] + }, + { + "mode": "data", + "type": "aws_vpc", + "name": "this", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "arn": "arn:aws:ec2:eu-west-3:920373009484:vpc/vpc-08da87242304c9723", + "cidr_block": "10.0.0.0/16", + "cidr_block_associations": [ + { + "association_id": "vpc-cidr-assoc-0fd519069ef9f4ba9", + "cidr_block": "10.0.0.0/16", + "state": "associated" + } + ], + "default": false, + "dhcp_options_id": "dopt-06fac3b0fae017c99", + "enable_dns_hostnames": false, + "enable_dns_support": true, + "enable_network_address_usage_metrics": false, + "filter": [ + { + "name": "tag:Name", + "values": [ + "VPC" + ] + } + ], + "id": "vpc-08da87242304c9723", + "instance_tenancy": "default", + "ipv6_association_id": "", + "ipv6_cidr_block": "", + "main_route_table_id": "rtb-06b8cc99d46258d59", + "owner_id": "920373009484", + "state": null, + "tags": { + "Name": "VPC" + }, + "timeouts": null + }, + "sensitive_attributes": [] + } + ] + }, + { + "mode": "managed", + "type": "aws_db_instance", + "name": "mydb", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 2, + "attributes": { + "address": "kennethhugo-dev-rds-instance.cx4q20s8stp5.eu-west-3.rds.amazonaws.com", + "allocated_storage": 5, + "allow_major_version_upgrade": null, + "apply_immediately": false, + "arn": "arn:aws:rds:eu-west-3:920373009484:db:kennethhugo-dev-rds-instance", + "auto_minor_version_upgrade": true, + "availability_zone": "eu-west-3a", + "backup_retention_period": 0, + "backup_target": "region", + "backup_window": "08:12-08:42", + "blue_green_update": [], + "ca_cert_identifier": "rds-ca-rsa2048-g1", + "character_set_name": "", + "copy_tags_to_snapshot": false, + "custom_iam_instance_profile": "", + "customer_owned_ip_enabled": false, + "db_name": "mydb_HK", + "db_subnet_group_name": "kennethhugo_dev_rds_subnet_group", + "dedicated_log_volume": false, + "delete_automated_backups": true, + "deletion_protection": false, + "domain": "", + "domain_auth_secret_arn": "", + "domain_dns_ips": [], + "domain_fqdn": "", + "domain_iam_role_name": "", + "domain_ou": "", + "enabled_cloudwatch_logs_exports": [], + "endpoint": "kennethhugo-dev-rds-instance.cx4q20s8stp5.eu-west-3.rds.amazonaws.com:5432", + "engine": "postgres", + "engine_lifecycle_support": "open-source-rds-extended-support", + "engine_version": "14.15", + "engine_version_actual": "14.15", + "final_snapshot_identifier": null, + "hosted_zone_id": "ZMESEXB7ZGGQ3", + "iam_database_authentication_enabled": false, + "id": "db-OVJD44ND4UJCBJPN7LPVEZT6CE", + "identifier": "kennethhugo-dev-rds-instance", + "identifier_prefix": "", + "instance_class": "db.t3.micro", + "iops": 0, + "kms_key_id": "", + "latest_restorable_time": "", + "license_model": "postgresql-license", + "listener_endpoint": [], + "maintenance_window": "sun:05:13-sun:05:43", + "manage_master_user_password": null, + "master_user_secret": [], + "master_user_secret_kms_key_id": null, + "max_allocated_storage": 0, + "monitoring_interval": 0, + "monitoring_role_arn": "", + "multi_az": false, + "nchar_character_set_name": "", + "network_type": "IPV4", + "option_group_name": "default:postgres-14", + "parameter_group_name": "default.postgres14", + "password": "mysecretpassword", + "performance_insights_enabled": false, + "performance_insights_kms_key_id": "", + "performance_insights_retention_period": 0, + "port": 5432, + "publicly_accessible": false, + "replica_mode": "", + "replicas": [], + "replicate_source_db": "", + "resource_id": "db-OVJD44ND4UJCBJPN7LPVEZT6CE", + "restore_to_point_in_time": [], + "s3_import": [], + "skip_final_snapshot": true, + "snapshot_identifier": null, + "status": "available", + "storage_encrypted": false, + "storage_throughput": 0, + "storage_type": "gp2", + "tags": { + "Name": "KENNETHHUGO_DEV_RDS_INSTANCE" + }, + "tags_all": { + "Name": "KENNETHHUGO_DEV_RDS_INSTANCE" + }, + "timeouts": null, + "timezone": "", + "upgrade_storage_config": null, + "username": "postgres", + "vpc_security_group_ids": [ + "sg-0501c21c134e1b1e5" + ] + }, + "sensitive_attributes": [ + [ + { + "type": "get_attr", + "value": "password" + } + ] + ], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjozMDAwMDAwMDAwMDAwLCJkZWxldGUiOjM2MDAwMDAwMDAwMDAsInVwZGF0ZSI6NDgwMDAwMDAwMDAwMH0sInNjaGVtYV92ZXJzaW9uIjoiMiJ9", + "dependencies": [ + "aws_db_subnet_group.this", + "aws_security_group.sg_api", + "aws_security_group.sg_client", + "aws_security_group.sg_rds", + "aws_subnet.private_subnet_a", + "aws_subnet.private_subnet_b", + "data.aws_availability_zones.available", + "data.aws_security_group.bastion", + "data.aws_vpc.this" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_db_subnet_group", + "name": "this", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 0, + "attributes": { + "arn": "arn:aws:rds:eu-west-3:920373009484:subgrp:kennethhugo_dev_rds_subnet_group", + "description": "Managed by Terraform", + "id": "kennethhugo_dev_rds_subnet_group", + "name": "kennethhugo_dev_rds_subnet_group", + "name_prefix": "", + "subnet_ids": [ + "subnet-0052f34d50c7c6db5", + "subnet-063715ef5e9c6cb64" + ], + "supported_network_types": [ + "IPV4" + ], + "tags": { + "Name": "KENNETHHUGO_DEV_RDS_SUBNET_GROUP" + }, + "tags_all": { + "Name": "KENNETHHUGO_DEV_RDS_SUBNET_GROUP" + }, + "vpc_id": "vpc-08da87242304c9723" + }, + "sensitive_attributes": [], + "private": "bnVsbA==", + "dependencies": [ + "aws_subnet.private_subnet_a", + "aws_subnet.private_subnet_b", + "data.aws_availability_zones.available", + "data.aws_vpc.this" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_instance", + "name": "api", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 1, + "attributes": { + "ami": "ami-03f3bb80e24b71cd8", + "arn": "arn:aws:ec2:eu-west-3:920373009484:instance/i-04e9a490e913eb4aa", + "associate_public_ip_address": false, + "availability_zone": "eu-west-3a", + "capacity_reservation_specification": [ + { + "capacity_reservation_preference": "open", + "capacity_reservation_target": [] + } + ], + "cpu_core_count": 1, + "cpu_options": [ + { + "amd_sev_snp": "", + "core_count": 1, + "threads_per_core": 1 + } + ], + "cpu_threads_per_core": 1, + "credit_specification": [ + { + "cpu_credits": "standard" + } + ], + "disable_api_stop": false, + "disable_api_termination": false, + "ebs_block_device": [], + "ebs_optimized": false, + "enable_primary_ipv6": null, + "enclave_options": [ + { + "enabled": false + } + ], + "ephemeral_block_device": [], + "get_password_data": false, + "hibernation": false, + "host_id": "", + "host_resource_group_arn": null, + "iam_instance_profile": "", + "id": "i-04e9a490e913eb4aa", + "instance_initiated_shutdown_behavior": "stop", + "instance_lifecycle": "", + "instance_market_options": [], + "instance_state": "running", + "instance_type": "t2.micro", + "ipv6_address_count": 0, + "ipv6_addresses": [], + "key_name": "kennethhugo_key", + "launch_template": [], + "maintenance_options": [ + { + "auto_recovery": "default" + } + ], + "metadata_options": [ + { + "http_endpoint": "enabled", + "http_protocol_ipv6": "disabled", + "http_put_response_hop_limit": 1, + "http_tokens": "optional", + "instance_metadata_tags": "disabled" + } + ], + "monitoring": false, + "network_interface": [], + "outpost_arn": "", + "password_data": "", + "placement_group": "", + "placement_partition_number": 0, + "primary_network_interface_id": "eni-043877caa26c09fd3", + "private_dns": "ip-10-0-35-75.eu-west-3.compute.internal", + "private_dns_name_options": [ + { + "enable_resource_name_dns_a_record": false, + "enable_resource_name_dns_aaaa_record": false, + "hostname_type": "ip-name" + } + ], + "private_ip": "10.0.35.75", + "public_dns": "", + "public_ip": "", + "root_block_device": [ + { + "delete_on_termination": true, + "device_name": "/dev/xvda", + "encrypted": false, + "iops": 100, + "kms_key_id": "", + "tags": {}, + "tags_all": {}, + "throughput": 0, + "volume_id": "vol-0018f0ca34c3fd476", + "volume_size": 8, + "volume_type": "gp2" + } + ], + "secondary_private_ips": [], + "security_groups": [], + "source_dest_check": true, + "spot_instance_request_id": "", + "subnet_id": "subnet-063715ef5e9c6cb64", + "tags": { + "Name": "KENNETHHUGO_DEV_API_VM" + }, + "tags_all": { + "Name": "KENNETHHUGO_DEV_API_VM" + }, + "tenancy": "default", + "timeouts": null, + "user_data": null, + "user_data_base64": null, + "user_data_replace_on_change": false, + "volume_tags": null, + "vpc_security_group_ids": [ + "sg-08abb0531ca48d02b" + ] + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6MTIwMDAwMDAwMDAwMCwicmVhZCI6OTAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH0sInNjaGVtYV92ZXJzaW9uIjoiMSJ9", + "dependencies": [ + "aws_key_pair.ec2", + "aws_security_group.sg_api", + "aws_security_group.sg_client", + "aws_subnet.private_subnet_a", + "data.aws_ami.amazon_linux_2", + "data.aws_availability_zones.available", + "data.aws_security_group.bastion", + "data.aws_vpc.this" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_instance", + "name": "client", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 1, + "attributes": { + "ami": "ami-03f3bb80e24b71cd8", + "arn": "arn:aws:ec2:eu-west-3:920373009484:instance/i-02e813c204183c9ab", + "associate_public_ip_address": false, + "availability_zone": "eu-west-3a", + "capacity_reservation_specification": [ + { + "capacity_reservation_preference": "open", + "capacity_reservation_target": [] + } + ], + "cpu_core_count": 1, + "cpu_options": [ + { + "amd_sev_snp": "", + "core_count": 1, + "threads_per_core": 1 + } + ], + "cpu_threads_per_core": 1, + "credit_specification": [ + { + "cpu_credits": "standard" + } + ], + "disable_api_stop": false, + "disable_api_termination": false, + "ebs_block_device": [], + "ebs_optimized": false, + "enable_primary_ipv6": null, + "enclave_options": [ + { + "enabled": false + } + ], + "ephemeral_block_device": [], + "get_password_data": false, + "hibernation": false, + "host_id": "", + "host_resource_group_arn": null, + "iam_instance_profile": "", + "id": "i-02e813c204183c9ab", + "instance_initiated_shutdown_behavior": "stop", + "instance_lifecycle": "", + "instance_market_options": [], + "instance_state": "running", + "instance_type": "t2.micro", + "ipv6_address_count": 0, + "ipv6_addresses": [], + "key_name": "kennethhugo_key", + "launch_template": [], + "maintenance_options": [ + { + "auto_recovery": "default" + } + ], + "metadata_options": [ + { + "http_endpoint": "enabled", + "http_protocol_ipv6": "disabled", + "http_put_response_hop_limit": 1, + "http_tokens": "optional", + "instance_metadata_tags": "disabled" + } + ], + "monitoring": false, + "network_interface": [], + "outpost_arn": "", + "password_data": "", + "placement_group": "", + "placement_partition_number": 0, + "primary_network_interface_id": "eni-0ac8c529a1deb3ebb", + "private_dns": "ip-10-0-35-59.eu-west-3.compute.internal", + "private_dns_name_options": [ + { + "enable_resource_name_dns_a_record": false, + "enable_resource_name_dns_aaaa_record": false, + "hostname_type": "ip-name" + } + ], + "private_ip": "10.0.35.59", + "public_dns": "", + "public_ip": "", + "root_block_device": [ + { + "delete_on_termination": true, + "device_name": "/dev/xvda", + "encrypted": false, + "iops": 100, + "kms_key_id": "", + "tags": {}, + "tags_all": {}, + "throughput": 0, + "volume_id": "vol-0ef9ef21efc35bacc", + "volume_size": 8, + "volume_type": "gp2" + } + ], + "secondary_private_ips": [], + "security_groups": [], + "source_dest_check": true, + "spot_instance_request_id": "", + "subnet_id": "subnet-063715ef5e9c6cb64", + "tags": { + "Name": "KENNETHHUGO_DEV_CLIENT_VM" + }, + "tags_all": { + "Name": "KENNETHHUGO_DEV_CLIENT_VM" + }, + "tenancy": "default", + "timeouts": null, + "user_data": null, + "user_data_base64": null, + "user_data_replace_on_change": false, + "volume_tags": null, + "vpc_security_group_ids": [ + "sg-046489925f564ec8c" + ] + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6MTIwMDAwMDAwMDAwMCwicmVhZCI6OTAwMDAwMDAwMDAwLCJ1cGRhdGUiOjYwMDAwMDAwMDAwMH0sInNjaGVtYV92ZXJzaW9uIjoiMSJ9", + "dependencies": [ + "aws_key_pair.ec2", + "aws_security_group.sg_client", + "aws_subnet.private_subnet_a", + "data.aws_ami.amazon_linux_2", + "data.aws_availability_zones.available", + "data.aws_security_group.bastion", + "data.aws_vpc.this" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_key_pair", + "name": "ec2", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 1, + "attributes": { + "arn": "arn:aws:ec2:eu-west-3:920373009484:key-pair/kennethhugo_key", + "fingerprint": "a0:93:64:56:10:f9:c5:24:e8:83:68:f5:4f:db:83:fd", + "id": "kennethhugo_key", + "key_name": "kennethhugo_key", + "key_name_prefix": "", + "key_pair_id": "key-04e026cd6bf95d78f", + "key_type": "rsa", + "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCdgUoVRIPCQHlBoaz6UfrvQ4gw2sxeV3PIgCmCSXUW+I9beSfrBs4ELbiuUsV33Y8rKRNQBxa60+J0bEwNtIXRARN7bfdVmukoIJ/LBPcj1XzjmcVE4RJCxSRQbiMYnbUG6Ps5m1sMXsGf0WoPuXIsYoRKHa4QtcqSqqm/G/BW4a0Kvwdfww2dYCKhNoniSPAnDGPowQpGzTc3nvO/ED7polY9T1b6kqaw5WSCWic/qUfgJ2Lxn+bus72vgelhqZhFSqJgTL2e3xPmqtmrUO/4U2kjF3YH120syEfvQFIg/PozQqfkupbDPB1Cx7/1ThZLpJT5Dv1I/kCuZQuNNZj7", + "tags": null, + "tags_all": {} + }, + "sensitive_attributes": [], + "private": "eyJzY2hlbWFfdmVyc2lvbiI6IjEifQ==" + } + ] + }, + { + "mode": "managed", + "type": "aws_security_group", + "name": "sg_api", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 1, + "attributes": { + "arn": "arn:aws:ec2:eu-west-3:920373009484:security-group/sg-08abb0531ca48d02b", + "description": "Managed by Terraform", + "egress": [ + { + "cidr_blocks": [ + "0.0.0.0/0" + ], + "description": "Allow traffic to RDS (5432)", + "from_port": 5432, + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "protocol": "tcp", + "security_groups": [], + "self": false, + "to_port": 5432 + } + ], + "id": "sg-08abb0531ca48d02b", + "ingress": [ + { + "cidr_blocks": [], + "description": "Allow API requests from client", + "from_port": 5000, + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "protocol": "tcp", + "security_groups": [ + "sg-046489925f564ec8c", + "sg-0a7ccf14d1b6468fa" + ], + "self": false, + "to_port": 5000 + } + ], + "name": "KENNETHHUGO_DEV_SG_API", + "name_prefix": "", + "owner_id": "920373009484", + "revoke_rules_on_delete": false, + "tags": { + "Name": "KENNETHHUGO_DEV_SG_API" + }, + "tags_all": { + "Name": "KENNETHHUGO_DEV_SG_API" + }, + "timeouts": null, + "vpc_id": "vpc-08da87242304c9723" + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6OTAwMDAwMDAwMDAwfSwic2NoZW1hX3ZlcnNpb24iOiIxIn0=", + "dependencies": [ + "aws_security_group.sg_client", + "data.aws_security_group.bastion", + "data.aws_vpc.this" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_security_group", + "name": "sg_client", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 1, + "attributes": { + "arn": "arn:aws:ec2:eu-west-3:920373009484:security-group/sg-046489925f564ec8c", + "description": "Managed by Terraform", + "egress": [ + { + "cidr_blocks": [], + "description": "", + "from_port": 80, + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "protocol": "tcp", + "security_groups": [], + "self": false, + "to_port": 80 + } + ], + "id": "sg-046489925f564ec8c", + "ingress": [ + { + "cidr_blocks": [], + "description": "Allow HTTP from anywhere", + "from_port": 80, + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "protocol": "tcp", + "security_groups": [ + "sg-0a7ccf14d1b6468fa" + ], + "self": false, + "to_port": 80 + } + ], + "name": "KENNETHHUGO_DEV_SG_CLIENT", + "name_prefix": "", + "owner_id": "920373009484", + "revoke_rules_on_delete": false, + "tags": { + "Name": "KENNETHHUGO_DEV_SG_CLIENT" + }, + "tags_all": { + "Name": "KENNETHHUGO_DEV_SG_CLIENT" + }, + "timeouts": null, + "vpc_id": "vpc-08da87242304c9723" + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6OTAwMDAwMDAwMDAwfSwic2NoZW1hX3ZlcnNpb24iOiIxIn0=", + "dependencies": [ + "data.aws_security_group.bastion", + "data.aws_vpc.this" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_security_group", + "name": "sg_rds", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 1, + "attributes": { + "arn": "arn:aws:ec2:eu-west-3:920373009484:security-group/sg-0501c21c134e1b1e5", + "description": "Managed by Terraform", + "egress": [ + { + "cidr_blocks": [ + "0.0.0.0/0" + ], + "description": "", + "from_port": 0, + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "protocol": "-1", + "security_groups": [], + "self": false, + "to_port": 0 + } + ], + "id": "sg-0501c21c134e1b1e5", + "ingress": [ + { + "cidr_blocks": [], + "description": "Allow Postgres from API", + "from_port": 5432, + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "protocol": "tcp", + "security_groups": [ + "sg-08abb0531ca48d02b", + "sg-0a7ccf14d1b6468fa" + ], + "self": false, + "to_port": 5432 + } + ], + "name": "KENNETHHUGO_DEV_SG_RDS", + "name_prefix": "", + "owner_id": "920373009484", + "revoke_rules_on_delete": false, + "tags": { + "Name": "KENNETHHUGO_DEV_SG_RDS" + }, + "tags_all": { + "Name": "KENNETHHUGO_DEV_SG_RDS" + }, + "timeouts": null, + "vpc_id": "vpc-08da87242304c9723" + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6OTAwMDAwMDAwMDAwfSwic2NoZW1hX3ZlcnNpb24iOiIxIn0=", + "dependencies": [ + "aws_security_group.sg_api", + "aws_security_group.sg_client", + "data.aws_security_group.bastion", + "data.aws_vpc.this" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_subnet", + "name": "private_subnet_a", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 1, + "attributes": { + "arn": "arn:aws:ec2:eu-west-3:920373009484:subnet/subnet-063715ef5e9c6cb64", + "assign_ipv6_address_on_creation": false, + "availability_zone": "eu-west-3a", + "availability_zone_id": "euw3-az1", + "cidr_block": "10.0.35.0/24", + "customer_owned_ipv4_pool": "", + "enable_dns64": false, + "enable_lni_at_device_index": 0, + "enable_resource_name_dns_a_record_on_launch": false, + "enable_resource_name_dns_aaaa_record_on_launch": false, + "id": "subnet-063715ef5e9c6cb64", + "ipv6_cidr_block": "", + "ipv6_cidr_block_association_id": "", + "ipv6_native": false, + "map_customer_owned_ip_on_launch": false, + "map_public_ip_on_launch": false, + "outpost_arn": "", + "owner_id": "920373009484", + "private_dns_hostname_type_on_launch": "ip-name", + "tags": { + "Name": "KENNETHHUGO_DEV_PRIVATE_SUBNET_A" + }, + "tags_all": { + "Name": "KENNETHHUGO_DEV_PRIVATE_SUBNET_A" + }, + "timeouts": null, + "vpc_id": "vpc-08da87242304c9723" + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6MTIwMDAwMDAwMDAwMH0sInNjaGVtYV92ZXJzaW9uIjoiMSJ9", + "dependencies": [ + "data.aws_availability_zones.available", + "data.aws_vpc.this" + ] + } + ] + }, + { + "mode": "managed", + "type": "aws_subnet", + "name": "private_subnet_b", + "provider": "provider[\"registry.terraform.io/hashicorp/aws\"]", + "instances": [ + { + "schema_version": 1, + "attributes": { + "arn": "arn:aws:ec2:eu-west-3:920373009484:subnet/subnet-0052f34d50c7c6db5", + "assign_ipv6_address_on_creation": false, + "availability_zone": "eu-west-3b", + "availability_zone_id": "euw3-az2", + "cidr_block": "10.0.36.0/24", + "customer_owned_ipv4_pool": "", + "enable_dns64": false, + "enable_lni_at_device_index": 0, + "enable_resource_name_dns_a_record_on_launch": false, + "enable_resource_name_dns_aaaa_record_on_launch": false, + "id": "subnet-0052f34d50c7c6db5", + "ipv6_cidr_block": "", + "ipv6_cidr_block_association_id": "", + "ipv6_native": false, + "map_customer_owned_ip_on_launch": false, + "map_public_ip_on_launch": true, + "outpost_arn": "", + "owner_id": "920373009484", + "private_dns_hostname_type_on_launch": "ip-name", + "tags": { + "Name": "KENNETHHUGO_DEV_PRIVATE_SUBNET_B" + }, + "tags_all": { + "Name": "KENNETHHUGO_DEV_PRIVATE_SUBNET_B" + }, + "timeouts": null, + "vpc_id": "vpc-08da87242304c9723" + }, + "sensitive_attributes": [], + "private": "eyJlMmJmYjczMC1lY2FhLTExZTYtOGY4OC0zNDM2M2JjN2M0YzAiOnsiY3JlYXRlIjo2MDAwMDAwMDAwMDAsImRlbGV0ZSI6MTIwMDAwMDAwMDAwMH0sInNjaGVtYV92ZXJzaW9uIjoiMSJ9", + "dependencies": [ + "data.aws_availability_zones.available", + "data.aws_vpc.this" + ] + } + ] + } + ], "check_results": null } -- GitLab