terraformgraph 1.0.2__py3-none-any.whl → 1.0.4__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
terraformgraph/icons.py CHANGED
@@ -4,7 +4,6 @@ AWS Icon Mapper
4
4
  Maps Terraform resource types to AWS architecture icons.
5
5
  """
6
6
 
7
- import base64
8
7
  from pathlib import Path
9
8
  from typing import Dict, Optional, Tuple
10
9
 
@@ -14,584 +13,582 @@ TERRAFORM_TO_ICON: Dict[str, Tuple[str, str]] = {
14
13
  # ==========================================================================
15
14
  # NETWORKING & CONTENT DELIVERY
16
15
  # ==========================================================================
17
- 'aws_vpc': ('Arch_Networking-Content-Delivery', 'Arch_Amazon-Virtual-Private-Cloud'),
18
- 'aws_subnet': ('Arch_Networking-Content-Delivery', 'Arch_Amazon-Virtual-Private-Cloud'),
19
- 'aws_internet_gateway': ('Arch_Networking-Content-Delivery', 'Arch_Amazon-Virtual-Private-Cloud'),
20
- 'aws_nat_gateway': ('Arch_Networking-Content-Delivery', 'Arch_Amazon-Virtual-Private-Cloud'),
21
- 'aws_route_table': ('Arch_Networking-Content-Delivery', 'Arch_Amazon-Virtual-Private-Cloud'),
22
- 'aws_route': ('Arch_Networking-Content-Delivery', 'Arch_Amazon-Virtual-Private-Cloud'),
23
- 'aws_route_table_association': ('Arch_Networking-Content-Delivery', 'Arch_Amazon-Virtual-Private-Cloud'),
24
- 'aws_eip': ('Arch_Networking-Content-Delivery', 'Arch_Amazon-Virtual-Private-Cloud'),
25
- 'aws_vpc_endpoint': ('Arch_Networking-Content-Delivery', 'Arch_AWS-PrivateLink'),
26
- 'aws_vpc_peering_connection': ('Arch_Networking-Content-Delivery', 'Arch_AWS-Transit-Gateway'),
27
- 'aws_transit_gateway': ('Arch_Networking-Content-Delivery', 'Arch_AWS-Transit-Gateway'),
28
- 'aws_transit_gateway_attachment': ('Arch_Networking-Content-Delivery', 'Arch_AWS-Transit-Gateway'),
29
- 'aws_vpn_gateway': ('Arch_Networking-Content-Delivery', 'Arch_AWS-Site-to-Site-VPN'),
30
- 'aws_vpn_connection': ('Arch_Networking-Content-Delivery', 'Arch_AWS-Site-to-Site-VPN'),
31
- 'aws_customer_gateway': ('Arch_Networking-Content-Delivery', 'Arch_AWS-Site-to-Site-VPN'),
32
- 'aws_dx_connection': ('Arch_Networking-Content-Delivery', 'Arch_AWS-Direct-Connect'),
33
- 'aws_vpc_lattice_service': ('Arch_Networking-Content-Delivery', 'Arch_Amazon-VPC-Lattice'),
34
-
16
+ "aws_vpc": ("Arch_Networking-Content-Delivery", "Arch_Amazon-Virtual-Private-Cloud"),
17
+ "aws_subnet": ("Arch_Networking-Content-Delivery", "Arch_Amazon-Virtual-Private-Cloud"),
18
+ "aws_internet_gateway": ("Res_Networking-Content-Delivery", "Res_Amazon-VPC_Internet-Gateway"),
19
+ "aws_nat_gateway": ("Res_Networking-Content-Delivery", "Res_Amazon-VPC_NAT-Gateway"),
20
+ "aws_route_table": ("Arch_Networking-Content-Delivery", "Arch_Amazon-Virtual-Private-Cloud"),
21
+ "aws_route": ("Arch_Networking-Content-Delivery", "Arch_Amazon-Virtual-Private-Cloud"),
22
+ "aws_route_table_association": (
23
+ "Arch_Networking-Content-Delivery",
24
+ "Arch_Amazon-Virtual-Private-Cloud",
25
+ ),
26
+ "aws_eip": ("Arch_Networking-Content-Delivery", "Arch_Amazon-Virtual-Private-Cloud"),
27
+ "aws_vpc_endpoint": ("Res_Networking-Content-Delivery", "Res_Amazon-VPC_Endpoints"),
28
+ "aws_vpc_peering_connection": ("Arch_Networking-Content-Delivery", "Arch_AWS-Transit-Gateway"),
29
+ "aws_transit_gateway": ("Arch_Networking-Content-Delivery", "Arch_AWS-Transit-Gateway"),
30
+ "aws_transit_gateway_attachment": (
31
+ "Arch_Networking-Content-Delivery",
32
+ "Arch_AWS-Transit-Gateway",
33
+ ),
34
+ "aws_vpn_gateway": ("Arch_Networking-Content-Delivery", "Arch_AWS-Site-to-Site-VPN"),
35
+ "aws_vpn_connection": ("Arch_Networking-Content-Delivery", "Arch_AWS-Site-to-Site-VPN"),
36
+ "aws_customer_gateway": ("Arch_Networking-Content-Delivery", "Arch_AWS-Site-to-Site-VPN"),
37
+ "aws_dx_connection": ("Arch_Networking-Content-Delivery", "Arch_AWS-Direct-Connect"),
38
+ "aws_vpc_lattice_service": ("Arch_Networking-Content-Delivery", "Arch_Amazon-VPC-Lattice"),
35
39
  # Load Balancing
36
- 'aws_lb': ('Arch_Networking-Content-Delivery', 'Arch_Elastic-Load-Balancing'),
37
- 'aws_alb': ('Arch_Networking-Content-Delivery', 'Arch_Elastic-Load-Balancing'),
38
- 'aws_elb': ('Arch_Networking-Content-Delivery', 'Arch_Elastic-Load-Balancing'),
39
- 'aws_lb_target_group': ('Arch_Networking-Content-Delivery', 'Arch_Elastic-Load-Balancing'),
40
- 'aws_lb_listener': ('Arch_Networking-Content-Delivery', 'Arch_Elastic-Load-Balancing'),
41
- 'aws_lb_listener_rule': ('Arch_Networking-Content-Delivery', 'Arch_Elastic-Load-Balancing'),
42
-
40
+ "aws_lb": ("Arch_Networking-Content-Delivery", "Arch_Elastic-Load-Balancing"),
41
+ "aws_alb": ("Arch_Networking-Content-Delivery", "Arch_Elastic-Load-Balancing"),
42
+ "aws_elb": ("Arch_Networking-Content-Delivery", "Arch_Elastic-Load-Balancing"),
43
+ "aws_lb_target_group": ("Arch_Networking-Content-Delivery", "Arch_Elastic-Load-Balancing"),
44
+ "aws_lb_listener": ("Arch_Networking-Content-Delivery", "Arch_Elastic-Load-Balancing"),
45
+ "aws_lb_listener_rule": ("Arch_Networking-Content-Delivery", "Arch_Elastic-Load-Balancing"),
43
46
  # DNS & CDN
44
- 'aws_route53_zone': ('Arch_Networking-Content-Delivery', 'Arch_Amazon-Route-53'),
45
- 'aws_route53_record': ('Arch_Networking-Content-Delivery', 'Arch_Amazon-Route-53'),
46
- 'aws_route53_health_check': ('Arch_Networking-Content-Delivery', 'Arch_Amazon-Route-53'),
47
- 'aws_cloudfront_distribution': ('Arch_Networking-Content-Delivery', 'Arch_Amazon-CloudFront'),
48
- 'aws_cloudfront_origin_access_identity': ('Arch_Networking-Content-Delivery', 'Arch_Amazon-CloudFront'),
49
- 'aws_cloudfront_origin_access_control': ('Arch_Networking-Content-Delivery', 'Arch_Amazon-CloudFront'),
50
- 'aws_cloudfront_function': ('Arch_Networking-Content-Delivery', 'Arch_Amazon-CloudFront'),
51
- 'aws_cloudfront_cache_policy': ('Arch_Networking-Content-Delivery', 'Arch_Amazon-CloudFront'),
52
-
47
+ "aws_route53_zone": ("Arch_Networking-Content-Delivery", "Arch_Amazon-Route-53"),
48
+ "aws_route53_record": ("Arch_Networking-Content-Delivery", "Arch_Amazon-Route-53"),
49
+ "aws_route53_health_check": ("Arch_Networking-Content-Delivery", "Arch_Amazon-Route-53"),
50
+ "aws_cloudfront_distribution": ("Arch_Networking-Content-Delivery", "Arch_Amazon-CloudFront"),
51
+ "aws_cloudfront_origin_access_identity": (
52
+ "Arch_Networking-Content-Delivery",
53
+ "Arch_Amazon-CloudFront",
54
+ ),
55
+ "aws_cloudfront_origin_access_control": (
56
+ "Arch_Networking-Content-Delivery",
57
+ "Arch_Amazon-CloudFront",
58
+ ),
59
+ "aws_cloudfront_function": ("Arch_Networking-Content-Delivery", "Arch_Amazon-CloudFront"),
60
+ "aws_cloudfront_cache_policy": ("Arch_Networking-Content-Delivery", "Arch_Amazon-CloudFront"),
53
61
  # API Gateway
54
- 'aws_api_gateway_rest_api': ('Arch_Networking-Content-Delivery', 'Arch_Amazon-API-Gateway'),
55
- 'aws_api_gateway_resource': ('Arch_Networking-Content-Delivery', 'Arch_Amazon-API-Gateway'),
56
- 'aws_api_gateway_method': ('Arch_Networking-Content-Delivery', 'Arch_Amazon-API-Gateway'),
57
- 'aws_api_gateway_integration': ('Arch_Networking-Content-Delivery', 'Arch_Amazon-API-Gateway'),
58
- 'aws_api_gateway_deployment': ('Arch_Networking-Content-Delivery', 'Arch_Amazon-API-Gateway'),
59
- 'aws_api_gateway_stage': ('Arch_Networking-Content-Delivery', 'Arch_Amazon-API-Gateway'),
60
- 'aws_apigatewayv2_api': ('Arch_Networking-Content-Delivery', 'Arch_Amazon-API-Gateway'),
61
- 'aws_apigatewayv2_stage': ('Arch_Networking-Content-Delivery', 'Arch_Amazon-API-Gateway'),
62
- 'aws_apigatewayv2_route': ('Arch_Networking-Content-Delivery', 'Arch_Amazon-API-Gateway'),
63
- 'aws_apigatewayv2_integration': ('Arch_Networking-Content-Delivery', 'Arch_Amazon-API-Gateway'),
64
-
62
+ "aws_api_gateway_rest_api": ("Arch_Networking-Content-Delivery", "Arch_Amazon-API-Gateway"),
63
+ "aws_api_gateway_resource": ("Arch_Networking-Content-Delivery", "Arch_Amazon-API-Gateway"),
64
+ "aws_api_gateway_method": ("Arch_Networking-Content-Delivery", "Arch_Amazon-API-Gateway"),
65
+ "aws_api_gateway_integration": ("Arch_Networking-Content-Delivery", "Arch_Amazon-API-Gateway"),
66
+ "aws_api_gateway_deployment": ("Arch_Networking-Content-Delivery", "Arch_Amazon-API-Gateway"),
67
+ "aws_api_gateway_stage": ("Arch_Networking-Content-Delivery", "Arch_Amazon-API-Gateway"),
68
+ "aws_apigatewayv2_api": ("Arch_Networking-Content-Delivery", "Arch_Amazon-API-Gateway"),
69
+ "aws_apigatewayv2_stage": ("Arch_Networking-Content-Delivery", "Arch_Amazon-API-Gateway"),
70
+ "aws_apigatewayv2_route": ("Arch_Networking-Content-Delivery", "Arch_Amazon-API-Gateway"),
71
+ "aws_apigatewayv2_integration": ("Arch_Networking-Content-Delivery", "Arch_Amazon-API-Gateway"),
65
72
  # Global Accelerator
66
- 'aws_globalaccelerator_accelerator': ('Arch_Networking-Content-Delivery', 'Arch_AWS-Global-Accelerator'),
67
- 'aws_globalaccelerator_listener': ('Arch_Networking-Content-Delivery', 'Arch_AWS-Global-Accelerator'),
68
-
73
+ "aws_globalaccelerator_accelerator": (
74
+ "Arch_Networking-Content-Delivery",
75
+ "Arch_AWS-Global-Accelerator",
76
+ ),
77
+ "aws_globalaccelerator_listener": (
78
+ "Arch_Networking-Content-Delivery",
79
+ "Arch_AWS-Global-Accelerator",
80
+ ),
69
81
  # App Mesh
70
- 'aws_appmesh_mesh': ('Arch_Networking-Content-Delivery', 'Arch_AWS-App-Mesh'),
71
- 'aws_appmesh_virtual_service': ('Arch_Networking-Content-Delivery', 'Arch_AWS-App-Mesh'),
72
-
82
+ "aws_appmesh_mesh": ("Arch_Networking-Content-Delivery", "Arch_AWS-App-Mesh"),
83
+ "aws_appmesh_virtual_service": ("Arch_Networking-Content-Delivery", "Arch_AWS-App-Mesh"),
73
84
  # Cloud Map
74
- 'aws_service_discovery_service': ('Arch_Networking-Content-Delivery', 'Arch_AWS-Cloud-Map'),
75
- 'aws_service_discovery_private_dns_namespace': ('Arch_Networking-Content-Delivery', 'Arch_AWS-Cloud-Map'),
76
-
85
+ "aws_service_discovery_service": ("Arch_Networking-Content-Delivery", "Arch_AWS-Cloud-Map"),
86
+ "aws_service_discovery_private_dns_namespace": (
87
+ "Arch_Networking-Content-Delivery",
88
+ "Arch_AWS-Cloud-Map",
89
+ ),
77
90
  # ==========================================================================
78
91
  # COMPUTE
79
92
  # ==========================================================================
80
- 'aws_instance': ('Arch_Compute', 'Arch_Amazon-EC2'),
81
- 'aws_launch_template': ('Arch_Compute', 'Arch_Amazon-EC2'),
82
- 'aws_launch_configuration': ('Arch_Compute', 'Arch_Amazon-EC2'),
83
- 'aws_ami': ('Arch_Compute', 'Arch_Amazon-EC2-Image-Builder'),
84
- 'aws_autoscaling_group': ('Arch_Compute', 'Arch_Amazon-EC2-Auto-Scaling'),
85
- 'aws_autoscaling_policy': ('Arch_Compute', 'Arch_Amazon-EC2-Auto-Scaling'),
86
- 'aws_spot_instance_request': ('Arch_Compute', 'Arch_Amazon-EC2'),
87
- 'aws_spot_fleet_request': ('Arch_Compute', 'Arch_Amazon-EC2'),
88
-
93
+ "aws_instance": ("Arch_Compute", "Arch_Amazon-EC2"),
94
+ "aws_launch_template": ("Arch_Compute", "Arch_Amazon-EC2"),
95
+ "aws_launch_configuration": ("Arch_Compute", "Arch_Amazon-EC2"),
96
+ "aws_ami": ("Arch_Compute", "Arch_Amazon-EC2-Image-Builder"),
97
+ "aws_autoscaling_group": ("Arch_Compute", "Arch_Amazon-EC2-Auto-Scaling"),
98
+ "aws_autoscaling_policy": ("Arch_Compute", "Arch_Amazon-EC2-Auto-Scaling"),
99
+ "aws_spot_instance_request": ("Arch_Compute", "Arch_Amazon-EC2"),
100
+ "aws_spot_fleet_request": ("Arch_Compute", "Arch_Amazon-EC2"),
89
101
  # Lambda
90
- 'aws_lambda_function': ('Arch_Compute', 'Arch_AWS-Lambda'),
91
- 'aws_lambda_layer_version': ('Arch_Compute', 'Arch_AWS-Lambda'),
92
- 'aws_lambda_permission': ('Arch_Compute', 'Arch_AWS-Lambda'),
93
- 'aws_lambda_event_source_mapping': ('Arch_Compute', 'Arch_AWS-Lambda'),
94
- 'aws_lambda_alias': ('Arch_Compute', 'Arch_AWS-Lambda'),
95
- 'aws_lambda_function_url': ('Arch_Compute', 'Arch_AWS-Lambda'),
96
-
102
+ "aws_lambda_function": ("Arch_Compute", "Arch_AWS-Lambda"),
103
+ "aws_lambda_layer_version": ("Arch_Compute", "Arch_AWS-Lambda"),
104
+ "aws_lambda_permission": ("Arch_Compute", "Arch_AWS-Lambda"),
105
+ "aws_lambda_event_source_mapping": ("Arch_Compute", "Arch_AWS-Lambda"),
106
+ "aws_lambda_alias": ("Arch_Compute", "Arch_AWS-Lambda"),
107
+ "aws_lambda_function_url": ("Arch_Compute", "Arch_AWS-Lambda"),
97
108
  # Batch
98
- 'aws_batch_compute_environment': ('Arch_Compute', 'Arch_AWS-Batch'),
99
- 'aws_batch_job_queue': ('Arch_Compute', 'Arch_AWS-Batch'),
100
- 'aws_batch_job_definition': ('Arch_Compute', 'Arch_AWS-Batch'),
101
-
109
+ "aws_batch_compute_environment": ("Arch_Compute", "Arch_AWS-Batch"),
110
+ "aws_batch_job_queue": ("Arch_Compute", "Arch_AWS-Batch"),
111
+ "aws_batch_job_definition": ("Arch_Compute", "Arch_AWS-Batch"),
102
112
  # Elastic Beanstalk
103
- 'aws_elastic_beanstalk_application': ('Arch_Compute', 'Arch_AWS-Elastic-Beanstalk'),
104
- 'aws_elastic_beanstalk_environment': ('Arch_Compute', 'Arch_AWS-Elastic-Beanstalk'),
105
-
113
+ "aws_elastic_beanstalk_application": ("Arch_Compute", "Arch_AWS-Elastic-Beanstalk"),
114
+ "aws_elastic_beanstalk_environment": ("Arch_Compute", "Arch_AWS-Elastic-Beanstalk"),
106
115
  # Lightsail
107
- 'aws_lightsail_instance': ('Arch_Compute', 'Arch_Amazon-Lightsail'),
108
- 'aws_lightsail_container_service': ('Arch_Compute', 'Arch_Amazon-Lightsail'),
109
-
116
+ "aws_lightsail_instance": ("Arch_Compute", "Arch_Amazon-Lightsail"),
117
+ "aws_lightsail_container_service": ("Arch_Compute", "Arch_Amazon-Lightsail"),
110
118
  # App Runner
111
- 'aws_apprunner_service': ('Arch_Compute', 'Arch_AWS-App-Runner'),
112
-
119
+ "aws_apprunner_service": ("Arch_Compute", "Arch_AWS-App-Runner"),
113
120
  # ==========================================================================
114
121
  # CONTAINERS
115
122
  # ==========================================================================
116
- 'aws_ecs_cluster': ('Arch_Containers', 'Arch_Amazon-Elastic-Container-Service'),
117
- 'aws_ecs_service': ('Arch_Containers', 'Arch_Amazon-Elastic-Container-Service'),
118
- 'aws_ecs_task_definition': ('Arch_Containers', 'Arch_Amazon-Elastic-Container-Service'),
119
- 'aws_ecs_capacity_provider': ('Arch_Containers', 'Arch_Amazon-Elastic-Container-Service'),
120
- 'aws_ecr_repository': ('Arch_Containers', 'Arch_Amazon-Elastic-Container-Registry'),
121
- 'aws_ecr_lifecycle_policy': ('Arch_Containers', 'Arch_Amazon-Elastic-Container-Registry'),
122
- 'aws_eks_cluster': ('Arch_Containers', 'Arch_Amazon-Elastic-Kubernetes-Service'),
123
- 'aws_eks_node_group': ('Arch_Containers', 'Arch_Amazon-Elastic-Kubernetes-Service'),
124
- 'aws_eks_fargate_profile': ('Arch_Containers', 'Arch_AWS-Fargate'),
125
- 'aws_eks_addon': ('Arch_Containers', 'Arch_Amazon-Elastic-Kubernetes-Service'),
126
-
123
+ "aws_ecs_cluster": ("Arch_Containers", "Arch_Amazon-Elastic-Container-Service"),
124
+ "aws_ecs_service": ("Arch_Containers", "Arch_Amazon-Elastic-Container-Service"),
125
+ "aws_ecs_task_definition": ("Arch_Containers", "Arch_Amazon-Elastic-Container-Service"),
126
+ "aws_ecs_capacity_provider": ("Arch_Containers", "Arch_Amazon-Elastic-Container-Service"),
127
+ "aws_ecr_repository": ("Arch_Containers", "Arch_Amazon-Elastic-Container-Registry"),
128
+ "aws_ecr_lifecycle_policy": ("Arch_Containers", "Arch_Amazon-Elastic-Container-Registry"),
129
+ "aws_eks_cluster": ("Arch_Containers", "Arch_Amazon-Elastic-Kubernetes-Service"),
130
+ "aws_eks_node_group": ("Arch_Containers", "Arch_Amazon-Elastic-Kubernetes-Service"),
131
+ "aws_eks_fargate_profile": ("Arch_Containers", "Arch_AWS-Fargate"),
132
+ "aws_eks_addon": ("Arch_Containers", "Arch_Amazon-Elastic-Kubernetes-Service"),
127
133
  # ==========================================================================
128
134
  # STORAGE
129
135
  # ==========================================================================
130
- 'aws_s3_bucket': ('Arch_Storage', 'Arch_Amazon-Simple-Storage-Service'),
131
- 'aws_s3_bucket_notification': ('Arch_Storage', 'Arch_Amazon-Simple-Storage-Service'),
132
- 'aws_s3_bucket_policy': ('Arch_Storage', 'Arch_Amazon-Simple-Storage-Service'),
133
- 'aws_s3_bucket_versioning': ('Arch_Storage', 'Arch_Amazon-Simple-Storage-Service'),
134
- 'aws_s3_bucket_lifecycle_configuration': ('Arch_Storage', 'Arch_Amazon-Simple-Storage-Service'),
135
- 'aws_s3_bucket_replication_configuration': ('Arch_Storage', 'Arch_Amazon-Simple-Storage-Service'),
136
- 'aws_s3_bucket_server_side_encryption_configuration': ('Arch_Storage', 'Arch_Amazon-Simple-Storage-Service'),
137
- 'aws_s3_object': ('Arch_Storage', 'Arch_Amazon-Simple-Storage-Service'),
138
- 'aws_s3_bucket_public_access_block': ('Arch_Storage', 'Arch_Amazon-Simple-Storage-Service'),
139
-
136
+ "aws_s3_bucket": ("Arch_Storage", "Arch_Amazon-Simple-Storage-Service"),
137
+ "aws_s3_bucket_notification": ("Arch_Storage", "Arch_Amazon-Simple-Storage-Service"),
138
+ "aws_s3_bucket_policy": ("Arch_Storage", "Arch_Amazon-Simple-Storage-Service"),
139
+ "aws_s3_bucket_versioning": ("Arch_Storage", "Arch_Amazon-Simple-Storage-Service"),
140
+ "aws_s3_bucket_lifecycle_configuration": ("Arch_Storage", "Arch_Amazon-Simple-Storage-Service"),
141
+ "aws_s3_bucket_replication_configuration": (
142
+ "Arch_Storage",
143
+ "Arch_Amazon-Simple-Storage-Service",
144
+ ),
145
+ "aws_s3_bucket_server_side_encryption_configuration": (
146
+ "Arch_Storage",
147
+ "Arch_Amazon-Simple-Storage-Service",
148
+ ),
149
+ "aws_s3_object": ("Arch_Storage", "Arch_Amazon-Simple-Storage-Service"),
150
+ "aws_s3_bucket_public_access_block": ("Arch_Storage", "Arch_Amazon-Simple-Storage-Service"),
140
151
  # S3 Glacier
141
- 'aws_glacier_vault': ('Arch_Storage', 'Arch_Amazon-Simple-Storage-Service-Glacier'),
142
-
152
+ "aws_glacier_vault": ("Arch_Storage", "Arch_Amazon-Simple-Storage-Service-Glacier"),
143
153
  # EBS
144
- 'aws_ebs_volume': ('Arch_Storage', 'Arch_Amazon-Elastic-Block-Store'),
145
- 'aws_ebs_snapshot': ('Arch_Storage', 'Arch_Amazon-Elastic-Block-Store'),
146
- 'aws_volume_attachment': ('Arch_Storage', 'Arch_Amazon-Elastic-Block-Store'),
147
-
154
+ "aws_ebs_volume": ("Arch_Storage", "Arch_Amazon-Elastic-Block-Store"),
155
+ "aws_ebs_snapshot": ("Arch_Storage", "Arch_Amazon-Elastic-Block-Store"),
156
+ "aws_volume_attachment": ("Arch_Storage", "Arch_Amazon-Elastic-Block-Store"),
148
157
  # EFS
149
- 'aws_efs_file_system': ('Arch_Storage', 'Arch_Amazon-EFS'),
150
- 'aws_efs_mount_target': ('Arch_Storage', 'Arch_Amazon-EFS'),
151
- 'aws_efs_access_point': ('Arch_Storage', 'Arch_Amazon-EFS'),
152
-
158
+ "aws_efs_file_system": ("Arch_Storage", "Arch_Amazon-EFS"),
159
+ "aws_efs_mount_target": ("Arch_Storage", "Arch_Amazon-EFS"),
160
+ "aws_efs_access_point": ("Arch_Storage", "Arch_Amazon-EFS"),
153
161
  # FSx
154
- 'aws_fsx_lustre_file_system': ('Arch_Storage', 'Arch_Amazon-FSx-for-Lustre'),
155
- 'aws_fsx_windows_file_system': ('Arch_Storage', 'Arch_Amazon-FSx-for-WFS'),
156
- 'aws_fsx_ontap_file_system': ('Arch_Storage', 'Arch_Amazon-FSx-for-NetApp-ONTAP'),
157
- 'aws_fsx_openzfs_file_system': ('Arch_Storage', 'Arch_Amazon-FSx-for-OpenZFS'),
158
-
162
+ "aws_fsx_lustre_file_system": ("Arch_Storage", "Arch_Amazon-FSx-for-Lustre"),
163
+ "aws_fsx_windows_file_system": ("Arch_Storage", "Arch_Amazon-FSx-for-WFS"),
164
+ "aws_fsx_ontap_file_system": ("Arch_Storage", "Arch_Amazon-FSx-for-NetApp-ONTAP"),
165
+ "aws_fsx_openzfs_file_system": ("Arch_Storage", "Arch_Amazon-FSx-for-OpenZFS"),
159
166
  # Storage Gateway
160
- 'aws_storagegateway_gateway': ('Arch_Storage', 'Arch_AWS-Storage-Gateway'),
161
-
167
+ "aws_storagegateway_gateway": ("Arch_Storage", "Arch_AWS-Storage-Gateway"),
162
168
  # Backup
163
- 'aws_backup_vault': ('Arch_Storage', 'Arch_AWS-Backup'),
164
- 'aws_backup_plan': ('Arch_Storage', 'Arch_AWS-Backup'),
165
-
169
+ "aws_backup_vault": ("Arch_Storage", "Arch_AWS-Backup"),
170
+ "aws_backup_plan": ("Arch_Storage", "Arch_AWS-Backup"),
166
171
  # ==========================================================================
167
172
  # DATABASE
168
173
  # ==========================================================================
169
- 'aws_dynamodb_table': ('Arch_Database', 'Arch_Amazon-DynamoDB'),
170
- 'aws_dynamodb_global_table': ('Arch_Database', 'Arch_Amazon-DynamoDB'),
171
-
174
+ "aws_dynamodb_table": ("Arch_Database", "Arch_Amazon-DynamoDB"),
175
+ "aws_dynamodb_global_table": ("Arch_Database", "Arch_Amazon-DynamoDB"),
172
176
  # RDS
173
- 'aws_rds_cluster': ('Arch_Database', 'Arch_Amazon-Aurora'),
174
- 'aws_rds_cluster_instance': ('Arch_Database', 'Arch_Amazon-Aurora'),
175
- 'aws_db_instance': ('Arch_Database', 'Arch_Amazon-RDS'),
176
- 'aws_db_subnet_group': ('Arch_Database', 'Arch_Amazon-RDS'),
177
- 'aws_db_parameter_group': ('Arch_Database', 'Arch_Amazon-RDS'),
178
- 'aws_db_option_group': ('Arch_Database', 'Arch_Amazon-RDS'),
179
- 'aws_db_proxy': ('Arch_Database', 'Arch_Amazon-RDS'),
180
-
177
+ "aws_rds_cluster": ("Arch_Database", "Arch_Amazon-Aurora"),
178
+ "aws_rds_cluster_instance": ("Arch_Database", "Arch_Amazon-Aurora"),
179
+ "aws_db_instance": ("Arch_Database", "Arch_Amazon-RDS"),
180
+ "aws_db_subnet_group": ("Arch_Database", "Arch_Amazon-RDS"),
181
+ "aws_db_parameter_group": ("Arch_Database", "Arch_Amazon-RDS"),
182
+ "aws_db_option_group": ("Arch_Database", "Arch_Amazon-RDS"),
183
+ "aws_db_proxy": ("Arch_Database", "Arch_Amazon-RDS"),
181
184
  # ElastiCache
182
- 'aws_elasticache_cluster': ('Arch_Database', 'Arch_Amazon-ElastiCache'),
183
- 'aws_elasticache_replication_group': ('Arch_Database', 'Arch_Amazon-ElastiCache'),
184
- 'aws_elasticache_subnet_group': ('Arch_Database', 'Arch_Amazon-ElastiCache'),
185
- 'aws_elasticache_parameter_group': ('Arch_Database', 'Arch_Amazon-ElastiCache'),
186
-
185
+ "aws_elasticache_cluster": ("Arch_Database", "Arch_Amazon-ElastiCache"),
186
+ "aws_elasticache_replication_group": ("Arch_Database", "Arch_Amazon-ElastiCache"),
187
+ "aws_elasticache_subnet_group": ("Arch_Database", "Arch_Amazon-ElastiCache"),
188
+ "aws_elasticache_parameter_group": ("Arch_Database", "Arch_Amazon-ElastiCache"),
187
189
  # MemoryDB
188
- 'aws_memorydb_cluster': ('Arch_Database', 'Arch_Amazon-MemoryDB'),
189
-
190
+ "aws_memorydb_cluster": ("Arch_Database", "Arch_Amazon-MemoryDB"),
190
191
  # DocumentDB
191
- 'aws_docdb_cluster': ('Arch_Database', 'Arch_Amazon-DocumentDB'),
192
- 'aws_docdb_cluster_instance': ('Arch_Database', 'Arch_Amazon-DocumentDB'),
193
-
192
+ "aws_docdb_cluster": ("Arch_Database", "Arch_Amazon-DocumentDB"),
193
+ "aws_docdb_cluster_instance": ("Arch_Database", "Arch_Amazon-DocumentDB"),
194
194
  # Neptune
195
- 'aws_neptune_cluster': ('Arch_Database', 'Arch_Amazon-Neptune'),
196
- 'aws_neptune_cluster_instance': ('Arch_Database', 'Arch_Amazon-Neptune'),
197
-
195
+ "aws_neptune_cluster": ("Arch_Database", "Arch_Amazon-Neptune"),
196
+ "aws_neptune_cluster_instance": ("Arch_Database", "Arch_Amazon-Neptune"),
198
197
  # Keyspaces (Cassandra)
199
- 'aws_keyspaces_keyspace': ('Arch_Database', 'Arch_Amazon-Keyspaces'),
200
- 'aws_keyspaces_table': ('Arch_Database', 'Arch_Amazon-Keyspaces'),
201
-
198
+ "aws_keyspaces_keyspace": ("Arch_Database", "Arch_Amazon-Keyspaces"),
199
+ "aws_keyspaces_table": ("Arch_Database", "Arch_Amazon-Keyspaces"),
202
200
  # Timestream
203
- 'aws_timestreamwrite_database': ('Arch_Database', 'Arch_Amazon-Timestream'),
204
- 'aws_timestreamwrite_table': ('Arch_Database', 'Arch_Amazon-Timestream'),
205
-
201
+ "aws_timestreamwrite_database": ("Arch_Database", "Arch_Amazon-Timestream"),
202
+ "aws_timestreamwrite_table": ("Arch_Database", "Arch_Amazon-Timestream"),
206
203
  # QLDB
207
- 'aws_qldb_ledger': ('Arch_Database', 'Arch_Amazon-Quantum-Ledger-Database'),
208
-
204
+ "aws_qldb_ledger": ("Arch_Database", "Arch_Amazon-Quantum-Ledger-Database"),
209
205
  # Redshift
210
- 'aws_redshift_cluster': ('Arch_Database', 'Arch_Amazon-Redshift'),
211
- 'aws_redshiftserverless_namespace': ('Arch_Database', 'Arch_Amazon-Redshift'),
212
- 'aws_redshiftserverless_workgroup': ('Arch_Database', 'Arch_Amazon-Redshift'),
213
-
206
+ "aws_redshift_cluster": ("Arch_Database", "Arch_Amazon-Redshift"),
207
+ "aws_redshiftserverless_namespace": ("Arch_Database", "Arch_Amazon-Redshift"),
208
+ "aws_redshiftserverless_workgroup": ("Arch_Database", "Arch_Amazon-Redshift"),
214
209
  # ==========================================================================
215
210
  # APPLICATION INTEGRATION
216
211
  # ==========================================================================
217
- 'aws_sqs_queue': ('Arch_App-Integration', 'Arch_Amazon-Simple-Queue-Service'),
218
- 'aws_sqs_queue_policy': ('Arch_App-Integration', 'Arch_Amazon-Simple-Queue-Service'),
219
-
220
- 'aws_sns_topic': ('Arch_App-Integration', 'Arch_Amazon-Simple-Notification-Service'),
221
- 'aws_sns_topic_subscription': ('Arch_App-Integration', 'Arch_Amazon-Simple-Notification-Service'),
222
- 'aws_sns_topic_policy': ('Arch_App-Integration', 'Arch_Amazon-Simple-Notification-Service'),
223
-
224
- 'aws_sfn_state_machine': ('Arch_App-Integration', 'Arch_AWS-Step-Functions'),
225
- 'aws_sfn_activity': ('Arch_App-Integration', 'Arch_AWS-Step-Functions'),
226
-
212
+ "aws_sqs_queue": ("Arch_App-Integration", "Arch_Amazon-Simple-Queue-Service"),
213
+ "aws_sqs_queue_policy": ("Arch_App-Integration", "Arch_Amazon-Simple-Queue-Service"),
214
+ "aws_sns_topic": ("Arch_App-Integration", "Arch_Amazon-Simple-Notification-Service"),
215
+ "aws_sns_topic_subscription": (
216
+ "Arch_App-Integration",
217
+ "Arch_Amazon-Simple-Notification-Service",
218
+ ),
219
+ "aws_sns_topic_policy": ("Arch_App-Integration", "Arch_Amazon-Simple-Notification-Service"),
220
+ "aws_sfn_state_machine": ("Arch_App-Integration", "Arch_AWS-Step-Functions"),
221
+ "aws_sfn_activity": ("Arch_App-Integration", "Arch_AWS-Step-Functions"),
227
222
  # EventBridge
228
- 'aws_cloudwatch_event_rule': ('Arch_App-Integration', 'Arch_Amazon-EventBridge'),
229
- 'aws_cloudwatch_event_target': ('Arch_App-Integration', 'Arch_Amazon-EventBridge'),
230
- 'aws_cloudwatch_event_bus': ('Arch_App-Integration', 'Arch_Amazon-EventBridge'),
231
- 'aws_cloudwatch_event_archive': ('Arch_App-Integration', 'Arch_Amazon-EventBridge'),
232
- 'aws_scheduler_schedule': ('Arch_App-Integration', 'Arch_Amazon-EventBridge'),
233
-
223
+ "aws_cloudwatch_event_rule": ("Arch_App-Integration", "Arch_Amazon-EventBridge"),
224
+ "aws_cloudwatch_event_target": ("Arch_App-Integration", "Arch_Amazon-EventBridge"),
225
+ "aws_cloudwatch_event_bus": ("Arch_App-Integration", "Arch_Amazon-EventBridge"),
226
+ "aws_cloudwatch_event_archive": ("Arch_App-Integration", "Arch_Amazon-EventBridge"),
227
+ "aws_scheduler_schedule": ("Arch_App-Integration", "Arch_Amazon-EventBridge"),
234
228
  # AppSync
235
- 'aws_appsync_graphql_api': ('Arch_App-Integration', 'Arch_AWS-AppSync'),
236
- 'aws_appsync_datasource': ('Arch_App-Integration', 'Arch_AWS-AppSync'),
237
- 'aws_appsync_resolver': ('Arch_App-Integration', 'Arch_AWS-AppSync'),
238
-
229
+ "aws_appsync_graphql_api": ("Arch_App-Integration", "Arch_AWS-AppSync"),
230
+ "aws_appsync_datasource": ("Arch_App-Integration", "Arch_AWS-AppSync"),
231
+ "aws_appsync_resolver": ("Arch_App-Integration", "Arch_AWS-AppSync"),
239
232
  # MQ
240
- 'aws_mq_broker': ('Arch_App-Integration', 'Arch_Amazon-MQ'),
241
- 'aws_mq_configuration': ('Arch_App-Integration', 'Arch_Amazon-MQ'),
242
-
233
+ "aws_mq_broker": ("Arch_App-Integration", "Arch_Amazon-MQ"),
234
+ "aws_mq_configuration": ("Arch_App-Integration", "Arch_Amazon-MQ"),
243
235
  # AppFlow
244
- 'aws_appflow_flow': ('Arch_App-Integration', 'Arch_Amazon-AppFlow'),
245
-
236
+ "aws_appflow_flow": ("Arch_App-Integration", "Arch_Amazon-AppFlow"),
246
237
  # ==========================================================================
247
238
  # ANALYTICS
248
239
  # ==========================================================================
249
- 'aws_kinesis_stream': ('Arch_Analytics', 'Arch_Amazon-Kinesis-Data-Streams'),
250
- 'aws_kinesis_firehose_delivery_stream': ('Arch_Analytics', 'Arch_Amazon-Data-Firehose'),
251
- 'aws_kinesis_analytics_application': ('Arch_Analytics', 'Arch_Amazon-Managed-Service-for-Apache-Flink'),
252
- 'aws_kinesisanalyticsv2_application': ('Arch_Analytics', 'Arch_Amazon-Managed-Service-for-Apache-Flink'),
253
-
240
+ "aws_kinesis_stream": ("Arch_Analytics", "Arch_Amazon-Kinesis-Data-Streams"),
241
+ "aws_kinesis_firehose_delivery_stream": ("Arch_Analytics", "Arch_Amazon-Data-Firehose"),
242
+ "aws_kinesis_analytics_application": (
243
+ "Arch_Analytics",
244
+ "Arch_Amazon-Managed-Service-for-Apache-Flink",
245
+ ),
246
+ "aws_kinesisanalyticsv2_application": (
247
+ "Arch_Analytics",
248
+ "Arch_Amazon-Managed-Service-for-Apache-Flink",
249
+ ),
254
250
  # Athena
255
- 'aws_athena_workgroup': ('Arch_Analytics', 'Arch_Amazon-Athena'),
256
- 'aws_athena_database': ('Arch_Analytics', 'Arch_Amazon-Athena'),
257
- 'aws_athena_named_query': ('Arch_Analytics', 'Arch_Amazon-Athena'),
258
-
251
+ "aws_athena_workgroup": ("Arch_Analytics", "Arch_Amazon-Athena"),
252
+ "aws_athena_database": ("Arch_Analytics", "Arch_Amazon-Athena"),
253
+ "aws_athena_named_query": ("Arch_Analytics", "Arch_Amazon-Athena"),
259
254
  # Glue
260
- 'aws_glue_catalog_database': ('Arch_Analytics', 'Arch_AWS-Glue'),
261
- 'aws_glue_catalog_table': ('Arch_Analytics', 'Arch_AWS-Glue'),
262
- 'aws_glue_crawler': ('Arch_Analytics', 'Arch_AWS-Glue'),
263
- 'aws_glue_job': ('Arch_Analytics', 'Arch_AWS-Glue'),
264
- 'aws_glue_trigger': ('Arch_Analytics', 'Arch_AWS-Glue'),
265
- 'aws_glue_workflow': ('Arch_Analytics', 'Arch_AWS-Glue'),
266
-
255
+ "aws_glue_catalog_database": ("Arch_Analytics", "Arch_AWS-Glue"),
256
+ "aws_glue_catalog_table": ("Arch_Analytics", "Arch_AWS-Glue"),
257
+ "aws_glue_crawler": ("Arch_Analytics", "Arch_AWS-Glue"),
258
+ "aws_glue_job": ("Arch_Analytics", "Arch_AWS-Glue"),
259
+ "aws_glue_trigger": ("Arch_Analytics", "Arch_AWS-Glue"),
260
+ "aws_glue_workflow": ("Arch_Analytics", "Arch_AWS-Glue"),
267
261
  # EMR
268
- 'aws_emr_cluster': ('Arch_Analytics', 'Arch_Amazon-EMR'),
269
- 'aws_emr_studio': ('Arch_Analytics', 'Arch_Amazon-EMR'),
270
- 'aws_emrserverless_application': ('Arch_Analytics', 'Arch_Amazon-EMR'),
271
-
262
+ "aws_emr_cluster": ("Arch_Analytics", "Arch_Amazon-EMR"),
263
+ "aws_emr_studio": ("Arch_Analytics", "Arch_Amazon-EMR"),
264
+ "aws_emrserverless_application": ("Arch_Analytics", "Arch_Amazon-EMR"),
272
265
  # OpenSearch
273
- 'aws_opensearch_domain': ('Arch_Analytics', 'Arch_Amazon-OpenSearch-Service'),
274
- 'aws_elasticsearch_domain': ('Arch_Analytics', 'Arch_Amazon-OpenSearch-Service'),
275
-
266
+ "aws_opensearch_domain": ("Arch_Analytics", "Arch_Amazon-OpenSearch-Service"),
267
+ "aws_elasticsearch_domain": ("Arch_Analytics", "Arch_Amazon-OpenSearch-Service"),
276
268
  # MSK (Kafka)
277
- 'aws_msk_cluster': ('Arch_Analytics', 'Arch_Amazon-Managed-Streaming-for-Apache-Kafka'),
278
- 'aws_msk_configuration': ('Arch_Analytics', 'Arch_Amazon-Managed-Streaming-for-Apache-Kafka'),
279
- 'aws_mskconnect_connector': ('Arch_Analytics', 'Arch_Amazon-Managed-Streaming-for-Apache-Kafka'),
280
-
269
+ "aws_msk_cluster": ("Arch_Analytics", "Arch_Amazon-Managed-Streaming-for-Apache-Kafka"),
270
+ "aws_msk_configuration": ("Arch_Analytics", "Arch_Amazon-Managed-Streaming-for-Apache-Kafka"),
271
+ "aws_mskconnect_connector": (
272
+ "Arch_Analytics",
273
+ "Arch_Amazon-Managed-Streaming-for-Apache-Kafka",
274
+ ),
281
275
  # QuickSight
282
- 'aws_quicksight_data_source': ('Arch_Analytics', 'Arch_Amazon-QuickSight'),
283
- 'aws_quicksight_dataset': ('Arch_Analytics', 'Arch_Amazon-QuickSight'),
284
-
276
+ "aws_quicksight_data_source": ("Arch_Analytics", "Arch_Amazon-QuickSight"),
277
+ "aws_quicksight_dataset": ("Arch_Analytics", "Arch_Amazon-QuickSight"),
285
278
  # Lake Formation
286
- 'aws_lakeformation_resource': ('Arch_Analytics', 'Arch_AWS-Lake-Formation'),
287
- 'aws_lakeformation_permissions': ('Arch_Analytics', 'Arch_AWS-Lake-Formation'),
288
-
279
+ "aws_lakeformation_resource": ("Arch_Analytics", "Arch_AWS-Lake-Formation"),
280
+ "aws_lakeformation_permissions": ("Arch_Analytics", "Arch_AWS-Lake-Formation"),
289
281
  # Data Exchange
290
- 'aws_dataexchange_data_set': ('Arch_Analytics', 'Arch_AWS-Data-Exchange'),
291
-
282
+ "aws_dataexchange_data_set": ("Arch_Analytics", "Arch_AWS-Data-Exchange"),
292
283
  # ==========================================================================
293
284
  # SECURITY & IDENTITY
294
285
  # ==========================================================================
295
- 'aws_security_group': ('Arch_Security-Identity-Compliance', 'Arch_AWS-Network-Firewall'),
296
- 'aws_security_group_rule': ('Arch_Security-Identity-Compliance', 'Arch_AWS-Network-Firewall'),
297
- 'aws_vpc_security_group_ingress_rule': ('Arch_Security-Identity-Compliance', 'Arch_AWS-Network-Firewall'),
298
- 'aws_vpc_security_group_egress_rule': ('Arch_Security-Identity-Compliance', 'Arch_AWS-Network-Firewall'),
299
- 'aws_network_acl': ('Arch_Security-Identity-Compliance', 'Arch_AWS-Network-Firewall'),
300
- 'aws_networkfirewall_firewall': ('Arch_Security-Identity-Compliance', 'Arch_AWS-Network-Firewall'),
301
- 'aws_networkfirewall_firewall_policy': ('Arch_Security-Identity-Compliance', 'Arch_AWS-Network-Firewall'),
302
-
286
+ "aws_security_group": ("Res_General-Icons", "Res_Firewall_48_Light"),
287
+ "aws_security_group_rule": ("Res_General-Icons", "Res_Firewall_48_Light"),
288
+ "aws_vpc_security_group_ingress_rule": ("Res_General-Icons", "Res_Firewall_48_Light"),
289
+ "aws_vpc_security_group_egress_rule": ("Res_General-Icons", "Res_Firewall_48_Light"),
290
+ "aws_network_acl": ("Arch_Security-Identity-Compliance", "Arch_AWS-Network-Firewall"),
291
+ "aws_networkfirewall_firewall": (
292
+ "Arch_Security-Identity-Compliance",
293
+ "Arch_AWS-Network-Firewall",
294
+ ),
295
+ "aws_networkfirewall_firewall_policy": (
296
+ "Arch_Security-Identity-Compliance",
297
+ "Arch_AWS-Network-Firewall",
298
+ ),
303
299
  # Cognito
304
- 'aws_cognito_user_pool': ('Arch_Security-Identity-Compliance', 'Arch_Amazon-Cognito'),
305
- 'aws_cognito_user_pool_client': ('Arch_Security-Identity-Compliance', 'Arch_Amazon-Cognito'),
306
- 'aws_cognito_user_pool_domain': ('Arch_Security-Identity-Compliance', 'Arch_Amazon-Cognito'),
307
- 'aws_cognito_identity_pool': ('Arch_Security-Identity-Compliance', 'Arch_Amazon-Cognito'),
308
-
300
+ "aws_cognito_user_pool": ("Arch_Security-Identity-Compliance", "Arch_Amazon-Cognito"),
301
+ "aws_cognito_user_pool_client": ("Arch_Security-Identity-Compliance", "Arch_Amazon-Cognito"),
302
+ "aws_cognito_user_pool_domain": ("Arch_Security-Identity-Compliance", "Arch_Amazon-Cognito"),
303
+ "aws_cognito_identity_pool": ("Arch_Security-Identity-Compliance", "Arch_Amazon-Cognito"),
309
304
  # KMS
310
- 'aws_kms_key': ('Arch_Security-Identity-Compliance', 'Arch_AWS-Key-Management-Service'),
311
- 'aws_kms_alias': ('Arch_Security-Identity-Compliance', 'Arch_AWS-Key-Management-Service'),
312
- 'aws_kms_grant': ('Arch_Security-Identity-Compliance', 'Arch_AWS-Key-Management-Service'),
313
-
305
+ "aws_kms_key": ("Arch_Security-Identity-Compliance", "Arch_AWS-Key-Management-Service"),
306
+ "aws_kms_alias": ("Arch_Security-Identity-Compliance", "Arch_AWS-Key-Management-Service"),
307
+ "aws_kms_grant": ("Arch_Security-Identity-Compliance", "Arch_AWS-Key-Management-Service"),
314
308
  # Secrets Manager
315
- 'aws_secretsmanager_secret': ('Arch_Security-Identity-Compliance', 'Arch_AWS-Secrets-Manager'),
316
- 'aws_secretsmanager_secret_version': ('Arch_Security-Identity-Compliance', 'Arch_AWS-Secrets-Manager'),
317
- 'aws_secretsmanager_secret_rotation': ('Arch_Security-Identity-Compliance', 'Arch_AWS-Secrets-Manager'),
318
-
309
+ "aws_secretsmanager_secret": ("Arch_Security-Identity-Compliance", "Arch_AWS-Secrets-Manager"),
310
+ "aws_secretsmanager_secret_version": (
311
+ "Arch_Security-Identity-Compliance",
312
+ "Arch_AWS-Secrets-Manager",
313
+ ),
314
+ "aws_secretsmanager_secret_rotation": (
315
+ "Arch_Security-Identity-Compliance",
316
+ "Arch_AWS-Secrets-Manager",
317
+ ),
319
318
  # IAM
320
- 'aws_iam_role': ('Arch_Security-Identity-Compliance', 'Arch_AWS-Identity-and-Access-Management'),
321
- 'aws_iam_policy': ('Arch_Security-Identity-Compliance', 'Arch_AWS-Identity-and-Access-Management'),
322
- 'aws_iam_role_policy': ('Arch_Security-Identity-Compliance', 'Arch_AWS-Identity-and-Access-Management'),
323
- 'aws_iam_role_policy_attachment': ('Arch_Security-Identity-Compliance', 'Arch_AWS-Identity-and-Access-Management'),
324
- 'aws_iam_user': ('Arch_Security-Identity-Compliance', 'Arch_AWS-Identity-and-Access-Management'),
325
- 'aws_iam_group': ('Arch_Security-Identity-Compliance', 'Arch_AWS-Identity-and-Access-Management'),
326
- 'aws_iam_instance_profile': ('Arch_Security-Identity-Compliance', 'Arch_AWS-Identity-and-Access-Management'),
327
- 'aws_iam_openid_connect_provider': ('Arch_Security-Identity-Compliance', 'Arch_AWS-Identity-and-Access-Management'),
328
- 'aws_iam_saml_provider': ('Arch_Security-Identity-Compliance', 'Arch_AWS-Identity-and-Access-Management'),
329
-
319
+ "aws_iam_role": (
320
+ "Arch_Security-Identity-Compliance",
321
+ "Arch_AWS-Identity-and-Access-Management",
322
+ ),
323
+ "aws_iam_policy": (
324
+ "Arch_Security-Identity-Compliance",
325
+ "Arch_AWS-Identity-and-Access-Management",
326
+ ),
327
+ "aws_iam_role_policy": (
328
+ "Arch_Security-Identity-Compliance",
329
+ "Arch_AWS-Identity-and-Access-Management",
330
+ ),
331
+ "aws_iam_role_policy_attachment": (
332
+ "Arch_Security-Identity-Compliance",
333
+ "Arch_AWS-Identity-and-Access-Management",
334
+ ),
335
+ "aws_iam_user": (
336
+ "Arch_Security-Identity-Compliance",
337
+ "Arch_AWS-Identity-and-Access-Management",
338
+ ),
339
+ "aws_iam_group": (
340
+ "Arch_Security-Identity-Compliance",
341
+ "Arch_AWS-Identity-and-Access-Management",
342
+ ),
343
+ "aws_iam_instance_profile": (
344
+ "Arch_Security-Identity-Compliance",
345
+ "Arch_AWS-Identity-and-Access-Management",
346
+ ),
347
+ "aws_iam_openid_connect_provider": (
348
+ "Arch_Security-Identity-Compliance",
349
+ "Arch_AWS-Identity-and-Access-Management",
350
+ ),
351
+ "aws_iam_saml_provider": (
352
+ "Arch_Security-Identity-Compliance",
353
+ "Arch_AWS-Identity-and-Access-Management",
354
+ ),
330
355
  # SSO / Identity Center
331
- 'aws_ssoadmin_permission_set': ('Arch_Security-Identity-Compliance', 'Arch_AWS-IAM-Identity-Center'),
332
- 'aws_identitystore_user': ('Arch_Security-Identity-Compliance', 'Arch_AWS-IAM-Identity-Center'),
333
-
356
+ "aws_ssoadmin_permission_set": (
357
+ "Arch_Security-Identity-Compliance",
358
+ "Arch_AWS-IAM-Identity-Center",
359
+ ),
360
+ "aws_identitystore_user": ("Arch_Security-Identity-Compliance", "Arch_AWS-IAM-Identity-Center"),
334
361
  # ACM
335
- 'aws_acm_certificate': ('Arch_Security-Identity-Compliance', 'Arch_AWS-Certificate-Manager'),
336
- 'aws_acm_certificate_validation': ('Arch_Security-Identity-Compliance', 'Arch_AWS-Certificate-Manager'),
337
- 'aws_acmpca_certificate_authority': ('Arch_Security-Identity-Compliance', 'Arch_AWS-Private-Certificate-Authority'),
338
-
362
+ "aws_acm_certificate": ("Arch_Security-Identity-Compliance", "Arch_AWS-Certificate-Manager"),
363
+ "aws_acm_certificate_validation": (
364
+ "Arch_Security-Identity-Compliance",
365
+ "Arch_AWS-Certificate-Manager",
366
+ ),
367
+ "aws_acmpca_certificate_authority": (
368
+ "Arch_Security-Identity-Compliance",
369
+ "Arch_AWS-Private-Certificate-Authority",
370
+ ),
339
371
  # WAF
340
- 'aws_wafv2_web_acl': ('Arch_Security-Identity-Compliance', 'Arch_AWS-WAF'),
341
- 'aws_wafv2_web_acl_association': ('Arch_Security-Identity-Compliance', 'Arch_AWS-WAF'),
342
- 'aws_wafv2_rule_group': ('Arch_Security-Identity-Compliance', 'Arch_AWS-WAF'),
343
- 'aws_wafv2_ip_set': ('Arch_Security-Identity-Compliance', 'Arch_AWS-WAF'),
344
- 'aws_wafv2_regex_pattern_set': ('Arch_Security-Identity-Compliance', 'Arch_AWS-WAF'),
345
-
372
+ "aws_wafv2_web_acl": ("Arch_Security-Identity-Compliance", "Arch_AWS-WAF"),
373
+ "aws_wafv2_web_acl_association": ("Arch_Security-Identity-Compliance", "Arch_AWS-WAF"),
374
+ "aws_wafv2_rule_group": ("Arch_Security-Identity-Compliance", "Arch_AWS-WAF"),
375
+ "aws_wafv2_ip_set": ("Arch_Security-Identity-Compliance", "Arch_AWS-WAF"),
376
+ "aws_wafv2_regex_pattern_set": ("Arch_Security-Identity-Compliance", "Arch_AWS-WAF"),
346
377
  # Shield
347
- 'aws_shield_protection': ('Arch_Security-Identity-Compliance', 'Arch_AWS-Shield'),
348
-
378
+ "aws_shield_protection": ("Arch_Security-Identity-Compliance", "Arch_AWS-Shield"),
349
379
  # GuardDuty
350
- 'aws_guardduty_detector': ('Arch_Security-Identity-Compliance', 'Arch_Amazon-GuardDuty'),
351
- 'aws_guardduty_member': ('Arch_Security-Identity-Compliance', 'Arch_Amazon-GuardDuty'),
352
-
380
+ "aws_guardduty_detector": ("Arch_Security-Identity-Compliance", "Arch_Amazon-GuardDuty"),
381
+ "aws_guardduty_member": ("Arch_Security-Identity-Compliance", "Arch_Amazon-GuardDuty"),
353
382
  # Security Hub
354
- 'aws_securityhub_account': ('Arch_Security-Identity-Compliance', 'Arch_AWS-Security-Hub'),
355
- 'aws_securityhub_member': ('Arch_Security-Identity-Compliance', 'Arch_AWS-Security-Hub'),
356
-
383
+ "aws_securityhub_account": ("Arch_Security-Identity-Compliance", "Arch_AWS-Security-Hub"),
384
+ "aws_securityhub_member": ("Arch_Security-Identity-Compliance", "Arch_AWS-Security-Hub"),
357
385
  # Macie
358
- 'aws_macie2_account': ('Arch_Security-Identity-Compliance', 'Arch_Amazon-Macie'),
359
- 'aws_macie2_classification_job': ('Arch_Security-Identity-Compliance', 'Arch_Amazon-Macie'),
360
-
386
+ "aws_macie2_account": ("Arch_Security-Identity-Compliance", "Arch_Amazon-Macie"),
387
+ "aws_macie2_classification_job": ("Arch_Security-Identity-Compliance", "Arch_Amazon-Macie"),
361
388
  # Inspector
362
- 'aws_inspector2_enabler': ('Arch_Security-Identity-Compliance', 'Arch_Amazon-Inspector'),
363
-
389
+ "aws_inspector2_enabler": ("Arch_Security-Identity-Compliance", "Arch_Amazon-Inspector"),
364
390
  # Detective
365
- 'aws_detective_graph': ('Arch_Security-Identity-Compliance', 'Arch_Amazon-Detective'),
366
-
391
+ "aws_detective_graph": ("Arch_Security-Identity-Compliance", "Arch_Amazon-Detective"),
367
392
  # Firewall Manager
368
- 'aws_fms_policy': ('Arch_Security-Identity-Compliance', 'Arch_AWS-Firewall-Manager'),
369
-
393
+ "aws_fms_policy": ("Arch_Security-Identity-Compliance", "Arch_AWS-Firewall-Manager"),
370
394
  # RAM
371
- 'aws_ram_resource_share': ('Arch_Security-Identity-Compliance', 'Arch_AWS-Resource-Access-Manager'),
372
-
395
+ "aws_ram_resource_share": (
396
+ "Arch_Security-Identity-Compliance",
397
+ "Arch_AWS-Resource-Access-Manager",
398
+ ),
373
399
  # ==========================================================================
374
400
  # MANAGEMENT & GOVERNANCE
375
401
  # ==========================================================================
376
- 'aws_cloudwatch_log_group': ('Arch_Management-Governance', 'Arch_Amazon-CloudWatch'),
377
- 'aws_cloudwatch_metric_alarm': ('Arch_Management-Governance', 'Arch_Amazon-CloudWatch'),
378
- 'aws_cloudwatch_dashboard': ('Arch_Management-Governance', 'Arch_Amazon-CloudWatch'),
379
- 'aws_cloudwatch_log_stream': ('Arch_Management-Governance', 'Arch_Amazon-CloudWatch'),
380
- 'aws_cloudwatch_log_metric_filter': ('Arch_Management-Governance', 'Arch_Amazon-CloudWatch'),
381
- 'aws_cloudwatch_composite_alarm': ('Arch_Management-Governance', 'Arch_Amazon-CloudWatch'),
382
-
383
- 'aws_cloudtrail': ('Arch_Management-Governance', 'Arch_AWS-CloudTrail'),
384
- 'aws_cloudtrail_event_data_store': ('Arch_Management-Governance', 'Arch_AWS-CloudTrail'),
385
-
386
- 'aws_config_config_rule': ('Arch_Management-Governance', 'Arch_AWS-Config'),
387
- 'aws_config_configuration_recorder': ('Arch_Management-Governance', 'Arch_AWS-Config'),
388
- 'aws_config_delivery_channel': ('Arch_Management-Governance', 'Arch_AWS-Config'),
389
-
402
+ "aws_cloudwatch_log_group": ("Arch_Management-Governance", "Arch_Amazon-CloudWatch"),
403
+ "aws_cloudwatch_metric_alarm": ("Arch_Management-Governance", "Arch_Amazon-CloudWatch"),
404
+ "aws_cloudwatch_dashboard": ("Arch_Management-Governance", "Arch_Amazon-CloudWatch"),
405
+ "aws_cloudwatch_log_stream": ("Arch_Management-Governance", "Arch_Amazon-CloudWatch"),
406
+ "aws_cloudwatch_log_metric_filter": ("Arch_Management-Governance", "Arch_Amazon-CloudWatch"),
407
+ "aws_cloudwatch_composite_alarm": ("Arch_Management-Governance", "Arch_Amazon-CloudWatch"),
408
+ "aws_cloudtrail": ("Arch_Management-Governance", "Arch_AWS-CloudTrail"),
409
+ "aws_cloudtrail_event_data_store": ("Arch_Management-Governance", "Arch_AWS-CloudTrail"),
410
+ "aws_config_config_rule": ("Arch_Management-Governance", "Arch_AWS-Config"),
411
+ "aws_config_configuration_recorder": ("Arch_Management-Governance", "Arch_AWS-Config"),
412
+ "aws_config_delivery_channel": ("Arch_Management-Governance", "Arch_AWS-Config"),
390
413
  # Systems Manager
391
- 'aws_ssm_parameter': ('Arch_Management-Governance', 'Arch_AWS-Systems-Manager'),
392
- 'aws_ssm_document': ('Arch_Management-Governance', 'Arch_AWS-Systems-Manager'),
393
- 'aws_ssm_maintenance_window': ('Arch_Management-Governance', 'Arch_AWS-Systems-Manager'),
394
- 'aws_ssm_patch_baseline': ('Arch_Management-Governance', 'Arch_AWS-Systems-Manager'),
395
- 'aws_ssm_association': ('Arch_Management-Governance', 'Arch_AWS-Systems-Manager'),
396
-
414
+ "aws_ssm_parameter": ("Arch_Management-Governance", "Arch_AWS-Systems-Manager"),
415
+ "aws_ssm_document": ("Arch_Management-Governance", "Arch_AWS-Systems-Manager"),
416
+ "aws_ssm_maintenance_window": ("Arch_Management-Governance", "Arch_AWS-Systems-Manager"),
417
+ "aws_ssm_patch_baseline": ("Arch_Management-Governance", "Arch_AWS-Systems-Manager"),
418
+ "aws_ssm_association": ("Arch_Management-Governance", "Arch_AWS-Systems-Manager"),
397
419
  # Organizations
398
- 'aws_organizations_organization': ('Arch_Management-Governance', 'Arch_AWS-Organizations'),
399
- 'aws_organizations_account': ('Arch_Management-Governance', 'Arch_AWS-Organizations'),
400
- 'aws_organizations_organizational_unit': ('Arch_Management-Governance', 'Arch_AWS-Organizations'),
401
- 'aws_organizations_policy': ('Arch_Management-Governance', 'Arch_AWS-Organizations'),
402
-
420
+ "aws_organizations_organization": ("Arch_Management-Governance", "Arch_AWS-Organizations"),
421
+ "aws_organizations_account": ("Arch_Management-Governance", "Arch_AWS-Organizations"),
422
+ "aws_organizations_organizational_unit": (
423
+ "Arch_Management-Governance",
424
+ "Arch_AWS-Organizations",
425
+ ),
426
+ "aws_organizations_policy": ("Arch_Management-Governance", "Arch_AWS-Organizations"),
403
427
  # Control Tower
404
- 'aws_controltower_control': ('Arch_Management-Governance', 'Arch_AWS-Control-Tower'),
405
-
428
+ "aws_controltower_control": ("Arch_Management-Governance", "Arch_AWS-Control-Tower"),
406
429
  # Service Catalog
407
- 'aws_servicecatalog_portfolio': ('Arch_Management-Governance', 'Arch_AWS-Service-Catalog'),
408
- 'aws_servicecatalog_product': ('Arch_Management-Governance', 'Arch_AWS-Service-Catalog'),
409
-
430
+ "aws_servicecatalog_portfolio": ("Arch_Management-Governance", "Arch_AWS-Service-Catalog"),
431
+ "aws_servicecatalog_product": ("Arch_Management-Governance", "Arch_AWS-Service-Catalog"),
410
432
  # CloudFormation
411
- 'aws_cloudformation_stack': ('Arch_Management-Governance', 'Arch_AWS-CloudFormation'),
412
- 'aws_cloudformation_stack_set': ('Arch_Management-Governance', 'Arch_AWS-CloudFormation'),
413
-
433
+ "aws_cloudformation_stack": ("Arch_Management-Governance", "Arch_AWS-CloudFormation"),
434
+ "aws_cloudformation_stack_set": ("Arch_Management-Governance", "Arch_AWS-CloudFormation"),
414
435
  # X-Ray
415
- 'aws_xray_sampling_rule': ('Arch_Developer-Tools', 'Arch_AWS-X-Ray'),
416
- 'aws_xray_group': ('Arch_Developer-Tools', 'Arch_AWS-X-Ray'),
417
-
436
+ "aws_xray_sampling_rule": ("Arch_Developer-Tools", "Arch_AWS-X-Ray"),
437
+ "aws_xray_group": ("Arch_Developer-Tools", "Arch_AWS-X-Ray"),
418
438
  # ==========================================================================
419
439
  # DEVELOPER TOOLS
420
440
  # ==========================================================================
421
- 'aws_codecommit_repository': ('Arch_Developer-Tools', 'Arch_AWS-CodeCommit'),
422
- 'aws_codebuild_project': ('Arch_Developer-Tools', 'Arch_AWS-CodeBuild'),
423
- 'aws_codepipeline': ('Arch_Developer-Tools', 'Arch_AWS-CodePipeline'),
424
- 'aws_codedeploy_app': ('Arch_Developer-Tools', 'Arch_AWS-CodeDeploy'),
425
- 'aws_codedeploy_deployment_group': ('Arch_Developer-Tools', 'Arch_AWS-CodeDeploy'),
426
- 'aws_codeartifact_domain': ('Arch_Developer-Tools', 'Arch_AWS-CodeArtifact'),
427
- 'aws_codeartifact_repository': ('Arch_Developer-Tools', 'Arch_AWS-CodeArtifact'),
428
- 'aws_cloud9_environment_ec2': ('Arch_Developer-Tools', 'Arch_AWS-Cloud9'),
429
- 'aws_codecatalyst_dev_environment': ('Arch_Developer-Tools', 'Arch_Amazon-CodeCatalyst'),
430
-
441
+ "aws_codecommit_repository": ("Arch_Developer-Tools", "Arch_AWS-CodeCommit"),
442
+ "aws_codebuild_project": ("Arch_Developer-Tools", "Arch_AWS-CodeBuild"),
443
+ "aws_codepipeline": ("Arch_Developer-Tools", "Arch_AWS-CodePipeline"),
444
+ "aws_codedeploy_app": ("Arch_Developer-Tools", "Arch_AWS-CodeDeploy"),
445
+ "aws_codedeploy_deployment_group": ("Arch_Developer-Tools", "Arch_AWS-CodeDeploy"),
446
+ "aws_codeartifact_domain": ("Arch_Developer-Tools", "Arch_AWS-CodeArtifact"),
447
+ "aws_codeartifact_repository": ("Arch_Developer-Tools", "Arch_AWS-CodeArtifact"),
448
+ "aws_cloud9_environment_ec2": ("Arch_Developer-Tools", "Arch_AWS-Cloud9"),
449
+ "aws_codecatalyst_dev_environment": ("Arch_Developer-Tools", "Arch_Amazon-CodeCatalyst"),
431
450
  # ==========================================================================
432
451
  # COST MANAGEMENT
433
452
  # ==========================================================================
434
- 'aws_budgets_budget': ('Arch_Cloud-Financial-Management', 'Arch_AWS-Budgets'),
435
- 'aws_budgets_budget_action': ('Arch_Cloud-Financial-Management', 'Arch_AWS-Budgets'),
436
- 'aws_ce_cost_category': ('Arch_Cloud-Financial-Management', 'Arch_AWS-Cost-Explorer'),
437
- 'aws_ce_anomaly_monitor': ('Arch_Cloud-Financial-Management', 'Arch_AWS-Cost-Explorer'),
438
-
453
+ "aws_budgets_budget": ("Arch_Cloud-Financial-Management", "Arch_AWS-Budgets"),
454
+ "aws_budgets_budget_action": ("Arch_Cloud-Financial-Management", "Arch_AWS-Budgets"),
455
+ "aws_ce_cost_category": ("Arch_Cloud-Financial-Management", "Arch_AWS-Cost-Explorer"),
456
+ "aws_ce_anomaly_monitor": ("Arch_Cloud-Financial-Management", "Arch_AWS-Cost-Explorer"),
439
457
  # ==========================================================================
440
458
  # BUSINESS APPLICATIONS
441
459
  # ==========================================================================
442
- 'aws_ses_domain_identity': ('Arch_Business-Applications', 'Arch_Amazon-Simple-Email-Service'),
443
- 'aws_ses_configuration_set': ('Arch_Business-Applications', 'Arch_Amazon-Simple-Email-Service'),
444
- 'aws_ses_email_identity': ('Arch_Business-Applications', 'Arch_Amazon-Simple-Email-Service'),
445
- 'aws_sesv2_email_identity': ('Arch_Business-Applications', 'Arch_Amazon-Simple-Email-Service'),
446
- 'aws_sesv2_configuration_set': ('Arch_Business-Applications', 'Arch_Amazon-Simple-Email-Service'),
447
-
460
+ "aws_ses_domain_identity": ("Arch_Business-Applications", "Arch_Amazon-Simple-Email-Service"),
461
+ "aws_ses_configuration_set": ("Arch_Business-Applications", "Arch_Amazon-Simple-Email-Service"),
462
+ "aws_ses_email_identity": ("Arch_Business-Applications", "Arch_Amazon-Simple-Email-Service"),
463
+ "aws_sesv2_email_identity": ("Arch_Business-Applications", "Arch_Amazon-Simple-Email-Service"),
464
+ "aws_sesv2_configuration_set": (
465
+ "Arch_Business-Applications",
466
+ "Arch_Amazon-Simple-Email-Service",
467
+ ),
448
468
  # Connect
449
- 'aws_connect_instance': ('Arch_Business-Applications', 'Arch_Amazon-Connect'),
450
- 'aws_connect_contact_flow': ('Arch_Business-Applications', 'Arch_Amazon-Connect'),
451
-
469
+ "aws_connect_instance": ("Arch_Business-Applications", "Arch_Amazon-Connect"),
470
+ "aws_connect_contact_flow": ("Arch_Business-Applications", "Arch_Amazon-Connect"),
452
471
  # Pinpoint
453
- 'aws_pinpoint_app': ('Arch_Business-Applications', 'Arch_Amazon-Pinpoint'),
454
- 'aws_pinpoint_email_channel': ('Arch_Business-Applications', 'Arch_Amazon-Pinpoint'),
455
-
472
+ "aws_pinpoint_app": ("Arch_Business-Applications", "Arch_Amazon-Pinpoint"),
473
+ "aws_pinpoint_email_channel": ("Arch_Business-Applications", "Arch_Amazon-Pinpoint"),
456
474
  # Chime
457
- 'aws_chime_voice_connector': ('Arch_Business-Applications', 'Arch_Amazon-Chime'),
458
-
475
+ "aws_chime_voice_connector": ("Arch_Business-Applications", "Arch_Amazon-Chime"),
459
476
  # WorkSpaces
460
- 'aws_workspaces_workspace': ('Arch_End-User-Computing', 'Arch_Amazon-WorkSpaces-Family'),
461
- 'aws_workspaces_directory': ('Arch_End-User-Computing', 'Arch_Amazon-WorkSpaces-Family'),
462
-
477
+ "aws_workspaces_workspace": ("Arch_End-User-Computing", "Arch_Amazon-WorkSpaces-Family"),
478
+ "aws_workspaces_directory": ("Arch_End-User-Computing", "Arch_Amazon-WorkSpaces-Family"),
463
479
  # AppStream
464
- 'aws_appstream_fleet': ('Arch_End-User-Computing', 'Arch_Amazon-AppStream-2'),
465
- 'aws_appstream_stack': ('Arch_End-User-Computing', 'Arch_Amazon-AppStream-2'),
466
-
480
+ "aws_appstream_fleet": ("Arch_End-User-Computing", "Arch_Amazon-AppStream-2"),
481
+ "aws_appstream_stack": ("Arch_End-User-Computing", "Arch_Amazon-AppStream-2"),
467
482
  # ==========================================================================
468
483
  # AI/ML
469
484
  # ==========================================================================
470
- 'aws_bedrockagent_knowledge_base': ('Arch_Artificial-Intelligence', 'Arch_Amazon-Bedrock'),
471
- 'aws_bedrockagent_agent': ('Arch_Artificial-Intelligence', 'Arch_Amazon-Bedrock'),
472
- 'aws_bedrock_model_invocation_logging_configuration': ('Arch_Artificial-Intelligence', 'Arch_Amazon-Bedrock'),
473
-
474
- 'aws_sagemaker_notebook_instance': ('Arch_Artificial-Intelligence', 'Arch_Amazon-SageMaker'),
475
- 'aws_sagemaker_endpoint': ('Arch_Artificial-Intelligence', 'Arch_Amazon-SageMaker'),
476
- 'aws_sagemaker_model': ('Arch_Artificial-Intelligence', 'Arch_Amazon-SageMaker'),
477
- 'aws_sagemaker_endpoint_configuration': ('Arch_Artificial-Intelligence', 'Arch_Amazon-SageMaker'),
478
- 'aws_sagemaker_domain': ('Arch_Artificial-Intelligence', 'Arch_Amazon-SageMaker'),
479
- 'aws_sagemaker_feature_group': ('Arch_Artificial-Intelligence', 'Arch_Amazon-SageMaker'),
480
- 'aws_sagemaker_pipeline': ('Arch_Artificial-Intelligence', 'Arch_Amazon-SageMaker'),
481
-
485
+ "aws_bedrockagent_knowledge_base": ("Arch_Artificial-Intelligence", "Arch_Amazon-Bedrock"),
486
+ "aws_bedrockagent_agent": ("Arch_Artificial-Intelligence", "Arch_Amazon-Bedrock"),
487
+ "aws_bedrock_model_invocation_logging_configuration": (
488
+ "Arch_Artificial-Intelligence",
489
+ "Arch_Amazon-Bedrock",
490
+ ),
491
+ "aws_sagemaker_notebook_instance": ("Arch_Artificial-Intelligence", "Arch_Amazon-SageMaker"),
492
+ "aws_sagemaker_endpoint": ("Arch_Artificial-Intelligence", "Arch_Amazon-SageMaker"),
493
+ "aws_sagemaker_model": ("Arch_Artificial-Intelligence", "Arch_Amazon-SageMaker"),
494
+ "aws_sagemaker_endpoint_configuration": (
495
+ "Arch_Artificial-Intelligence",
496
+ "Arch_Amazon-SageMaker",
497
+ ),
498
+ "aws_sagemaker_domain": ("Arch_Artificial-Intelligence", "Arch_Amazon-SageMaker"),
499
+ "aws_sagemaker_feature_group": ("Arch_Artificial-Intelligence", "Arch_Amazon-SageMaker"),
500
+ "aws_sagemaker_pipeline": ("Arch_Artificial-Intelligence", "Arch_Amazon-SageMaker"),
482
501
  # Comprehend
483
- 'aws_comprehend_entity_recognizer': ('Arch_Artificial-Intelligence', 'Arch_Amazon-Comprehend'),
484
- 'aws_comprehend_document_classifier': ('Arch_Artificial-Intelligence', 'Arch_Amazon-Comprehend'),
485
-
502
+ "aws_comprehend_entity_recognizer": ("Arch_Artificial-Intelligence", "Arch_Amazon-Comprehend"),
503
+ "aws_comprehend_document_classifier": (
504
+ "Arch_Artificial-Intelligence",
505
+ "Arch_Amazon-Comprehend",
506
+ ),
486
507
  # Rekognition
487
- 'aws_rekognition_collection': ('Arch_Artificial-Intelligence', 'Arch_Amazon-Rekognition'),
488
- 'aws_rekognition_project': ('Arch_Artificial-Intelligence', 'Arch_Amazon-Rekognition'),
489
-
508
+ "aws_rekognition_collection": ("Arch_Artificial-Intelligence", "Arch_Amazon-Rekognition"),
509
+ "aws_rekognition_project": ("Arch_Artificial-Intelligence", "Arch_Amazon-Rekognition"),
490
510
  # Textract
491
- 'aws_textract_adapter': ('Arch_Artificial-Intelligence', 'Arch_Amazon-Textract'),
492
-
511
+ "aws_textract_adapter": ("Arch_Artificial-Intelligence", "Arch_Amazon-Textract"),
493
512
  # Polly
494
- 'aws_polly_lexicon': ('Arch_Artificial-Intelligence', 'Arch_Amazon-Polly'),
495
-
513
+ "aws_polly_lexicon": ("Arch_Artificial-Intelligence", "Arch_Amazon-Polly"),
496
514
  # Transcribe
497
- 'aws_transcribe_vocabulary': ('Arch_Artificial-Intelligence', 'Arch_Amazon-Transcribe'),
498
- 'aws_transcribe_language_model': ('Arch_Artificial-Intelligence', 'Arch_Amazon-Transcribe'),
499
-
515
+ "aws_transcribe_vocabulary": ("Arch_Artificial-Intelligence", "Arch_Amazon-Transcribe"),
516
+ "aws_transcribe_language_model": ("Arch_Artificial-Intelligence", "Arch_Amazon-Transcribe"),
500
517
  # Translate
501
- 'aws_translate_terminology': ('Arch_Artificial-Intelligence', 'Arch_Amazon-Translate'),
502
-
518
+ "aws_translate_terminology": ("Arch_Artificial-Intelligence", "Arch_Amazon-Translate"),
503
519
  # Lex
504
- 'aws_lex_bot': ('Arch_Artificial-Intelligence', 'Arch_Amazon-Lex'),
505
- 'aws_lexv2models_bot': ('Arch_Artificial-Intelligence', 'Arch_Amazon-Lex'),
506
-
520
+ "aws_lex_bot": ("Arch_Artificial-Intelligence", "Arch_Amazon-Lex"),
521
+ "aws_lexv2models_bot": ("Arch_Artificial-Intelligence", "Arch_Amazon-Lex"),
507
522
  # Kendra
508
- 'aws_kendra_index': ('Arch_Artificial-Intelligence', 'Arch_Amazon-Kendra'),
509
- 'aws_kendra_data_source': ('Arch_Artificial-Intelligence', 'Arch_Amazon-Kendra'),
510
-
523
+ "aws_kendra_index": ("Arch_Artificial-Intelligence", "Arch_Amazon-Kendra"),
524
+ "aws_kendra_data_source": ("Arch_Artificial-Intelligence", "Arch_Amazon-Kendra"),
511
525
  # Personalize
512
- 'aws_personalize_dataset_group': ('Arch_Artificial-Intelligence', 'Arch_Amazon-Personalize'),
513
- 'aws_personalize_solution': ('Arch_Artificial-Intelligence', 'Arch_Amazon-Personalize'),
514
-
526
+ "aws_personalize_dataset_group": ("Arch_Artificial-Intelligence", "Arch_Amazon-Personalize"),
527
+ "aws_personalize_solution": ("Arch_Artificial-Intelligence", "Arch_Amazon-Personalize"),
515
528
  # Forecast
516
- 'aws_forecast_dataset_group': ('Arch_Artificial-Intelligence', 'Arch_Amazon-Forecast'),
517
-
529
+ "aws_forecast_dataset_group": ("Arch_Artificial-Intelligence", "Arch_Amazon-Forecast"),
518
530
  # ==========================================================================
519
531
  # IoT
520
532
  # ==========================================================================
521
- 'aws_iot_thing': ('Arch_Internet-of-Things', 'Arch_AWS-IoT-Core'),
522
- 'aws_iot_thing_type': ('Arch_Internet-of-Things', 'Arch_AWS-IoT-Core'),
523
- 'aws_iot_policy': ('Arch_Internet-of-Things', 'Arch_AWS-IoT-Core'),
524
- 'aws_iot_certificate': ('Arch_Internet-of-Things', 'Arch_AWS-IoT-Core'),
525
- 'aws_iot_topic_rule': ('Arch_Internet-of-Things', 'Arch_AWS-IoT-Core'),
526
-
527
- 'aws_iot_analytics_channel': ('Arch_Internet-of-Things', 'Arch_AWS-IoT-Analytics'),
528
- 'aws_iot_analytics_datastore': ('Arch_Internet-of-Things', 'Arch_AWS-IoT-Analytics'),
529
- 'aws_iot_analytics_pipeline': ('Arch_Internet-of-Things', 'Arch_AWS-IoT-Analytics'),
530
-
531
- 'aws_greengrass_group': ('Arch_Internet-of-Things', 'Arch_AWS-IoT-Greengrass'),
532
- 'aws_greengrassv2_component_version': ('Arch_Internet-of-Things', 'Arch_AWS-IoT-Greengrass'),
533
- 'aws_greengrassv2_deployment': ('Arch_Internet-of-Things', 'Arch_AWS-IoT-Greengrass'),
534
-
533
+ "aws_iot_thing": ("Arch_Internet-of-Things", "Arch_AWS-IoT-Core"),
534
+ "aws_iot_thing_type": ("Arch_Internet-of-Things", "Arch_AWS-IoT-Core"),
535
+ "aws_iot_policy": ("Arch_Internet-of-Things", "Arch_AWS-IoT-Core"),
536
+ "aws_iot_certificate": ("Arch_Internet-of-Things", "Arch_AWS-IoT-Core"),
537
+ "aws_iot_topic_rule": ("Arch_Internet-of-Things", "Arch_AWS-IoT-Core"),
538
+ "aws_iot_analytics_channel": ("Arch_Internet-of-Things", "Arch_AWS-IoT-Analytics"),
539
+ "aws_iot_analytics_datastore": ("Arch_Internet-of-Things", "Arch_AWS-IoT-Analytics"),
540
+ "aws_iot_analytics_pipeline": ("Arch_Internet-of-Things", "Arch_AWS-IoT-Analytics"),
541
+ "aws_greengrass_group": ("Arch_Internet-of-Things", "Arch_AWS-IoT-Greengrass"),
542
+ "aws_greengrassv2_component_version": ("Arch_Internet-of-Things", "Arch_AWS-IoT-Greengrass"),
543
+ "aws_greengrassv2_deployment": ("Arch_Internet-of-Things", "Arch_AWS-IoT-Greengrass"),
535
544
  # ==========================================================================
536
545
  # MEDIA SERVICES
537
546
  # ==========================================================================
538
- 'aws_media_convert_queue': ('Arch_Media-Services', 'Arch_AWS-Elemental-MediaConvert'),
539
- 'aws_medialive_channel': ('Arch_Media-Services', 'Arch_AWS-Elemental-MediaLive'),
540
- 'aws_mediapackage_channel': ('Arch_Media-Services', 'Arch_AWS-Elemental-MediaPackage'),
541
- 'aws_mediastore_container': ('Arch_Media-Services', 'Arch_AWS-Elemental-MediaStore'),
542
- 'aws_ivs_channel': ('Arch_Media-Services', 'Arch_Amazon-Interactive-Video-Service'),
543
- 'aws_elastic_transcoder_pipeline': ('Arch_Media-Services', 'Arch_Amazon-Elastic-Transcoder'),
544
-
547
+ "aws_media_convert_queue": ("Arch_Media-Services", "Arch_AWS-Elemental-MediaConvert"),
548
+ "aws_medialive_channel": ("Arch_Media-Services", "Arch_AWS-Elemental-MediaLive"),
549
+ "aws_mediapackage_channel": ("Arch_Media-Services", "Arch_AWS-Elemental-MediaPackage"),
550
+ "aws_mediastore_container": ("Arch_Media-Services", "Arch_AWS-Elemental-MediaStore"),
551
+ "aws_ivs_channel": ("Arch_Media-Services", "Arch_Amazon-Interactive-Video-Service"),
552
+ "aws_elastic_transcoder_pipeline": ("Arch_Media-Services", "Arch_Amazon-Elastic-Transcoder"),
545
553
  # ==========================================================================
546
554
  # MIGRATION
547
555
  # ==========================================================================
548
- 'aws_dms_replication_instance': ('Arch_Migration-Modernization', 'Arch_AWS-Database-Migration-Service'),
549
- 'aws_dms_endpoint': ('Arch_Migration-Modernization', 'Arch_AWS-Database-Migration-Service'),
550
- 'aws_dms_replication_task': ('Arch_Migration-Modernization', 'Arch_AWS-Database-Migration-Service'),
551
-
552
- 'aws_datasync_task': ('Arch_Migration-Modernization', 'Arch_AWS-DataSync'),
553
- 'aws_datasync_location_s3': ('Arch_Migration-Modernization', 'Arch_AWS-DataSync'),
554
-
555
- 'aws_transfer_server': ('Arch_Migration-Modernization', 'Arch_AWS-Transfer-Family'),
556
- 'aws_transfer_user': ('Arch_Migration-Modernization', 'Arch_AWS-Transfer-Family'),
557
-
556
+ "aws_dms_replication_instance": (
557
+ "Arch_Migration-Modernization",
558
+ "Arch_AWS-Database-Migration-Service",
559
+ ),
560
+ "aws_dms_endpoint": ("Arch_Migration-Modernization", "Arch_AWS-Database-Migration-Service"),
561
+ "aws_dms_replication_task": (
562
+ "Arch_Migration-Modernization",
563
+ "Arch_AWS-Database-Migration-Service",
564
+ ),
565
+ "aws_datasync_task": ("Arch_Migration-Modernization", "Arch_AWS-DataSync"),
566
+ "aws_datasync_location_s3": ("Arch_Migration-Modernization", "Arch_AWS-DataSync"),
567
+ "aws_transfer_server": ("Arch_Migration-Modernization", "Arch_AWS-Transfer-Family"),
568
+ "aws_transfer_user": ("Arch_Migration-Modernization", "Arch_AWS-Transfer-Family"),
558
569
  # ==========================================================================
559
570
  # GAME TECH
560
571
  # ==========================================================================
561
- 'aws_gamelift_fleet': ('Arch_Games', 'Arch_Amazon-GameLift-Servers'),
562
- 'aws_gamelift_game_session_queue': ('Arch_Games', 'Arch_Amazon-GameLift-Servers'),
563
- }
564
-
565
- # Group icons for architectural elements (VPC, subnets, etc.)
566
- GROUP_ICONS: Dict[str, str] = {
567
- 'vpc': 'Virtual-private-cloud-VPC_32',
568
- 'public_subnet': 'Public-subnet_32',
569
- 'private_subnet': 'Private-subnet_32',
570
- 'region': 'Region_32',
571
- 'aws_cloud': 'AWS-Cloud_32',
572
- 'availability_zone': 'Region_32',
572
+ "aws_gamelift_fleet": ("Arch_Games", "Arch_Amazon-GameLift-Servers"),
573
+ "aws_gamelift_game_session_queue": ("Arch_Games", "Arch_Amazon-GameLift-Servers"),
573
574
  }
574
575
 
575
576
  # Color scheme for different resource categories
576
577
  CATEGORY_COLORS: Dict[str, str] = {
577
- 'Arch_Compute': '#ED7100',
578
- 'Arch_Containers': '#ED7100',
579
- 'Arch_Storage': '#3F8624',
580
- 'Arch_Database': '#3B48CC',
581
- 'Arch_Networking-Content-Delivery': '#8C4FFF',
582
- 'Arch_App-Integration': '#E7157B',
583
- 'Arch_Security-Identity-Compliance': '#DD344C',
584
- 'Arch_Management-Governance': '#E7157B',
585
- 'Arch_Artificial-Intelligence': '#01A88D',
586
- 'Arch_Analytics': '#8C4FFF',
587
- 'Arch_Business-Applications': '#DD344C',
588
- 'Arch_Cloud-Financial-Management': '#3F8624',
578
+ "Arch_Compute": "#ED7100",
579
+ "Arch_Containers": "#ED7100",
580
+ "Arch_Storage": "#3F8624",
581
+ "Arch_Database": "#3B48CC",
582
+ "Arch_Networking-Content-Delivery": "#8C4FFF",
583
+ "Arch_App-Integration": "#E7157B",
584
+ "Arch_Security-Identity-Compliance": "#DD344C",
585
+ "Arch_Management-Governance": "#E7157B",
586
+ "Arch_Artificial-Intelligence": "#01A88D",
587
+ "Arch_Analytics": "#8C4FFF",
588
+ "Arch_Business-Applications": "#DD344C",
589
+ "Arch_Cloud-Financial-Management": "#3F8624",
589
590
  # Resource Icons categories
590
- 'Res_Networking-Content-Delivery': '#8C4FFF',
591
- 'Res_Compute': '#ED7100',
592
- 'Res_Storage': '#3F8624',
593
- 'Res_Database': '#3B48CC',
594
- 'Res_Security-Identity-Compliance': '#DD344C',
591
+ "Res_Networking-Content-Delivery": "#8C4FFF",
595
592
  }
596
593
 
597
594
 
@@ -603,7 +600,6 @@ class IconMapper:
603
600
  self._icon_cache: Dict[str, str] = {}
604
601
  self._resource_icons_path: Optional[Path] = None
605
602
  self._architecture_icons_path: Optional[Path] = None
606
- self._group_icons_path: Optional[Path] = None
607
603
 
608
604
  if self.icons_base_path and self.icons_base_path.exists():
609
605
  self._discover_icon_directories()
@@ -621,15 +617,8 @@ class IconMapper:
621
617
  arch_dirs = list(self.icons_base_path.glob("Architecture-Service-Icons_*"))
622
618
  self._architecture_icons_path = arch_dirs[0] if arch_dirs else None
623
619
 
624
- # Find Architecture-Group-Icons directory
625
- group_dirs = list(self.icons_base_path.glob("Architecture-Group-Icons_*"))
626
- self._group_icons_path = group_dirs[0] if group_dirs else None
627
-
628
620
  def get_icon_path(
629
- self,
630
- resource_type: str,
631
- size: int = 48,
632
- format: str = 'svg'
621
+ self, resource_type: str, size: int = 48, format: str = "svg"
633
622
  ) -> Optional[Path]:
634
623
  """Get the file path for a resource's icon."""
635
624
  if not self.icons_base_path or resource_type not in TERRAFORM_TO_ICON:
@@ -638,20 +627,40 @@ class IconMapper:
638
627
  category, icon_name = TERRAFORM_TO_ICON[resource_type]
639
628
 
640
629
  # Determine which icon set to use based on category prefix
641
- if category.startswith('Res_'):
642
- # Resource Icons (flat structure)
630
+ if category.startswith("Res_"):
631
+ # Resource Icons - flat structure with size in filename
643
632
  if not self._resource_icons_path:
644
633
  return None
645
634
  resource_icons_dir = self._resource_icons_path
635
+
636
+ # Special handling for General-Icons (has Light/Dark subdirs)
637
+ if category == "Res_General-Icons":
638
+ # icon_name already contains full name like "Res_Firewall_48_Light"
639
+ for subdir in ["Res_48_Light", "Res_48_Dark"]:
640
+ icon_path = resource_icons_dir / category / subdir / f"{icon_name}.{format}"
641
+ if icon_path.exists():
642
+ return icon_path
643
+ return None
644
+
645
+ # Standard Resource Icons: filename is {icon_name}_{size}.svg
646
646
  icon_path = resource_icons_dir / category / f"{icon_name}_{size}.{format}"
647
647
  if icon_path.exists():
648
648
  return icon_path
649
- # Try without category subfolder
649
+
650
+ # Try with .svg directly (some icons include size in name)
651
+ icon_path = resource_icons_dir / category / f"{icon_name}.{format}"
652
+ if icon_path.exists():
653
+ return icon_path
654
+
655
+ # Try searching in subdirectories
650
656
  for subdir in resource_icons_dir.iterdir():
651
657
  if subdir.is_dir():
652
658
  test_path = subdir / f"{icon_name}_{size}.{format}"
653
659
  if test_path.exists():
654
660
  return test_path
661
+ test_path = subdir / f"{icon_name}.{format}"
662
+ if test_path.exists():
663
+ return test_path
655
664
  else:
656
665
  # Architecture-Service-Icons (has size subdirectories)
657
666
  if not self._architecture_icons_path:
@@ -669,36 +678,24 @@ class IconMapper:
669
678
 
670
679
  # Try different sizes
671
680
  for alt_size in [64, 48, 32, 16]:
672
- icon_path = service_icons_dir / category / str(alt_size) / f"{icon_name}_{alt_size}.{format}"
681
+ icon_path = (
682
+ service_icons_dir
683
+ / category
684
+ / str(alt_size)
685
+ / f"{icon_name}_{alt_size}.{format}"
686
+ )
673
687
  if icon_path.exists():
674
688
  return icon_path
675
689
 
676
690
  return None
677
691
 
678
- def get_group_icon_path(
679
- self,
680
- group_type: str,
681
- format: str = 'svg'
682
- ) -> Optional[Path]:
683
- """Get the file path for a group icon (VPC, subnet, etc.)."""
684
- if not self._group_icons_path or group_type not in GROUP_ICONS:
685
- return None
686
-
687
- icon_name = GROUP_ICONS[group_type]
688
- icon_path = self._group_icons_path / f"{icon_name}.{format}"
689
-
690
- if icon_path.exists():
691
- return icon_path
692
-
693
- return None
694
-
695
692
  def get_icon_svg(self, resource_type: str, size: int = 48) -> Optional[str]:
696
693
  """Get the SVG content for a resource's icon."""
697
694
  cache_key = f"{resource_type}_{size}"
698
695
  if cache_key in self._icon_cache:
699
696
  return self._icon_cache[cache_key]
700
697
 
701
- icon_path = self.get_icon_path(resource_type, size, 'svg')
698
+ icon_path = self.get_icon_path(resource_type, size, "svg")
702
699
  if not icon_path:
703
700
  # Return fallback colored rectangle
704
701
  svg_content = self._generate_fallback_icon(resource_type, size)
@@ -706,11 +703,11 @@ class IconMapper:
706
703
  return svg_content
707
704
 
708
705
  try:
709
- with open(icon_path, 'r', encoding='utf-8') as f:
706
+ with open(icon_path, "r", encoding="utf-8") as f:
710
707
  svg_content = f.read()
711
708
  self._icon_cache[cache_key] = svg_content
712
709
  return svg_content
713
- except Exception:
710
+ except OSError:
714
711
  # Return fallback on read error
715
712
  svg_content = self._generate_fallback_icon(resource_type, size)
716
713
  self._icon_cache[cache_key] = svg_content
@@ -727,69 +724,55 @@ class IconMapper:
727
724
  else:
728
725
  words = display_name.split()
729
726
  if len(words) > 1:
730
- label = ''.join(w[0] for w in words if w).upper()[:4]
727
+ label = "".join(w[0] for w in words if w).upper()[:4]
731
728
  else:
732
729
  label = display_name[:3].upper()
733
730
 
734
- return f'''<svg xmlns="http://www.w3.org/2000/svg" width="{size}" height="{size}" viewBox="0 0 {size} {size}">
731
+ return f"""<svg xmlns="http://www.w3.org/2000/svg" width="{size}" height="{size}" viewBox="0 0 {size} {size}">
735
732
  <rect width="{size}" height="{size}" rx="4" fill="{color}" fill-opacity="0.15" stroke="{color}" stroke-width="2"/>
736
733
  <text x="{size/2}" y="{size/2 + 4}" text-anchor="middle" font-family="Arial, sans-serif" font-size="{size/4}" font-weight="bold" fill="{color}">{label}</text>
737
- </svg>'''
738
-
739
- def get_icon_data_uri(self, resource_type: str, size: int = 48) -> Optional[str]:
740
- """Get a data URI for embedding the icon in HTML/SVG."""
741
- svg_content = self.get_icon_svg(resource_type, size)
742
- if not svg_content:
743
- return None
744
-
745
- encoded = base64.b64encode(svg_content.encode('utf-8')).decode('utf-8')
746
- return f"data:image/svg+xml;base64,{encoded}"
734
+ </svg>"""
747
735
 
748
736
  def get_category_color(self, resource_type: str) -> str:
749
737
  """Get the category color for a resource type."""
750
738
  if resource_type not in TERRAFORM_TO_ICON:
751
- return '#666666'
739
+ return "#666666"
752
740
 
753
741
  category, _ = TERRAFORM_TO_ICON[resource_type]
754
- return CATEGORY_COLORS.get(category, '#666666')
742
+ return CATEGORY_COLORS.get(category, "#666666")
755
743
 
756
744
  def get_display_name(self, resource_type: str) -> str:
757
745
  """Get a human-readable display name for a resource type."""
758
746
  if resource_type not in TERRAFORM_TO_ICON:
759
747
  # Convert aws_resource_type to "Resource Type"
760
- name = resource_type.replace('aws_', '').replace('_', ' ').title()
748
+ name = resource_type.replace("aws_", "").replace("_", " ").title()
761
749
  return name
762
750
 
763
751
  _, icon_name = TERRAFORM_TO_ICON[resource_type]
764
752
  # Extract service name from icon name
765
753
  # "Arch_Amazon-Simple-Queue-Service" -> "SQS"
766
- name = icon_name.replace('Arch_', '').replace('Amazon-', '').replace('AWS-', '')
754
+ name = icon_name.replace("Arch_", "").replace("Amazon-", "").replace("AWS-", "")
767
755
 
768
756
  # Common abbreviations
769
757
  abbreviations = {
770
- 'Simple-Queue-Service': 'SQS',
771
- 'Simple-Notification-Service': 'SNS',
772
- 'Simple-Storage-Service': 'S3',
773
- 'Simple-Email-Service': 'SES',
774
- 'Elastic-Container-Service': 'ECS',
775
- 'Elastic-Container-Registry': 'ECR',
776
- 'Elastic-Kubernetes-Service': 'EKS',
777
- 'Elastic-Load-Balancing': 'ELB',
778
- 'Elastic-Block-Store': 'EBS',
779
- 'Key-Management-Service': 'KMS',
780
- 'Identity-and-Access-Management': 'IAM',
781
- 'Certificate-Manager': 'ACM',
782
- 'Virtual-Private-Cloud': 'VPC',
783
- 'Relational-Database-Service': 'RDS',
758
+ "Simple-Queue-Service": "SQS",
759
+ "Simple-Notification-Service": "SNS",
760
+ "Simple-Storage-Service": "S3",
761
+ "Simple-Email-Service": "SES",
762
+ "Elastic-Container-Service": "ECS",
763
+ "Elastic-Container-Registry": "ECR",
764
+ "Elastic-Kubernetes-Service": "EKS",
765
+ "Elastic-Load-Balancing": "ELB",
766
+ "Elastic-Block-Store": "EBS",
767
+ "Key-Management-Service": "KMS",
768
+ "Identity-and-Access-Management": "IAM",
769
+ "Certificate-Manager": "ACM",
770
+ "Virtual-Private-Cloud": "VPC",
771
+ "Relational-Database-Service": "RDS",
784
772
  }
785
773
 
786
774
  for full, abbr in abbreviations.items():
787
775
  if full in name:
788
776
  return abbr
789
777
 
790
- return name.replace('-', ' ')
791
-
792
-
793
- def get_supported_resources() -> list:
794
- """Get list of all supported Terraform resource types."""
795
- return list(TERRAFORM_TO_ICON.keys())
778
+ return name.replace("-", " ")