#
tokens: 82608/50000 1/104 files (page 98/104)
lines: on (toggle) GitHub
raw markdown copy reset
This is page 98 of 104. Use http://codebase.md/versuscontrol/ai-infrastructure-agent?lines=true&page={x} to view the full context.

# Directory Structure

```
├── .github
│   └── workflows
│       ├── dev-ci.yaml
│       └── release.yaml
├── .gitignore
├── cmd
│   ├── server
│   │   └── main.go
│   ├── tmp
│   │   └── main.go
│   └── web
│       └── main.go
├── config.bedrock.yaml.example
├── config.gemini.yaml.example
├── config.openai.yaml.example
├── config.yaml
├── Dockerfile
├── docs
│   ├── _sidebar.md
│   ├── .nojekyll
│   ├── api-key-setup
│   │   ├── aws-bedrock-nova-setup.md
│   │   ├── gemini-api-setup.md
│   │   └── openai-api-setup.md
│   ├── architecture
│   │   └── architecture-overview.md
│   ├── CNAME
│   ├── docs.html
│   ├── examples
│   │   ├── working-with-ec2-instance.md
│   │   └── working-with-vpc.md
│   ├── getting-started.md
│   ├── images
│   │   ├── advanced-demo.svg
│   │   ├── ai-analysis-planning.png
│   │   ├── ai-execute-planning.png
│   │   ├── ai-infrastructure-agent.svg
│   │   ├── ai-infrastructure-state.png
│   │   ├── core-components.svg
│   │   ├── ec2-00.png
│   │   ├── ec2-01.png
│   │   ├── ec2-02.png
│   │   ├── ec2-03.png
│   │   ├── ec2-04.png
│   │   ├── ec2-05.png
│   │   ├── ec2-06.png
│   │   ├── ec2-07.png
│   │   ├── simple-demo.svg
│   │   ├── vpc-00.png
│   │   ├── vpc-01.png
│   │   ├── vpc-02.png
│   │   ├── vpc-03.png
│   │   ├── vpc-04.png
│   │   ├── vpc-05.png
│   │   ├── vpc-06.png
│   │   ├── vpc-07.png
│   │   ├── vpc-08.png
│   │   ├── vpc-09.png
│   │   ├── vpc-10.png
│   │   ├── vpc-11.png
│   │   ├── vpc-architecture.svg
│   │   └── web-dashboard.svg
│   ├── index.html
│   ├── installation.md
│   └── README.md
├── go.mod
├── go.sum
├── internal
│   ├── config
│   │   ├── config.go
│   │   └── loader.go
│   └── logging
│       └── logger.go
├── LICENSE
├── pkg
│   ├── adapters
│   │   ├── alb.go
│   │   ├── asg.go
│   │   ├── base.go
│   │   ├── ec2.go
│   │   ├── keypair.go
│   │   ├── rds.go
│   │   ├── security_group.go
│   │   └── vpc.go
│   ├── agent
│   │   ├── agent_capability_extractors.go
│   │   ├── agent_dependency_resolver.go
│   │   ├── agent_factory.go
│   │   ├── agent_json_processing.go
│   │   ├── agent_plan_executor.go
│   │   ├── agent_request_processor.go
│   │   ├── agent_resource_correlation.go
│   │   ├── agent_test.go
│   │   ├── agent_utility_helpers.go
│   │   ├── mcp_communication.go
│   │   ├── mocks
│   │   │   ├── aws_client_mock.go
│   │   │   ├── helpers.go
│   │   │   ├── mcp_integration_test.go
│   │   │   ├── mcp_server_mock.go
│   │   │   ├── state_manager_mock.go
│   │   │   └── validation.go
│   │   ├── react_agent_extensions.go
│   │   ├── react_error_context.go
│   │   ├── react_recovery_engine.go
│   │   ├── react_recovery_types.go
│   │   ├── resources
│   │   │   ├── field_resolver.go
│   │   │   ├── id_extractor.go
│   │   │   └── pattern_matcher.go
│   │   └── types.go
│   ├── api
│   │   └── server.go
│   ├── aws
│   │   ├── alb.go
│   │   ├── asg.go
│   │   ├── client.go
│   │   ├── ec2.go
│   │   ├── params.go
│   │   ├── rds.go
│   │   ├── security_group.go
│   │   └── vpc.go
│   ├── conflict
│   │   └── resolver.go
│   ├── discovery
│   │   └── scanner.go
│   ├── graph
│   │   ├── analyzer.go
│   │   └── manager.go
│   ├── interfaces
│   │   ├── aws_resource.go
│   │   ├── mcp_tool.go
│   │   └── state_management.go
│   ├── mcp
│   │   ├── resource_definitions.go
│   │   ├── resource_registry.go
│   │   ├── server_integration.go
│   │   ├── server.go
│   │   └── tool_manager.go
│   ├── state
│   │   └── manager.go
│   ├── tools
│   │   ├── alb_tools.go
│   │   ├── ami_tools.go
│   │   ├── asg_tools.go
│   │   ├── ec2_tools.go
│   │   ├── factory.go
│   │   ├── helpers.go
│   │   ├── keypair_tools.go
│   │   ├── networking_tools.go
│   │   ├── rds_tools.go
│   │   ├── registry.go
│   │   ├── security_group_tools.go
│   │   ├── state_tools.go
│   │   ├── vpc_tools.go
│   │   └── zone_tools.go
│   ├── types
│   │   └── mcp.go
│   └── utilities
│       └── helpers.go
├── README.md
├── scripts
│   ├── install.sh
│   └── run-web-ui.sh
├── settings
│   ├── field-mappings-enhanced.yaml
│   ├── resource-extraction-enhanced.yaml
│   ├── resource-patterns-enhanced.yaml
│   └── templates
│       ├── decision-plan-prompt-optimized.txt
│       └── tools-execution-context-optimized.txt
└── web
    └── build
        ├── ai-infrastructure-agent.svg
        ├── asset-manifest.json
        ├── aws-service-icons
        │   ├── .DS_Store
        │   ├── analytics
        │   │   ├── .DS_Store
        │   │   ├── 16
        │   │   │   ├── .DS_Store
        │   │   │   ├── Arch_Amazon-Athena_16.png
        │   │   │   ├── Arch_Amazon-Athena_16.svg
        │   │   │   ├── Arch_Amazon-CloudSearch_16.png
        │   │   │   ├── Arch_Amazon-CloudSearch_16.svg
        │   │   │   ├── Arch_Amazon-Data-Firehose_16.png
        │   │   │   ├── Arch_Amazon-Data-Firehose_16.svg
        │   │   │   ├── Arch_Amazon-DataZone_16.png
        │   │   │   ├── Arch_Amazon-DataZone_16.svg
        │   │   │   ├── Arch_Amazon-EMR_16.png
        │   │   │   ├── Arch_Amazon-EMR_16.svg
        │   │   │   ├── Arch_Amazon-FinSpace_16.png
        │   │   │   ├── Arch_Amazon-FinSpace_16.svg
        │   │   │   ├── Arch_Amazon-Kinesis_16.png
        │   │   │   ├── Arch_Amazon-Kinesis_16.svg
        │   │   │   ├── Arch_Amazon-Kinesis-Data-Streams_16.png
        │   │   │   ├── Arch_Amazon-Kinesis-Data-Streams_16.svg
        │   │   │   ├── Arch_Amazon-Kinesis-Video-Streams_16.png
        │   │   │   ├── Arch_Amazon-Kinesis-Video-Streams_16.svg
        │   │   │   ├── Arch_Amazon-Managed-Service-for-Apache-Flink_16.png
        │   │   │   ├── Arch_Amazon-Managed-Service-for-Apache-Flink_16.svg
        │   │   │   ├── Arch_Amazon-Managed-Streaming-for-Apache-Kafka_16.png
        │   │   │   ├── Arch_Amazon-Managed-Streaming-for-Apache-Kafka_16.svg
        │   │   │   ├── Arch_Amazon-OpenSearch-Service_16.png
        │   │   │   ├── Arch_Amazon-OpenSearch-Service_16.svg
        │   │   │   ├── Arch_Amazon-QuickSight_16.png
        │   │   │   ├── Arch_Amazon-QuickSight_16.svg
        │   │   │   ├── Arch_Amazon-Redshift_16.png
        │   │   │   ├── Arch_Amazon-Redshift_16.svg
        │   │   │   ├── Arch_Amazon-SageMaker_16.png
        │   │   │   ├── Arch_Amazon-SageMaker_16.svg
        │   │   │   ├── Arch_AWS-Clean-Rooms_16.png
        │   │   │   ├── Arch_AWS-Clean-Rooms_16.svg
        │   │   │   ├── Arch_AWS-Data-Exchange_16.png
        │   │   │   ├── Arch_AWS-Data-Exchange_16.svg
        │   │   │   ├── Arch_AWS-Entity-Resolution_16.png
        │   │   │   ├── Arch_AWS-Entity-Resolution_16.svg
        │   │   │   ├── Arch_AWS-Glue_16.png
        │   │   │   ├── Arch_AWS-Glue_16.svg
        │   │   │   ├── Arch_AWS-Glue-DataBrew_16.png
        │   │   │   ├── Arch_AWS-Glue-DataBrew_16.svg
        │   │   │   ├── Arch_AWS-Lake-Formation_16.png
        │   │   │   └── Arch_AWS-Lake-Formation_16.svg
        │   │   ├── 32
        │   │   │   ├── .DS_Store
        │   │   │   ├── Arch_Amazon-Athena_32.png
        │   │   │   ├── Arch_Amazon-Athena_32.svg
        │   │   │   ├── Arch_Amazon-CloudSearch_32.png
        │   │   │   ├── Arch_Amazon-CloudSearch_32.svg
        │   │   │   ├── Arch_Amazon-Data-Firehose_32.png
        │   │   │   ├── Arch_Amazon-Data-Firehose_32.svg
        │   │   │   ├── Arch_Amazon-DataZone_32.png
        │   │   │   ├── Arch_Amazon-DataZone_32.svg
        │   │   │   ├── Arch_Amazon-EMR_32.png
        │   │   │   ├── Arch_Amazon-EMR_32.svg
        │   │   │   ├── Arch_Amazon-FinSpace_32.png
        │   │   │   ├── Arch_Amazon-FinSpace_32.svg
        │   │   │   ├── Arch_Amazon-Kinesis_32.png
        │   │   │   ├── Arch_Amazon-Kinesis_32.svg
        │   │   │   ├── Arch_Amazon-Kinesis-Data-Streams_32.png
        │   │   │   ├── Arch_Amazon-Kinesis-Data-Streams_32.svg
        │   │   │   ├── Arch_Amazon-Kinesis-Video-Streams_32.png
        │   │   │   ├── Arch_Amazon-Kinesis-Video-Streams_32.svg
        │   │   │   ├── Arch_Amazon-Managed-Service-for-Apache-Flink_32.png
        │   │   │   ├── Arch_Amazon-Managed-Service-for-Apache-Flink_32.svg
        │   │   │   ├── Arch_Amazon-Managed-Streaming-for-Apache-Kafka_32.png
        │   │   │   ├── Arch_Amazon-Managed-Streaming-for-Apache-Kafka_32.svg
        │   │   │   ├── Arch_Amazon-OpenSearch-Service_32.png
        │   │   │   ├── Arch_Amazon-OpenSearch-Service_32.svg
        │   │   │   ├── Arch_Amazon-QuickSight_32.png
        │   │   │   ├── Arch_Amazon-QuickSight_32.svg
        │   │   │   ├── Arch_Amazon-Redshift_32.png
        │   │   │   ├── Arch_Amazon-Redshift_32.svg
        │   │   │   ├── Arch_Amazon-SageMaker_32.png
        │   │   │   ├── Arch_Amazon-SageMaker_32.svg
        │   │   │   ├── Arch_AWS-Clean-Rooms_32.png
        │   │   │   ├── Arch_AWS-Clean-Rooms_32.svg
        │   │   │   ├── Arch_AWS-Data-Exchange_32.png
        │   │   │   ├── Arch_AWS-Data-Exchange_32.svg
        │   │   │   ├── Arch_AWS-Entity-Resolution_32.png
        │   │   │   ├── Arch_AWS-Entity-Resolution_32.svg
        │   │   │   ├── Arch_AWS-Glue_32.png
        │   │   │   ├── Arch_AWS-Glue_32.svg
        │   │   │   ├── Arch_AWS-Glue-DataBrew_32.png
        │   │   │   ├── Arch_AWS-Glue-DataBrew_32.svg
        │   │   │   ├── Arch_AWS-Lake-Formation_32.png
        │   │   │   └── Arch_AWS-Lake-Formation_32.svg
        │   │   ├── 48
        │   │   │   ├── .DS_Store
        │   │   │   ├── Arch_Amazon-Athena_48.png
        │   │   │   ├── Arch_Amazon-Athena_48.svg
        │   │   │   ├── Arch_Amazon-CloudSearch_48.png
        │   │   │   ├── Arch_Amazon-CloudSearch_48.svg
        │   │   │   ├── Arch_Amazon-Data-Firehose_48.png
        │   │   │   ├── Arch_Amazon-Data-Firehose_48.svg
        │   │   │   ├── Arch_Amazon-DataZone_48.png
        │   │   │   ├── Arch_Amazon-DataZone_48.svg
        │   │   │   ├── Arch_Amazon-EMR_48.png
        │   │   │   ├── Arch_Amazon-EMR_48.svg
        │   │   │   ├── Arch_Amazon-FinSpace_48.png
        │   │   │   ├── Arch_Amazon-FinSpace_48.svg
        │   │   │   ├── Arch_Amazon-Kinesis_48.png
        │   │   │   ├── Arch_Amazon-Kinesis_48.svg
        │   │   │   ├── Arch_Amazon-Kinesis-Data-Streams_48.png
        │   │   │   ├── Arch_Amazon-Kinesis-Data-Streams_48.svg
        │   │   │   ├── Arch_Amazon-Kinesis-Video-Streams_48.png
        │   │   │   ├── Arch_Amazon-Kinesis-Video-Streams_48.svg
        │   │   │   ├── Arch_Amazon-Managed-Service-for-Apache-Flink_48.png
        │   │   │   ├── Arch_Amazon-Managed-Service-for-Apache-Flink_48.svg
        │   │   │   ├── Arch_Amazon-Managed-Streaming-for-Apache-Kafka_48.png
        │   │   │   ├── Arch_Amazon-Managed-Streaming-for-Apache-Kafka_48.svg
        │   │   │   ├── Arch_Amazon-OpenSearch-Service_48.png
        │   │   │   ├── Arch_Amazon-OpenSearch-Service_48.svg
        │   │   │   ├── Arch_Amazon-QuickSight_48.png
        │   │   │   ├── Arch_Amazon-QuickSight_48.svg
        │   │   │   ├── Arch_Amazon-Redshift_48.png
        │   │   │   ├── Arch_Amazon-Redshift_48.svg
        │   │   │   ├── Arch_Amazon-SageMaker_48.png
        │   │   │   ├── Arch_Amazon-SageMaker_48.svg
        │   │   │   ├── Arch_AWS-Clean-Rooms_48.png
        │   │   │   ├── Arch_AWS-Clean-Rooms_48.svg
        │   │   │   ├── Arch_AWS-Data-Exchange_48.png
        │   │   │   ├── Arch_AWS-Data-Exchange_48.svg
        │   │   │   ├── Arch_AWS-Entity-Resolution_48.png
        │   │   │   ├── Arch_AWS-Entity-Resolution_48.svg
        │   │   │   ├── Arch_AWS-Glue_48.png
        │   │   │   ├── Arch_AWS-Glue_48.svg
        │   │   │   ├── Arch_AWS-Glue-DataBrew_48.png
        │   │   │   ├── Arch_AWS-Glue-DataBrew_48.svg
        │   │   │   ├── Arch_AWS-Lake-Formation_48.png
        │   │   │   └── Arch_AWS-Lake-Formation_48.svg
        │   │   └── 64
        │   │       ├── .DS_Store
        │   │       ├── Arch_Amazon-Athena_64.png
        │   │       ├── Arch_Amazon-Athena_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-CloudSearch_64.png
        │   │       ├── Arch_Amazon-CloudSearch_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Data-Firehose_64.png
        │   │       ├── Arch_Amazon-Data-Firehose_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-DataZone_64.png
        │   │       ├── Arch_Amazon-DataZone_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-EMR_64.png
        │   │       ├── Arch_Amazon-EMR_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-FinSpace_64.png
        │   │       ├── Arch_Amazon-FinSpace_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Kinesis_64.png
        │   │       ├── Arch_Amazon-Kinesis_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Kinesis-Data-Streams_64.png
        │   │       ├── Arch_Amazon-Kinesis-Data-Streams_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Kinesis-Video-Streams_64.png
        │   │       ├── Arch_Amazon-Kinesis-Video-Streams_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Managed-Service-for-Apache-Flink_64.png
        │   │       ├── Arch_Amazon-Managed-Service-for-Apache-Flink_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Managed-Streaming-for-Apache-Kafka_64.png
        │   │       ├── Arch_Amazon-Managed-Streaming-for-Apache-Kafka_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-OpenSearch-Service_64.png
        │   │       ├── Arch_Amazon-OpenSearch-Service_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-QuickSight_64.png
        │   │       ├── Arch_Amazon-QuickSight_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Redshift_64.png
        │   │       ├── Arch_Amazon-Redshift_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-SageMaker_64.png
        │   │       ├── Arch_Amazon-SageMaker_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Clean-Rooms_64.png
        │   │       ├── Arch_AWS-Clean-Rooms_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Data-Exchange_64.png
        │   │       ├── Arch_AWS-Data-Exchange_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Entity-Resolution_64.png
        │   │       ├── Arch_AWS-Entity-Resolution_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Glue_64.png
        │   │       ├── Arch_AWS-Glue_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Glue-DataBrew_64.png
        │   │       ├── Arch_AWS-Glue-DataBrew_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Lake-Formation_64.png
        │   │       ├── Arch_AWS-Lake-Formation_64.svg
        │   │       └── [email protected]
        │   ├── app-integration
        │   │   ├── .DS_Store
        │   │   ├── 16
        │   │   │   ├── .DS_Store
        │   │   │   ├── Arch_Amazon-AppFlow_16.png
        │   │   │   ├── Arch_Amazon-AppFlow_16.svg
        │   │   │   ├── Arch_Amazon-EventBridge_16.png
        │   │   │   ├── Arch_Amazon-EventBridge_16.svg
        │   │   │   ├── Arch_Amazon-Managed-Workflows-for-Apache-Airflow_16.png
        │   │   │   ├── Arch_Amazon-Managed-Workflows-for-Apache-Airflow_16.svg
        │   │   │   ├── Arch_Amazon-MQ_16.png
        │   │   │   ├── Arch_Amazon-MQ_16.svg
        │   │   │   ├── Arch_Amazon-Simple-Notification-Service_16.png
        │   │   │   ├── Arch_Amazon-Simple-Notification-Service_16.svg
        │   │   │   ├── Arch_Amazon-Simple-Queue-Service_16.png
        │   │   │   ├── Arch_Amazon-Simple-Queue-Service_16.svg
        │   │   │   ├── Arch_AWS-AppSync_16.png
        │   │   │   ├── Arch_AWS-AppSync_16.svg
        │   │   │   ├── Arch_AWS-B2B-Data-Interchange_16.png
        │   │   │   ├── Arch_AWS-B2B-Data-Interchange_16.svg
        │   │   │   ├── Arch_AWS-Express-Workflows_16.png
        │   │   │   ├── Arch_AWS-Express-Workflows_16.svg
        │   │   │   ├── Arch_AWS-Step-Functions_16.png
        │   │   │   └── Arch_AWS-Step-Functions_16.svg
        │   │   ├── 32
        │   │   │   ├── .DS_Store
        │   │   │   ├── Arch_Amazon-AppFlow_32.png
        │   │   │   ├── Arch_Amazon-AppFlow_32.svg
        │   │   │   ├── Arch_Amazon-EventBridge_32.png
        │   │   │   ├── Arch_Amazon-EventBridge_32.svg
        │   │   │   ├── Arch_Amazon-Managed-Workflows-for-Apache-Airflow_32.png
        │   │   │   ├── Arch_Amazon-Managed-Workflows-for-Apache-Airflow_32.svg
        │   │   │   ├── Arch_Amazon-MQ_32.png
        │   │   │   ├── Arch_Amazon-MQ_32.svg
        │   │   │   ├── Arch_Amazon-Simple-Notification-Service_32.png
        │   │   │   ├── Arch_Amazon-Simple-Notification-Service_32.svg
        │   │   │   ├── Arch_Amazon-Simple-Queue-Service_32.png
        │   │   │   ├── Arch_Amazon-Simple-Queue-Service_32.svg
        │   │   │   ├── Arch_AWS-AppSync_32.png
        │   │   │   ├── Arch_AWS-AppSync_32.svg
        │   │   │   ├── Arch_AWS-B2B-Data-Interchange_32.png
        │   │   │   ├── Arch_AWS-B2B-Data-Interchange_32.svg
        │   │   │   ├── Arch_AWS-Express-Workflows_32.png
        │   │   │   ├── Arch_AWS-Express-Workflows_32.svg
        │   │   │   ├── Arch_AWS-Step-Functions_32.png
        │   │   │   └── Arch_AWS-Step-Functions_32.svg
        │   │   ├── 48
        │   │   │   ├── .DS_Store
        │   │   │   ├── Arch_Amazon-AppFlow_48.png
        │   │   │   ├── Arch_Amazon-AppFlow_48.svg
        │   │   │   ├── Arch_Amazon-EventBridge_48.png
        │   │   │   ├── Arch_Amazon-EventBridge_48.svg
        │   │   │   ├── Arch_Amazon-Managed-Workflows-for-Apache-Airflow_48.png
        │   │   │   ├── Arch_Amazon-Managed-Workflows-for-Apache-Airflow_48.svg
        │   │   │   ├── Arch_Amazon-MQ_48.png
        │   │   │   ├── Arch_Amazon-MQ_48.svg
        │   │   │   ├── Arch_Amazon-Simple-Notification-Service_48.png
        │   │   │   ├── Arch_Amazon-Simple-Notification-Service_48.svg
        │   │   │   ├── Arch_Amazon-Simple-Queue-Service_48.png
        │   │   │   ├── Arch_Amazon-Simple-Queue-Service_48.svg
        │   │   │   ├── Arch_AWS-AppSync_48.png
        │   │   │   ├── Arch_AWS-AppSync_48.svg
        │   │   │   ├── Arch_AWS-B2B-Data-Interchange_48.png
        │   │   │   ├── Arch_AWS-B2B-Data-Interchange_48.svg
        │   │   │   ├── Arch_AWS-Express-Workflows_48.png
        │   │   │   ├── Arch_AWS-Express-Workflows_48.svg
        │   │   │   ├── Arch_AWS-Step-Functions_48.png
        │   │   │   └── Arch_AWS-Step-Functions_48.svg
        │   │   └── 64
        │   │       ├── .DS_Store
        │   │       ├── Arch_Amazon-AppFlow_64.png
        │   │       ├── Arch_Amazon-AppFlow_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-EventBridge_64.png
        │   │       ├── Arch_Amazon-EventBridge_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Managed-Workflows-for-Apache-Airflow_64.png
        │   │       ├── Arch_Amazon-Managed-Workflows-for-Apache-Airflow_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-MQ_64.png
        │   │       ├── Arch_Amazon-MQ_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Simple-Notification-Service_64.png
        │   │       ├── Arch_Amazon-Simple-Notification-Service_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Simple-Queue-Service_64.png
        │   │       ├── Arch_Amazon-Simple-Queue-Service_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-AppSync_64.png
        │   │       ├── Arch_AWS-AppSync_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-B2B-Data-Interchange_64.png
        │   │       ├── Arch_AWS-B2B-Data-Interchange_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Express-Workflows_64.png
        │   │       ├── Arch_AWS-Express-Workflows_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Step-Functions_64.png
        │   │       ├── Arch_AWS-Step-Functions_64.svg
        │   │       └── [email protected]
        │   ├── artificial-intelligence
        │   │   ├── .DS_Store
        │   │   ├── 16
        │   │   │   ├── .DS_Store
        │   │   │   ├── Arch_Amazon-Augmented-AI-A2I_16.png
        │   │   │   ├── Arch_Amazon-Augmented-AI-A2I_16.svg
        │   │   │   ├── Arch_Amazon-Bedrock_16.png
        │   │   │   ├── Arch_Amazon-Bedrock_16.svg
        │   │   │   ├── Arch_Amazon-CodeGuru_16.png
        │   │   │   ├── Arch_Amazon-CodeGuru_16.svg
        │   │   │   ├── Arch_Amazon-CodeWhisperer_16.png
        │   │   │   ├── Arch_Amazon-CodeWhisperer_16.svg
        │   │   │   ├── Arch_Amazon-Comprehend_16.png
        │   │   │   ├── Arch_Amazon-Comprehend_16.svg
        │   │   │   ├── Arch_Amazon-Comprehend-Medical_16.png
        │   │   │   ├── Arch_Amazon-Comprehend-Medical_16.svg
        │   │   │   ├── Arch_Amazon-DevOps-Guru_16.png
        │   │   │   ├── Arch_Amazon-DevOps-Guru_16.svg
        │   │   │   ├── Arch_Amazon-Elastic-Inference_16.png
        │   │   │   ├── Arch_Amazon-Elastic-Inference_16.svg
        │   │   │   ├── Arch_Amazon-Forecast_16.png
        │   │   │   ├── Arch_Amazon-Forecast_16.svg
        │   │   │   ├── Arch_Amazon-Fraud-Detector_16.png
        │   │   │   ├── Arch_Amazon-Fraud-Detector_16.svg
        │   │   │   ├── Arch_Amazon-Kendra_16.png
        │   │   │   ├── Arch_Amazon-Kendra_16.svg
        │   │   │   ├── Arch_Amazon-Lex_16.png
        │   │   │   ├── Arch_Amazon-Lex_16.svg
        │   │   │   ├── Arch_Amazon-Lookout-for-Equipment_16.png
        │   │   │   ├── Arch_Amazon-Lookout-for-Equipment_16.svg
        │   │   │   ├── Arch_Amazon-Lookout-for-Metrics_16.png
        │   │   │   ├── Arch_Amazon-Lookout-for-Metrics_16.svg
        │   │   │   ├── Arch_Amazon-Lookout-for-Vision_16.png
        │   │   │   ├── Arch_Amazon-Lookout-for-Vision_16.svg
        │   │   │   ├── Arch_Amazon-Monitron_16.png
        │   │   │   ├── Arch_Amazon-Monitron_16.svg
        │   │   │   ├── Arch_Amazon-Nova_16.png
        │   │   │   ├── Arch_Amazon-Nova_16.svg
        │   │   │   ├── Arch_Amazon-Personalize_16.png
        │   │   │   ├── Arch_Amazon-Personalize_16.svg
        │   │   │   ├── Arch_Amazon-Polly_16.png
        │   │   │   ├── Arch_Amazon-Polly_16.svg
        │   │   │   ├── Arch_Amazon-Q_16.png
        │   │   │   ├── Arch_Amazon-Q_16.svg
        │   │   │   ├── Arch_Amazon-Rekognition_16.png
        │   │   │   ├── Arch_Amazon-Rekognition_16.svg
        │   │   │   ├── Arch_Amazon-SageMaker-AI_16.png
        │   │   │   ├── Arch_Amazon-SageMaker-AI_16.svg
        │   │   │   ├── Arch_Amazon-SageMaker-Ground-Truth_16.png
        │   │   │   ├── Arch_Amazon-SageMaker-Ground-Truth_16.svg
        │   │   │   ├── Arch_Amazon-SageMaker-Studio-Lab_16.png
        │   │   │   ├── Arch_Amazon-SageMaker-Studio-Lab_16.svg
        │   │   │   ├── Arch_Amazon-Textract_16.png
        │   │   │   ├── Arch_Amazon-Textract_16.svg
        │   │   │   ├── Arch_Amazon-Transcribe_16.png
        │   │   │   ├── Arch_Amazon-Transcribe_16.svg
        │   │   │   ├── Arch_Amazon-Translate_16.png
        │   │   │   ├── Arch_Amazon-Translate_16.svg
        │   │   │   ├── Arch_Apache-MXNet-on-AWS_16.png
        │   │   │   ├── Arch_Apache-MXNet-on-AWS_16.svg
        │   │   │   ├── Arch_AWS-App-Studio_16.png
        │   │   │   ├── Arch_AWS-App-Studio_16.svg
        │   │   │   ├── Arch_AWS-Deep-Learning-AMIs_16.png
        │   │   │   ├── Arch_AWS-Deep-Learning-AMIs_16.svg
        │   │   │   ├── Arch_AWS-Deep-Learning-Containers_16.png
        │   │   │   ├── Arch_AWS-Deep-Learning-Containers_16.svg
        │   │   │   ├── Arch_AWS-DeepComposer_16.png
        │   │   │   ├── Arch_AWS-DeepComposer_16.svg
        │   │   │   ├── Arch_AWS-DeepRacer_16.png
        │   │   │   ├── Arch_AWS-DeepRacer_16.svg
        │   │   │   ├── Arch_AWS-HealthImaging_16.png
        │   │   │   ├── Arch_AWS-HealthImaging_16.svg
        │   │   │   ├── Arch_AWS-HealthLake_16.png
        │   │   │   ├── Arch_AWS-HealthLake_16.svg
        │   │   │   ├── Arch_AWS-HealthOmics_16.png
        │   │   │   ├── Arch_AWS-HealthOmics_16.svg
        │   │   │   ├── Arch_AWS-HealthScribe_16.png
        │   │   │   ├── Arch_AWS-HealthScribe_16.svg
        │   │   │   ├── Arch_AWS-Neuron_16.png
        │   │   │   ├── Arch_AWS-Neuron_16.svg
        │   │   │   ├── Arch_AWS-Panorama_16.png
        │   │   │   ├── Arch_AWS-Panorama_16.svg
        │   │   │   ├── Arch_PyTorch-on-AWS_16.png
        │   │   │   ├── Arch_PyTorch-on-AWS_16.svg
        │   │   │   ├── Arch_TensorFlow-on-AWS_16.png
        │   │   │   └── Arch_TensorFlow-on-AWS_16.svg
        │   │   ├── 32
        │   │   │   ├── .DS_Store
        │   │   │   ├── Arch_Amazon-Augmented-AI-A2I_32.png
        │   │   │   ├── Arch_Amazon-Augmented-AI-A2I_32.svg
        │   │   │   ├── Arch_Amazon-Bedrock_32.png
        │   │   │   ├── Arch_Amazon-Bedrock_32.svg
        │   │   │   ├── Arch_Amazon-CodeGuru_32.png
        │   │   │   ├── Arch_Amazon-CodeGuru_32.svg
        │   │   │   ├── Arch_Amazon-CodeWhisperer_32.png
        │   │   │   ├── Arch_Amazon-CodeWhisperer_32.svg
        │   │   │   ├── Arch_Amazon-Comprehend_32.png
        │   │   │   ├── Arch_Amazon-Comprehend_32.svg
        │   │   │   ├── Arch_Amazon-Comprehend-Medical_32.png
        │   │   │   ├── Arch_Amazon-Comprehend-Medical_32.svg
        │   │   │   ├── Arch_Amazon-DevOps-Guru_32.png
        │   │   │   ├── Arch_Amazon-DevOps-Guru_32.svg
        │   │   │   ├── Arch_Amazon-Elastic-Inference_32.png
        │   │   │   ├── Arch_Amazon-Elastic-Inference_32.svg
        │   │   │   ├── Arch_Amazon-Forecast_32.png
        │   │   │   ├── Arch_Amazon-Forecast_32.svg
        │   │   │   ├── Arch_Amazon-Fraud-Detector_32.png
        │   │   │   ├── Arch_Amazon-Fraud-Detector_32.svg
        │   │   │   ├── Arch_Amazon-Kendra_32.png
        │   │   │   ├── Arch_Amazon-Kendra_32.svg
        │   │   │   ├── Arch_Amazon-Lex_32.png
        │   │   │   ├── Arch_Amazon-Lex_32.svg
        │   │   │   ├── Arch_Amazon-Lookout-for-Equipment_32.png
        │   │   │   ├── Arch_Amazon-Lookout-for-Equipment_32.svg
        │   │   │   ├── Arch_Amazon-Lookout-for-Metrics_32.png
        │   │   │   ├── Arch_Amazon-Lookout-for-Metrics_32.svg
        │   │   │   ├── Arch_Amazon-Lookout-for-Vision_32.png
        │   │   │   ├── Arch_Amazon-Lookout-for-Vision_32.svg
        │   │   │   ├── Arch_Amazon-Monitron_32.png
        │   │   │   ├── Arch_Amazon-Monitron_32.svg
        │   │   │   ├── Arch_Amazon-Nova_32.png
        │   │   │   ├── Arch_Amazon-Nova_32.svg
        │   │   │   ├── Arch_Amazon-Personalize_32.png
        │   │   │   ├── Arch_Amazon-Personalize_32.svg
        │   │   │   ├── Arch_Amazon-Polly_32.png
        │   │   │   ├── Arch_Amazon-Polly_32.svg
        │   │   │   ├── Arch_Amazon-Q_32.png
        │   │   │   ├── Arch_Amazon-Q_32.svg
        │   │   │   ├── Arch_Amazon-Rekognition_32.png
        │   │   │   ├── Arch_Amazon-Rekognition_32.svg
        │   │   │   ├── Arch_Amazon-SageMaker-AI_32.png
        │   │   │   ├── Arch_Amazon-SageMaker-AI_32.svg
        │   │   │   ├── Arch_Amazon-SageMaker-Ground-Truth_32.png
        │   │   │   ├── Arch_Amazon-SageMaker-Ground-Truth_32.svg
        │   │   │   ├── Arch_Amazon-SageMaker-Studio-Lab_32.png
        │   │   │   ├── Arch_Amazon-SageMaker-Studio-Lab_32.svg
        │   │   │   ├── Arch_Amazon-Textract_32.png
        │   │   │   ├── Arch_Amazon-Textract_32.svg
        │   │   │   ├── Arch_Amazon-Transcribe_32.png
        │   │   │   ├── Arch_Amazon-Transcribe_32.svg
        │   │   │   ├── Arch_Amazon-Translate_32.png
        │   │   │   ├── Arch_Amazon-Translate_32.svg
        │   │   │   ├── Arch_Apache-MXNet-on-AWS_32.png
        │   │   │   ├── Arch_Apache-MXNet-on-AWS_32.svg
        │   │   │   ├── Arch_AWS-App-Studio_32.png
        │   │   │   ├── Arch_AWS-App-Studio_32.svg
        │   │   │   ├── Arch_AWS-Deep-Learning-AMIs_32.png
        │   │   │   ├── Arch_AWS-Deep-Learning-AMIs_32.svg
        │   │   │   ├── Arch_AWS-Deep-Learning-Containers_32.png
        │   │   │   ├── Arch_AWS-Deep-Learning-Containers_32.svg
        │   │   │   ├── Arch_AWS-DeepComposer_32.png
        │   │   │   ├── Arch_AWS-DeepComposer_32.svg
        │   │   │   ├── Arch_AWS-DeepRacer_32.png
        │   │   │   ├── Arch_AWS-DeepRacer_32.svg
        │   │   │   ├── Arch_AWS-HealthImaging_32.png
        │   │   │   ├── Arch_AWS-HealthImaging_32.svg
        │   │   │   ├── Arch_AWS-HealthLake_32.png
        │   │   │   ├── Arch_AWS-HealthLake_32.svg
        │   │   │   ├── Arch_AWS-HealthOmics_32.png
        │   │   │   ├── Arch_AWS-HealthOmics_32.svg
        │   │   │   ├── Arch_AWS-HealthScribe_32.png
        │   │   │   ├── Arch_AWS-HealthScribe_32.svg
        │   │   │   ├── Arch_AWS-Neuron_32.png
        │   │   │   ├── Arch_AWS-Neuron_32.svg
        │   │   │   ├── Arch_AWS-Panorama_32.png
        │   │   │   ├── Arch_AWS-Panorama_32.svg
        │   │   │   ├── Arch_PyTorch-on-AWS_32.png
        │   │   │   ├── Arch_PyTorch-on-AWS_32.svg
        │   │   │   ├── Arch_TensorFlow-on-AWS_32.png
        │   │   │   └── Arch_TensorFlow-on-AWS_32.svg
        │   │   ├── 48
        │   │   │   ├── .DS_Store
        │   │   │   ├── Arch_Amazon-Augmented-AI-A2I_48.png
        │   │   │   ├── Arch_Amazon-Augmented-AI-A2I_48.svg
        │   │   │   ├── Arch_Amazon-Bedrock_48.png
        │   │   │   ├── Arch_Amazon-Bedrock_48.svg
        │   │   │   ├── Arch_Amazon-CodeGuru_48.png
        │   │   │   ├── Arch_Amazon-CodeGuru_48.svg
        │   │   │   ├── Arch_Amazon-CodeWhisperer_48.png
        │   │   │   ├── Arch_Amazon-CodeWhisperer_48.svg
        │   │   │   ├── Arch_Amazon-Comprehend_48.png
        │   │   │   ├── Arch_Amazon-Comprehend_48.svg
        │   │   │   ├── Arch_Amazon-Comprehend-Medical_48.png
        │   │   │   ├── Arch_Amazon-Comprehend-Medical_48.svg
        │   │   │   ├── Arch_Amazon-DevOps-Guru_48.png
        │   │   │   ├── Arch_Amazon-DevOps-Guru_48.svg
        │   │   │   ├── Arch_Amazon-Elastic-Inference_48.png
        │   │   │   ├── Arch_Amazon-Elastic-Inference_48.svg
        │   │   │   ├── Arch_Amazon-Forecast_48.png
        │   │   │   ├── Arch_Amazon-Forecast_48.svg
        │   │   │   ├── Arch_Amazon-Fraud-Detector_48.png
        │   │   │   ├── Arch_Amazon-Fraud-Detector_48.svg
        │   │   │   ├── Arch_Amazon-Kendra_48.png
        │   │   │   ├── Arch_Amazon-Kendra_48.svg
        │   │   │   ├── Arch_Amazon-Lex_48.png
        │   │   │   ├── Arch_Amazon-Lex_48.svg
        │   │   │   ├── Arch_Amazon-Lookout-for-Equipment_48.png
        │   │   │   ├── Arch_Amazon-Lookout-for-Equipment_48.svg
        │   │   │   ├── Arch_Amazon-Lookout-for-Metrics_48.png
        │   │   │   ├── Arch_Amazon-Lookout-for-Metrics_48.svg
        │   │   │   ├── Arch_Amazon-Lookout-for-Vision_48.png
        │   │   │   ├── Arch_Amazon-Lookout-for-Vision_48.svg
        │   │   │   ├── Arch_Amazon-Monitron_48.png
        │   │   │   ├── Arch_Amazon-Monitron_48.svg
        │   │   │   ├── Arch_Amazon-Nova_48.png
        │   │   │   ├── Arch_Amazon-Nova_48.svg
        │   │   │   ├── Arch_Amazon-Personalize_48.png
        │   │   │   ├── Arch_Amazon-Personalize_48.svg
        │   │   │   ├── Arch_Amazon-Polly_48.png
        │   │   │   ├── Arch_Amazon-Polly_48.svg
        │   │   │   ├── Arch_Amazon-Q_48.png
        │   │   │   ├── Arch_Amazon-Q_48.svg
        │   │   │   ├── Arch_Amazon-Rekognition_48.png
        │   │   │   ├── Arch_Amazon-Rekognition_48.svg
        │   │   │   ├── Arch_Amazon-SageMaker-AI_48.png
        │   │   │   ├── Arch_Amazon-SageMaker-AI_48.svg
        │   │   │   ├── Arch_Amazon-SageMaker-Ground-Truth_48.png
        │   │   │   ├── Arch_Amazon-SageMaker-Ground-Truth_48.svg
        │   │   │   ├── Arch_Amazon-SageMaker-Studio-Lab_48.png
        │   │   │   ├── Arch_Amazon-SageMaker-Studio-Lab_48.svg
        │   │   │   ├── Arch_Amazon-Textract_48.png
        │   │   │   ├── Arch_Amazon-Textract_48.svg
        │   │   │   ├── Arch_Amazon-Transcribe_48.png
        │   │   │   ├── Arch_Amazon-Transcribe_48.svg
        │   │   │   ├── Arch_Amazon-Translate_48.png
        │   │   │   ├── Arch_Amazon-Translate_48.svg
        │   │   │   ├── Arch_Apache-MXNet-on-AWS_48.png
        │   │   │   ├── Arch_Apache-MXNet-on-AWS_48.svg
        │   │   │   ├── Arch_AWS-App-Studio_48.png
        │   │   │   ├── Arch_AWS-App-Studio_48.svg
        │   │   │   ├── Arch_AWS-Deep-Learning-AMIs_48.png
        │   │   │   ├── Arch_AWS-Deep-Learning-AMIs_48.svg
        │   │   │   ├── Arch_AWS-Deep-Learning-Containers_48.png
        │   │   │   ├── Arch_AWS-Deep-Learning-Containers_48.svg
        │   │   │   ├── Arch_AWS-DeepComposer_48.png
        │   │   │   ├── Arch_AWS-DeepComposer_48.svg
        │   │   │   ├── Arch_AWS-DeepRacer_48.png
        │   │   │   ├── Arch_AWS-DeepRacer_48.svg
        │   │   │   ├── Arch_AWS-HealthImaging_48.png
        │   │   │   ├── Arch_AWS-HealthImaging_48.svg
        │   │   │   ├── Arch_AWS-HealthLake_48.png
        │   │   │   ├── Arch_AWS-HealthLake_48.svg
        │   │   │   ├── Arch_AWS-HealthOmics_48.png
        │   │   │   ├── Arch_AWS-HealthOmics_48.svg
        │   │   │   ├── Arch_AWS-HealthScribe_48.png
        │   │   │   ├── Arch_AWS-HealthScribe_48.svg
        │   │   │   ├── Arch_AWS-Neuron_48.png
        │   │   │   ├── Arch_AWS-Neuron_48.svg
        │   │   │   ├── Arch_AWS-Panorama_48.png
        │   │   │   ├── Arch_AWS-Panorama_48.svg
        │   │   │   ├── Arch_PyTorch-on-AWS_48.png
        │   │   │   ├── Arch_PyTorch-on-AWS_48.svg
        │   │   │   ├── Arch_TensorFlow-on-AWS_48.png
        │   │   │   └── Arch_TensorFlow-on-AWS_48.svg
        │   │   └── 64
        │   │       ├── .DS_Store
        │   │       ├── Arch_Amazon-Augmented-AI-A2I_64.png
        │   │       ├── Arch_Amazon-Augmented-AI-A2I_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Bedrock_64.png
        │   │       ├── Arch_Amazon-Bedrock_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-CodeGuru_64.png
        │   │       ├── Arch_Amazon-CodeGuru_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-CodeWhisperer_64.png
        │   │       ├── Arch_Amazon-CodeWhisperer_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Comprehend_64.png
        │   │       ├── Arch_Amazon-Comprehend_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Comprehend-Medical_64.png
        │   │       ├── Arch_Amazon-Comprehend-Medical_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-DevOps-Guru_64.png
        │   │       ├── Arch_Amazon-DevOps-Guru_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Elastic-Inference_64.png
        │   │       ├── Arch_Amazon-Elastic-Inference_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Forecast_64.png
        │   │       ├── Arch_Amazon-Forecast_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Fraud-Detector_64.png
        │   │       ├── Arch_Amazon-Fraud-Detector_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Kendra_64.png
        │   │       ├── Arch_Amazon-Kendra_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Lex_64.png
        │   │       ├── Arch_Amazon-Lex_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Lookout-for-Equipment_64.png
        │   │       ├── Arch_Amazon-Lookout-for-Equipment_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Lookout-for-Metrics_64.png
        │   │       ├── Arch_Amazon-Lookout-for-Metrics_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Lookout-for-Vision_64.png
        │   │       ├── Arch_Amazon-Lookout-for-Vision_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Monitron_64.png
        │   │       ├── Arch_Amazon-Monitron_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Nova_64.png
        │   │       ├── Arch_Amazon-Nova_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Personalize_64.png
        │   │       ├── Arch_Amazon-Personalize_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Polly_64.png
        │   │       ├── Arch_Amazon-Polly_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Q_64.png
        │   │       ├── Arch_Amazon-Q_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Rekognition_64.png
        │   │       ├── Arch_Amazon-Rekognition_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-SageMaker-AI_64.png
        │   │       ├── Arch_Amazon-SageMaker-AI_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-SageMaker-Ground-Truth_64.png
        │   │       ├── Arch_Amazon-SageMaker-Ground-Truth_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-SageMaker-Studio-Lab_64.png
        │   │       ├── Arch_Amazon-SageMaker-Studio-Lab_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Textract_64.png
        │   │       ├── Arch_Amazon-Textract_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Transcribe_64.png
        │   │       ├── Arch_Amazon-Transcribe_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Translate_64.png
        │   │       ├── Arch_Amazon-Translate_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Apache-MXNet-on-AWS_64.png
        │   │       ├── Arch_Apache-MXNet-on-AWS_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-App-Studio_64.png
        │   │       ├── Arch_AWS-App-Studio_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Deep-Learning-AMIs_64.png
        │   │       ├── Arch_AWS-Deep-Learning-AMIs_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Deep-Learning-Containers_64.png
        │   │       ├── Arch_AWS-Deep-Learning-Containers_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-DeepComposer_64.png
        │   │       ├── Arch_AWS-DeepComposer_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-DeepRacer_64.png
        │   │       ├── Arch_AWS-DeepRacer_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-HealthImaging_64.png
        │   │       ├── Arch_AWS-HealthImaging_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-HealthLake_64.png
        │   │       ├── Arch_AWS-HealthLake_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-HealthOmics_64.png
        │   │       ├── Arch_AWS-HealthOmics_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-HealthScribe_64.png
        │   │       ├── Arch_AWS-HealthScribe_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Neuron_64.png
        │   │       ├── Arch_AWS-Neuron_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Panorama_64.png
        │   │       ├── Arch_AWS-Panorama_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_PyTorch-on-AWS_64.png
        │   │       ├── Arch_PyTorch-on-AWS_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_TensorFlow-on-AWS_64.png
        │   │       ├── Arch_TensorFlow-on-AWS_64.svg
        │   │       └── [email protected]
        │   ├── blockchain
        │   │   ├── .DS_Store
        │   │   ├── 16
        │   │   │   ├── Arch_Amazon-Managed-Blockchain_16.png
        │   │   │   ├── Arch_Amazon-Managed-Blockchain_16.svg
        │   │   │   ├── Arch_Amazon-Quantum-Ledger-Database_16.png
        │   │   │   └── Arch_Amazon-Quantum-Ledger-Database_16.svg
        │   │   ├── 32
        │   │   │   ├── Arch_Amazon-Managed-Blockchain_32.png
        │   │   │   ├── Arch_Amazon-Managed-Blockchain_32.svg
        │   │   │   ├── Arch_Amazon-Quantum-Ledger-Database_32.png
        │   │   │   └── Arch_Amazon-Quantum-Ledger-Database_32.svg
        │   │   ├── 48
        │   │   │   ├── Arch_Amazon-Managed-Blockchain_48.png
        │   │   │   ├── Arch_Amazon-Managed-Blockchain_48.svg
        │   │   │   ├── Arch_Amazon-Quantum-Ledger-Database_48.png
        │   │   │   └── Arch_Amazon-Quantum-Ledger-Database_48.svg
        │   │   └── 64
        │   │       ├── Arch_Amazon-Managed-Blockchain_64.png
        │   │       ├── Arch_Amazon-Managed-Blockchain_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Quantum-Ledger-Database_64.png
        │   │       ├── Arch_Amazon-Quantum-Ledger-Database_64.svg
        │   │       └── [email protected]
        │   ├── business-applications
        │   │   ├── .DS_Store
        │   │   ├── 16
        │   │   │   ├── .DS_Store
        │   │   │   ├── Arch_Alexa-For-Business_16.png
        │   │   │   ├── Arch_Alexa-For-Business_16.svg
        │   │   │   ├── Arch_Amazon-Chime_16.png
        │   │   │   ├── Arch_Amazon-Chime_16.svg
        │   │   │   ├── Arch_Amazon-Chime-SDK_16.png
        │   │   │   ├── Arch_Amazon-Chime-SDK_16.svg
        │   │   │   ├── Arch_Amazon-Connect_16.png
        │   │   │   ├── Arch_Amazon-Connect_16.svg
        │   │   │   ├── Arch_Amazon-Pinpoint_16.png
        │   │   │   ├── Arch_Amazon-Pinpoint_16.svg
        │   │   │   ├── Arch_Amazon-Pinpoint-APIs_16.png
        │   │   │   ├── Arch_Amazon-Pinpoint-APIs_16.svg
        │   │   │   ├── Arch_Amazon-Simple-Email-Service_16.png
        │   │   │   ├── Arch_Amazon-Simple-Email-Service_16.svg
        │   │   │   ├── Arch_Amazon-WorkDocs_16.png
        │   │   │   ├── Arch_Amazon-WorkDocs_16.svg
        │   │   │   ├── Arch_Amazon-WorkDocs-SDK_16.png
        │   │   │   ├── Arch_Amazon-WorkDocs-SDK_16.svg
        │   │   │   ├── Arch_Amazon-WorkMail_16.png
        │   │   │   ├── Arch_Amazon-WorkMail_16.svg
        │   │   │   ├── Arch_AWS-AppFabric_16.png
        │   │   │   ├── Arch_AWS-AppFabric_16.svg
        │   │   │   ├── Arch_AWS-End-User-Messaging_16.png
        │   │   │   ├── Arch_AWS-End-User-Messaging_16.svg
        │   │   │   ├── Arch_AWS-Supply-Chain_16.png
        │   │   │   ├── Arch_AWS-Supply-Chain_16.svg
        │   │   │   ├── Arch_AWS-Wickr_16.png
        │   │   │   └── Arch_AWS-Wickr_16.svg
        │   │   ├── 32
        │   │   │   ├── .DS_Store
        │   │   │   ├── Arch_Alexa-For-Business_32.png
        │   │   │   ├── Arch_Alexa-For-Business_32.svg
        │   │   │   ├── Arch_Amazon-Chime_32.png
        │   │   │   ├── Arch_Amazon-Chime_32.svg
        │   │   │   ├── Arch_Amazon-Chime-SDK_32.png
        │   │   │   ├── Arch_Amazon-Chime-SDK_32.svg
        │   │   │   ├── Arch_Amazon-Connect_32.png
        │   │   │   ├── Arch_Amazon-Connect_32.svg
        │   │   │   ├── Arch_Amazon-Pinpoint_32.png
        │   │   │   ├── Arch_Amazon-Pinpoint_32.svg
        │   │   │   ├── Arch_Amazon-Pinpoint-APIs_32.png
        │   │   │   ├── Arch_Amazon-Pinpoint-APIs_32.svg
        │   │   │   ├── Arch_Amazon-Simple-Email-Service_32.png
        │   │   │   ├── Arch_Amazon-Simple-Email-Service_32.svg
        │   │   │   ├── Arch_Amazon-WorkDocs_32.png
        │   │   │   ├── Arch_Amazon-WorkDocs_32.svg
        │   │   │   ├── Arch_Amazon-WorkDocs-SDK_32.png
        │   │   │   ├── Arch_Amazon-WorkDocs-SDK_32.svg
        │   │   │   ├── Arch_Amazon-WorkMail_32.png
        │   │   │   ├── Arch_Amazon-WorkMail_32.svg
        │   │   │   ├── Arch_AWS-AppFabric_32.png
        │   │   │   ├── Arch_AWS-AppFabric_32.svg
        │   │   │   ├── Arch_AWS-End-User-Messaging_32.png
        │   │   │   ├── Arch_AWS-End-User-Messaging_32.svg
        │   │   │   ├── Arch_AWS-Supply-Chain_32.png
        │   │   │   ├── Arch_AWS-Supply-Chain_32.svg
        │   │   │   ├── Arch_AWS-Wickr_32.png
        │   │   │   └── Arch_AWS-Wickr_32.svg
        │   │   ├── 48
        │   │   │   ├── .DS_Store
        │   │   │   ├── Arch_Alexa-For-Business_48.png
        │   │   │   ├── Arch_Alexa-For-Business_48.svg
        │   │   │   ├── Arch_Amazon-Chime_48.png
        │   │   │   ├── Arch_Amazon-Chime_48.svg
        │   │   │   ├── Arch_Amazon-Chime-SDK_48.png
        │   │   │   ├── Arch_Amazon-Chime-SDK_48.svg
        │   │   │   ├── Arch_Amazon-Connect_48.png
        │   │   │   ├── Arch_Amazon-Connect_48.svg
        │   │   │   ├── Arch_Amazon-Pinpoint_48.png
        │   │   │   ├── Arch_Amazon-Pinpoint_48.svg
        │   │   │   ├── Arch_Amazon-Pinpoint-APIs_48.png
        │   │   │   ├── Arch_Amazon-Pinpoint-APIs_48.svg
        │   │   │   ├── Arch_Amazon-Simple-Email-Service_48.png
        │   │   │   ├── Arch_Amazon-Simple-Email-Service_48.svg
        │   │   │   ├── Arch_Amazon-WorkDocs_48.png
        │   │   │   ├── Arch_Amazon-WorkDocs_48.svg
        │   │   │   ├── Arch_Amazon-WorkDocs-SDK_48.png
        │   │   │   ├── Arch_Amazon-WorkDocs-SDK_48.svg
        │   │   │   ├── Arch_Amazon-WorkMail_48.png
        │   │   │   ├── Arch_Amazon-WorkMail_48.svg
        │   │   │   ├── Arch_AWS-AppFabric_48.png
        │   │   │   ├── Arch_AWS-AppFabric_48.svg
        │   │   │   ├── Arch_AWS-End-User-Messaging_48.png
        │   │   │   ├── Arch_AWS-End-User-Messaging_48.svg
        │   │   │   ├── Arch_AWS-Supply-Chain_48.png
        │   │   │   ├── Arch_AWS-Supply-Chain_48.svg
        │   │   │   ├── Arch_AWS-Wickr_48.png
        │   │   │   └── Arch_AWS-Wickr_48.svg
        │   │   └── 64
        │   │       ├── .DS_Store
        │   │       ├── Arch_Alexa-For-Business_64.png
        │   │       ├── Arch_Alexa-For-Business_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Chime_64.png
        │   │       ├── Arch_Amazon-Chime_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Chime-SDK_64.png
        │   │       ├── Arch_Amazon-Chime-SDK_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Connect_64.png
        │   │       ├── Arch_Amazon-Connect_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Pinpoint_64.png
        │   │       ├── Arch_Amazon-Pinpoint_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Pinpoint-APIs_64.png
        │   │       ├── Arch_Amazon-Pinpoint-APIs_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Simple-Email-Service_64.png
        │   │       ├── Arch_Amazon-Simple-Email-Service_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-WorkDocs_64.png
        │   │       ├── Arch_Amazon-WorkDocs_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-WorkDocs-SDK_64.png
        │   │       ├── Arch_Amazon-WorkDocs-SDK_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-WorkMail_64.png
        │   │       ├── Arch_Amazon-WorkMail_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-AppFabric_64.png
        │   │       ├── Arch_AWS-AppFabric_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-End-User-Messaging_64.png
        │   │       ├── Arch_AWS-End-User-Messaging_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Supply-Chain_64.png
        │   │       ├── Arch_AWS-Supply-Chain_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Wickr_64.png
        │   │       ├── Arch_AWS-Wickr_64.svg
        │   │       └── [email protected]
        │   ├── cloud-financial
        │   │   ├── .DS_Store
        │   │   ├── 16
        │   │   │   ├── .DS_Store
        │   │   │   ├── Arch_AWS-Billing-Conductor_16.png
        │   │   │   ├── Arch_AWS-Billing-Conductor_16.svg
        │   │   │   ├── Arch_AWS-Budgets_16.png
        │   │   │   ├── Arch_AWS-Budgets_16.svg
        │   │   │   ├── Arch_AWS-Cost-and-Usage-Report_16.png
        │   │   │   ├── Arch_AWS-Cost-and-Usage-Report_16.svg
        │   │   │   ├── Arch_AWS-Cost-Explorer_16.png
        │   │   │   ├── Arch_AWS-Cost-Explorer_16.svg
        │   │   │   ├── Arch_Reserved-Instance-Reporting_16.png
        │   │   │   ├── Arch_Reserved-Instance-Reporting_16.svg
        │   │   │   ├── Arch_Savings-Plans_16.png
        │   │   │   └── Arch_Savings-Plans_16.svg
        │   │   ├── 32
        │   │   │   ├── .DS_Store
        │   │   │   ├── Arch_AWS-Billing-Conductor_32.png
        │   │   │   ├── Arch_AWS-Billing-Conductor_32.svg
        │   │   │   ├── Arch_AWS-Budgets_32.png
        │   │   │   ├── Arch_AWS-Budgets_32.svg
        │   │   │   ├── Arch_AWS-Cost-and-Usage-Report_32.png
        │   │   │   ├── Arch_AWS-Cost-and-Usage-Report_32.svg
        │   │   │   ├── Arch_AWS-Cost-Explorer_32.png
        │   │   │   ├── Arch_AWS-Cost-Explorer_32.svg
        │   │   │   ├── Arch_Reserved-Instance-Reporting_32.png
        │   │   │   ├── Arch_Reserved-Instance-Reporting_32.svg
        │   │   │   ├── Arch_Savings-Plans_32.png
        │   │   │   └── Arch_Savings-Plans_32.svg
        │   │   ├── 48
        │   │   │   ├── .DS_Store
        │   │   │   ├── Arch_AWS-Billing-Conductor_48.png
        │   │   │   ├── Arch_AWS-Billing-Conductor_48.svg
        │   │   │   ├── Arch_AWS-Budgets_48.png
        │   │   │   ├── Arch_AWS-Budgets_48.svg
        │   │   │   ├── Arch_AWS-Cost-and-Usage-Report_48.png
        │   │   │   ├── Arch_AWS-Cost-and-Usage-Report_48.svg
        │   │   │   ├── Arch_AWS-Cost-Explorer_48.png
        │   │   │   ├── Arch_AWS-Cost-Explorer_48.svg
        │   │   │   ├── Arch_Reserved-Instance-Reporting_48.png
        │   │   │   ├── Arch_Reserved-Instance-Reporting_48.svg
        │   │   │   ├── Arch_Savings-Plans_48.png
        │   │   │   └── Arch_Savings-Plans_48.svg
        │   │   └── 64
        │   │       ├── .DS_Store
        │   │       ├── Arch_AWS-Billing-Conductor_64.png
        │   │       ├── Arch_AWS-Billing-Conductor_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Budgets_64.png
        │   │       ├── Arch_AWS-Budgets_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Cost-and-Usage-Report_64.png
        │   │       ├── Arch_AWS-Cost-and-Usage-Report_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Cost-Explorer_64.png
        │   │       ├── Arch_AWS-Cost-Explorer_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Reserved-Instance-Reporting_64.png
        │   │       ├── Arch_Reserved-Instance-Reporting_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Savings-Plans_64.png
        │   │       ├── Arch_Savings-Plans_64.svg
        │   │       └── [email protected]
        │   ├── compute
        │   │   ├── .DS_Store
        │   │   ├── 16
        │   │   │   ├── .DS_Store
        │   │   │   ├── Arch_Amazon-DCV_16.png
        │   │   │   ├── Arch_Amazon-DCV_16.svg
        │   │   │   ├── Arch_Amazon-EC2_16.png
        │   │   │   ├── Arch_Amazon-EC2_16.svg
        │   │   │   ├── Arch_Amazon-EC2-Auto-Scaling_16.png
        │   │   │   ├── Arch_Amazon-EC2-Auto-Scaling_16.svg
        │   │   │   ├── Arch_Amazon-EC2-Image-Builder_16.png
        │   │   │   ├── Arch_Amazon-EC2-Image-Builder_16.svg
        │   │   │   ├── Arch_Amazon-Elastic-VMware-Service_16.png
        │   │   │   ├── Arch_Amazon-Elastic-VMware-Service_16.svg
        │   │   │   ├── Arch_Amazon-Lightsail_16.png
        │   │   │   ├── Arch_Amazon-Lightsail_16.svg
        │   │   │   ├── Arch_Amazon-Lightsail-for-Research_16.png
        │   │   │   ├── Arch_Amazon-Lightsail-for-Research_16.svg
        │   │   │   ├── Arch_AWS-App-Runner_16.png
        │   │   │   ├── Arch_AWS-App-Runner_16.svg
        │   │   │   ├── Arch_AWS-Batch_16.png
        │   │   │   ├── Arch_AWS-Batch_16.svg
        │   │   │   ├── Arch_AWS-Compute-Optimizer_16.png
        │   │   │   ├── Arch_AWS-Compute-Optimizer_16.svg
        │   │   │   ├── Arch_AWS-Elastic-Beanstalk_16.png
        │   │   │   ├── Arch_AWS-Elastic-Beanstalk_16.svg
        │   │   │   ├── Arch_AWS-Lambda_16.png
        │   │   │   ├── Arch_AWS-Lambda_16.svg
        │   │   │   ├── Arch_AWS-Local-Zones_16.png
        │   │   │   ├── Arch_AWS-Local-Zones_16.svg
        │   │   │   ├── Arch_AWS-Nitro-Enclaves_16.png
        │   │   │   ├── Arch_AWS-Nitro-Enclaves_16.svg
        │   │   │   ├── Arch_AWS-Outposts-family_16.png
        │   │   │   ├── Arch_AWS-Outposts-family_16.svg
        │   │   │   ├── Arch_AWS-Outposts-rack_16.png
        │   │   │   ├── Arch_AWS-Outposts-rack_16.svg
        │   │   │   ├── Arch_AWS-Outposts-servers_16.png
        │   │   │   ├── Arch_AWS-Outposts-servers_16.svg
        │   │   │   ├── Arch_AWS-Parallel-Cluster_16.png
        │   │   │   ├── Arch_AWS-Parallel-Cluster_16.svg
        │   │   │   ├── Arch_AWS-Parallel-Computing-Service_16.png
        │   │   │   ├── Arch_AWS-Parallel-Computing-Service_16.svg
        │   │   │   ├── Arch_AWS-Serverless-Application-Repository_16.png
        │   │   │   ├── Arch_AWS-Serverless-Application-Repository_16.svg
        │   │   │   ├── Arch_AWS-SimSpace-Weaver_16.png
        │   │   │   ├── Arch_AWS-SimSpace-Weaver_16.svg
        │   │   │   ├── Arch_AWS-Wavelength_16.png
        │   │   │   ├── Arch_AWS-Wavelength_16.svg
        │   │   │   ├── Arch_Bottlerocket_16.png
        │   │   │   ├── Arch_Bottlerocket_16.svg
        │   │   │   ├── Arch_Elastic-Fabric-Adapter_16.png
        │   │   │   ├── Arch_Elastic-Fabric-Adapter_16.svg
        │   │   │   ├── Arch_NICE-EnginFrame_16.png
        │   │   │   └── Arch_NICE-EnginFrame_16.svg
        │   │   ├── 32
        │   │   │   ├── .DS_Store
        │   │   │   ├── Arch_Amazon-DCV_32.png
        │   │   │   ├── Arch_Amazon-DCV_32.svg
        │   │   │   ├── Arch_Amazon-EC2_32.png
        │   │   │   ├── Arch_Amazon-EC2_32.svg
        │   │   │   ├── Arch_Amazon-EC2-Auto-Scaling_32.png
        │   │   │   ├── Arch_Amazon-EC2-Auto-Scaling_32.svg
        │   │   │   ├── Arch_Amazon-EC2-Image-Builder_32.png
        │   │   │   ├── Arch_Amazon-EC2-Image-Builder_32.svg
        │   │   │   ├── Arch_Amazon-Elastic-VMware-Service_32.png
        │   │   │   ├── Arch_Amazon-Elastic-VMware-Service_32.svg
        │   │   │   ├── Arch_Amazon-Lightsail_32.png
        │   │   │   ├── Arch_Amazon-Lightsail_32.svg
        │   │   │   ├── Arch_Amazon-Lightsail-for-Research_32.png
        │   │   │   ├── Arch_Amazon-Lightsail-for-Research_32.svg
        │   │   │   ├── Arch_AWS-App-Runner_32.png
        │   │   │   ├── Arch_AWS-App-Runner_32.svg
        │   │   │   ├── Arch_AWS-Batch_32.png
        │   │   │   ├── Arch_AWS-Batch_32.svg
        │   │   │   ├── Arch_AWS-Compute-Optimizer_32.png
        │   │   │   ├── Arch_AWS-Compute-Optimizer_32.svg
        │   │   │   ├── Arch_AWS-Elastic-Beanstalk_32.png
        │   │   │   ├── Arch_AWS-Elastic-Beanstalk_32.svg
        │   │   │   ├── Arch_AWS-Lambda_32.png
        │   │   │   ├── Arch_AWS-Lambda_32.svg
        │   │   │   ├── Arch_AWS-Local-Zones_32.png
        │   │   │   ├── Arch_AWS-Local-Zones_32.svg
        │   │   │   ├── Arch_AWS-Nitro-Enclaves_32.png
        │   │   │   ├── Arch_AWS-Nitro-Enclaves_32.svg
        │   │   │   ├── Arch_AWS-Outposts-family_32.png
        │   │   │   ├── Arch_AWS-Outposts-family_32.svg
        │   │   │   ├── Arch_AWS-Outposts-rack_32.png
        │   │   │   ├── Arch_AWS-Outposts-rack_32.svg
        │   │   │   ├── Arch_AWS-Outposts-servers_32.png
        │   │   │   ├── Arch_AWS-Outposts-servers_32.svg
        │   │   │   ├── Arch_AWS-Parallel-Cluster_32.png
        │   │   │   ├── Arch_AWS-Parallel-Cluster_32.svg
        │   │   │   ├── Arch_AWS-Parallel-Computing-Service_32.png
        │   │   │   ├── Arch_AWS-Parallel-Computing-Service_32.svg
        │   │   │   ├── Arch_AWS-Serverless-Application-Repository_32.png
        │   │   │   ├── Arch_AWS-Serverless-Application-Repository_32.svg
        │   │   │   ├── Arch_AWS-SimSpace-Weaver_32.png
        │   │   │   ├── Arch_AWS-SimSpace-Weaver_32.svg
        │   │   │   ├── Arch_AWS-Wavelength_32.png
        │   │   │   ├── Arch_AWS-Wavelength_32.svg
        │   │   │   ├── Arch_Bottlerocket_32.png
        │   │   │   ├── Arch_Bottlerocket_32.svg
        │   │   │   ├── Arch_Elastic-Fabric-Adapter_32.png
        │   │   │   ├── Arch_Elastic-Fabric-Adapter_32.svg
        │   │   │   ├── Arch_NICE-EnginFrame_32.png
        │   │   │   └── Arch_NICE-EnginFrame_32.svg
        │   │   ├── 48
        │   │   │   ├── .DS_Store
        │   │   │   ├── Arch_Amazon-DCV_48.png
        │   │   │   ├── Arch_Amazon-DCV_48.svg
        │   │   │   ├── Arch_Amazon-EC2_48.png
        │   │   │   ├── Arch_Amazon-EC2_48.svg
        │   │   │   ├── Arch_Amazon-EC2-Auto-Scaling_48.png
        │   │   │   ├── Arch_Amazon-EC2-Auto-Scaling_48.svg
        │   │   │   ├── Arch_Amazon-EC2-Image-Builder_48.png
        │   │   │   ├── Arch_Amazon-EC2-Image-Builder_48.svg
        │   │   │   ├── Arch_Amazon-Elastic-VMware-Service_48.png
        │   │   │   ├── Arch_Amazon-Elastic-VMware-Service_48.svg
        │   │   │   ├── Arch_Amazon-Lightsail_48.png
        │   │   │   ├── Arch_Amazon-Lightsail_48.svg
        │   │   │   ├── Arch_Amazon-Lightsail-for-Research_48.png
        │   │   │   ├── Arch_Amazon-Lightsail-for-Research_48.svg
        │   │   │   ├── Arch_AWS-App-Runner_48.png
        │   │   │   ├── Arch_AWS-App-Runner_48.svg
        │   │   │   ├── Arch_AWS-Batch_48.png
        │   │   │   ├── Arch_AWS-Batch_48.svg
        │   │   │   ├── Arch_AWS-Compute-Optimizer_48.png
        │   │   │   ├── Arch_AWS-Compute-Optimizer_48.svg
        │   │   │   ├── Arch_AWS-Elastic-Beanstalk_48.png
        │   │   │   ├── Arch_AWS-Elastic-Beanstalk_48.svg
        │   │   │   ├── Arch_AWS-Lambda_48.png
        │   │   │   ├── Arch_AWS-Lambda_48.svg
        │   │   │   ├── Arch_AWS-Local-Zones_48.png
        │   │   │   ├── Arch_AWS-Local-Zones_48.svg
        │   │   │   ├── Arch_AWS-Nitro-Enclaves_48.png
        │   │   │   ├── Arch_AWS-Nitro-Enclaves_48.svg
        │   │   │   ├── Arch_AWS-Outposts-family_48.png
        │   │   │   ├── Arch_AWS-Outposts-family_48.svg
        │   │   │   ├── Arch_AWS-Outposts-rack_48.png
        │   │   │   ├── Arch_AWS-Outposts-rack_48.svg
        │   │   │   ├── Arch_AWS-Outposts-servers_48.png
        │   │   │   ├── Arch_AWS-Outposts-servers_48.svg
        │   │   │   ├── Arch_AWS-Parallel-Cluster_48.png
        │   │   │   ├── Arch_AWS-Parallel-Cluster_48.svg
        │   │   │   ├── Arch_AWS-Parallel-Computing-Service_48.png
        │   │   │   ├── Arch_AWS-Parallel-Computing-Service_48.svg
        │   │   │   ├── Arch_AWS-Serverless-Application-Repository_48.png
        │   │   │   ├── Arch_AWS-Serverless-Application-Repository_48.svg
        │   │   │   ├── Arch_AWS-SimSpace-Weaver_48.png
        │   │   │   ├── Arch_AWS-SimSpace-Weaver_48.svg
        │   │   │   ├── Arch_AWS-Wavelength_48.png
        │   │   │   ├── Arch_AWS-Wavelength_48.svg
        │   │   │   ├── Arch_Bottlerocket_48.png
        │   │   │   ├── Arch_Bottlerocket_48.svg
        │   │   │   ├── Arch_Elastic-Fabric-Adapter_48.png
        │   │   │   ├── Arch_Elastic-Fabric-Adapter_48.svg
        │   │   │   ├── Arch_NICE-EnginFrame_48.png
        │   │   │   └── Arch_NICE-EnginFrame_48.svg
        │   │   └── 64
        │   │       ├── .DS_Store
        │   │       ├── Arch_Amazon-DCV_64.png
        │   │       ├── Arch_Amazon-DCV_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-EC2_64.png
        │   │       ├── Arch_Amazon-EC2_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-EC2-Auto-Scaling_64.png
        │   │       ├── Arch_Amazon-EC2-Auto-Scaling_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-EC2-Image-Builder_64.png
        │   │       ├── Arch_Amazon-EC2-Image-Builder_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Elastic-VMware-Service_64.png
        │   │       ├── Arch_Amazon-Elastic-VMware-Service_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Lightsail_64.png
        │   │       ├── Arch_Amazon-Lightsail_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Lightsail-for-Research_64.png
        │   │       ├── Arch_Amazon-Lightsail-for-Research_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-App-Runner_64.png
        │   │       ├── Arch_AWS-App-Runner_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Batch_64.png
        │   │       ├── Arch_AWS-Batch_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Compute-Optimizer_64.png
        │   │       ├── Arch_AWS-Compute-Optimizer_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Elastic-Beanstalk_64.png
        │   │       ├── Arch_AWS-Elastic-Beanstalk_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Lambda_64.png
        │   │       ├── Arch_AWS-Lambda_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Local-Zones_64.png
        │   │       ├── Arch_AWS-Local-Zones_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Nitro-Enclaves_64.png
        │   │       ├── Arch_AWS-Nitro-Enclaves_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Outposts-family_64.png
        │   │       ├── Arch_AWS-Outposts-family_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Outposts-rack_64.png
        │   │       ├── Arch_AWS-Outposts-rack_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Outposts-servers_64.png
        │   │       ├── Arch_AWS-Outposts-servers_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Parallel-Cluster_64.png
        │   │       ├── Arch_AWS-Parallel-Cluster_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Parallel-Computing-Service_64.png
        │   │       ├── Arch_AWS-Parallel-Computing-Service_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Serverless-Application-Repository_64.png
        │   │       ├── Arch_AWS-Serverless-Application-Repository_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-SimSpace-Weaver_64.png
        │   │       ├── Arch_AWS-SimSpace-Weaver_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Wavelength_64.png
        │   │       ├── Arch_AWS-Wavelength_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Bottlerocket_64.png
        │   │       ├── Arch_Bottlerocket_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Elastic-Fabric-Adapter_64.png
        │   │       ├── Arch_Elastic-Fabric-Adapter_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_NICE-EnginFrame_64.png
        │   │       ├── Arch_NICE-EnginFrame_64.svg
        │   │       └── [email protected]
        │   ├── containers
        │   │   ├── .DS_Store
        │   │   ├── 16
        │   │   │   ├── Arch_Amazon-ECS-Anywhere_16.png
        │   │   │   ├── Arch_Amazon-ECS-Anywhere_16.svg
        │   │   │   ├── Arch_Amazon-EKS-Anywhere_16.png
        │   │   │   ├── Arch_Amazon-EKS-Anywhere_16.svg
        │   │   │   ├── Arch_Amazon-EKS-Cloud_16.png
        │   │   │   ├── Arch_Amazon-EKS-Cloud_16.svg
        │   │   │   ├── Arch_Amazon-EKS-Distro_16.png
        │   │   │   ├── Arch_Amazon-EKS-Distro_16.svg
        │   │   │   ├── Arch_Amazon-Elastic-Container-Registry_16.png
        │   │   │   ├── Arch_Amazon-Elastic-Container-Registry_16.svg
        │   │   │   ├── Arch_Amazon-Elastic-Container-Service_16.png
        │   │   │   ├── Arch_Amazon-Elastic-Container-Service_16.svg
        │   │   │   ├── Arch_Amazon-Elastic-Kubernetes-Service_16.png
        │   │   │   ├── Arch_Amazon-Elastic-Kubernetes-Service_16.svg
        │   │   │   ├── Arch_AWS-Fargate_16.png
        │   │   │   ├── Arch_AWS-Fargate_16.svg
        │   │   │   ├── Arch_Red-Hat-OpenShift-Service-on-AWS_16.png
        │   │   │   └── Arch_Red-Hat-OpenShift-Service-on-AWS_16.svg
        │   │   ├── 32
        │   │   │   ├── Arch_Amazon-ECS-Anywhere_32.png
        │   │   │   ├── Arch_Amazon-ECS-Anywhere_32.svg
        │   │   │   ├── Arch_Amazon-EKS-Anywhere_32.png
        │   │   │   ├── Arch_Amazon-EKS-Anywhere_32.svg
        │   │   │   ├── Arch_Amazon-EKS-Cloud_32.png
        │   │   │   ├── Arch_Amazon-EKS-Cloud_32.svg
        │   │   │   ├── Arch_Amazon-EKS-Distro_32.png
        │   │   │   ├── Arch_Amazon-EKS-Distro_32.svg
        │   │   │   ├── Arch_Amazon-Elastic-Container-Registry_32.png
        │   │   │   ├── Arch_Amazon-Elastic-Container-Registry_32.svg
        │   │   │   ├── Arch_Amazon-Elastic-Container-Service_32.png
        │   │   │   ├── Arch_Amazon-Elastic-Container-Service_32.svg
        │   │   │   ├── Arch_Amazon-Elastic-Kubernetes-Service_32.png
        │   │   │   ├── Arch_Amazon-Elastic-Kubernetes-Service_32.svg
        │   │   │   ├── Arch_AWS-Fargate_32.png
        │   │   │   ├── Arch_AWS-Fargate_32.svg
        │   │   │   ├── Arch_Red-Hat-OpenShift-Service-on-AWS_32.png
        │   │   │   └── Arch_Red-Hat-OpenShift-Service-on-AWS_32.svg
        │   │   ├── 48
        │   │   │   ├── Arch_Amazon-ECS-Anywhere_48.png
        │   │   │   ├── Arch_Amazon-ECS-Anywhere_48.svg
        │   │   │   ├── Arch_Amazon-EKS-Anywhere_48.png
        │   │   │   ├── Arch_Amazon-EKS-Anywhere_48.svg
        │   │   │   ├── Arch_Amazon-EKS-Cloud_48.png
        │   │   │   ├── Arch_Amazon-EKS-Cloud_48.svg
        │   │   │   ├── Arch_Amazon-EKS-Distro_48.png
        │   │   │   ├── Arch_Amazon-EKS-Distro_48.svg
        │   │   │   ├── Arch_Amazon-Elastic-Container-Registry_48.png
        │   │   │   ├── Arch_Amazon-Elastic-Container-Registry_48.svg
        │   │   │   ├── Arch_Amazon-Elastic-Container-Service_48.png
        │   │   │   ├── Arch_Amazon-Elastic-Container-Service_48.svg
        │   │   │   ├── Arch_Amazon-Elastic-Kubernetes-Service_48.png
        │   │   │   ├── Arch_Amazon-Elastic-Kubernetes-Service_48.svg
        │   │   │   ├── Arch_AWS-Fargate_48.png
        │   │   │   ├── Arch_AWS-Fargate_48.svg
        │   │   │   ├── Arch_Red-Hat-OpenShift-Service-on-AWS_48.png
        │   │   │   └── Arch_Red-Hat-OpenShift-Service-on-AWS_48.svg
        │   │   └── 64
        │   │       ├── Arch_Amazon-ECS-Anywhere_64.png
        │   │       ├── Arch_Amazon-ECS-Anywhere_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-EKS-Anywhere_64.png
        │   │       ├── Arch_Amazon-EKS-Anywhere_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-EKS-Cloud_64.png
        │   │       ├── Arch_Amazon-EKS-Cloud_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-EKS-Distro_64.png
        │   │       ├── Arch_Amazon-EKS-Distro_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Elastic-Container-Registry_64.png
        │   │       ├── Arch_Amazon-Elastic-Container-Registry_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Elastic-Container-Service_64.png
        │   │       ├── Arch_Amazon-Elastic-Container-Service_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Elastic-Kubernetes-Service_64.png
        │   │       ├── Arch_Amazon-Elastic-Kubernetes-Service_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Fargate_64.png
        │   │       ├── Arch_AWS-Fargate_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Red-Hat-OpenShift-Service-on-AWS_64.png
        │   │       ├── Arch_Red-Hat-OpenShift-Service-on-AWS_64.svg
        │   │       └── [email protected]
        │   ├── customer-enablement
        │   │   ├── .DS_Store
        │   │   ├── 16
        │   │   │   ├── Arch_AWS-Activate_16.png
        │   │   │   ├── Arch_AWS-Activate_16.svg
        │   │   │   ├── Arch_AWS-IQ_16.png
        │   │   │   ├── Arch_AWS-IQ_16.svg
        │   │   │   ├── Arch_AWS-Managed-Services_16.png
        │   │   │   ├── Arch_AWS-Managed-Services_16.svg
        │   │   │   ├── Arch_AWS-Professional-Services_16.png
        │   │   │   ├── Arch_AWS-Professional-Services_16.svg
        │   │   │   ├── Arch_AWS-rePost_16.png
        │   │   │   ├── Arch_AWS-rePost_16.svg
        │   │   │   ├── Arch_AWS-rePost-Private_16.png
        │   │   │   ├── Arch_AWS-rePost-Private_16.svg
        │   │   │   ├── Arch_AWS-Support_16.png
        │   │   │   ├── Arch_AWS-Support_16.svg
        │   │   │   ├── Arch_AWS-Training-Certification_16.png
        │   │   │   └── Arch_AWS-Training-Certification_16.svg
        │   │   ├── 32
        │   │   │   ├── Arch_AWS-Activate_32.png
        │   │   │   ├── Arch_AWS-Activate_32.svg
        │   │   │   ├── Arch_AWS-IQ_32.png
        │   │   │   ├── Arch_AWS-IQ_32.svg
        │   │   │   ├── Arch_AWS-Managed-Services_32.png
        │   │   │   ├── Arch_AWS-Managed-Services_32.svg
        │   │   │   ├── Arch_AWS-Professional-Services_32.png
        │   │   │   ├── Arch_AWS-Professional-Services_32.svg
        │   │   │   ├── Arch_AWS-rePost_32.png
        │   │   │   ├── Arch_AWS-rePost_32.svg
        │   │   │   ├── Arch_AWS-rePost-Private_32.png
        │   │   │   ├── Arch_AWS-rePost-Private_32.svg
        │   │   │   ├── Arch_AWS-Support_32.png
        │   │   │   ├── Arch_AWS-Support_32.svg
        │   │   │   ├── Arch_AWS-Training-Certification_32.png
        │   │   │   └── Arch_AWS-Training-Certification_32.svg
        │   │   ├── 48
        │   │   │   ├── Arch_AWS-Activate_48.png
        │   │   │   ├── Arch_AWS-Activate_48.svg
        │   │   │   ├── Arch_AWS-IQ_48.png
        │   │   │   ├── Arch_AWS-IQ_48.svg
        │   │   │   ├── Arch_AWS-Managed-Services_48.png
        │   │   │   ├── Arch_AWS-Managed-Services_48.svg
        │   │   │   ├── Arch_AWS-Professional-Services_48.png
        │   │   │   ├── Arch_AWS-Professional-Services_48.svg
        │   │   │   ├── Arch_AWS-rePost_48.png
        │   │   │   ├── Arch_AWS-rePost_48.svg
        │   │   │   ├── Arch_AWS-rePost-Private_48.png
        │   │   │   ├── Arch_AWS-rePost-Private_48.svg
        │   │   │   ├── Arch_AWS-Support_48.png
        │   │   │   ├── Arch_AWS-Support_48.svg
        │   │   │   ├── Arch_AWS-Training-Certification_48.png
        │   │   │   └── Arch_AWS-Training-Certification_48.svg
        │   │   └── 64
        │   │       ├── Arch_AWS-Activate_64.png
        │   │       ├── Arch_AWS-Activate_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-IQ_64.png
        │   │       ├── Arch_AWS-IQ_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Managed-Services_64.png
        │   │       ├── Arch_AWS-Managed-Services_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Professional-Services_64.png
        │   │       ├── Arch_AWS-Professional-Services_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-rePost_64.png
        │   │       ├── Arch_AWS-rePost_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-rePost-Private_64.png
        │   │       ├── Arch_AWS-rePost-Private_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Support_64.png
        │   │       ├── Arch_AWS-Support_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Training-Certification_64.png
        │   │       ├── Arch_AWS-Training-Certification_64.svg
        │   │       └── [email protected]
        │   ├── database
        │   │   ├── .DS_Store
        │   │   ├── 16
        │   │   │   ├── .DS_Store
        │   │   │   ├── Arch_Amazon-Aurora_16.png
        │   │   │   ├── Arch_Amazon-Aurora_16.svg
        │   │   │   ├── Arch_Amazon-DocumentDB_16.png
        │   │   │   ├── Arch_Amazon-DocumentDB_16.svg
        │   │   │   ├── Arch_Amazon-DynamoDB_16.png
        │   │   │   ├── Arch_Amazon-DynamoDB_16.svg
        │   │   │   ├── Arch_Amazon-ElastiCache_16.png
        │   │   │   ├── Arch_Amazon-ElastiCache_16.svg
        │   │   │   ├── Arch_Amazon-Keyspaces_16.png
        │   │   │   ├── Arch_Amazon-Keyspaces_16.svg
        │   │   │   ├── Arch_Amazon-MemoryDB_16.png
        │   │   │   ├── Arch_Amazon-MemoryDB_16.svg
        │   │   │   ├── Arch_Amazon-Neptune_16.png
        │   │   │   ├── Arch_Amazon-Neptune_16.svg
        │   │   │   ├── Arch_Amazon-RDS_16.png
        │   │   │   ├── Arch_Amazon-RDS_16.svg
        │   │   │   ├── Arch_Amazon-Timestream_16.png
        │   │   │   ├── Arch_Amazon-Timestream_16.svg
        │   │   │   ├── Arch_AWS-Database-Migration-Service_16.png
        │   │   │   ├── Arch_AWS-Database-Migration-Service_16.svg
        │   │   │   ├── Arch_Oracle-Database-at-AWS_16.png
        │   │   │   └── Arch_Oracle-Database-at-AWS_16.svg
        │   │   ├── 32
        │   │   │   ├── .DS_Store
        │   │   │   ├── Arch_Amazon-Aurora_32.png
        │   │   │   ├── Arch_Amazon-Aurora_32.svg
        │   │   │   ├── Arch_Amazon-DocumentDB_32.png
        │   │   │   ├── Arch_Amazon-DocumentDB_32.svg
        │   │   │   ├── Arch_Amazon-DynamoDB_32.png
        │   │   │   ├── Arch_Amazon-DynamoDB_32.svg
        │   │   │   ├── Arch_Amazon-ElastiCache_32.png
        │   │   │   ├── Arch_Amazon-ElastiCache_32.svg
        │   │   │   ├── Arch_Amazon-Keyspaces_32.png
        │   │   │   ├── Arch_Amazon-Keyspaces_32.svg
        │   │   │   ├── Arch_Amazon-MemoryDB_32.png
        │   │   │   ├── Arch_Amazon-MemoryDB_32.svg
        │   │   │   ├── Arch_Amazon-Neptune_32.png
        │   │   │   ├── Arch_Amazon-Neptune_32.svg
        │   │   │   ├── Arch_Amazon-RDS_32.png
        │   │   │   ├── Arch_Amazon-RDS_32.svg
        │   │   │   ├── Arch_Amazon-Timestream_32.png
        │   │   │   ├── Arch_Amazon-Timestream_32.svg
        │   │   │   ├── Arch_AWS-Database-Migration-Service_32.png
        │   │   │   ├── Arch_AWS-Database-Migration-Service_32.svg
        │   │   │   ├── Arch_Oracle-Database-at-AWS_32.png
        │   │   │   └── Arch_Oracle-Database-at-AWS_32.svg
        │   │   ├── 48
        │   │   │   ├── .DS_Store
        │   │   │   ├── Arch_Amazon-Aurora_48.png
        │   │   │   ├── Arch_Amazon-Aurora_48.svg
        │   │   │   ├── Arch_Amazon-DocumentDB_48.png
        │   │   │   ├── Arch_Amazon-DocumentDB_48.svg
        │   │   │   ├── Arch_Amazon-DynamoDB_48.png
        │   │   │   ├── Arch_Amazon-DynamoDB_48.svg
        │   │   │   ├── Arch_Amazon-ElastiCache_48.png
        │   │   │   ├── Arch_Amazon-ElastiCache_48.svg
        │   │   │   ├── Arch_Amazon-Keyspaces_48.png
        │   │   │   ├── Arch_Amazon-Keyspaces_48.svg
        │   │   │   ├── Arch_Amazon-MemoryDB_48.png
        │   │   │   ├── Arch_Amazon-MemoryDB_48.svg
        │   │   │   ├── Arch_Amazon-Neptune_48.png
        │   │   │   ├── Arch_Amazon-Neptune_48.svg
        │   │   │   ├── Arch_Amazon-RDS_48.png
        │   │   │   ├── Arch_Amazon-RDS_48.svg
        │   │   │   ├── Arch_Amazon-Timestream_48.png
        │   │   │   ├── Arch_Amazon-Timestream_48.svg
        │   │   │   ├── Arch_AWS-Database-Migration-Service_48.png
        │   │   │   ├── Arch_AWS-Database-Migration-Service_48.svg
        │   │   │   ├── Arch_Oracle-Database-at-AWS_48.png
        │   │   │   └── Arch_Oracle-Database-at-AWS_48.svg
        │   │   └── 64
        │   │       ├── .DS_Store
        │   │       ├── Arch_Amazon-Aurora_64.png
        │   │       ├── Arch_Amazon-Aurora_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-DocumentDB_64.png
        │   │       ├── Arch_Amazon-DocumentDB_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-DynamoDB_64.png
        │   │       ├── Arch_Amazon-DynamoDB_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-ElastiCache_64.png
        │   │       ├── Arch_Amazon-ElastiCache_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Keyspaces_64.png
        │   │       ├── Arch_Amazon-Keyspaces_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-MemoryDB_64.png
        │   │       ├── Arch_Amazon-MemoryDB_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Neptune_64.png
        │   │       ├── Arch_Amazon-Neptune_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-RDS_64.png
        │   │       ├── Arch_Amazon-RDS_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Timestream_64.png
        │   │       ├── Arch_Amazon-Timestream_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Database-Migration-Service_64.png
        │   │       ├── Arch_AWS-Database-Migration-Service_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Oracle-Database-at-AWS_64.png
        │   │       ├── Arch_Oracle-Database-at-AWS_64.svg
        │   │       └── [email protected]
        │   ├── developer-tools
        │   │   ├── .DS_Store
        │   │   ├── 16
        │   │   │   ├── .DS_Store
        │   │   │   ├── Arch_Amazon-CodeCatalyst_16.png
        │   │   │   ├── Arch_Amazon-CodeCatalyst_16.svg
        │   │   │   ├── Arch_Amazon-Corretto_16.png
        │   │   │   ├── Arch_Amazon-Corretto_16.svg
        │   │   │   ├── Arch_AWS-Cloud-Control-API_16.png
        │   │   │   ├── Arch_AWS-Cloud-Control-API_16.svg
        │   │   │   ├── Arch_AWS-Cloud-Development-Kit_16.png
        │   │   │   ├── Arch_AWS-Cloud-Development-Kit_16.svg
        │   │   │   ├── Arch_AWS-Cloud9_16.png
        │   │   │   ├── Arch_AWS-Cloud9_16.svg
        │   │   │   ├── Arch_AWS-CloudShell_16.png
        │   │   │   ├── Arch_AWS-CloudShell_16.svg
        │   │   │   ├── Arch_AWS-CodeArtifact_16.png
        │   │   │   ├── Arch_AWS-CodeArtifact_16.svg
        │   │   │   ├── Arch_AWS-CodeBuild_16.png
        │   │   │   ├── Arch_AWS-CodeBuild_16.svg
        │   │   │   ├── Arch_AWS-CodeCommit_16.png
        │   │   │   ├── Arch_AWS-CodeCommit_16.svg
        │   │   │   ├── Arch_AWS-CodeDeploy_16.png
        │   │   │   ├── Arch_AWS-CodeDeploy_16.svg
        │   │   │   ├── Arch_AWS-CodePipeline_16.png
        │   │   │   ├── Arch_AWS-CodePipeline_16.svg
        │   │   │   ├── Arch_AWS-Command-Line-Interface_16.png
        │   │   │   ├── Arch_AWS-Command-Line-Interface_16.svg
        │   │   │   ├── Arch_AWS-Fault-Injection-Service_16.png
        │   │   │   ├── Arch_AWS-Fault-Injection-Service_16.svg
        │   │   │   ├── Arch_AWS-Infrastructure-Composer_16.png
        │   │   │   ├── Arch_AWS-Infrastructure-Composer_16.svg
        │   │   │   ├── Arch_AWS-Tools-and-SDKs_16.png
        │   │   │   ├── Arch_AWS-Tools-and-SDKs_16.svg
        │   │   │   ├── Arch_AWS-X-Ray_16.png
        │   │   │   └── Arch_AWS-X-Ray_16.svg
        │   │   ├── 32
        │   │   │   ├── .DS_Store
        │   │   │   ├── Arch_Amazon-CodeCatalyst_32.png
        │   │   │   ├── Arch_Amazon-CodeCatalyst_32.svg
        │   │   │   ├── Arch_Amazon-Corretto_32.png
        │   │   │   ├── Arch_Amazon-Corretto_32.svg
        │   │   │   ├── Arch_AWS-Cloud-Control-API_32.png
        │   │   │   ├── Arch_AWS-Cloud-Control-API_32.svg
        │   │   │   ├── Arch_AWS-Cloud-Development-Kit_32.png
        │   │   │   ├── Arch_AWS-Cloud-Development-Kit_32.svg
        │   │   │   ├── Arch_AWS-Cloud9_32.png
        │   │   │   ├── Arch_AWS-Cloud9_32.svg
        │   │   │   ├── Arch_AWS-CloudShell_32.png
        │   │   │   ├── Arch_AWS-CloudShell_32.svg
        │   │   │   ├── Arch_AWS-CodeArtifact_32.png
        │   │   │   ├── Arch_AWS-CodeArtifact_32.svg
        │   │   │   ├── Arch_AWS-CodeBuild_32.png
        │   │   │   ├── Arch_AWS-CodeBuild_32.svg
        │   │   │   ├── Arch_AWS-CodeCommit_32.png
        │   │   │   ├── Arch_AWS-CodeCommit_32.svg
        │   │   │   ├── Arch_AWS-CodeDeploy_32.png
        │   │   │   ├── Arch_AWS-CodeDeploy_32.svg
        │   │   │   ├── Arch_AWS-CodePipeline_32.png
        │   │   │   ├── Arch_AWS-CodePipeline_32.svg
        │   │   │   ├── Arch_AWS-Command-Line-Interface_32.png
        │   │   │   ├── Arch_AWS-Command-Line-Interface_32.svg
        │   │   │   ├── Arch_AWS-Fault-Injection-Service_32.png
        │   │   │   ├── Arch_AWS-Fault-Injection-Service_32.svg
        │   │   │   ├── Arch_AWS-Infrastructure-Composer_32.png
        │   │   │   ├── Arch_AWS-Infrastructure-Composer_32.svg
        │   │   │   ├── Arch_AWS-Tools-and-SDKs_32.png
        │   │   │   ├── Arch_AWS-Tools-and-SDKs_32.svg
        │   │   │   ├── Arch_AWS-X-Ray_32.png
        │   │   │   └── Arch_AWS-X-Ray_32.svg
        │   │   ├── 48
        │   │   │   ├── .DS_Store
        │   │   │   ├── Arch_Amazon-CodeCatalyst_48.png
        │   │   │   ├── Arch_Amazon-CodeCatalyst_48.svg
        │   │   │   ├── Arch_Amazon-Corretto_48.png
        │   │   │   ├── Arch_Amazon-Corretto_48.svg
        │   │   │   ├── Arch_AWS-Cloud-Control-API_48.png
        │   │   │   ├── Arch_AWS-Cloud-Control-API_48.svg
        │   │   │   ├── Arch_AWS-Cloud-Development-Kit_48.png
        │   │   │   ├── Arch_AWS-Cloud-Development-Kit_48.svg
        │   │   │   ├── Arch_AWS-Cloud9_48.png
        │   │   │   ├── Arch_AWS-Cloud9_48.svg
        │   │   │   ├── Arch_AWS-CloudShell_48.png
        │   │   │   ├── Arch_AWS-CloudShell_48.svg
        │   │   │   ├── Arch_AWS-CodeArtifact_48.png
        │   │   │   ├── Arch_AWS-CodeArtifact_48.svg
        │   │   │   ├── Arch_AWS-CodeBuild_48.png
        │   │   │   ├── Arch_AWS-CodeBuild_48.svg
        │   │   │   ├── Arch_AWS-CodeCommit_48.png
        │   │   │   ├── Arch_AWS-CodeCommit_48.svg
        │   │   │   ├── Arch_AWS-CodeDeploy_48.png
        │   │   │   ├── Arch_AWS-CodeDeploy_48.svg
        │   │   │   ├── Arch_AWS-CodePipeline_48.png
        │   │   │   ├── Arch_AWS-CodePipeline_48.svg
        │   │   │   ├── Arch_AWS-Command-Line-Interface_48.png
        │   │   │   ├── Arch_AWS-Command-Line-Interface_48.svg
        │   │   │   ├── Arch_AWS-Fault-Injection-Service_48.png
        │   │   │   ├── Arch_AWS-Fault-Injection-Service_48.svg
        │   │   │   ├── Arch_AWS-Infrastructure-Composer_48.png
        │   │   │   ├── Arch_AWS-Infrastructure-Composer_48.svg
        │   │   │   ├── Arch_AWS-Tools-and-SDKs_48.png
        │   │   │   ├── Arch_AWS-Tools-and-SDKs_48.svg
        │   │   │   ├── Arch_AWS-X-Ray_48.png
        │   │   │   └── Arch_AWS-X-Ray_48.svg
        │   │   └── 64
        │   │       ├── .DS_Store
        │   │       ├── Arch_Amazon-CodeCatalyst_64.png
        │   │       ├── Arch_Amazon-CodeCatalyst_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Corretto_64.png
        │   │       ├── Arch_Amazon-Corretto_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Cloud-Control-API_64.png
        │   │       ├── Arch_AWS-Cloud-Control-API_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Cloud-Development-Kit_64.png
        │   │       ├── Arch_AWS-Cloud-Development-Kit_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Cloud9_64.png
        │   │       ├── Arch_AWS-Cloud9_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-CloudShell_64.png
        │   │       ├── Arch_AWS-CloudShell_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-CodeArtifact_64.png
        │   │       ├── Arch_AWS-CodeArtifact_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-CodeBuild_64.png
        │   │       ├── Arch_AWS-CodeBuild_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-CodeCommit_64.png
        │   │       ├── Arch_AWS-CodeCommit_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-CodeDeploy_64.png
        │   │       ├── Arch_AWS-CodeDeploy_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-CodePipeline_64.png
        │   │       ├── Arch_AWS-CodePipeline_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Command-Line-Interface_64.png
        │   │       ├── Arch_AWS-Command-Line-Interface_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Fault-Injection-Service_64.png
        │   │       ├── Arch_AWS-Fault-Injection-Service_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Infrastructure-Composer_64.png
        │   │       ├── Arch_AWS-Infrastructure-Composer_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Tools-and-SDKs_64.png
        │   │       ├── Arch_AWS-Tools-and-SDKs_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-X-Ray_64.png
        │   │       ├── Arch_AWS-X-Ray_64.svg
        │   │       └── [email protected]
        │   ├── end-user-computing
        │   │   ├── .DS_Store
        │   │   ├── 16
        │   │   │   ├── .DS_Store
        │   │   │   ├── Arch_Amazon-AppStream-2_16.png
        │   │   │   ├── Arch_Amazon-AppStream-2_16.svg
        │   │   │   ├── Arch_Amazon-WorkSpaces-Family_16.png
        │   │   │   └── Arch_Amazon-WorkSpaces-Family_16.svg
        │   │   ├── 32
        │   │   │   ├── .DS_Store
        │   │   │   ├── Arch_Amazon-AppStream-2_32.png
        │   │   │   ├── Arch_Amazon-AppStream-2_32.svg
        │   │   │   ├── Arch_Amazon-WorkSpaces-Family_32.png
        │   │   │   └── Arch_Amazon-WorkSpaces-Family_32.svg
        │   │   ├── 48
        │   │   │   ├── .DS_Store
        │   │   │   ├── Arch_Amazon-AppStream-2_48.png
        │   │   │   ├── Arch_Amazon-AppStream-2_48.svg
        │   │   │   ├── Arch_Amazon-WorkSpaces-Family_48.png
        │   │   │   └── Arch_Amazon-WorkSpaces-Family_48.svg
        │   │   └── 64
        │   │       ├── .DS_Store
        │   │       ├── Arch_Amazon-AppStream-2_64.png
        │   │       ├── Arch_Amazon-AppStream-2_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-WorkSpaces-Family_64.png
        │   │       ├── Arch_Amazon-WorkSpaces-Family_64.svg
        │   │       └── [email protected]
        │   ├── front-end-web-mobile
        │   │   ├── .DS_Store
        │   │   ├── 16
        │   │   │   ├── Arch_Amazon-Location-Service_16.png
        │   │   │   ├── Arch_Amazon-Location-Service_16.svg
        │   │   │   ├── Arch_AWS-Amplify_16.png
        │   │   │   ├── Arch_AWS-Amplify_16.svg
        │   │   │   ├── Arch_AWS-Device-Farm_16.png
        │   │   │   └── Arch_AWS-Device-Farm_16.svg
        │   │   ├── 32
        │   │   │   ├── Arch_Amazon-Location-Service_32.png
        │   │   │   ├── Arch_Amazon-Location-Service_32.svg
        │   │   │   ├── Arch_AWS-Amplify_32.png
        │   │   │   ├── Arch_AWS-Amplify_32.svg
        │   │   │   ├── Arch_AWS-Device-Farm_32.png
        │   │   │   └── Arch_AWS-Device-Farm_32.svg
        │   │   ├── 48
        │   │   │   ├── Arch_Amazon-Location-Service_48.png
        │   │   │   ├── Arch_Amazon-Location-Service_48.svg
        │   │   │   ├── Arch_AWS-Amplify_48.png
        │   │   │   ├── Arch_AWS-Amplify_48.svg
        │   │   │   ├── Arch_AWS-Device-Farm_48.png
        │   │   │   └── Arch_AWS-Device-Farm_48.svg
        │   │   └── 64
        │   │       ├── Arch_Amazon-Location-Service_64.png
        │   │       ├── Arch_Amazon-Location-Service_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Amplify_64.png
        │   │       ├── Arch_AWS-Amplify_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Device-Farm_64.png
        │   │       ├── Arch_AWS-Device-Farm_64.svg
        │   │       └── [email protected]
        │   ├── games
        │   │   ├── .DS_Store
        │   │   ├── 16
        │   │   │   ├── .DS_Store
        │   │   │   ├── Arch_Amazon-GameLift-Servers_16.png
        │   │   │   ├── Arch_Amazon-GameLift-Servers_16.svg
        │   │   │   ├── Arch_Amazon-GameLift-Streams_16.png
        │   │   │   ├── Arch_Amazon-GameLift-Streams_16.svg
        │   │   │   ├── Arch_Open-3D-Engine_16.png
        │   │   │   └── Arch_Open-3D-Engine_16.svg
        │   │   ├── 32
        │   │   │   ├── .DS_Store
        │   │   │   ├── Arch_Amazon-GameLift-Servers_32.png
        │   │   │   ├── Arch_Amazon-GameLift-Servers_32.svg
        │   │   │   ├── Arch_Amazon-GameLift-Streams_32.png
        │   │   │   ├── Arch_Amazon-GameLift-Streams_32.svg
        │   │   │   ├── Arch_Open-3D-Engine_32.png
        │   │   │   └── Arch_Open-3D-Engine_32.svg
        │   │   ├── 48
        │   │   │   ├── .DS_Store
        │   │   │   ├── Arch_Amazon-GameLift-Servers_48.png
        │   │   │   ├── Arch_Amazon-GameLift-Servers_48.svg
        │   │   │   ├── Arch_Amazon-GameLift-Streams_48.png
        │   │   │   ├── Arch_Amazon-GameLift-Streams_48.svg
        │   │   │   ├── Arch_Open-3D-Engine_48.png
        │   │   │   └── Arch_Open-3D-Engine_48.svg
        │   │   └── 64
        │   │       ├── .DS_Store
        │   │       ├── Arch_Amazon-GameLift-Servers_64.png
        │   │       ├── Arch_Amazon-GameLift-Servers_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-GameLift-Streams_64.png
        │   │       ├── Arch_Amazon-GameLift-Streams_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Open-3D-Engine_64.png
        │   │       ├── Arch_Open-3D-Engine_64.svg
        │   │       └── [email protected]
        │   ├── general-icons
        │   │   ├── .DS_Store
        │   │   ├── 16
        │   │   │   ├── Arch_AWS-Marketplace_Dark_16.png
        │   │   │   ├── Arch_AWS-Marketplace_Dark_16.svg
        │   │   │   ├── Arch_AWS-Marketplace_Light_16.png
        │   │   │   └── Arch_AWS-Marketplace_Light_16.svg
        │   │   ├── 32
        │   │   │   ├── Arch_AWS-Marketplace_Dark_32.png
        │   │   │   ├── Arch_AWS-Marketplace_Dark_32.svg
        │   │   │   ├── Arch_AWS-Marketplace_Light_32.png
        │   │   │   └── Arch_AWS-Marketplace_Light_32.svg
        │   │   ├── 48
        │   │   │   ├── Arch_AWS-Marketplace_Dark_48.png
        │   │   │   ├── Arch_AWS-Marketplace_Dark_48.svg
        │   │   │   ├── Arch_AWS-Marketplace_Light_48.png
        │   │   │   └── Arch_AWS-Marketplace_Light_48.svg
        │   │   └── 64
        │   │       ├── Arch_AWS-Marketplace_Dark_64.png
        │   │       ├── Arch_AWS-Marketplace_Dark_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Marketplace_Light_64.png
        │   │       ├── Arch_AWS-Marketplace_Light_64.svg
        │   │       └── [email protected]
        │   ├── internet-of-things
        │   │   ├── .DS_Store
        │   │   ├── 16
        │   │   │   ├── .DS_Store
        │   │   │   ├── Arch_AWS-IoT-Analytics_16.png
        │   │   │   ├── Arch_AWS-IoT-Analytics_16.svg
        │   │   │   ├── Arch_AWS-IoT-Button_16.png
        │   │   │   ├── Arch_AWS-IoT-Button_16.svg
        │   │   │   ├── Arch_AWS-IoT-Core_16.png
        │   │   │   ├── Arch_AWS-IoT-Core_16.svg
        │   │   │   ├── Arch_AWS-IoT-Device-Defender_16.png
        │   │   │   ├── Arch_AWS-IoT-Device-Defender_16.svg
        │   │   │   ├── Arch_AWS-IoT-Device-Management_16.png
        │   │   │   ├── Arch_AWS-IoT-Device-Management_16.svg
        │   │   │   ├── Arch_AWS-IoT-Events_16.png
        │   │   │   ├── Arch_AWS-IoT-Events_16.svg
        │   │   │   ├── Arch_AWS-IoT-ExpressLink_16.png
        │   │   │   ├── Arch_AWS-IoT-ExpressLink_16.svg
        │   │   │   ├── Arch_AWS-IoT-FleetWise_16.png
        │   │   │   ├── Arch_AWS-IoT-FleetWise_16.svg
        │   │   │   ├── Arch_AWS-IoT-Greengrass_16.png
        │   │   │   ├── Arch_AWS-IoT-Greengrass_16.svg
        │   │   │   ├── Arch_AWS-IoT-SiteWise_16.png
        │   │   │   ├── Arch_AWS-IoT-SiteWise_16.svg
        │   │   │   ├── Arch_AWS-IoT-TwinMaker_16.png
        │   │   │   ├── Arch_AWS-IoT-TwinMaker_16.svg
        │   │   │   ├── Arch_FreeRTOS_16.png
        │   │   │   └── Arch_FreeRTOS_16.svg
        │   │   ├── 32
        │   │   │   ├── .DS_Store
        │   │   │   ├── Arch_AWS-IoT-Analytics_32.png
        │   │   │   ├── Arch_AWS-IoT-Analytics_32.svg
        │   │   │   ├── Arch_AWS-IoT-Button_32.png
        │   │   │   ├── Arch_AWS-IoT-Button_32.svg
        │   │   │   ├── Arch_AWS-IoT-Core_32.png
        │   │   │   ├── Arch_AWS-IoT-Core_32.svg
        │   │   │   ├── Arch_AWS-IoT-Device-Defender_32.png
        │   │   │   ├── Arch_AWS-IoT-Device-Defender_32.svg
        │   │   │   ├── Arch_AWS-IoT-Device-Management_32.png
        │   │   │   ├── Arch_AWS-IoT-Device-Management_32.svg
        │   │   │   ├── Arch_AWS-IoT-Events_32.png
        │   │   │   ├── Arch_AWS-IoT-Events_32.svg
        │   │   │   ├── Arch_AWS-IoT-ExpressLink_32.png
        │   │   │   ├── Arch_AWS-IoT-ExpressLink_32.svg
        │   │   │   ├── Arch_AWS-IoT-FleetWise_32.png
        │   │   │   ├── Arch_AWS-IoT-FleetWise_32.svg
        │   │   │   ├── Arch_AWS-IoT-Greengrass_32.png
        │   │   │   ├── Arch_AWS-IoT-Greengrass_32.svg
        │   │   │   ├── Arch_AWS-IoT-SiteWise_32.png
        │   │   │   ├── Arch_AWS-IoT-SiteWise_32.svg
        │   │   │   ├── Arch_AWS-IoT-TwinMaker_32.png
        │   │   │   ├── Arch_AWS-IoT-TwinMaker_32.svg
        │   │   │   ├── Arch_FreeRTOS_32.png
        │   │   │   └── Arch_FreeRTOS_32.svg
        │   │   ├── 48
        │   │   │   ├── .DS_Store
        │   │   │   ├── Arch_AWS-IoT-Analytics_48.png
        │   │   │   ├── Arch_AWS-IoT-Analytics_48.svg
        │   │   │   ├── Arch_AWS-IoT-Button_48.png
        │   │   │   ├── Arch_AWS-IoT-Button_48.svg
        │   │   │   ├── Arch_AWS-IoT-Core_48.png
        │   │   │   ├── Arch_AWS-IoT-Core_48.svg
        │   │   │   ├── Arch_AWS-IoT-Device-Defender_48.png
        │   │   │   ├── Arch_AWS-IoT-Device-Defender_48.svg
        │   │   │   ├── Arch_AWS-IoT-Device-Management_48.png
        │   │   │   ├── Arch_AWS-IoT-Device-Management_48.svg
        │   │   │   ├── Arch_AWS-IoT-Events_48.png
        │   │   │   ├── Arch_AWS-IoT-Events_48.svg
        │   │   │   ├── Arch_AWS-IoT-ExpressLink_48.png
        │   │   │   ├── Arch_AWS-IoT-ExpressLink_48.svg
        │   │   │   ├── Arch_AWS-IoT-FleetWise_48.png
        │   │   │   ├── Arch_AWS-IoT-FleetWise_48.svg
        │   │   │   ├── Arch_AWS-IoT-Greengrass_48.png
        │   │   │   ├── Arch_AWS-IoT-Greengrass_48.svg
        │   │   │   ├── Arch_AWS-IoT-SiteWise_48.png
        │   │   │   ├── Arch_AWS-IoT-SiteWise_48.svg
        │   │   │   ├── Arch_AWS-IoT-TwinMaker_48.png
        │   │   │   ├── Arch_AWS-IoT-TwinMaker_48.svg
        │   │   │   ├── Arch_FreeRTOS_48.png
        │   │   │   └── Arch_FreeRTOS_48.svg
        │   │   └── 64
        │   │       ├── .DS_Store
        │   │       ├── Arch_AWS-IoT-Analytics_64.png
        │   │       ├── Arch_AWS-IoT-Analytics_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-IoT-Button_64.png
        │   │       ├── Arch_AWS-IoT-Button_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-IoT-Core_64.png
        │   │       ├── Arch_AWS-IoT-Core_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-IoT-Device-Defender_64.png
        │   │       ├── Arch_AWS-IoT-Device-Defender_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-IoT-Device-Management_64.png
        │   │       ├── Arch_AWS-IoT-Device-Management_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-IoT-Events_64.png
        │   │       ├── Arch_AWS-IoT-Events_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-IoT-ExpressLink_64.png
        │   │       ├── Arch_AWS-IoT-ExpressLink_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-IoT-FleetWise_64.png
        │   │       ├── Arch_AWS-IoT-FleetWise_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-IoT-Greengrass_64.png
        │   │       ├── Arch_AWS-IoT-Greengrass_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-IoT-SiteWise_64.png
        │   │       ├── Arch_AWS-IoT-SiteWise_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-IoT-TwinMaker_64.png
        │   │       ├── Arch_AWS-IoT-TwinMaker_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_FreeRTOS_64.png
        │   │       ├── Arch_FreeRTOS_64.svg
        │   │       └── [email protected]
        │   ├── management-governance
        │   │   ├── .DS_Store
        │   │   ├── 16
        │   │   │   ├── .DS_Store
        │   │   │   ├── Arch_Amazon-CloudWatch_16.png
        │   │   │   ├── Arch_Amazon-CloudWatch_16.svg
        │   │   │   ├── Arch_Amazon-Managed-Grafana_16.png
        │   │   │   ├── Arch_Amazon-Managed-Grafana_16.svg
        │   │   │   ├── Arch_Amazon-Managed-Service-for-Prometheus_16.png
        │   │   │   ├── Arch_Amazon-Managed-Service-for-Prometheus_16.svg
        │   │   │   ├── Arch_AWS-AppConfig_16.png
        │   │   │   ├── Arch_AWS-AppConfig_16.svg
        │   │   │   ├── Arch_AWS-Application-Auto-Scaling_16.png
        │   │   │   ├── Arch_AWS-Application-Auto-Scaling_16.svg
        │   │   │   ├── Arch_AWS-Auto-Scaling_16.png
        │   │   │   ├── Arch_AWS-Auto-Scaling_16.svg
        │   │   │   ├── Arch_AWS-Backint-Agent_16.png
        │   │   │   ├── Arch_AWS-Backint-Agent_16.svg
        │   │   │   ├── Arch_AWS-Chatbot_16.png
        │   │   │   ├── Arch_AWS-Chatbot_16.svg
        │   │   │   ├── Arch_AWS-CloudFormation_16.png
        │   │   │   ├── Arch_AWS-CloudFormation_16.svg
        │   │   │   ├── Arch_AWS-CloudTrail_16.png
        │   │   │   ├── Arch_AWS-CloudTrail_16.svg
        │   │   │   ├── Arch_AWS-Compute-Optimizer_16.png
        │   │   │   ├── Arch_AWS-Compute-Optimizer_16.svg
        │   │   │   ├── Arch_AWS-Config_16.png
        │   │   │   ├── Arch_AWS-Config_16.svg
        │   │   │   ├── Arch_AWS-Console-Mobile-Application_16.png
        │   │   │   ├── Arch_AWS-Console-Mobile-Application_16.svg
        │   │   │   ├── Arch_AWS-Control-Tower_16.png
        │   │   │   ├── Arch_AWS-Control-Tower_16.svg
        │   │   │   ├── Arch_AWS-Distro-for-OpenTelemetry_16.png
        │   │   │   ├── Arch_AWS-Distro-for-OpenTelemetry_16.svg
        │   │   │   ├── Arch_AWS-Health-Dashboard_16.png
        │   │   │   ├── Arch_AWS-Health-Dashboard_16.svg
        │   │   │   ├── Arch_AWS-Launch-Wizard_16.png
        │   │   │   ├── Arch_AWS-Launch-Wizard_16.svg
        │   │   │   ├── Arch_AWS-License-Manager_16.png
        │   │   │   ├── Arch_AWS-License-Manager_16.svg
        │   │   │   ├── Arch_AWS-Management-Console_16.png
        │   │   │   ├── Arch_AWS-Management-Console_16.svg
        │   │   │   ├── Arch_AWS-Organizations_16.png
        │   │   │   ├── Arch_AWS-Organizations_16.svg
        │   │   │   ├── Arch_AWS-Proton_16.png
        │   │   │   ├── Arch_AWS-Proton_16.svg
        │   │   │   ├── Arch_AWS-Resilience-Hub_16.png
        │   │   │   ├── Arch_AWS-Resilience-Hub_16.svg
        │   │   │   ├── Arch_AWS-Resource-Explorer_16.png
        │   │   │   ├── Arch_AWS-Resource-Explorer_16.svg
        │   │   │   ├── Arch_AWS-Service-Catalog_16.png
        │   │   │   ├── Arch_AWS-Service-Catalog_16.svg
        │   │   │   ├── Arch_AWS-Service-Management-Connector_16.png
        │   │   │   ├── Arch_AWS-Service-Management-Connector_16.svg
        │   │   │   ├── Arch_AWS-Systems-Manager_16.png
        │   │   │   ├── Arch_AWS-Systems-Manager_16.svg
        │   │   │   ├── Arch_AWS-Telco-Network-Builder_16.png
        │   │   │   ├── Arch_AWS-Telco-Network-Builder_16.svg
        │   │   │   ├── Arch_AWS-Trusted-Advisor_16.png
        │   │   │   ├── Arch_AWS-Trusted-Advisor_16.svg
        │   │   │   ├── Arch_AWS-User-Notifications_16.png
        │   │   │   ├── Arch_AWS-User-Notifications_16.svg
        │   │   │   ├── Arch_AWS-Well-Architected-Tool_16.png
        │   │   │   └── Arch_AWS-Well-Architected-Tool_16.svg
        │   │   ├── 32
        │   │   │   ├── .DS_Store
        │   │   │   ├── Arch_Amazon-CloudWatch_32.png
        │   │   │   ├── Arch_Amazon-CloudWatch_32.svg
        │   │   │   ├── Arch_Amazon-Managed-Grafana_32.png
        │   │   │   ├── Arch_Amazon-Managed-Grafana_32.svg
        │   │   │   ├── Arch_Amazon-Managed-Service-for-Prometheus_32.png
        │   │   │   ├── Arch_Amazon-Managed-Service-for-Prometheus_32.svg
        │   │   │   ├── Arch_AWS-AppConfig_32.png
        │   │   │   ├── Arch_AWS-AppConfig_32.svg
        │   │   │   ├── Arch_AWS-Application-Auto-Scaling_32.png
        │   │   │   ├── Arch_AWS-Application-Auto-Scaling_32.svg
        │   │   │   ├── Arch_AWS-Auto-Scaling_32.png
        │   │   │   ├── Arch_AWS-Auto-Scaling_32.svg
        │   │   │   ├── Arch_AWS-Backint-Agent_32.png
        │   │   │   ├── Arch_AWS-Backint-Agent_32.svg
        │   │   │   ├── Arch_AWS-Chatbot_32.png
        │   │   │   ├── Arch_AWS-Chatbot_32.svg
        │   │   │   ├── Arch_AWS-CloudFormation_32.png
        │   │   │   ├── Arch_AWS-CloudFormation_32.svg
        │   │   │   ├── Arch_AWS-CloudTrail_32.png
        │   │   │   ├── Arch_AWS-CloudTrail_32.svg
        │   │   │   ├── Arch_AWS-Compute-Optimizer_32.png
        │   │   │   ├── Arch_AWS-Compute-Optimizer_32.svg
        │   │   │   ├── Arch_AWS-Config_32.png
        │   │   │   ├── Arch_AWS-Config_32.svg
        │   │   │   ├── Arch_AWS-Console-Mobile-Application_32.png
        │   │   │   ├── Arch_AWS-Console-Mobile-Application_32.svg
        │   │   │   ├── Arch_AWS-Control-Tower_32.png
        │   │   │   ├── Arch_AWS-Control-Tower_32.svg
        │   │   │   ├── Arch_AWS-Distro-for-OpenTelemetry_32.png
        │   │   │   ├── Arch_AWS-Distro-for-OpenTelemetry_32.svg
        │   │   │   ├── Arch_AWS-Health-Dashboard_32.png
        │   │   │   ├── Arch_AWS-Health-Dashboard_32.svg
        │   │   │   ├── Arch_AWS-Launch-Wizard_32.png
        │   │   │   ├── Arch_AWS-Launch-Wizard_32.svg
        │   │   │   ├── Arch_AWS-License-Manager_32.png
        │   │   │   ├── Arch_AWS-License-Manager_32.svg
        │   │   │   ├── Arch_AWS-Management-Console_32.png
        │   │   │   ├── Arch_AWS-Management-Console_32.svg
        │   │   │   ├── Arch_AWS-Organizations_32.png
        │   │   │   ├── Arch_AWS-Organizations_32.svg
        │   │   │   ├── Arch_AWS-Proton_32.png
        │   │   │   ├── Arch_AWS-Proton_32.svg
        │   │   │   ├── Arch_AWS-Resilience-Hub_32.png
        │   │   │   ├── Arch_AWS-Resilience-Hub_32.svg
        │   │   │   ├── Arch_AWS-Resource-Explorer_32.png
        │   │   │   ├── Arch_AWS-Resource-Explorer_32.svg
        │   │   │   ├── Arch_AWS-Service-Catalog_32.png
        │   │   │   ├── Arch_AWS-Service-Catalog_32.svg
        │   │   │   ├── Arch_AWS-Service-Management-Connector_32.png
        │   │   │   ├── Arch_AWS-Service-Management-Connector_32.svg
        │   │   │   ├── Arch_AWS-Systems-Manager_32.png
        │   │   │   ├── Arch_AWS-Systems-Manager_32.svg
        │   │   │   ├── Arch_AWS-Telco-Network-Builder_32.png
        │   │   │   ├── Arch_AWS-Telco-Network-Builder_32.svg
        │   │   │   ├── Arch_AWS-Trusted-Advisor_32.png
        │   │   │   ├── Arch_AWS-Trusted-Advisor_32.svg
        │   │   │   ├── Arch_AWS-User-Notifications_32.png
        │   │   │   ├── Arch_AWS-User-Notifications_32.svg
        │   │   │   ├── Arch_AWS-Well-Architected-Tool_32.png
        │   │   │   └── Arch_AWS-Well-Architected-Tool_32.svg
        │   │   ├── 48
        │   │   │   ├── .DS_Store
        │   │   │   ├── Arch_Amazon-CloudWatch_48.png
        │   │   │   ├── Arch_Amazon-CloudWatch_48.svg
        │   │   │   ├── Arch_Amazon-Managed-Grafana_48.png
        │   │   │   ├── Arch_Amazon-Managed-Grafana_48.svg
        │   │   │   ├── Arch_Amazon-Managed-Service-for-Prometheus_48.png
        │   │   │   ├── Arch_Amazon-Managed-Service-for-Prometheus_48.svg
        │   │   │   ├── Arch_AWS-AppConfig_48.png
        │   │   │   ├── Arch_AWS-AppConfig_48.svg
        │   │   │   ├── Arch_AWS-Application-Auto-Scaling_48.png
        │   │   │   ├── Arch_AWS-Application-Auto-Scaling_48.svg
        │   │   │   ├── Arch_AWS-Auto-Scaling_48.png
        │   │   │   ├── Arch_AWS-Auto-Scaling_48.svg
        │   │   │   ├── Arch_AWS-Backint-Agent_48.png
        │   │   │   ├── Arch_AWS-Backint-Agent_48.svg
        │   │   │   ├── Arch_AWS-Chatbot_48.png
        │   │   │   ├── Arch_AWS-Chatbot_48.svg
        │   │   │   ├── Arch_AWS-CloudFormation_48.png
        │   │   │   ├── Arch_AWS-CloudFormation_48.svg
        │   │   │   ├── Arch_AWS-CloudTrail_48.png
        │   │   │   ├── Arch_AWS-CloudTrail_48.svg
        │   │   │   ├── Arch_AWS-Compute-Optimizer_48.png
        │   │   │   ├── Arch_AWS-Compute-Optimizer_48.svg
        │   │   │   ├── Arch_AWS-Config_48.png
        │   │   │   ├── Arch_AWS-Config_48.svg
        │   │   │   ├── Arch_AWS-Console-Mobile-Application_48.png
        │   │   │   ├── Arch_AWS-Console-Mobile-Application_48.svg
        │   │   │   ├── Arch_AWS-Control-Tower_48.png
        │   │   │   ├── Arch_AWS-Control-Tower_48.svg
        │   │   │   ├── Arch_AWS-Distro-for-OpenTelemetry_48.png
        │   │   │   ├── Arch_AWS-Distro-for-OpenTelemetry_48.svg
        │   │   │   ├── Arch_AWS-Health-Dashboard_48.png
        │   │   │   ├── Arch_AWS-Health-Dashboard_48.svg
        │   │   │   ├── Arch_AWS-Launch-Wizard_48.png
        │   │   │   ├── Arch_AWS-Launch-Wizard_48.svg
        │   │   │   ├── Arch_AWS-License-Manager_48.png
        │   │   │   ├── Arch_AWS-License-Manager_48.svg
        │   │   │   ├── Arch_AWS-Management-Console_48.png
        │   │   │   ├── Arch_AWS-Management-Console_48.svg
        │   │   │   ├── Arch_AWS-Organizations_48.png
        │   │   │   ├── Arch_AWS-Organizations_48.svg
        │   │   │   ├── Arch_AWS-Proton_48.png
        │   │   │   ├── Arch_AWS-Proton_48.svg
        │   │   │   ├── Arch_AWS-Resilience-Hub_48.png
        │   │   │   ├── Arch_AWS-Resilience-Hub_48.svg
        │   │   │   ├── Arch_AWS-Resource-Explorer_48.png
        │   │   │   ├── Arch_AWS-Resource-Explorer_48.svg
        │   │   │   ├── Arch_AWS-Service-Catalog_48.png
        │   │   │   ├── Arch_AWS-Service-Catalog_48.svg
        │   │   │   ├── Arch_AWS-Service-Management-Connector_48.png
        │   │   │   ├── Arch_AWS-Service-Management-Connector_48.svg
        │   │   │   ├── Arch_AWS-Systems-Manager_48.png
        │   │   │   ├── Arch_AWS-Systems-Manager_48.svg
        │   │   │   ├── Arch_AWS-Telco-Network-Builder_48.png
        │   │   │   ├── Arch_AWS-Telco-Network-Builder_48.svg
        │   │   │   ├── Arch_AWS-Trusted-Advisor_48.png
        │   │   │   ├── Arch_AWS-Trusted-Advisor_48.svg
        │   │   │   ├── Arch_AWS-User-Notifications_48.png
        │   │   │   ├── Arch_AWS-User-Notifications_48.svg
        │   │   │   ├── Arch_AWS-Well-Architected-Tool_48.png
        │   │   │   └── Arch_AWS-Well-Architected-Tool_48.svg
        │   │   └── 64
        │   │       ├── .DS_Store
        │   │       ├── Arch_Amazon-CloudWatch_64.png
        │   │       ├── Arch_Amazon-CloudWatch_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Managed-Grafana_64.png
        │   │       ├── Arch_Amazon-Managed-Grafana_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Managed-Service-for-Prometheus_64.png
        │   │       ├── Arch_Amazon-Managed-Service-for-Prometheus_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-AppConfig_64.png
        │   │       ├── Arch_AWS-AppConfig_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Application-Auto-Scaling_64.png
        │   │       ├── Arch_AWS-Application-Auto-Scaling_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Auto-Scaling_64.png
        │   │       ├── Arch_AWS-Auto-Scaling_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Backint-Agent_64.png
        │   │       ├── Arch_AWS-Backint-Agent_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Chatbot_64.png
        │   │       ├── Arch_AWS-Chatbot_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-CloudFormation_64.png
        │   │       ├── Arch_AWS-CloudFormation_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-CloudTrail_64.png
        │   │       ├── Arch_AWS-CloudTrail_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Compute-Optimizer_64.png
        │   │       ├── Arch_AWS-Compute-Optimizer_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Config_64.png
        │   │       ├── Arch_AWS-Config_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Console-Mobile-Application_64.png
        │   │       ├── Arch_AWS-Console-Mobile-Application_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Control-Tower_64.png
        │   │       ├── Arch_AWS-Control-Tower_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Distro-for-OpenTelemetry_64.png
        │   │       ├── Arch_AWS-Distro-for-OpenTelemetry_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Health-Dashboard_64.png
        │   │       ├── Arch_AWS-Health-Dashboard_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Launch-Wizard_64.png
        │   │       ├── Arch_AWS-Launch-Wizard_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-License-Manager_64.png
        │   │       ├── Arch_AWS-License-Manager_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Management-Console_64.png
        │   │       ├── Arch_AWS-Management-Console_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Organizations_64.png
        │   │       ├── Arch_AWS-Organizations_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Proton_64.png
        │   │       ├── Arch_AWS-Proton_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Resilience-Hub_64.png
        │   │       ├── Arch_AWS-Resilience-Hub_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Resource-Explorer_64.png
        │   │       ├── Arch_AWS-Resource-Explorer_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Service-Catalog_64.png
        │   │       ├── Arch_AWS-Service-Catalog_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Service-Management-Connector_64.png
        │   │       ├── Arch_AWS-Service-Management-Connector_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Systems-Manager_64.png
        │   │       ├── Arch_AWS-Systems-Manager_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Telco-Network-Builder_64.png
        │   │       ├── Arch_AWS-Telco-Network-Builder_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Trusted-Advisor_64.png
        │   │       ├── Arch_AWS-Trusted-Advisor_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-User-Notifications_64.png
        │   │       ├── Arch_AWS-User-Notifications_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Well-Architected-Tool_64.png
        │   │       ├── Arch_AWS-Well-Architected-Tool_64.svg
        │   │       └── [email protected]
        │   ├── media-services
        │   │   ├── .DS_Store
        │   │   ├── 16
        │   │   │   ├── .DS_Store
        │   │   │   ├── Arch_Amazon-Elastic-Transcoder_16.png
        │   │   │   ├── Arch_Amazon-Elastic-Transcoder_16.svg
        │   │   │   ├── Arch_Amazon-Interactive-Video-Service_16.png
        │   │   │   ├── Arch_Amazon-Interactive-Video-Service_16.svg
        │   │   │   ├── Arch_Amazon-Kinesis-Video-Streams_16.png
        │   │   │   ├── Arch_Amazon-Kinesis-Video-Streams_16.svg
        │   │   │   ├── Arch_AWS-Deadline-Cloud_16.png
        │   │   │   ├── Arch_AWS-Deadline-Cloud_16.svg
        │   │   │   ├── Arch_AWS-Elemental-Appliances-&-Software_16.png
        │   │   │   ├── Arch_AWS-Elemental-Appliances-&-Software_16.svg
        │   │   │   ├── Arch_AWS-Elemental-Conductor_16.png
        │   │   │   ├── Arch_AWS-Elemental-Conductor_16.svg
        │   │   │   ├── Arch_AWS-Elemental-Delta_16.png
        │   │   │   ├── Arch_AWS-Elemental-Delta_16.svg
        │   │   │   ├── Arch_AWS-Elemental-Link_16.png
        │   │   │   ├── Arch_AWS-Elemental-Link_16.svg
        │   │   │   ├── Arch_AWS-Elemental-Live_16.png
        │   │   │   ├── Arch_AWS-Elemental-Live_16.svg
        │   │   │   ├── Arch_AWS-Elemental-MediaConnect_16.png
        │   │   │   ├── Arch_AWS-Elemental-MediaConnect_16.svg
        │   │   │   ├── Arch_AWS-Elemental-MediaConvert_16.png
        │   │   │   ├── Arch_AWS-Elemental-MediaConvert_16.svg
        │   │   │   ├── Arch_AWS-Elemental-MediaLive_16.png
        │   │   │   ├── Arch_AWS-Elemental-MediaLive_16.svg
        │   │   │   ├── Arch_AWS-Elemental-MediaPackage_16.png
        │   │   │   ├── Arch_AWS-Elemental-MediaPackage_16.svg
        │   │   │   ├── Arch_AWS-Elemental-MediaStore_16.png
        │   │   │   ├── Arch_AWS-Elemental-MediaStore_16.svg
        │   │   │   ├── Arch_AWS-Elemental-MediaTailor_16.png
        │   │   │   ├── Arch_AWS-Elemental-MediaTailor_16.svg
        │   │   │   ├── Arch_AWS-Elemental-Server_16.png
        │   │   │   ├── Arch_AWS-Elemental-Server_16.svg
        │   │   │   ├── Arch_AWS-Thinkbox-Deadline_16.png
        │   │   │   ├── Arch_AWS-Thinkbox-Deadline_16.svg
        │   │   │   ├── Arch_AWS-Thinkbox-Frost_16.png
        │   │   │   ├── Arch_AWS-Thinkbox-Frost_16.svg
        │   │   │   ├── Arch_AWS-Thinkbox-Krakatoa_16.png
        │   │   │   ├── Arch_AWS-Thinkbox-Krakatoa_16.svg
        │   │   │   ├── Arch_AWS-Thinkbox-Sequoia_16.png
        │   │   │   ├── Arch_AWS-Thinkbox-Sequoia_16.svg
        │   │   │   ├── Arch_AWS-Thinkbox-Stoke_16.png
        │   │   │   ├── Arch_AWS-Thinkbox-Stoke_16.svg
        │   │   │   ├── Arch_AWS-Thinkbox-XMesh_16.png
        │   │   │   └── Arch_AWS-Thinkbox-XMesh_16.svg
        │   │   ├── 32
        │   │   │   ├── .DS_Store
        │   │   │   ├── Arch_Amazon-Elastic-Transcoder_32.png
        │   │   │   ├── Arch_Amazon-Elastic-Transcoder_32.svg
        │   │   │   ├── Arch_Amazon-Interactive-Video-Service_32.png
        │   │   │   ├── Arch_Amazon-Interactive-Video-Service_32.svg
        │   │   │   ├── Arch_Amazon-Kinesis-Video-Streams_32.png
        │   │   │   ├── Arch_Amazon-Kinesis-Video-Streams_32.svg
        │   │   │   ├── Arch_AWS-Deadline-Cloud_32.png
        │   │   │   ├── Arch_AWS-Deadline-Cloud_32.svg
        │   │   │   ├── Arch_AWS-Elemental-Appliances-&-Software_32.png
        │   │   │   ├── Arch_AWS-Elemental-Appliances-&-Software_32.svg
        │   │   │   ├── Arch_AWS-Elemental-Conductor_32.png
        │   │   │   ├── Arch_AWS-Elemental-Conductor_32.svg
        │   │   │   ├── Arch_AWS-Elemental-Delta_32.png
        │   │   │   ├── Arch_AWS-Elemental-Delta_32.svg
        │   │   │   ├── Arch_AWS-Elemental-Link_32.png
        │   │   │   ├── Arch_AWS-Elemental-Link_32.svg
        │   │   │   ├── Arch_AWS-Elemental-Live_32.png
        │   │   │   ├── Arch_AWS-Elemental-Live_32.svg
        │   │   │   ├── Arch_AWS-Elemental-MediaConnect_32.png
        │   │   │   ├── Arch_AWS-Elemental-MediaConnect_32.svg
        │   │   │   ├── Arch_AWS-Elemental-MediaConvert_32.png
        │   │   │   ├── Arch_AWS-Elemental-MediaConvert_32.svg
        │   │   │   ├── Arch_AWS-Elemental-MediaLive_32.png
        │   │   │   ├── Arch_AWS-Elemental-MediaLive_32.svg
        │   │   │   ├── Arch_AWS-Elemental-MediaPackage_32.png
        │   │   │   ├── Arch_AWS-Elemental-MediaPackage_32.svg
        │   │   │   ├── Arch_AWS-Elemental-MediaStore_32.png
        │   │   │   ├── Arch_AWS-Elemental-MediaStore_32.svg
        │   │   │   ├── Arch_AWS-Elemental-MediaTailor_32.png
        │   │   │   ├── Arch_AWS-Elemental-MediaTailor_32.svg
        │   │   │   ├── Arch_AWS-Elemental-Server_32.png
        │   │   │   ├── Arch_AWS-Elemental-Server_32.svg
        │   │   │   ├── Arch_AWS-Thinkbox-Deadline_32.png
        │   │   │   ├── Arch_AWS-Thinkbox-Deadline_32.svg
        │   │   │   ├── Arch_AWS-Thinkbox-Frost_32.png
        │   │   │   ├── Arch_AWS-Thinkbox-Frost_32.svg
        │   │   │   ├── Arch_AWS-Thinkbox-Krakatoa_32.png
        │   │   │   ├── Arch_AWS-Thinkbox-Krakatoa_32.svg
        │   │   │   ├── Arch_AWS-Thinkbox-Sequoia_32.png
        │   │   │   ├── Arch_AWS-Thinkbox-Sequoia_32.svg
        │   │   │   ├── Arch_AWS-Thinkbox-Stoke_32.png
        │   │   │   ├── Arch_AWS-Thinkbox-Stoke_32.svg
        │   │   │   ├── Arch_AWS-Thinkbox-XMesh_32.png
        │   │   │   └── Arch_AWS-Thinkbox-XMesh_32.svg
        │   │   ├── 48
        │   │   │   ├── .DS_Store
        │   │   │   ├── Arch_Amazon-Elastic-Transcoder_48.png
        │   │   │   ├── Arch_Amazon-Elastic-Transcoder_48.svg
        │   │   │   ├── Arch_Amazon-Interactive-Video-Service_48.png
        │   │   │   ├── Arch_Amazon-Interactive-Video-Service_48.svg
        │   │   │   ├── Arch_Amazon-Kinesis-Video-Streams_48.png
        │   │   │   ├── Arch_Amazon-Kinesis-Video-Streams_48.svg
        │   │   │   ├── Arch_AWS-Deadline-Cloud_48.png
        │   │   │   ├── Arch_AWS-Deadline-Cloud_48.svg
        │   │   │   ├── Arch_AWS-Elemental-Appliances-&-Software_48.png
        │   │   │   ├── Arch_AWS-Elemental-Appliances-&-Software_48.svg
        │   │   │   ├── Arch_AWS-Elemental-Conductor_48.png
        │   │   │   ├── Arch_AWS-Elemental-Conductor_48.svg
        │   │   │   ├── Arch_AWS-Elemental-Delta_48.png
        │   │   │   ├── Arch_AWS-Elemental-Delta_48.svg
        │   │   │   ├── Arch_AWS-Elemental-Link_48.png
        │   │   │   ├── Arch_AWS-Elemental-Link_48.svg
        │   │   │   ├── Arch_AWS-Elemental-Live_48.png
        │   │   │   ├── Arch_AWS-Elemental-Live_48.svg
        │   │   │   ├── Arch_AWS-Elemental-MediaConnect_48.png
        │   │   │   ├── Arch_AWS-Elemental-MediaConnect_48.svg
        │   │   │   ├── Arch_AWS-Elemental-MediaConvert_48.png
        │   │   │   ├── Arch_AWS-Elemental-MediaConvert_48.svg
        │   │   │   ├── Arch_AWS-Elemental-MediaLive_48.png
        │   │   │   ├── Arch_AWS-Elemental-MediaLive_48.svg
        │   │   │   ├── Arch_AWS-Elemental-MediaPackage_48.png
        │   │   │   ├── Arch_AWS-Elemental-MediaPackage_48.svg
        │   │   │   ├── Arch_AWS-Elemental-MediaStore_48.png
        │   │   │   ├── Arch_AWS-Elemental-MediaStore_48.svg
        │   │   │   ├── Arch_AWS-Elemental-MediaTailor_48.png
        │   │   │   ├── Arch_AWS-Elemental-MediaTailor_48.svg
        │   │   │   ├── Arch_AWS-Elemental-Server_48.png
        │   │   │   ├── Arch_AWS-Elemental-Server_48.svg
        │   │   │   ├── Arch_AWS-Thinkbox-Deadline_48.png
        │   │   │   ├── Arch_AWS-Thinkbox-Deadline_48.svg
        │   │   │   ├── Arch_AWS-Thinkbox-Frost_48.png
        │   │   │   ├── Arch_AWS-Thinkbox-Frost_48.svg
        │   │   │   ├── Arch_AWS-Thinkbox-Krakatoa_48.png
        │   │   │   ├── Arch_AWS-Thinkbox-Krakatoa_48.svg
        │   │   │   ├── Arch_AWS-Thinkbox-Sequoia_48.png
        │   │   │   ├── Arch_AWS-Thinkbox-Sequoia_48.svg
        │   │   │   ├── Arch_AWS-Thinkbox-Stoke_48.png
        │   │   │   ├── Arch_AWS-Thinkbox-Stoke_48.svg
        │   │   │   ├── Arch_AWS-Thinkbox-XMesh_48.png
        │   │   │   └── Arch_AWS-Thinkbox-XMesh_48.svg
        │   │   └── 64
        │   │       ├── .DS_Store
        │   │       ├── Arch_Amazon-Elastic-Transcoder_64.png
        │   │       ├── Arch_Amazon-Elastic-Transcoder_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Interactive-Video-Service_64.png
        │   │       ├── Arch_Amazon-Interactive-Video-Service_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Kinesis-Video-Streams_64.png
        │   │       ├── Arch_Amazon-Kinesis-Video-Streams_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Deadline-Cloud_64.png
        │   │       ├── Arch_AWS-Deadline-Cloud_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Elemental-Appliances-&-Software_64.png
        │   │       ├── Arch_AWS-Elemental-Appliances-&-Software_64.svg
        │   │       ├── Arch_AWS-Elemental-Appliances-&[email protected]
        │   │       ├── Arch_AWS-Elemental-Conductor_64.png
        │   │       ├── Arch_AWS-Elemental-Conductor_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Elemental-Delta_64.png
        │   │       ├── Arch_AWS-Elemental-Delta_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Elemental-Link_64.png
        │   │       ├── Arch_AWS-Elemental-Link_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Elemental-Live_64.png
        │   │       ├── Arch_AWS-Elemental-Live_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Elemental-MediaConnect_64.png
        │   │       ├── Arch_AWS-Elemental-MediaConnect_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Elemental-MediaConvert_64.png
        │   │       ├── Arch_AWS-Elemental-MediaConvert_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Elemental-MediaLive_64.png
        │   │       ├── Arch_AWS-Elemental-MediaLive_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Elemental-MediaPackage_64.png
        │   │       ├── Arch_AWS-Elemental-MediaPackage_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Elemental-MediaStore_64.png
        │   │       ├── Arch_AWS-Elemental-MediaStore_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Elemental-MediaTailor_64.png
        │   │       ├── Arch_AWS-Elemental-MediaTailor_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Elemental-Server_64.png
        │   │       ├── Arch_AWS-Elemental-Server_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Thinkbox-Deadline_64.png
        │   │       ├── Arch_AWS-Thinkbox-Deadline_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Thinkbox-Frost_64.png
        │   │       ├── Arch_AWS-Thinkbox-Frost_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Thinkbox-Krakatoa_64.png
        │   │       ├── Arch_AWS-Thinkbox-Krakatoa_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Thinkbox-Sequoia_64.png
        │   │       ├── Arch_AWS-Thinkbox-Sequoia_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Thinkbox-Stoke_64.png
        │   │       ├── Arch_AWS-Thinkbox-Stoke_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Thinkbox-XMesh_64.png
        │   │       ├── Arch_AWS-Thinkbox-XMesh_64.svg
        │   │       └── [email protected]
        │   ├── migration-modernization
        │   │   ├── .DS_Store
        │   │   ├── 16
        │   │   │   ├── .DS_Store
        │   │   │   ├── Arch_AWS-Application-Discovery-Service_16.png
        │   │   │   ├── Arch_AWS-Application-Discovery-Service_16.svg
        │   │   │   ├── Arch_AWS-Application-Migration-Service_16.png
        │   │   │   ├── Arch_AWS-Application-Migration-Service_16.svg
        │   │   │   ├── Arch_AWS-Data-Transfer-Terminal_16.png
        │   │   │   ├── Arch_AWS-Data-Transfer-Terminal_16.svg
        │   │   │   ├── Arch_AWS-DataSync_16.png
        │   │   │   ├── Arch_AWS-DataSync_16.svg
        │   │   │   ├── Arch_AWS-Mainframe-Modernization_16.png
        │   │   │   ├── Arch_AWS-Mainframe-Modernization_16.svg
        │   │   │   ├── Arch_AWS-Migration-Evaluator_16.png
        │   │   │   ├── Arch_AWS-Migration-Evaluator_16.svg
        │   │   │   ├── Arch_AWS-Migration-Hub_16.png
        │   │   │   ├── Arch_AWS-Migration-Hub_16.svg
        │   │   │   ├── Arch_AWS-Transfer-Family_16.png
        │   │   │   ├── Arch_AWS-Transfer-Family_16.svg
        │   │   │   ├── Arch_AWS-Transform_16.png
        │   │   │   └── Arch_AWS-Transform_16.svg
        │   │   ├── 32
        │   │   │   ├── .DS_Store
        │   │   │   ├── Arch_AWS-Application-Discovery-Service_32.png
        │   │   │   ├── Arch_AWS-Application-Discovery-Service_32.svg
        │   │   │   ├── Arch_AWS-Application-Migration-Service_32.png
        │   │   │   ├── Arch_AWS-Application-Migration-Service_32.svg
        │   │   │   ├── Arch_AWS-Data-Transfer-Terminal_32.png
        │   │   │   ├── Arch_AWS-Data-Transfer-Terminal_32.svg
        │   │   │   ├── Arch_AWS-DataSync_32.png
        │   │   │   ├── Arch_AWS-DataSync_32.svg
        │   │   │   ├── Arch_AWS-Mainframe-Modernization_32.png
        │   │   │   ├── Arch_AWS-Mainframe-Modernization_32.svg
        │   │   │   ├── Arch_AWS-Migration-Evaluator_32.png
        │   │   │   ├── Arch_AWS-Migration-Evaluator_32.svg
        │   │   │   ├── Arch_AWS-Migration-Hub_32.png
        │   │   │   ├── Arch_AWS-Migration-Hub_32.svg
        │   │   │   ├── Arch_AWS-Transfer-Family_32.png
        │   │   │   ├── Arch_AWS-Transfer-Family_32.svg
        │   │   │   ├── Arch_AWS-Transform_32.png
        │   │   │   └── Arch_AWS-Transform_32.svg
        │   │   ├── 48
        │   │   │   ├── .DS_Store
        │   │   │   ├── Arch_AWS-Application-Discovery-Service_48.png
        │   │   │   ├── Arch_AWS-Application-Discovery-Service_48.svg
        │   │   │   ├── Arch_AWS-Application-Migration-Service_48.png
        │   │   │   ├── Arch_AWS-Application-Migration-Service_48.svg
        │   │   │   ├── Arch_AWS-Data-Transfer-Terminal_48.png
        │   │   │   ├── Arch_AWS-Data-Transfer-Terminal_48.svg
        │   │   │   ├── Arch_AWS-DataSync_48.png
        │   │   │   ├── Arch_AWS-DataSync_48.svg
        │   │   │   ├── Arch_AWS-Mainframe-Modernization_48.png
        │   │   │   ├── Arch_AWS-Mainframe-Modernization_48.svg
        │   │   │   ├── Arch_AWS-Migration-Evaluator_48.png
        │   │   │   ├── Arch_AWS-Migration-Evaluator_48.svg
        │   │   │   ├── Arch_AWS-Migration-Hub_48.png
        │   │   │   ├── Arch_AWS-Migration-Hub_48.svg
        │   │   │   ├── Arch_AWS-Transfer-Family_48.png
        │   │   │   ├── Arch_AWS-Transfer-Family_48.svg
        │   │   │   ├── Arch_AWS-Transform_48.png
        │   │   │   └── Arch_AWS-Transform_48.svg
        │   │   └── 64
        │   │       ├── .DS_Store
        │   │       ├── Arch_AWS-Application-Discovery-Service_64.png
        │   │       ├── Arch_AWS-Application-Discovery-Service_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Application-Migration-Service_64.png
        │   │       ├── Arch_AWS-Application-Migration-Service_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Data-Transfer-Terminal_64.png
        │   │       ├── Arch_AWS-Data-Transfer-Terminal_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-DataSync_64.png
        │   │       ├── Arch_AWS-DataSync_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Mainframe-Modernization_64.png
        │   │       ├── Arch_AWS-Mainframe-Modernization_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Migration-Evaluator_64.png
        │   │       ├── Arch_AWS-Migration-Evaluator_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Migration-Hub_64.png
        │   │       ├── Arch_AWS-Migration-Hub_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Transfer-Family_64.png
        │   │       ├── Arch_AWS-Transfer-Family_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Transform_64.png
        │   │       ├── Arch_AWS-Transform_64.svg
        │   │       └── [email protected]
        │   ├── networking-content-delivery
        │   │   ├── .DS_Store
        │   │   ├── 16
        │   │   │   ├── .DS_Store
        │   │   │   ├── Arch_Amazon-API-Gateway_16.png
        │   │   │   ├── Arch_Amazon-API-Gateway_16.svg
        │   │   │   ├── Arch_Amazon-Application-Recovery-Controller_16.png
        │   │   │   ├── Arch_Amazon-Application-Recovery-Controller_16.svg
        │   │   │   ├── Arch_Amazon-CloudFront_16.png
        │   │   │   ├── Arch_Amazon-CloudFront_16.svg
        │   │   │   ├── Arch_Amazon-Route-53_16.png
        │   │   │   ├── Arch_Amazon-Route-53_16.svg
        │   │   │   ├── Arch_Amazon-Virtual-Private-Cloud_16.png
        │   │   │   ├── Arch_Amazon-Virtual-Private-Cloud_16.svg
        │   │   │   ├── Arch_Amazon-VPC-Lattice_16.png
        │   │   │   ├── Arch_Amazon-VPC-Lattice_16.svg
        │   │   │   ├── Arch_AWS-App-Mesh_16.png
        │   │   │   ├── Arch_AWS-App-Mesh_16.svg
        │   │   │   ├── Arch_AWS-Client-VPN_16.png
        │   │   │   ├── Arch_AWS-Client-VPN_16.svg
        │   │   │   ├── Arch_AWS-Cloud-Map_16.png
        │   │   │   ├── Arch_AWS-Cloud-Map_16.svg
        │   │   │   ├── Arch_AWS-Cloud-WAN_16.png
        │   │   │   ├── Arch_AWS-Cloud-WAN_16.svg
        │   │   │   ├── Arch_AWS-Direct-Connect_16.png
        │   │   │   ├── Arch_AWS-Direct-Connect_16.svg
        │   │   │   ├── Arch_AWS-Global-Accelerator_16.png
        │   │   │   ├── Arch_AWS-Global-Accelerator_16.svg
        │   │   │   ├── Arch_AWS-Private-5G_16.png
        │   │   │   ├── Arch_AWS-Private-5G_16.svg
        │   │   │   ├── Arch_AWS-PrivateLink_16.png
        │   │   │   ├── Arch_AWS-PrivateLink_16.svg
        │   │   │   ├── Arch_AWS-Site-to-Site-VPN_16.png
        │   │   │   ├── Arch_AWS-Site-to-Site-VPN_16.svg
        │   │   │   ├── Arch_AWS-Transit-Gateway_16.png
        │   │   │   ├── Arch_AWS-Transit-Gateway_16.svg
        │   │   │   ├── Arch_AWS-Verified-Access_16.png
        │   │   │   ├── Arch_AWS-Verified-Access_16.svg
        │   │   │   ├── Arch_Elastic-Load-Balancing_16.png
        │   │   │   └── Arch_Elastic-Load-Balancing_16.svg
        │   │   ├── 32
        │   │   │   ├── Arch_Amazon-API-Gateway_32.png
        │   │   │   ├── Arch_Amazon-API-Gateway_32.svg
        │   │   │   ├── Arch_Amazon-Application-Recovery-Controller_32.png
        │   │   │   ├── Arch_Amazon-Application-Recovery-Controller_32.svg
        │   │   │   ├── Arch_Amazon-CloudFront_32.png
        │   │   │   ├── Arch_Amazon-CloudFront_32.svg
        │   │   │   ├── Arch_Amazon-Route-53_32.png
        │   │   │   ├── Arch_Amazon-Route-53_32.svg
        │   │   │   ├── Arch_Amazon-Virtual-Private-Cloud_32.png
        │   │   │   ├── Arch_Amazon-Virtual-Private-Cloud_32.svg
        │   │   │   ├── Arch_Amazon-VPC-Lattice_32.png
        │   │   │   ├── Arch_Amazon-VPC-Lattice_32.svg
        │   │   │   ├── Arch_AWS-App-Mesh_32.png
        │   │   │   ├── Arch_AWS-App-Mesh_32.svg
        │   │   │   ├── Arch_AWS-Client-VPN_32.png
        │   │   │   ├── Arch_AWS-Client-VPN_32.svg
        │   │   │   ├── Arch_AWS-Cloud-Map_32.png
        │   │   │   ├── Arch_AWS-Cloud-Map_32.svg
        │   │   │   ├── Arch_AWS-Cloud-WAN_32.png
        │   │   │   ├── Arch_AWS-Cloud-WAN_32.svg
        │   │   │   ├── Arch_AWS-Direct-Connect_32.png
        │   │   │   ├── Arch_AWS-Direct-Connect_32.svg
        │   │   │   ├── Arch_AWS-Global-Accelerator_32.png
        │   │   │   ├── Arch_AWS-Global-Accelerator_32.svg
        │   │   │   ├── Arch_AWS-Private-5G_32.png
        │   │   │   ├── Arch_AWS-Private-5G_32.svg
        │   │   │   ├── Arch_AWS-PrivateLink_32.png
        │   │   │   ├── Arch_AWS-PrivateLink_32.svg
        │   │   │   ├── Arch_AWS-Site-to-Site-VPN_32.png
        │   │   │   ├── Arch_AWS-Site-to-Site-VPN_32.svg
        │   │   │   ├── Arch_AWS-Transit-Gateway_32.png
        │   │   │   ├── Arch_AWS-Transit-Gateway_32.svg
        │   │   │   ├── Arch_AWS-Verified-Access_32.png
        │   │   │   ├── Arch_AWS-Verified-Access_32.svg
        │   │   │   ├── Arch_Elastic-Load-Balancing_32.png
        │   │   │   └── Arch_Elastic-Load-Balancing_32.svg
        │   │   ├── 48
        │   │   │   ├── Arch_Amazon-API-Gateway_48.png
        │   │   │   ├── Arch_Amazon-API-Gateway_48.svg
        │   │   │   ├── Arch_Amazon-Application-Recovery-Controller_48.png
        │   │   │   ├── Arch_Amazon-Application-Recovery-Controller_48.svg
        │   │   │   ├── Arch_Amazon-CloudFront_48.png
        │   │   │   ├── Arch_Amazon-CloudFront_48.svg
        │   │   │   ├── Arch_Amazon-Route-53_48.png
        │   │   │   ├── Arch_Amazon-Route-53_48.svg
        │   │   │   ├── Arch_Amazon-Virtual-Private-Cloud_48.png
        │   │   │   ├── Arch_Amazon-Virtual-Private-Cloud_48.svg
        │   │   │   ├── Arch_Amazon-VPC-Lattice_48.png
        │   │   │   ├── Arch_Amazon-VPC-Lattice_48.svg
        │   │   │   ├── Arch_AWS-App-Mesh_48.png
        │   │   │   ├── Arch_AWS-App-Mesh_48.svg
        │   │   │   ├── Arch_AWS-Client-VPN_48.png
        │   │   │   ├── Arch_AWS-Client-VPN_48.svg
        │   │   │   ├── Arch_AWS-Cloud-Map_48.png
        │   │   │   ├── Arch_AWS-Cloud-Map_48.svg
        │   │   │   ├── Arch_AWS-Cloud-WAN_48.png
        │   │   │   ├── Arch_AWS-Cloud-WAN_48.svg
        │   │   │   ├── Arch_AWS-Direct-Connect_48.png
        │   │   │   ├── Arch_AWS-Direct-Connect_48.svg
        │   │   │   ├── Arch_AWS-Global-Accelerator_48.png
        │   │   │   ├── Arch_AWS-Global-Accelerator_48.svg
        │   │   │   ├── Arch_AWS-Private-5G_48.png
        │   │   │   ├── Arch_AWS-Private-5G_48.svg
        │   │   │   ├── Arch_AWS-PrivateLink_48.png
        │   │   │   ├── Arch_AWS-PrivateLink_48.svg
        │   │   │   ├── Arch_AWS-Site-to-Site-VPN_48.png
        │   │   │   ├── Arch_AWS-Site-to-Site-VPN_48.svg
        │   │   │   ├── Arch_AWS-Transit-Gateway_48.png
        │   │   │   ├── Arch_AWS-Transit-Gateway_48.svg
        │   │   │   ├── Arch_AWS-Verified-Access_48.png
        │   │   │   ├── Arch_AWS-Verified-Access_48.svg
        │   │   │   ├── Arch_Elastic-Load-Balancing_48.png
        │   │   │   └── Arch_Elastic-Load-Balancing_48.svg
        │   │   └── 64
        │   │       ├── Arch_Amazon-API-Gateway_64.png
        │   │       ├── Arch_Amazon-API-Gateway_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Application-Recovery-Controller_64.png
        │   │       ├── Arch_Amazon-Application-Recovery-Controller_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-CloudFront_64.png
        │   │       ├── Arch_Amazon-CloudFront_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Route-53_64.png
        │   │       ├── Arch_Amazon-Route-53_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Virtual-Private-Cloud_64.png
        │   │       ├── Arch_Amazon-Virtual-Private-Cloud_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-VPC-Lattice_64.png
        │   │       ├── Arch_Amazon-VPC-Lattice_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-App-Mesh_64.png
        │   │       ├── Arch_AWS-App-Mesh_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Client-VPN_64.png
        │   │       ├── Arch_AWS-Client-VPN_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Cloud-Map_64.png
        │   │       ├── Arch_AWS-Cloud-Map_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Cloud-WAN_64.png
        │   │       ├── Arch_AWS-Cloud-WAN_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Direct-Connect_64.png
        │   │       ├── Arch_AWS-Direct-Connect_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Global-Accelerator_64.png
        │   │       ├── Arch_AWS-Global-Accelerator_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Private-5G_64.png
        │   │       ├── Arch_AWS-Private-5G_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-PrivateLink_64.png
        │   │       ├── Arch_AWS-PrivateLink_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Site-to-Site-VPN_64.png
        │   │       ├── Arch_AWS-Site-to-Site-VPN_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Transit-Gateway_64.png
        │   │       ├── Arch_AWS-Transit-Gateway_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Verified-Access_64.png
        │   │       ├── Arch_AWS-Verified-Access_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Elastic-Load-Balancing_64.png
        │   │       ├── Arch_Elastic-Load-Balancing_64.svg
        │   │       └── [email protected]
        │   ├── quantum-technologies
        │   │   ├── .DS_Store
        │   │   ├── 16
        │   │   │   ├── Arch_Amazon-Braket_16.png
        │   │   │   └── Arch_Amazon-Braket_16.svg
        │   │   ├── 32
        │   │   │   ├── Arch_Amazon-Braket_32.png
        │   │   │   └── Arch_Amazon-Braket_32.svg
        │   │   ├── 48
        │   │   │   ├── Arch_Amazon-Braket_48.png
        │   │   │   └── Arch_Amazon-Braket_48.svg
        │   │   └── 64
        │   │       ├── Arch_Amazon-Braket_64.png
        │   │       ├── Arch_Amazon-Braket_64.svg
        │   │       └── [email protected]
        │   ├── satellite
        │   │   ├── .DS_Store
        │   │   ├── 16
        │   │   │   ├── Arch_AWS-Ground-Station_16.png
        │   │   │   └── Arch_AWS-Ground-Station_16.svg
        │   │   ├── 32
        │   │   │   ├── Arch_AWS-Ground-Station_32.png
        │   │   │   └── Arch_AWS-Ground-Station_32.svg
        │   │   ├── 48
        │   │   │   ├── Arch_AWS-Ground-Station_48.png
        │   │   │   └── Arch_AWS-Ground-Station_48.svg
        │   │   └── 64
        │   │       ├── Arch_AWS-Ground-Station_64.png
        │   │       ├── Arch_AWS-Ground-Station_64.svg
        │   │       └── [email protected]
        │   ├── security-identity-compliance
        │   │   ├── .DS_Store
        │   │   ├── 16
        │   │   │   ├── Arch_Amazon-Cloud-Directory_16.png
        │   │   │   ├── Arch_Amazon-Cloud-Directory_16.svg
        │   │   │   ├── Arch_Amazon-Cognito_16.png
        │   │   │   ├── Arch_Amazon-Cognito_16.svg
        │   │   │   ├── Arch_Amazon-Detective_16.png
        │   │   │   ├── Arch_Amazon-Detective_16.svg
        │   │   │   ├── Arch_Amazon-GuardDuty_16.png
        │   │   │   ├── Arch_Amazon-GuardDuty_16.svg
        │   │   │   ├── Arch_Amazon-Inspector_16.png
        │   │   │   ├── Arch_Amazon-Inspector_16.svg
        │   │   │   ├── Arch_Amazon-Macie_16.png
        │   │   │   ├── Arch_Amazon-Macie_16.svg
        │   │   │   ├── Arch_Amazon-Security-Lake_16.png
        │   │   │   ├── Arch_Amazon-Security-Lake_16.svg
        │   │   │   ├── Arch_Amazon-Verified-Permissions_16.png
        │   │   │   ├── Arch_Amazon-Verified-Permissions_16.svg
        │   │   │   ├── Arch_AWS-Artifact_16.png
        │   │   │   ├── Arch_AWS-Artifact_16.svg
        │   │   │   ├── Arch_AWS-Audit-Manager_16.png
        │   │   │   ├── Arch_AWS-Audit-Manager_16.svg
        │   │   │   ├── Arch_AWS-Certificate-Manager_16.png
        │   │   │   ├── Arch_AWS-Certificate-Manager_16.svg
        │   │   │   ├── Arch_AWS-CloudHSM_16.png
        │   │   │   ├── Arch_AWS-CloudHSM_16.svg
        │   │   │   ├── Arch_AWS-Directory-Service_16.png
        │   │   │   ├── Arch_AWS-Directory-Service_16.svg
        │   │   │   ├── Arch_AWS-Firewall-Manager_16.png
        │   │   │   ├── Arch_AWS-Firewall-Manager_16.svg
        │   │   │   ├── Arch_AWS-IAM-Identity-Center_16.png
        │   │   │   ├── Arch_AWS-IAM-Identity-Center_16.svg
        │   │   │   ├── Arch_AWS-Identity-and-Access-Management_16.png
        │   │   │   ├── Arch_AWS-Identity-and-Access-Management_16.svg
        │   │   │   ├── Arch_AWS-Key-Management-Service_16.png
        │   │   │   ├── Arch_AWS-Key-Management-Service_16.svg
        │   │   │   ├── Arch_AWS-Network-Firewall_16.png
        │   │   │   ├── Arch_AWS-Network-Firewall_16.svg
        │   │   │   ├── Arch_AWS-Payment-Cryptography_16.png
        │   │   │   ├── Arch_AWS-Payment-Cryptography_16.svg
        │   │   │   ├── Arch_AWS-Private-Certificate-Authority_16.png
        │   │   │   ├── Arch_AWS-Private-Certificate-Authority_16.svg
        │   │   │   ├── Arch_AWS-Resource-Access-Manager_16.png
        │   │   │   ├── Arch_AWS-Resource-Access-Manager_16.svg
        │   │   │   ├── Arch_AWS-Secrets-Manager_16.png
        │   │   │   ├── Arch_AWS-Secrets-Manager_16.svg
        │   │   │   ├── Arch_AWS-Security-Hub_16.png
        │   │   │   ├── Arch_AWS-Security-Hub_16.svg
        │   │   │   ├── Arch_AWS-Security-Incident-Response_16.png
        │   │   │   ├── Arch_AWS-Security-Incident-Response_16.svg
        │   │   │   ├── Arch_AWS-Shield_16.png
        │   │   │   ├── Arch_AWS-Shield_16.svg
        │   │   │   ├── Arch_AWS-Signer_16.png
        │   │   │   ├── Arch_AWS-Signer_16.svg
        │   │   │   ├── Arch_AWS-WAF_16.png
        │   │   │   └── Arch_AWS-WAF_16.svg
        │   │   ├── 32
        │   │   │   ├── Arch_Amazon-Cloud-Directory_32.png
        │   │   │   ├── Arch_Amazon-Cloud-Directory_32.svg
        │   │   │   ├── Arch_Amazon-Cognito_32.png
        │   │   │   ├── Arch_Amazon-Cognito_32.svg
        │   │   │   ├── Arch_Amazon-Detective_32.png
        │   │   │   ├── Arch_Amazon-Detective_32.svg
        │   │   │   ├── Arch_Amazon-GuardDuty_32.png
        │   │   │   ├── Arch_Amazon-GuardDuty_32.svg
        │   │   │   ├── Arch_Amazon-Inspector_32.png
        │   │   │   ├── Arch_Amazon-Inspector_32.svg
        │   │   │   ├── Arch_Amazon-Macie_32.png
        │   │   │   ├── Arch_Amazon-Macie_32.svg
        │   │   │   ├── Arch_Amazon-Security-Lake_32.png
        │   │   │   ├── Arch_Amazon-Security-Lake_32.svg
        │   │   │   ├── Arch_Amazon-Verified-Permissions_32.png
        │   │   │   ├── Arch_Amazon-Verified-Permissions_32.svg
        │   │   │   ├── Arch_AWS-Artifact_32.png
        │   │   │   ├── Arch_AWS-Artifact_32.svg
        │   │   │   ├── Arch_AWS-Audit-Manager_32.png
        │   │   │   ├── Arch_AWS-Audit-Manager_32.svg
        │   │   │   ├── Arch_AWS-Certificate-Manager_32.png
        │   │   │   ├── Arch_AWS-Certificate-Manager_32.svg
        │   │   │   ├── Arch_AWS-CloudHSM_32.png
        │   │   │   ├── Arch_AWS-CloudHSM_32.svg
        │   │   │   ├── Arch_AWS-Directory-Service_32.png
        │   │   │   ├── Arch_AWS-Directory-Service_32.svg
        │   │   │   ├── Arch_AWS-Firewall-Manager_32.png
        │   │   │   ├── Arch_AWS-Firewall-Manager_32.svg
        │   │   │   ├── Arch_AWS-IAM-Identity-Center_32.png
        │   │   │   ├── Arch_AWS-IAM-Identity-Center_32.svg
        │   │   │   ├── Arch_AWS-Identity-and-Access-Management_32.png
        │   │   │   ├── Arch_AWS-Identity-and-Access-Management_32.svg
        │   │   │   ├── Arch_AWS-Key-Management-Service_32.png
        │   │   │   ├── Arch_AWS-Key-Management-Service_32.svg
        │   │   │   ├── Arch_AWS-Network-Firewall_32.png
        │   │   │   ├── Arch_AWS-Network-Firewall_32.svg
        │   │   │   ├── Arch_AWS-Payment-Cryptography_32.png
        │   │   │   ├── Arch_AWS-Payment-Cryptography_32.svg
        │   │   │   ├── Arch_AWS-Private-Certificate-Authority_32.png
        │   │   │   ├── Arch_AWS-Private-Certificate-Authority_32.svg
        │   │   │   ├── Arch_AWS-Resource-Access-Manager_32.png
        │   │   │   ├── Arch_AWS-Resource-Access-Manager_32.svg
        │   │   │   ├── Arch_AWS-Secrets-Manager_32.png
        │   │   │   ├── Arch_AWS-Secrets-Manager_32.svg
        │   │   │   ├── Arch_AWS-Security-Hub_32.png
        │   │   │   ├── Arch_AWS-Security-Hub_32.svg
        │   │   │   ├── Arch_AWS-Security-Incident-Response_32.png
        │   │   │   ├── Arch_AWS-Security-Incident-Response_32.svg
        │   │   │   ├── Arch_AWS-Shield_32.png
        │   │   │   ├── Arch_AWS-Shield_32.svg
        │   │   │   ├── Arch_AWS-Signer_32.png
        │   │   │   ├── Arch_AWS-Signer_32.svg
        │   │   │   ├── Arch_AWS-WAF_32.png
        │   │   │   └── Arch_AWS-WAF_32.svg
        │   │   ├── 48
        │   │   │   ├── Arch_Amazon-Cloud-Directory_48.png
        │   │   │   ├── Arch_Amazon-Cloud-Directory_48.svg
        │   │   │   ├── Arch_Amazon-Cognito_48.png
        │   │   │   ├── Arch_Amazon-Cognito_48.svg
        │   │   │   ├── Arch_Amazon-Detective_48.png
        │   │   │   ├── Arch_Amazon-Detective_48.svg
        │   │   │   ├── Arch_Amazon-GuardDuty_48.png
        │   │   │   ├── Arch_Amazon-GuardDuty_48.svg
        │   │   │   ├── Arch_Amazon-Inspector_48.png
        │   │   │   ├── Arch_Amazon-Inspector_48.svg
        │   │   │   ├── Arch_Amazon-Macie_48.png
        │   │   │   ├── Arch_Amazon-Macie_48.svg
        │   │   │   ├── Arch_Amazon-Security-Lake_48.png
        │   │   │   ├── Arch_Amazon-Security-Lake_48.svg
        │   │   │   ├── Arch_Amazon-Verified-Permissions_48.png
        │   │   │   ├── Arch_Amazon-Verified-Permissions_48.svg
        │   │   │   ├── Arch_AWS-Artifact_48.png
        │   │   │   ├── Arch_AWS-Artifact_48.svg
        │   │   │   ├── Arch_AWS-Audit-Manager_48.png
        │   │   │   ├── Arch_AWS-Audit-Manager_48.svg
        │   │   │   ├── Arch_AWS-Certificate-Manager_48.png
        │   │   │   ├── Arch_AWS-Certificate-Manager_48.svg
        │   │   │   ├── Arch_AWS-CloudHSM_48.png
        │   │   │   ├── Arch_AWS-CloudHSM_48.svg
        │   │   │   ├── Arch_AWS-Directory-Service_48.png
        │   │   │   ├── Arch_AWS-Directory-Service_48.svg
        │   │   │   ├── Arch_AWS-Firewall-Manager_48.png
        │   │   │   ├── Arch_AWS-Firewall-Manager_48.svg
        │   │   │   ├── Arch_AWS-IAM-Identity-Center_48.png
        │   │   │   ├── Arch_AWS-IAM-Identity-Center_48.svg
        │   │   │   ├── Arch_AWS-Identity-and-Access-Management_48.png
        │   │   │   ├── Arch_AWS-Identity-and-Access-Management_48.svg
        │   │   │   ├── Arch_AWS-Key-Management-Service_48.png
        │   │   │   ├── Arch_AWS-Key-Management-Service_48.svg
        │   │   │   ├── Arch_AWS-Network-Firewall_48.png
        │   │   │   ├── Arch_AWS-Network-Firewall_48.svg
        │   │   │   ├── Arch_AWS-Payment-Cryptography_48.png
        │   │   │   ├── Arch_AWS-Payment-Cryptography_48.svg
        │   │   │   ├── Arch_AWS-Private-Certificate-Authority_48.png
        │   │   │   ├── Arch_AWS-Private-Certificate-Authority_48.svg
        │   │   │   ├── Arch_AWS-Resource-Access-Manager_48.png
        │   │   │   ├── Arch_AWS-Resource-Access-Manager_48.svg
        │   │   │   ├── Arch_AWS-Secrets-Manager_48.png
        │   │   │   ├── Arch_AWS-Secrets-Manager_48.svg
        │   │   │   ├── Arch_AWS-Security-Hub_48.png
        │   │   │   ├── Arch_AWS-Security-Hub_48.svg
        │   │   │   ├── Arch_AWS-Security-Incident-Response_48.png
        │   │   │   ├── Arch_AWS-Security-Incident-Response_48.svg
        │   │   │   ├── Arch_AWS-Shield_48.png
        │   │   │   ├── Arch_AWS-Shield_48.svg
        │   │   │   ├── Arch_AWS-Signer_48.png
        │   │   │   ├── Arch_AWS-Signer_48.svg
        │   │   │   ├── Arch_AWS-WAF_48.png
        │   │   │   └── Arch_AWS-WAF_48.svg
        │   │   └── 64
        │   │       ├── Arch_Amazon-Cloud-Directory_64.png
        │   │       ├── Arch_Amazon-Cloud-Directory_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Cognito_64.png
        │   │       ├── Arch_Amazon-Cognito_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Detective_64.png
        │   │       ├── Arch_Amazon-Detective_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-GuardDuty_64.png
        │   │       ├── Arch_Amazon-GuardDuty_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Inspector_64.png
        │   │       ├── Arch_Amazon-Inspector_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Macie_64.png
        │   │       ├── Arch_Amazon-Macie_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Security-Lake_64.png
        │   │       ├── Arch_Amazon-Security-Lake_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_Amazon-Verified-Permissions_64.png
        │   │       ├── Arch_Amazon-Verified-Permissions_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Artifact_64.png
        │   │       ├── Arch_AWS-Artifact_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Audit-Manager_64.png
        │   │       ├── Arch_AWS-Audit-Manager_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Certificate-Manager_64.png
        │   │       ├── Arch_AWS-Certificate-Manager_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-CloudHSM_64.png
        │   │       ├── Arch_AWS-CloudHSM_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Directory-Service_64.png
        │   │       ├── Arch_AWS-Directory-Service_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Firewall-Manager_64.png
        │   │       ├── Arch_AWS-Firewall-Manager_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-IAM-Identity-Center_64.png
        │   │       ├── Arch_AWS-IAM-Identity-Center_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Identity-and-Access-Management_64.png
        │   │       ├── Arch_AWS-Identity-and-Access-Management_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Key-Management-Service_64.png
        │   │       ├── Arch_AWS-Key-Management-Service_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Network-Firewall_64.png
        │   │       ├── Arch_AWS-Network-Firewall_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Payment-Cryptography_64.png
        │   │       ├── Arch_AWS-Payment-Cryptography_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Private-Certificate-Authority_64.png
        │   │       ├── Arch_AWS-Private-Certificate-Authority_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Resource-Access-Manager_64.png
        │   │       ├── Arch_AWS-Resource-Access-Manager_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Secrets-Manager_64.png
        │   │       ├── Arch_AWS-Secrets-Manager_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Security-Hub_64.png
        │   │       ├── Arch_AWS-Security-Hub_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Security-Incident-Response_64.png
        │   │       ├── Arch_AWS-Security-Incident-Response_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Shield_64.png
        │   │       ├── Arch_AWS-Shield_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-Signer_64.png
        │   │       ├── Arch_AWS-Signer_64.svg
        │   │       ├── [email protected]
        │   │       ├── Arch_AWS-WAF_64.png
        │   │       ├── Arch_AWS-WAF_64.svg
        │   │       └── [email protected]
        │   └── storage
        │       ├── .DS_Store
        │       ├── 16
        │       │   ├── .DS_Store
        │       │   ├── Arch_Amazon-EFS_16.png
        │       │   ├── Arch_Amazon-EFS_16.svg
        │       │   ├── Arch_Amazon-Elastic-Block-Store_16.png
        │       │   ├── Arch_Amazon-Elastic-Block-Store_16.svg
        │       │   ├── Arch_Amazon-File-Cache_16.png
        │       │   ├── Arch_Amazon-File-Cache_16.svg
        │       │   ├── Arch_Amazon-FSx_16.png
        │       │   ├── Arch_Amazon-FSx_16.svg
        │       │   ├── Arch_Amazon-FSx-for-Lustre_16.png
        │       │   ├── Arch_Amazon-FSx-for-Lustre_16.svg
        │       │   ├── Arch_Amazon-FSx-for-NetApp-ONTAP_16.png
        │       │   ├── Arch_Amazon-FSx-for-NetApp-ONTAP_16.svg
        │       │   ├── Arch_Amazon-FSx-for-OpenZFS_16.png
        │       │   ├── Arch_Amazon-FSx-for-OpenZFS_16.svg
        │       │   ├── Arch_Amazon-FSx-for-WFS_16.png
        │       │   ├── Arch_Amazon-FSx-for-WFS_16.svg
        │       │   ├── Arch_Amazon-S3-on-Outposts_16.png
        │       │   ├── Arch_Amazon-S3-on-Outposts_16.svg
        │       │   ├── Arch_Amazon-Simple-Storage-Service_16.png
        │       │   ├── Arch_Amazon-Simple-Storage-Service_16.svg
        │       │   ├── Arch_Amazon-Simple-Storage-Service-Glacier_16.png
        │       │   ├── Arch_Amazon-Simple-Storage-Service-Glacier_16.svg
        │       │   ├── Arch_AWS-Backup_16.png
        │       │   ├── Arch_AWS-Backup_16.svg
        │       │   ├── Arch_AWS-Elastic-Disaster-Recovery_16.png
        │       │   ├── Arch_AWS-Elastic-Disaster-Recovery_16.svg
        │       │   ├── Arch_AWS-Snowball_16.png
        │       │   ├── Arch_AWS-Snowball_16.svg
        │       │   ├── Arch_AWS-Snowball-Edge_16.png
        │       │   ├── Arch_AWS-Snowball-Edge_16.svg
        │       │   ├── Arch_AWS-Storage-Gateway_16.png
        │       │   └── Arch_AWS-Storage-Gateway_16.svg
        │       ├── 32
        │       │   ├── .DS_Store
        │       │   ├── Arch_Amazon-EFS_32.png
        │       │   ├── Arch_Amazon-EFS_32.svg
        │       │   ├── Arch_Amazon-Elastic-Block-Store_32.png
        │       │   ├── Arch_Amazon-Elastic-Block-Store_32.svg
        │       │   ├── Arch_Amazon-File-Cache_32.png
        │       │   ├── Arch_Amazon-File-Cache_32.svg
        │       │   ├── Arch_Amazon-FSx_32.png
        │       │   ├── Arch_Amazon-FSx_32.svg
        │       │   ├── Arch_Amazon-FSx-for-Lustre_32.png
        │       │   ├── Arch_Amazon-FSx-for-Lustre_32.svg
        │       │   ├── Arch_Amazon-FSx-for-NetApp-ONTAP_32.png
        │       │   ├── Arch_Amazon-FSx-for-NetApp-ONTAP_32.svg
        │       │   ├── Arch_Amazon-FSx-for-OpenZFS_32.png
        │       │   ├── Arch_Amazon-FSx-for-OpenZFS_32.svg
        │       │   ├── Arch_Amazon-FSx-for-WFS_32.png
        │       │   ├── Arch_Amazon-FSx-for-WFS_32.svg
        │       │   ├── Arch_Amazon-S3-on-Outposts_32.png
        │       │   ├── Arch_Amazon-S3-on-Outposts_32.svg
        │       │   ├── Arch_Amazon-Simple-Storage-Service_32.png
        │       │   ├── Arch_Amazon-Simple-Storage-Service_32.svg
        │       │   ├── Arch_Amazon-Simple-Storage-Service-Glacier_32.png
        │       │   ├── Arch_Amazon-Simple-Storage-Service-Glacier_32.svg
        │       │   ├── Arch_AWS-Backup_32.png
        │       │   ├── Arch_AWS-Backup_32.svg
        │       │   ├── Arch_AWS-Elastic-Disaster-Recovery_32.png
        │       │   ├── Arch_AWS-Elastic-Disaster-Recovery_32.svg
        │       │   ├── Arch_AWS-Snowball_32.png
        │       │   ├── Arch_AWS-Snowball_32.svg
        │       │   ├── Arch_AWS-Snowball-Edge_32.png
        │       │   ├── Arch_AWS-Snowball-Edge_32.svg
        │       │   ├── Arch_AWS-Storage-Gateway_32.png
        │       │   └── Arch_AWS-Storage-Gateway_32.svg
        │       ├── 48
        │       │   ├── .DS_Store
        │       │   ├── Arch_Amazon-EFS_48.png
        │       │   ├── Arch_Amazon-EFS_48.svg
        │       │   ├── Arch_Amazon-Elastic-Block-Store_48.png
        │       │   ├── Arch_Amazon-Elastic-Block-Store_48.svg
        │       │   ├── Arch_Amazon-File-Cache_48.png
        │       │   ├── Arch_Amazon-File-Cache_48.svg
        │       │   ├── Arch_Amazon-FSx_48.png
        │       │   ├── Arch_Amazon-FSx_48.svg
        │       │   ├── Arch_Amazon-FSx-for-Lustre_48.png
        │       │   ├── Arch_Amazon-FSx-for-Lustre_48.svg
        │       │   ├── Arch_Amazon-FSx-for-NetApp-ONTAP_48.png
        │       │   ├── Arch_Amazon-FSx-for-NetApp-ONTAP_48.svg
        │       │   ├── Arch_Amazon-FSx-for-OpenZFS_48.png
        │       │   ├── Arch_Amazon-FSx-for-OpenZFS_48.svg
        │       │   ├── Arch_Amazon-FSx-for-WFS_48.png
        │       │   ├── Arch_Amazon-FSx-for-WFS_48.svg
        │       │   ├── Arch_Amazon-S3-on-Outposts_48.png
        │       │   ├── Arch_Amazon-S3-on-Outposts_48.svg
        │       │   ├── Arch_Amazon-Simple-Storage-Service_48.png
        │       │   ├── Arch_Amazon-Simple-Storage-Service_48.svg
        │       │   ├── Arch_Amazon-Simple-Storage-Service-Glacier_48.png
        │       │   ├── Arch_Amazon-Simple-Storage-Service-Glacier_48.svg
        │       │   ├── Arch_AWS-Backup_48.png
        │       │   ├── Arch_AWS-Backup_48.svg
        │       │   ├── Arch_AWS-Elastic-Disaster-Recovery_48.png
        │       │   ├── Arch_AWS-Elastic-Disaster-Recovery_48.svg
        │       │   ├── Arch_AWS-Snowball_48.png
        │       │   ├── Arch_AWS-Snowball_48.svg
        │       │   ├── Arch_AWS-Snowball-Edge_48.png
        │       │   ├── Arch_AWS-Snowball-Edge_48.svg
        │       │   ├── Arch_AWS-Storage-Gateway_48.png
        │       │   └── Arch_AWS-Storage-Gateway_48.svg
        │       └── 64
        │           ├── .DS_Store
        │           ├── Arch_Amazon-EFS_64.png
        │           ├── Arch_Amazon-EFS_64.svg
        │           ├── [email protected]
        │           ├── Arch_Amazon-Elastic-Block-Store_64.png
        │           ├── Arch_Amazon-Elastic-Block-Store_64.svg
        │           ├── [email protected]
        │           ├── Arch_Amazon-File-Cache_64.png
        │           ├── Arch_Amazon-File-Cache_64.svg
        │           ├── [email protected]
        │           ├── Arch_Amazon-FSx_64.png
        │           ├── Arch_Amazon-FSx_64.svg
        │           ├── [email protected]
        │           ├── Arch_Amazon-FSx-for-Lustre_64.png
        │           ├── Arch_Amazon-FSx-for-Lustre_64.svg
        │           ├── [email protected]
        │           ├── Arch_Amazon-FSx-for-NetApp-ONTAP_64.png
        │           ├── Arch_Amazon-FSx-for-NetApp-ONTAP_64.svg
        │           ├── [email protected]
        │           ├── Arch_Amazon-FSx-for-OpenZFS_64.png
        │           ├── Arch_Amazon-FSx-for-OpenZFS_64.svg
        │           ├── [email protected]
        │           ├── Arch_Amazon-FSx-for-WFS_64.png
        │           ├── Arch_Amazon-FSx-for-WFS_64.svg
        │           ├── [email protected]
        │           ├── Arch_Amazon-S3-on-Outposts_64.png
        │           ├── Arch_Amazon-S3-on-Outposts_64.svg
        │           ├── [email protected]
        │           ├── Arch_Amazon-Simple-Storage-Service_64.png
        │           ├── Arch_Amazon-Simple-Storage-Service_64.svg
        │           ├── [email protected]
        │           ├── Arch_Amazon-Simple-Storage-Service-Glacier_64.png
        │           ├── Arch_Amazon-Simple-Storage-Service-Glacier_64.svg
        │           ├── [email protected]
        │           ├── Arch_AWS-Backup_64.png
        │           ├── Arch_AWS-Backup_64.svg
        │           ├── [email protected]
        │           ├── Arch_AWS-Elastic-Disaster-Recovery_64.png
        │           ├── Arch_AWS-Elastic-Disaster-Recovery_64.svg
        │           ├── [email protected]
        │           ├── Arch_AWS-Snowball_64.png
        │           ├── Arch_AWS-Snowball_64.svg
        │           ├── [email protected]
        │           ├── Arch_AWS-Snowball-Edge_64.png
        │           ├── Arch_AWS-Snowball-Edge_64.svg
        │           ├── [email protected]
        │           ├── Arch_AWS-Storage-Gateway_64.png
        │           ├── Arch_AWS-Storage-Gateway_64.svg
        │           └── [email protected]
        ├── index.html
        ├── manifest.json
        ├── robots.txt
        └── static
            ├── css
            │   ├── main.c910004d.css
            │   └── main.c910004d.css.map
            └── js
                ├── 1297.c349ec3c.chunk.js
                ├── 14.7ba48ec4.chunk.js
                ├── 14.7ba48ec4.chunk.js.LICENSE.txt
                ├── 14.7ba48ec4.chunk.js.map
                ├── 1409.d2c5ac18.chunk.js
                ├── 1457.10b2696f.chunk.js
                ├── 1595.f10cd903.chunk.js
                ├── 1595.f10cd903.chunk.js.LICENSE.txt
                ├── 1595.f10cd903.chunk.js.map
                ├── 1707.26c2b146.chunk.js
                ├── 1707.26c2b146.chunk.js.map
                ├── 2019.3e4e6398.chunk.js
                ├── 2019.3e4e6398.chunk.js.map
                ├── 2038.86d3ba27.chunk.js
                ├── 2038.86d3ba27.chunk.js.map
                ├── 2374.75cb7c60.chunk.js
                ├── 2374.75cb7c60.chunk.js.LICENSE.txt
                ├── 2374.75cb7c60.chunk.js.map
                ├── 2491.6dc3b41c.chunk.js
                ├── 2491.6dc3b41c.chunk.js.map
                ├── 3025.e856e271.chunk.js
                ├── 3025.e856e271.chunk.js.LICENSE.txt
                ├── 3025.e856e271.chunk.js.map
                ├── 3290.6c752b7b.chunk.js
                ├── 3290.6c752b7b.chunk.js.map
                ├── 3345.719283e7.chunk.js
                ├── 3345.719283e7.chunk.js.map
                ├── 349.2456c1b6.chunk.js
                ├── 349.2456c1b6.chunk.js.map
                ├── 3641.87d0bf7c.chunk.js
                ├── 3641.87d0bf7c.chunk.js.map
                ├── 3705.1bb92025.chunk.js
                ├── 3705.1bb92025.chunk.js.map
                ├── 3750.c184e3e3.chunk.js
                ├── 3750.c184e3e3.chunk.js.map
                ├── 3817.79a57e5e.chunk.js
                ├── 3817.79a57e5e.chunk.js.map
                ├── 4114.eea3c770.chunk.js
                ├── 4114.eea3c770.chunk.js.map
                ├── 4135.b88aaf7b.chunk.js
                ├── 4147.5f8e8649.chunk.js
                ├── 4191.3ed02494.chunk.js
                ├── 4191.3ed02494.chunk.js.map
                ├── 4487.fec1d877.chunk.js
                ├── 4570.ce64aedb.chunk.js
                ├── 4570.ce64aedb.chunk.js.map
                ├── 490.a05b6059.chunk.js
                ├── 490.a05b6059.chunk.js.map
                ├── 5009.1a2aa685.chunk.js
                ├── 5009.1a2aa685.chunk.js.LICENSE.txt
                ├── 5009.1a2aa685.chunk.js.map
                ├── 5502.14766ceb.chunk.js
                ├── 5502.14766ceb.chunk.js.map
                ├── 62.b40b6fbd.chunk.js
                ├── 62.b40b6fbd.chunk.js.map
                ├── 6453.8c3fba0e.chunk.js
                ├── 6453.8c3fba0e.chunk.js.map
                ├── 6455.8e6b5278.chunk.js
                ├── 6455.8e6b5278.chunk.js.map
                ├── 646.6aac5035.chunk.js
                ├── 646.6aac5035.chunk.js.LICENSE.txt
                ├── 646.6aac5035.chunk.js.map
                ├── 6516.3948f7b4.chunk.js
                ├── 6516.3948f7b4.chunk.js.map
                ├── 6725.6ad72d9d.chunk.js
                ├── 6823.e10e9817.chunk.js
                ├── 6823.e10e9817.chunk.js.map
                ├── 6865.afd592a9.chunk.js
                ├── 6865.afd592a9.chunk.js.map
                ├── 6977.4218876a.chunk.js
                ├── 6977.4218876a.chunk.js.LICENSE.txt
                ├── 6977.4218876a.chunk.js.map
                ├── 7069.02ce9149.chunk.js
                ├── 7069.02ce9149.chunk.js.map
                ├── 7513.37f12f0e.chunk.js
                ├── 7513.37f12f0e.chunk.js.map
                ├── 7550.0cfdabcf.chunk.js
                ├── 7550.0cfdabcf.chunk.js.map
                ├── 7681.ee495de8.chunk.js
                ├── 7681.ee495de8.chunk.js.LICENSE.txt
                ├── 7681.ee495de8.chunk.js.map
                ├── 7841.37a92b31.chunk.js
                ├── 7841.37a92b31.chunk.js.map
                ├── 7854.ed7e04cc.chunk.js
                ├── 7854.ed7e04cc.chunk.js.map
                ├── 8151.87df400e.chunk.js
                ├── 8151.87df400e.chunk.js.map
                ├── 8195.55a334cf.chunk.js
                ├── 8195.55a334cf.chunk.js.map
                ├── 8218.b7de3259.chunk.js
                ├── 8218.b7de3259.chunk.js.map
                ├── 8234.f2f9a7db.chunk.js
                ├── 8234.f2f9a7db.chunk.js.map
                ├── 8332.9aa74d00.chunk.js
                ├── 8332.9aa74d00.chunk.js.map
                ├── 8449.676bcc94.chunk.js
                ├── 8449.676bcc94.chunk.js.map
                ├── 8660.7fdeafe8.chunk.js
                ├── 8660.7fdeafe8.chunk.js.map
                ├── 9413.aea20916.chunk.js
                ├── 9413.aea20916.chunk.js.map
                ├── 9448.cd4e8095.chunk.js
                ├── 9448.cd4e8095.chunk.js.map
                ├── 9459.753274fe.chunk.js
                ├── 9459.753274fe.chunk.js.map
                ├── 9573.5ba95804.chunk.js
                ├── 9573.5ba95804.chunk.js.map
                ├── 9664.9e69f3bc.chunk.js
                ├── 9664.9e69f3bc.chunk.js.map
                ├── 9844.6366c533.chunk.js
                ├── 9844.6366c533.chunk.js.map
                ├── main.4cda12e2.js
                ├── main.4cda12e2.js.LICENSE.txt
                └── main.4cda12e2.js.map
```

# Files

--------------------------------------------------------------------------------
/pkg/agent/agent_test.go:
--------------------------------------------------------------------------------

```go
   1 | package agent
   2 | 
   3 | import (
   4 | 	"context"
   5 | 	"encoding/json"
   6 | 	"fmt"
   7 | 	"os"
   8 | 	"path/filepath"
   9 | 	"strings"
  10 | 	"testing"
  11 | 	"time"
  12 | 
  13 | 	"github.com/tmc/langchaingo/llms"
  14 | 	"github.com/tmc/langchaingo/llms/googleai"
  15 | 	"github.com/versus-control/ai-infrastructure-agent/internal/config"
  16 | 	"github.com/versus-control/ai-infrastructure-agent/internal/logging"
  17 | 	"github.com/versus-control/ai-infrastructure-agent/pkg/agent/mocks"
  18 | 	"github.com/versus-control/ai-infrastructure-agent/pkg/types"
  19 | )
  20 | 
  21 | // === Helper Functions for Setting Up Real AI and Comprehensive Mock MCP Tools ===
  22 | 
  23 | func setupRealConfiguration() (*config.Config, error) {
  24 | 	// Load the actual config from configuration file
  25 | 	cfg, err := config.Load()
  26 | 	if err != nil {
  27 | 		return nil, fmt.Errorf("failed to load configuration: %w", err)
  28 | 	}
  29 | 
  30 | 	// Ensure we're using Gemini for this test
  31 | 	cfg.Agent.Provider = "gemini"
  32 | 	cfg.Agent.MaxTokens = 20000
  33 | 	cfg.Agent.Model = "gemini-2.5-flash-lite" // Use a valid model name
  34 | 	cfg.Agent.EnableDebug = true
  35 | 
  36 | 	return cfg, nil
  37 | }
  38 | 
  39 | func setupRealLLMClient(cfg *config.Config) (llms.Model, error) {
  40 | 	switch cfg.Agent.Provider {
  41 | 	case "gemini":
  42 | 		apiKey := os.Getenv("GEMINI_API_KEY")
  43 | 		if apiKey == "" {
  44 | 			return nil, fmt.Errorf("You need an auth option to use this client.")
  45 | 		}
  46 | 		// Pass the API key and model to the googleai client
  47 | 		return googleai.New(context.Background(),
  48 | 			googleai.WithAPIKey(apiKey),
  49 | 			googleai.WithDefaultModel(cfg.Agent.Model))
  50 | 	default:
  51 | 		return nil, fmt.Errorf("unsupported LLM provider: %s", cfg.Agent.Provider)
  52 | 	}
  53 | }
  54 | 
  55 | func setupAgentWithRealAI(cfg *config.Config, llmClient llms.Model) (*StateAwareAgent, *mocks.MockTestSuite, error) {
  56 | 	// Create logger
  57 | 	logger := logging.NewLogger("test", cfg.Logging.Level)
  58 | 
  59 | 	// Initialize mock test suite with real component integration
  60 | 	mockSuite, err := mocks.NewMockTestSuite("us-west-2")
  61 | 	if err != nil {
  62 | 		return nil, nil, fmt.Errorf("failed to create mock test suite: %w", err)
  63 | 	}
  64 | 
  65 | 	// Create agent with real AI but mock infrastructure components
  66 | 	agent := &StateAwareAgent{
  67 | 		llm:       llmClient,
  68 | 		config:    &cfg.Agent,
  69 | 		awsConfig: &cfg.AWS,
  70 | 		Logger:    logger,
  71 | 
  72 | 		// MCP from mock suite
  73 | 		resourceMappings: make(map[string]string),
  74 | 		mcpTools:         make(map[string]MCPToolInfo),
  75 | 		mcpResources:     make(map[string]MCPResourceInfo),
  76 | 
  77 | 		// Enable test mode to use mock MCP capabilities
  78 | 		testMode: true,
  79 | 
  80 | 		// Set mock MCP server for test mode
  81 | 		mockMCPServer: mockSuite.MCPServer,
  82 | 
  83 | 		// Use real configuration-driven components from mock suite
  84 | 		patternMatcher: mockSuite.StateManager.GetPatternMatcher(),
  85 | 		fieldResolver:  mockSuite.StateManager.GetFieldResolver(),
  86 | 
  87 | 		extractionConfig: mockSuite.StateManager.GetExtractionConfig(),
  88 | 		idExtractor:      mockSuite.StateManager.GetIDExtractor(),
  89 | 	}
  90 | 
  91 | 	return agent, mockSuite, nil
  92 | }
  93 | 
  94 | // == Prompts ==
  95 | 
  96 | // Comprehensive VPC Infrastructure
  97 | func comprehensiveVPCPrompt() string {
  98 | 	// Comprehensive VPC infrastructure prompt
  99 | 	prompt := `Create a complete production-ready VPC infrastructure on AWS with the following requirements:
 100 | 
 101 | NETWORK ARCHITECTURE:
 102 | - VPC with CIDR 10.0.0.0/16 in us-west-2
 103 | - 6 subnets across 3 availability zones:
 104 |   * 2 public subnets (10.0.1.0/24, 10.0.2.0/24) for load balancers
 105 |   * 2 private subnets (10.0.11.0/24, 10.0.12.0/24) for application servers  
 106 |   * 2 database subnets (10.0.21.0/24, 10.0.22.0/24) for RDS instances
 107 | - Internet Gateway for public access
 108 | - 2 NAT Gateways in public subnets for private subnet internet access
 109 | - Route tables with proper routing
 110 | 
 111 | COMPUTE & SECURITY:
 112 | - Application Load Balancer in public subnets
 113 | - Auto Scaling Group with t3.medium instances in private subnets
 114 | - Launch Template with latest Amazon Linux 2 AMI
 115 | - Security Groups with least privilege access
 116 | - Target Group for ALB health checks
 117 | 
 118 | DATABASE:
 119 | - RDS MySQL instance in database subnets
 120 | - Database security group allowing access only from app servers
 121 | - Multi-AZ deployment for high availability
 122 | 
 123 | VALIDATION:
 124 | - Validate all resources are properly configured
 125 | - Test connectivity between components
 126 | - Verify security group rules are correct
 127 | 
 128 | Please create a detailed execution plan with all necessary steps, proper dependencies, and real AWS API calls where needed.`
 129 | 
 130 | 	return prompt
 131 | }
 132 | 
 133 | // Comprehensive EC2 Infrastructure
 134 | func comprehensiveEC2Prompt() string {
 135 | 	prompt := `Create an EC2 for hosting an Apache Server with a dedicated security group that allows inbound HTTP (port 80) and SSH (port 22) traffic.`
 136 | 
 137 | 	return prompt
 138 | }
 139 | 
 140 | // Comprehensive VPC with EC2 Infrastructure
 141 | func comprehensiveVPCwithEC2Prompt() string {
 142 | 	prompt := `Create a production VPC with a CIDR block of 10.0.0.0/16 across two availability zones. Set up public subnets (10.0.1.0/24 and 10.0.2.0/24) for internet-facing load balancers. Create private subnets for application servers (10.0.11.0/24 and 10.0.12.0/24): Configure Internet Gateway and NAT Gateway for proper routing. Create an EC2 for hosting an Apache Server with a dedicated security group that allows inbound HTTP (port 80) and SSH (port 22) traffic in public subnets.`
 143 | 
 144 | 	return prompt
 145 | }
 146 | 
 147 | // Comprehensive EC2 Infrastructure
 148 | func comprehensiveEC2withALBPrompt() string {
 149 | 	prompt := `I need to deploy a web application infrastructure on AWS with the following requirements:
 150 | 
 151 | - Create an EC2 for hosting an Apache Server with a dedicated security group that allows inbound HTTP (port 80) and SSH (port 22) traffic.
 152 | - Create an Application Load Balancer across public subnets in front of the EC2 instance with a security group that allows inbound HTTP (port 80) traffic from the internet.`
 153 | 
 154 | 	return prompt
 155 | }
 156 | 
 157 | // Comprehensive Three-Tier Infrastructure
 158 | func comprehensiveThreeLayerPrompt() string {
 159 | 	prompt := `I need to deploy a complete production-ready three-tier web application infrastructure on AWS with the following requirements:
 160 | 
 161 | Network Foundation (Phase 1):
 162 | - Create a production VPC with a CIDR block of 10.0.0.0/16 across two availability zones.
 163 | - Set up public subnets (10.0.1.0/24 and 10.0.2.0/24) for internet-facing load balancers.
 164 | - Create private subnets for application servers (10.0.11.0/24 and 10.0.12.0/24).
 165 | - Set up dedicated database subnets (10.0.21.0/24 and 10.0.22.0/24)
 166 | - Configure Internet Gateway and NAT Gateway for proper routing.
 167 | 
 168 | Security Architecture (Phase 2):
 169 | - Create defense-in-depth security with tiered security groups
 170 | - Load balancer security group allowing HTTP/HTTPS from internet (0.0.0.0/0)
 171 | - Application server security group accepting traffic only from load balancer
 172 | - Database security group allowing MySQL (port 3306) only from application servers
 173 | 
 174 | Load Balancer Tier (Phase 3):
 175 | - Deploy Application Load Balancer across public subnets in both AZs
 176 | - Configure target group with health checks on /health endpoint
 177 | - Set up HTTP listener (port 80) with proper health check thresholds
 178 | - Health check: 30s interval, 5s timeout, 2 healthy/3 unhealthy thresholds
 179 | 
 180 | Auto Scaling Application Tier (Phase 4):
 181 | - Create launch template with t3.medium instances
 182 | - Use Amazon Linux 2 AMI with Apache/PHP web server
 183 | - Configure user data script to install web server and health check endpoint
 184 | - Set up Auto Scaling Group: min 2, max 10, desired 4 instances
 185 | - Deploy across private application subnets in both AZs
 186 | - Integrate with load balancer target group for automatic registration
 187 | - Use ELB health checks with 300s grace period
 188 | 
 189 | Database Infrastructure (Phase 5):
 190 | - Create RDS MySQL 8.0 database with Multi-AZ deployment
 191 | - Use db.t3.medium instance class with 100GB GP3 storage
 192 | - Enable encryption at rest and Performance Insights
 193 | - Configure automated backups: 7-day retention, 3-4 AM backup window
 194 | - Set maintenance window: Sunday 4-5 AM
 195 | - Deploy across database subnets in both AZs
 196 | 
 197 | Additional Requirements:
 198 | - Tag all resources with Environment=production, Application=three-tier-web-app
 199 | - Use consistent naming convention with environment and tier identifiers
 200 | - Ensure high availability across multiple availability zones
 201 | - Follow AWS Well-Architected Framework principles
 202 | - Configure proper resource dependencies and creation order
 203 | 
 204 | Please deploy this complete infrastructure stack and provide me with the key resource IDs and endpoints once deployment is complete.`
 205 | 
 206 | 	return prompt
 207 | }
 208 | 
 209 | // Comprehensive Serverless Infrastructure
 210 | func comprehensiveServerlessPrompt() string {
 211 | 	prompt := `Deploy a complete serverless application infrastructure on AWS with the following specifications:
 212 | 
 213 | API Layer:
 214 | - Create an API Gateway REST API with regional endpoint
 215 | - Define resources and methods: GET /items, POST /items, GET /items/{id}
 216 | - Enable CORS for all methods
 217 | - Set up usage plan with throttling: 100 requests/second burst, 50 requests/second steady
 218 | 
 219 | Compute Layer:
 220 | - Create three Lambda functions in Node.js 20.x runtime
 221 | - Function 1: listItems - GET all items from DynamoDB
 222 | - Function 2: createItem - POST new item to DynamoDB
 223 | - Function 3: getItem - GET single item by ID
 224 | - Configure 128MB memory, 10s timeout for each
 225 | - Use environment variables for DynamoDB table name
 226 | - Integrate each function with corresponding API Gateway methods
 227 | - Enable Lambda function URLs for testing
 228 | 
 229 | Database Layer:
 230 | - Provision DynamoDB table named 'Items' with partition key 'id' (string)
 231 | - Add global secondary index on 'category' attribute
 232 | - Set provisioned capacity: 5 read/write capacity units
 233 | - Enable point-in-time recovery and auto-scaling (min 5, max 100)
 234 | - Encrypt with AWS-managed KMS key
 235 | 
 236 | Security and Authentication:
 237 | - Create Cognito User Pool for user authentication
 238 | - Add app client with OAuth flows enabled
 239 | - Configure API Gateway authorizer using Cognito
 240 | - Apply authorizer to all API methods except public GET /items
 241 | 
 242 | Monitoring and Logging:
 243 | - Enable X-Ray tracing for API Gateway and Lambda
 244 | - Create CloudWatch Log Groups for each Lambda with 7-day retention
 245 | - Set up CloudWatch alarms for Lambda errors (>0) and API 5xx errors (>1%)
 246 | 
 247 | Additional Requirements:
 248 | - Deploy in us-east-1 region
 249 | - Tag all resources with Environment=production, Application=serverless-app
 250 | - Ensure IAM roles follow least privilege: Lambda role with DynamoDB access only
 251 | - Provide API endpoint and test commands after deployment
 252 | 
 253 | Create a step-by-step execution plan including all AWS API calls, resource dependencies, and validation steps.`
 254 | 
 255 | 	return prompt
 256 | }
 257 | 
 258 | // Comprehensive EKS Infrastructure
 259 | func comprehensiveEKSPrompt() string {
 260 | 	prompt := `Set up a production-ready Kubernetes cluster on AWS EKS with these requirements:
 261 | 
 262 | Cluster Foundation:
 263 | - Create EKS cluster version 1.30 in us-west-2
 264 | - Enable public and private endpoint access
 265 | - Configure cluster logging: api, audit, authenticator, controllerManager, scheduler
 266 | 
 267 | Networking:
 268 | - Use existing VPC or create new with CIDR 10.100.0.0/16
 269 | - Public subnets: 10.100.1.0/24, 10.100.2.0/24
 270 | - Private subnets: 10.100.11.0/24, 10.100.12.0/24
 271 | - Ensure proper route tables and security groups for cluster communication
 272 | 
 273 | Node Groups:
 274 | - Managed node group with t3.medium instances
 275 | - Min 2, max 10, desired 3 nodes
 276 | - Use Amazon Linux 2 EKS-optimized AMI
 277 | - Enable auto-scaling and cluster autoscaler
 278 | - Add labels: role=worker
 279 | 
 280 | Add-ons:
 281 | - Install CoreDNS, kube-proxy, VPC CNI
 282 | - Add EBS CSI driver for persistent storage
 283 | - Deploy AWS Load Balancer Controller
 284 | 
 285 | Security:
 286 | - Create IAM roles for cluster and nodes with least privilege
 287 | - Enable IRSA (IAM Roles for Service Accounts)
 288 | - Configure security groups to allow only necessary ports
 289 | 
 290 | Monitoring:
 291 | - Enable EKS Control Plane logging to CloudWatch
 292 | - Install Prometheus and Grafana for cluster monitoring
 293 | - Set up alerts for node CPU >80% and pod evictions
 294 | 
 295 | Deployment Validation:
 296 | - Deploy sample nginx deployment and service (type LoadBalancer)
 297 | - Verify external access to the service
 298 | - Check cluster health and node status
 299 | 
 300 | Provide a detailed plan with sequential steps, AWS CLI commands where applicable, and resource verification.`
 301 | 
 302 | 	return prompt
 303 | }
 304 | 
 305 | // Comprehensive S3 with CloudFront Infrastructure
 306 | func comprehensiveS3CloudFrontPrompt() string {
 307 | 	prompt := `Build a global static website hosting infrastructure on AWS:
 308 | 
 309 | Storage Layer:
 310 | - Create S3 bucket for website assets in us-east-1
 311 | - Enable versioning and server-side encryption (SSE-S3)
 312 | - Set bucket policy for public read access
 313 | - Upload sample index.html and error.html
 314 | 
 315 | Distribution Layer:
 316 | - Create CloudFront distribution with S3 as origin
 317 | - Configure default root object: index.html
 318 | - Enable HTTP/2 and IPv6
 319 | - Set price class: Use All Edge Locations
 320 | - Configure error pages: 404 -> error.html (HTTP 200)
 321 | 
 322 | Security:
 323 | - Create Origin Access Control (OAC) for S3
 324 | - Update S3 bucket policy to allow only CloudFront
 325 | - Enable WAF web ACL with AWS managed rules for common exploits
 326 | 
 327 | Domain and SSL:
 328 | - Assume domain example.com in Route 53
 329 | - Create ACM certificate for *.example.com
 330 | - Configure CloudFront alternate domain names
 331 | - Set up Route 53 A record alias to CloudFront
 332 | 
 333 | Logging and Monitoring:
 334 | - Enable CloudFront standard logging to S3
 335 | - Create CloudWatch alarms for BytesDownloaded > threshold
 336 | - Set S3 access logging
 337 | 
 338 | Additional Features:
 339 | - Enable compression for text/* MIME types
 340 | - Set cache behavior: TTL min 0, default 1 day, max 1 year
 341 | - Add geo-restriction whitelist: US, CA
 342 | 
 343 | Deploy the infrastructure and provide the CloudFront domain name, S3 bucket name, and test URLs.`
 344 | 
 345 | 	return prompt
 346 | }
 347 | 
 348 | // Comprehensive ECS Infrastructure
 349 | func comprehensiveECSPrompt() string {
 350 | 	prompt := `Deploy a containerized application on AWS ECS with Fargate:
 351 | 
 352 | Cluster Setup:
 353 | - Create ECS cluster in us-east-1
 354 | - Enable Container Insights for monitoring
 355 | 
 356 | Networking:
 357 | - Use VPC with public and private subnets across 2 AZs
 358 | - CIDR: 10.20.0.0/16
 359 | - Public: 10.20.1.0/24, 10.20.2.0/24
 360 | - Private: 10.20.11.0/24, 10.20.12.0/24
 361 | - Internet Gateway and NAT for outbound
 362 | 
 363 | Task Definition:
 364 | - Fargate launch type
 365 | - Task: 0.5 vCPU, 1GB memory
 366 | - Container: nginx:latest, port 80
 367 | - Add environment variables if needed
 368 | - Enable AWS Logs driver
 369 | 
 370 | Service:
 371 | - Create ECS service with 2 desired tasks
 372 | - Deploy in private subnets
 373 | - Enable auto-scaling: min 2, max 10, CPU target 70%
 374 | - Integrate with Application Load Balancer
 375 | 
 376 | Load Balancer:
 377 | - Internet-facing ALB in public subnets
 378 | - HTTP listener port 80
 379 | - Target group with health check on /
 380 | - Security group: allow 80 from 0.0.0.0/0
 381 | 
 382 | Database (Optional Integration):
 383 | - RDS PostgreSQL in private subnets
 384 | - Allow access from ECS security group on port 5432
 385 | 
 386 | Security:
 387 | - ECS task role with S3 read access (if needed)
 388 | - Security groups with least privilege
 389 | 
 390 | Validation:
 391 | - Verify service is running and accessible via ALB
 392 | - Scale tasks and check auto-scaling
 393 | 
 394 | Provide execution plan with all steps, dependencies, and final endpoints.`
 395 | 
 396 | 	return prompt
 397 | }
 398 | 
 399 | // Comprehensive Monitoring and Logging Infrastructure
 400 | func comprehensiveMonitoringPrompt() string {
 401 | 	prompt := `Set up comprehensive monitoring and logging for an existing AWS infrastructure:
 402 | 
 403 | Core Services:
 404 | - Enable CloudWatch for all supported resources
 405 | - Create CloudTrail trail for management events, multi-region
 406 | - Configure S3 bucket for CloudTrail logs with lifecycle policy (30 days to Glacier)
 407 | 
 408 | Alarms and Dashboards:
 409 | - Create CloudWatch alarms:
 410 |   - EC2 CPU >80% for 5 minutes
 411 |   - ALB 5xx errors >5 in 1 minute
 412 |   - RDS free storage <20%
 413 | - Build CloudWatch dashboard with widgets for CPU, network, errors
 414 | 
 415 | Logging:
 416 | - Set up centralized logging with CloudWatch Logs
 417 | - Create log groups for EC2, Lambda, ECS with 14-day retention
 418 | - Enable VPC Flow Logs to CloudWatch Logs group
 419 | 
 420 | Advanced Monitoring:
 421 | - Enable X-Ray for application tracing (API Gateway, Lambda, ECS)
 422 | - Set up Synthetics canaries for endpoint monitoring (every 5 min)
 423 | - Configure EventBridge rules for critical events (e.g., instance termination)
 424 | 
 425 | Notifications:
 426 | - Create SNS topic for alarms
 427 | - Subscribe email endpoint
 428 | - Integrate with alarms for notifications
 429 | 
 430 | Security Monitoring:
 431 | - Enable GuardDuty for threat detection
 432 | - Configure Config rules for compliance (e.g., encrypted volumes)
 433 | - Set up Security Hub with CIS benchmarks
 434 | 
 435 | Deploy in us-west-2, tag resources with Monitoring=true, and provide dashboard URL and alarm names.`
 436 | 
 437 | 	return prompt
 438 | }
 439 | 
 440 | // === Test Suites ===
 441 | 
 442 | // TestComprehensiveExecutionPipeline tests all aspects of the execution pipeline
 443 | func TestComprehensiveExecutionPipeline(t *testing.T) {
 444 | 	t.Run("RealAIWithComprehensiveEC2Prompt", func(t *testing.T) {
 445 | 		testRealAIWithComprehensiveEC2Prompt(t)
 446 | 	})
 447 | 	t.Run("RealAIWithComprehensiveVPCPrompt", func(t *testing.T) {
 448 | 		testRealAIWithComprehensiveVPCPrompt(t)
 449 | 	})
 450 | 	t.Run("RealAIWithComprehensiveVPCwithEC2Prompt", func(t *testing.T) {
 451 | 		testRealAIWithComprehensiveVPCwithEC2Prompt(t)
 452 | 	})
 453 | 	t.Run("RealAIWithComprehensiveThreeLayerPrompt", func(t *testing.T) {
 454 | 		testRealAIWithComprehensiveThreeLayerPrompt(t)
 455 | 	})
 456 | 	// == State Handling Test ==
 457 | 	t.Run("RealAIWithRealStateEC2AndALBPrompt", func(t *testing.T) {
 458 | 		testRealAIWithRealStateEC2AndALBPrompt(t)
 459 | 	})
 460 | }
 461 | 
 462 | func testRealAIWithComprehensiveEC2Prompt(t *testing.T) {
 463 | 	// Comprehensive VPC infrastructure prompt
 464 | 	comprehensivePrompt := comprehensiveEC2Prompt()
 465 | 
 466 | 	// Setup test configuration
 467 | 	cfg, err := setupRealConfiguration()
 468 | 	if err != nil {
 469 | 		t.Fatalf("Failed to setup real configuration: %v", err)
 470 | 	}
 471 | 
 472 | 	// Setup real LLM client
 473 | 	llmClient, err := setupRealLLMClient(cfg)
 474 | 	if err != nil {
 475 | 		t.Fatalf("Failed to setup real LLM client: %v", err)
 476 | 	}
 477 | 
 478 | 	// Setup test agent with real AI and comprehensive mock infrastructure
 479 | 	agent, mockSuite, err := setupAgentWithRealAI(cfg, llmClient)
 480 | 	if err != nil {
 481 | 		t.Fatalf("Failed to setup test agent: %v", err)
 482 | 	}
 483 | 	// defer mockSuite.Reset()
 484 | 
 485 | 	// Create decision context using mock state manager
 486 | 	emptyState := &types.InfrastructureState{
 487 | 		Resources: make(map[string]*types.ResourceState),
 488 | 	}
 489 | 
 490 | 	decisionContext := &DecisionContext{
 491 | 		Request:             comprehensivePrompt,
 492 | 		CurrentState:        emptyState,
 493 | 		DiscoveredState:     []*types.ResourceState{},
 494 | 		Conflicts:           []*types.ConflictResolution{},
 495 | 		DeploymentOrder:     []string{},
 496 | 		ResourceCorrelation: make(map[string]*ResourceMatch),
 497 | 	}
 498 | 
 499 | 	t.Logf("🚀 Starting comprehensive execution pipeline test with real AI integration and mock infrastructure...")
 500 | 
 501 | 	// Step 1: Test AI Decision Making
 502 | 	t.Logf("📡 Step 1: Making real AI API call to process comprehensive infrastructure request...")
 503 | 
 504 | 	ctx, cancel := context.WithTimeout(context.Background(), time.Minute*3)
 505 | 	defer cancel()
 506 | 
 507 | 	decisionID := "test-comprehensive-decision"
 508 | 	decision, err := agent.generateDecisionWithPlan(ctx, decisionID, comprehensivePrompt, decisionContext)
 509 | 	if err != nil {
 510 | 		t.Fatalf("❌ Real AI API call failed: %v", err)
 511 | 	}
 512 | 
 513 | 	t.Logf("✅ Step 1 Complete: AI generated decision with %d execution steps", len(decision.ExecutionPlan))
 514 | 
 515 | 	// Step 2: Validate AI-Generated Plan Structure
 516 | 	t.Logf("🔍 Step 2: Validating AI-generated execution plan structure...")
 517 | 	validateExecutionPlanStructure(t, agent, decision)
 518 | 	t.Logf("✅ Step 2 Complete: Execution plan structure is valid")
 519 | 
 520 | 	// Step 3: Execute Full Flow with Mock Infrastructure
 521 | 	t.Logf("⚙️ Step 3: Executing full infrastructure plan using mock functions...")
 522 | 	testExecuteFullPlanWithMocks(t, agent, mockSuite, decision)
 523 | 	t.Logf("✅ Step 3 Complete: Full plan execution completed successfully")
 524 | 
 525 | 	// Step 4: Validate Mock Integration
 526 | 	t.Logf("🔬 Step 4: Validating mock infrastructure integration...")
 527 | 	testValidateMockIntegration(t, mockSuite, decision)
 528 | 	t.Logf("✅ Step 4 Complete: Mock integration validated")
 529 | 
 530 | 	t.Logf("🎉 All tests completed successfully! AI + Mock infrastructure integration validated.")
 531 | }
 532 | 
 533 | func testRealAIWithComprehensiveVPCPrompt(t *testing.T) {
 534 | 	// Comprehensive VPC infrastructure prompt
 535 | 	comprehensivePrompt := comprehensiveVPCPrompt()
 536 | 
 537 | 	// Setup test configuration
 538 | 	cfg, err := setupRealConfiguration()
 539 | 	if err != nil {
 540 | 		t.Fatalf("Failed to setup real configuration: %v", err)
 541 | 	}
 542 | 
 543 | 	// Setup real LLM client
 544 | 	llmClient, err := setupRealLLMClient(cfg)
 545 | 	if err != nil {
 546 | 		t.Fatalf("Failed to setup real LLM client: %v", err)
 547 | 	}
 548 | 
 549 | 	// Setup test agent with real AI and comprehensive mock infrastructure
 550 | 	agent, mockSuite, err := setupAgentWithRealAI(cfg, llmClient)
 551 | 	if err != nil {
 552 | 		t.Fatalf("Failed to setup test agent: %v", err)
 553 | 	}
 554 | 	// defer mockSuite.Reset()
 555 | 
 556 | 	// Create decision context using mock state manager
 557 | 	emptyState := &types.InfrastructureState{
 558 | 		Resources: make(map[string]*types.ResourceState),
 559 | 	}
 560 | 
 561 | 	decisionContext := &DecisionContext{
 562 | 		Request:             comprehensivePrompt,
 563 | 		CurrentState:        emptyState,
 564 | 		DiscoveredState:     []*types.ResourceState{},
 565 | 		Conflicts:           []*types.ConflictResolution{},
 566 | 		DeploymentOrder:     []string{},
 567 | 		ResourceCorrelation: make(map[string]*ResourceMatch),
 568 | 	}
 569 | 
 570 | 	t.Logf("🚀 Starting comprehensive execution pipeline test with real AI integration and mock infrastructure...")
 571 | 
 572 | 	// Step 1: Test AI Decision Making
 573 | 	t.Logf("📡 Step 1: Making real AI API call to process comprehensive infrastructure request...")
 574 | 
 575 | 	ctx, cancel := context.WithTimeout(context.Background(), time.Minute*3)
 576 | 	defer cancel()
 577 | 
 578 | 	decisionID := "test-comprehensive-decision"
 579 | 	decision, err := agent.generateDecisionWithPlan(ctx, decisionID, comprehensivePrompt, decisionContext)
 580 | 	if err != nil {
 581 | 		t.Fatalf("❌ Real AI API call failed: %v", err)
 582 | 	}
 583 | 
 584 | 	t.Logf("✅ Step 1 Complete: AI generated decision with %d execution steps", len(decision.ExecutionPlan))
 585 | 
 586 | 	// Step 2: Validate AI-Generated Plan Structure
 587 | 	t.Logf("🔍 Step 2: Validating AI-generated execution plan structure...")
 588 | 	validateExecutionPlanStructure(t, agent, decision)
 589 | 	t.Logf("✅ Step 2 Complete: Execution plan structure is valid")
 590 | 
 591 | 	// Step 3: Execute Full Flow with Mock Infrastructure
 592 | 	t.Logf("⚙️ Step 3: Executing full infrastructure plan using mock functions...")
 593 | 	testExecuteFullPlanWithMocks(t, agent, mockSuite, decision)
 594 | 	t.Logf("✅ Step 3 Complete: Full plan execution completed successfully")
 595 | 
 596 | 	// Step 4: Validate Mock Integration
 597 | 	t.Logf("🔬 Step 4: Validating mock infrastructure integration...")
 598 | 	testValidateMockIntegration(t, mockSuite, decision)
 599 | 	t.Logf("✅ Step 4 Complete: Mock integration validated")
 600 | 
 601 | 	t.Logf("🎉 All tests completed successfully! AI + Mock infrastructure integration validated.")
 602 | }
 603 | 
 604 | func testRealAIWithComprehensiveVPCwithEC2Prompt(t *testing.T) {
 605 | 	// Comprehensive VPC infrastructure prompt
 606 | 	comprehensivePrompt := comprehensiveVPCwithEC2Prompt()
 607 | 
 608 | 	// Setup test configuration
 609 | 	cfg, err := setupRealConfiguration()
 610 | 	if err != nil {
 611 | 		t.Fatalf("Failed to setup real configuration: %v", err)
 612 | 	}
 613 | 
 614 | 	// Setup real LLM client
 615 | 	llmClient, err := setupRealLLMClient(cfg)
 616 | 	if err != nil {
 617 | 		t.Fatalf("Failed to setup real LLM client: %v", err)
 618 | 	}
 619 | 
 620 | 	// Setup test agent with real AI and comprehensive mock infrastructure
 621 | 	agent, mockSuite, err := setupAgentWithRealAI(cfg, llmClient)
 622 | 	if err != nil {
 623 | 		t.Fatalf("Failed to setup test agent: %v", err)
 624 | 	}
 625 | 	// defer mockSuite.Reset()
 626 | 
 627 | 	// Create decision context using mock state manager
 628 | 	emptyState := &types.InfrastructureState{
 629 | 		Resources: make(map[string]*types.ResourceState),
 630 | 	}
 631 | 
 632 | 	decisionContext := &DecisionContext{
 633 | 		Request:             comprehensivePrompt,
 634 | 		CurrentState:        emptyState,
 635 | 		DiscoveredState:     []*types.ResourceState{},
 636 | 		Conflicts:           []*types.ConflictResolution{},
 637 | 		DeploymentOrder:     []string{},
 638 | 		ResourceCorrelation: make(map[string]*ResourceMatch),
 639 | 	}
 640 | 
 641 | 	t.Logf("🚀 Starting comprehensive execution pipeline test with real AI integration and mock infrastructure...")
 642 | 
 643 | 	// Step 1: Test AI Decision Making
 644 | 	t.Logf("📡 Step 1: Making real AI API call to process comprehensive infrastructure request...")
 645 | 
 646 | 	ctx, cancel := context.WithTimeout(context.Background(), time.Minute*3)
 647 | 	defer cancel()
 648 | 
 649 | 	decisionID := "test-comprehensive-decision"
 650 | 	decision, err := agent.generateDecisionWithPlan(ctx, decisionID, comprehensivePrompt, decisionContext)
 651 | 	if err != nil {
 652 | 		t.Fatalf("❌ Real AI API call failed: %v", err)
 653 | 	}
 654 | 
 655 | 	t.Logf("✅ Step 1 Complete: AI generated decision with %d execution steps", len(decision.ExecutionPlan))
 656 | 
 657 | 	// Step 2: Validate AI-Generated Plan Structure
 658 | 	t.Logf("🔍 Step 2: Validating AI-generated execution plan structure...")
 659 | 	validateExecutionPlanStructure(t, agent, decision)
 660 | 	t.Logf("✅ Step 2 Complete: Execution plan structure is valid")
 661 | 
 662 | 	// Step 3: Enhanced Pre-Execution Validation
 663 | 	t.Logf("🔬 Step 3: Enhanced pre-execution validation...")
 664 | 	testEnhancedPreExecutionValidation(t, agent, mockSuite, decision)
 665 | 	t.Logf("✅ Step 3 Complete: Pre-execution validation passed")
 666 | 
 667 | 	// Step 4: Execute Full Flow with Mock Infrastructure
 668 | 	t.Logf("⚙️ Step 4: Executing full infrastructure plan using mock functions...")
 669 | 	testExecuteFullPlanWithMocks(t, agent, mockSuite, decision)
 670 | 	t.Logf("✅ Step 4 Complete: Full plan execution completed successfully")
 671 | 
 672 | 	// Step 5: Enhanced Post-Execution Validation
 673 | 	t.Logf("🔍 Step 5: Enhanced post-execution validation...")
 674 | 	testEnhancedPostExecutionValidation(t, agent, mockSuite, decision)
 675 | 	t.Logf("✅ Step 5 Complete: Post-execution validation passed")
 676 | 
 677 | 	// Step 6: Error Scenario Testing
 678 | 	t.Logf("🚨 Step 6: Testing error scenarios...")
 679 | 	testErrorScenarios(t, agent, mockSuite, decision)
 680 | 	t.Logf("✅ Step 6 Complete: Error scenarios tested")
 681 | 
 682 | 	// Step 7: Infrastructure Reality Checks
 683 | 	t.Logf("🏗️ Step 7: Running infrastructure reality checks...")
 684 | 	testInfrastructureRealityCheck(t, agent, mockSuite, decision)
 685 | 	t.Logf("✅ Step 7 Complete: Infrastructure reality checks passed")
 686 | 
 687 | 	// Step 8: Web UI Flow Simulation
 688 | 	t.Logf("🌐 Step 8: Simulating Web UI flow...")
 689 | 	testWebUIFlowSimulation(t, agent, mockSuite, decision)
 690 | 	t.Logf("✅ Step 8 Complete: Web UI flow simulation passed")
 691 | 
 692 | 	// Step 9: Validate Mock Integration
 693 | 	t.Logf("🔬 Step 9: Validating mock infrastructure integration...")
 694 | 	testValidateMockIntegration(t, mockSuite, decision)
 695 | 	t.Logf("✅ Step 9 Complete: Mock integration validated")
 696 | 
 697 | 	t.Logf("🎉 All tests completed successfully! Enhanced AI + Mock infrastructure integration validated.")
 698 | }
 699 | 
 700 | // === Test Function for EC2 with ALB Prompt with State Handling ===
 701 | 
 702 | func testRealAIWithRealStateEC2AndALBPrompt(t *testing.T) {
 703 | 	// EC2 with ALB infrastructure prompt
 704 | 	comprehensivePrompt := comprehensiveEC2withALBPrompt()
 705 | 
 706 | 	// Setup test configuration
 707 | 	cfg, err := setupRealConfiguration()
 708 | 	if err != nil {
 709 | 		t.Fatalf("Failed to setup real configuration: %v", err)
 710 | 	}
 711 | 
 712 | 	// Setup real LLM client
 713 | 	llmClient, err := setupRealLLMClient(cfg)
 714 | 	if err != nil {
 715 | 		t.Fatalf("Failed to setup real LLM client: %v", err)
 716 | 	}
 717 | 
 718 | 	// Setup test agent with real AI and comprehensive mock infrastructure
 719 | 	agent, mockSuite, err := setupAgentWithRealAI(cfg, llmClient)
 720 | 	if err != nil {
 721 | 		t.Fatalf("Failed to setup test agent: %v", err)
 722 | 	}
 723 | 
 724 | 	// Load existing infrastructure state from sample file
 725 | 	t.Logf("📋 Loading existing infrastructure state from states/infrastructure-state-t01.json...")
 726 | 	existingState, err := loadInfrastructureStateFromFile("states/infrastructure-state-t01.json")
 727 | 	if err != nil {
 728 | 		// If state file doesn't exist or can't be loaded, use empty state
 729 | 		t.Fatalf("⚠️ Could not load existing state file (%v), using empty state for test", err)
 730 | 	} else {
 731 | 		t.Logf("✅ Successfully loaded existing state with %d resources", len(existingState.Resources))
 732 | 
 733 | 		// Log some of the existing resources to verify proper loading
 734 | 		resourceCount := 0
 735 | 		for resourceID, resource := range existingState.Resources {
 736 | 			if resourceCount < 3 { // Only log first 3 for brevity
 737 | 				t.Logf("📦 Existing resource: %s (type: %s, status: %s)", resourceID, resource.Type, resource.Status)
 738 | 			}
 739 | 			resourceCount++
 740 | 		}
 741 | 		if resourceCount > 3 {
 742 | 			t.Logf("📦 ... and %d more existing resources", resourceCount-3)
 743 | 		}
 744 | 
 745 | 		// Load the state into mock infrastructure and populate resource mappings
 746 | 		t.Logf("🔄 Loading state into mock infrastructure for dependency resolution...")
 747 | 		if err := mockSuite.LoadExistingState(existingState.Resources, agent); err != nil {
 748 | 			t.Fatalf("❌ Failed to load state into mock infrastructure: %v", err)
 749 | 		}
 750 | 		t.Logf("✅ State loaded into mock infrastructure with %d resource mappings", len(mockSuite.ResourceMappings))
 751 | 	}
 752 | 
 753 | 	// Create decision context using the loaded state - this is key for testing state handling
 754 | 	decisionContext := &DecisionContext{
 755 | 		Request:             comprehensivePrompt,
 756 | 		CurrentState:        existingState, // Pass the loaded state here
 757 | 		DiscoveredState:     []*types.ResourceState{},
 758 | 		Conflicts:           []*types.ConflictResolution{},
 759 | 		DeploymentOrder:     []string{},
 760 | 		ResourceCorrelation: make(map[string]*ResourceMatch),
 761 | 	}
 762 | 
 763 | 	t.Logf("🚀 Starting comprehensive EC2 with ALB test with real AI and existing state context...")
 764 | 
 765 | 	// Step 1: Test AI Decision Making with Existing State Context
 766 | 	t.Logf("📡 Step 1: Making real AI API call with existing state context for EC2+ALB infrastructure...")
 767 | 
 768 | 	ctx, cancel := context.WithTimeout(context.Background(), time.Minute*3)
 769 | 	defer cancel()
 770 | 
 771 | 	decisionID := "test-ec2-alb-decision-with-state"
 772 | 	decision, err := agent.generateDecisionWithPlan(ctx, decisionID, comprehensivePrompt, decisionContext)
 773 | 	if err != nil {
 774 | 		t.Fatalf("❌ Real AI API call failed: %v", err)
 775 | 	}
 776 | 
 777 | 	t.Logf("✅ Step 1 Complete: AI generated decision with %d execution steps (with state context)", len(decision.ExecutionPlan))
 778 | 
 779 | 	// Log decision summary for verification
 780 | 	t.Logf("📝 Decision Action: %s", decision.Action)
 781 | 	t.Logf("🧠 Decision Reasoning: %s", decision.Reasoning)
 782 | 	if decision.Resource != "" {
 783 | 		t.Logf("📦 Primary Resource: %s", decision.Resource)
 784 | 	}
 785 | 
 786 | 	// Step 2: Validate AI-Generated Plan Structure for EC2+ALB
 787 | 	t.Logf("🔍 Step 2: Validating AI-generated execution plan for EC2+ALB infrastructure...")
 788 | 	validateExecutionPlanStructureForEC2ALB(t, decision, existingState)
 789 | 	t.Logf("✅ Step 2 Complete: Execution plan structure validated for EC2+ALB")
 790 | 
 791 | 	// Step 3: Test State-Aware Planning Logic
 792 | 	t.Logf("🧠 Step 3: Testing AI state-aware planning logic...")
 793 | 	testStateAwarePlanningLogic(t, decision, existingState, comprehensivePrompt)
 794 | 	t.Logf("✅ Step 3 Complete: State-aware planning logic validated")
 795 | 
 796 | 	// Step 4: Execute Full Flow with Mock Infrastructure
 797 | 	t.Logf("⚙️ Step 4: Executing full EC2+ALB plan using mock functions...")
 798 | 	testExecuteFullPlanWithMocks(t, agent, mockSuite, decision)
 799 | 	t.Logf("✅ Step 4 Complete: Full plan execution completed successfully")
 800 | 
 801 | 	// Step 5: Validate Mock Integration
 802 | 	t.Logf("🔬 Step 5: Validating mock infrastructure integration...")
 803 | 	testValidateMockIntegration(t, mockSuite, decision)
 804 | 	t.Logf("✅ Step 5 Complete: Mock integration validated")
 805 | 
 806 | 	// Step 6: Test Idempotency and State Consistency
 807 | 	t.Logf("🔄 Step 6: Testing idempotency with existing state...")
 808 | 	testIdempotencyWithExistingState(t, agent, mockSuite, decisionContext, comprehensivePrompt)
 809 | 	t.Logf("✅ Step 6 Complete: Idempotency and state consistency validated")
 810 | 
 811 | 	t.Logf("🎉 All EC2+ALB with state handling tests completed successfully!")
 812 | }
 813 | 
 814 | // === Helper Function ===
 815 | 
 816 | // loadInfrastructureStateFromFile loads an existing infrastructure state from a JSON file
 817 | func loadInfrastructureStateFromFile(filePath string) (*types.InfrastructureState, error) {
 818 | 	dir, _ := os.Getwd()
 819 | 
 820 | 	// Navigate to project root by looking for go.mod file
 821 | 	for {
 822 | 		if _, err := os.Stat(filepath.Join(dir, "go.mod")); err == nil {
 823 | 			break
 824 | 		}
 825 | 		parent := filepath.Dir(dir)
 826 | 		if parent == dir {
 827 | 			// Reached root directory, use current dir
 828 | 			break
 829 | 		}
 830 | 		dir = parent
 831 | 	}
 832 | 
 833 | 	// Read state file
 834 | 	data, err := os.ReadFile(filepath.Join(dir, filePath))
 835 | 	if err != nil {
 836 | 		return nil, fmt.Errorf("failed to read state file %s: %w", filePath, err)
 837 | 	}
 838 | 
 839 | 	// Parse state
 840 | 	var state types.InfrastructureState
 841 | 	if err := json.Unmarshal(data, &state); err != nil {
 842 | 		return nil, fmt.Errorf("failed to parse state file %s: %w", filePath, err)
 843 | 	}
 844 | 
 845 | 	return &state, nil
 846 | }
 847 | 
 848 | // validateExecutionPlanStructureForEC2ALB validates the plan structure specifically for EC2+ALB resources
 849 | func validateExecutionPlanStructureForEC2ALB(t *testing.T, decision *types.AgentDecision, existingState *types.InfrastructureState) {
 850 | 	if len(decision.ExecutionPlan) == 0 {
 851 | 		t.Fatal("❌ AI generated empty execution plan")
 852 | 	}
 853 | 
 854 | 	// Validate basic plan structure
 855 | 	planValidActions := map[string]bool{
 856 | 		"create": true,
 857 | 		"query":  true,
 858 | 		// "update":   true,
 859 | 		// "delete":   true,
 860 | 		// "validate": true,
 861 | 	}
 862 | 
 863 | 	for _, planStep := range decision.ExecutionPlan {
 864 | 		if !planValidActions[planStep.Action] {
 865 | 			t.Fatalf("❌ Invalid plan action: %s", planStep.Action)
 866 | 		}
 867 | 	}
 868 | 
 869 | 	// Check for EC2+ALB specific components
 870 | 	foundComponents := make(map[string]bool)
 871 | 	expectedEC2ALBComponents := []string{"ec2", "security", "load", "balancer", "target", "group"}
 872 | 
 873 | 	for _, step := range decision.ExecutionPlan {
 874 | 		// Check basic step structure
 875 | 		if step.ID == "" {
 876 | 			t.Errorf("❌ Step missing ID: %+v", step)
 877 | 		}
 878 | 		if step.Name == "" {
 879 | 			t.Errorf("❌ Step missing Name: %+v", step)
 880 | 		}
 881 | 		if step.Action == "" {
 882 | 			t.Errorf("❌ Step missing Action: %+v", step)
 883 | 		}
 884 | 
 885 | 		// Check for expected EC2+ALB components
 886 | 		stepText := step.Name + " " + step.Description + " " + step.ResourceID
 887 | 		for _, component := range expectedEC2ALBComponents {
 888 | 			if strings.Contains(strings.ToLower(stepText), strings.ToLower(component)) {
 889 | 				foundComponents[component] = true
 890 | 			}
 891 | 		}
 892 | 
 893 | 		t.Logf("📋 Step: %s | Action: %s | Resource: %s", step.Name, step.Action, step.ResourceID)
 894 | 	}
 895 | 
 896 | 	// Verify we found key EC2+ALB components
 897 | 	missingComponents := []string{}
 898 | 	for _, component := range expectedEC2ALBComponents {
 899 | 		if !foundComponents[component] {
 900 | 			missingComponents = append(missingComponents, component)
 901 | 		}
 902 | 	}
 903 | 
 904 | 	if len(missingComponents) > 0 {
 905 | 		t.Logf("⚠️ Warning: Some expected EC2+ALB components not found in plan: %v", missingComponents)
 906 | 		t.Logf("📝 This may be acceptable if AI structured the plan differently")
 907 | 	}
 908 | 
 909 | 	// Log analysis of existing state impact
 910 | 	if len(existingState.Resources) > 0 {
 911 | 		t.Logf("🔍 Plan generated with %d existing resources in context", len(existingState.Resources))
 912 | 	} else {
 913 | 		t.Logf("🔍 Plan generated with empty state context")
 914 | 	}
 915 | }
 916 | 
 917 | // testStateAwarePlanningLogic validates that the AI properly considered existing state
 918 | func testStateAwarePlanningLogic(t *testing.T, decision *types.AgentDecision, existingState *types.InfrastructureState, prompt string) {
 919 | 	// Check if AI decision mentions handling existing resources
 920 | 	decisionText := decision.Reasoning + " " + decision.Action
 921 | 
 922 | 	if len(existingState.Resources) > 0 {
 923 | 		// AI should show awareness of existing infrastructure
 924 | 		hasStateAwareness := strings.Contains(strings.ToLower(decisionText), "existing") ||
 925 | 			strings.Contains(strings.ToLower(decisionText), "current") ||
 926 | 			strings.Contains(strings.ToLower(decisionText), "already") ||
 927 | 			strings.Contains(strings.ToLower(decisionText), "present")
 928 | 
 929 | 		if hasStateAwareness {
 930 | 			t.Logf("✅ AI demonstrated awareness of existing infrastructure state")
 931 | 		} else {
 932 | 			t.Logf("⚠️ AI may not have explicitly mentioned existing state (this could still be acceptable)")
 933 | 		}
 934 | 	}
 935 | 
 936 | 	// Check that the plan is reasonable given the prompt requirements
 937 | 	promptLower := strings.ToLower(prompt)
 938 | 	requiresEC2 := strings.Contains(promptLower, "ec2")
 939 | 	requiresALB := strings.Contains(promptLower, "load balancer") || strings.Contains(promptLower, "alb")
 940 | 
 941 | 	if requiresEC2 {
 942 | 		hasEC2Plan := false
 943 | 		for _, step := range decision.ExecutionPlan {
 944 | 			stepText := strings.ToLower(step.Name + " " + step.Description)
 945 | 			if strings.Contains(stepText, "ec2") || strings.Contains(stepText, "instance") {
 946 | 				hasEC2Plan = true
 947 | 				break
 948 | 			}
 949 | 		}
 950 | 		if hasEC2Plan {
 951 | 			t.Logf("✅ Plan includes EC2 components as required")
 952 | 		} else {
 953 | 			t.Logf("⚠️ Plan may not include explicit EC2 components")
 954 | 		}
 955 | 	}
 956 | 
 957 | 	if requiresALB {
 958 | 		hasALBPlan := false
 959 | 		for _, step := range decision.ExecutionPlan {
 960 | 			stepText := strings.ToLower(step.Name + " " + step.Description)
 961 | 			if strings.Contains(stepText, "load") || strings.Contains(stepText, "balancer") || strings.Contains(stepText, "alb") {
 962 | 				hasALBPlan = true
 963 | 				break
 964 | 			}
 965 | 		}
 966 | 		if hasALBPlan {
 967 | 			t.Logf("✅ Plan includes ALB components as required")
 968 | 		} else {
 969 | 			t.Logf("⚠️ Plan may not include explicit ALB components")
 970 | 		}
 971 | 	}
 972 | }
 973 | 
 974 | // testIdempotencyWithExistingState tests that the AI handles idempotency correctly
 975 | func testIdempotencyWithExistingState(t *testing.T, agent *StateAwareAgent, mockSuite *mocks.MockTestSuite,
 976 | 	decisionContext *DecisionContext, prompt string) {
 977 | 
 978 | 	t.Logf("🔄 Testing idempotency by running the same request again...")
 979 | 
 980 | 	// Execute the same request again to test idempotency
 981 | 	ctx, cancel := context.WithTimeout(context.Background(), time.Minute*2)
 982 | 	defer cancel()
 983 | 
 984 | 	secondDecisionID := "test-idempotency-decision"
 985 | 	secondDecision, err := agent.generateDecisionWithPlan(ctx, secondDecisionID, prompt, decisionContext)
 986 | 	if err != nil {
 987 | 		t.Errorf("❌ Second AI API call for idempotency test failed: %v", err)
 988 | 		return
 989 | 	}
 990 | 
 991 | 	// Compare decisions to check for consistency
 992 | 	t.Logf("🔍 Comparing decisions for consistency...")
 993 | 	t.Logf("📊 First decision had %d steps", len(decisionContext.CurrentState.Resources))
 994 | 	t.Logf("📊 Second decision has %d steps", len(secondDecision.ExecutionPlan))
 995 | 
 996 | 	// The AI should potentially recognize that resources may already exist
 997 | 	// or provide a plan that handles the existing state appropriately
 998 | 	if len(secondDecision.ExecutionPlan) == 0 {
 999 | 		t.Logf("✅ AI recognized no additional changes needed (perfect idempotency)")
1000 | 	} else {
1001 | 		t.Logf("📝 AI generated %d steps for the repeat request", len(secondDecision.ExecutionPlan))
1002 | 		t.Logf("📝 This may indicate the AI is planning to create/update resources appropriately")
1003 | 	}
1004 | 
1005 | 	// Log the reasoning for the second decision
1006 | 	if secondDecision.Reasoning != "" {
1007 | 		t.Logf("🧠 AI reasoning for repeat request: %s", secondDecision.Reasoning)
1008 | 	}
1009 | }
1010 | 
1011 | // testInfrastructureRealityCheck performs reality checks that simulate issues seen in actual AWS deployments
1012 | func testInfrastructureRealityCheck(t *testing.T, agent *StateAwareAgent, mockSuite *mocks.MockTestSuite, decision *types.AgentDecision) {
1013 | 	t.Logf("🏗️ Running infrastructure reality checks...")
1014 | 
1015 | 	// Reality Check 1: VPC CIDR Block Validation
1016 | 	t.Logf("🔍 Reality Check 1: VPC CIDR validation...")
1017 | 	for _, step := range decision.ExecutionPlan {
1018 | 		if step.Action == "create" && strings.Contains(strings.ToLower(step.Name), "vpc") {
1019 | 			if cidr, exists := step.Parameters["cidrBlock"]; exists {
1020 | 				if cidrStr, ok := cidr.(string); ok {
1021 | 					if !isValidCIDR(cidrStr) {
1022 | 						t.Errorf("❌ Invalid CIDR block in step %s: %s", step.ID, cidrStr)
1023 | 					}
1024 | 				}
1025 | 			}
1026 | 		}
1027 | 	}
1028 | 
1029 | 	// Reality Check 2: Subnet CIDR Overlap Detection
1030 | 	t.Logf("🔍 Reality Check 2: Subnet CIDR overlap detection...")
1031 | 	subnetCIDRs := make(map[string]string)
1032 | 	for _, step := range decision.ExecutionPlan {
1033 | 		if step.Action == "create" && strings.Contains(strings.ToLower(step.Name), "subnet") {
1034 | 			if cidr, exists := step.Parameters["cidrBlock"]; exists {
1035 | 				if cidrStr, ok := cidr.(string); ok {
1036 | 					if existingStep, exists := subnetCIDRs[cidrStr]; exists {
1037 | 						t.Errorf("❌ CIDR overlap detected: Step %s and %s both use %s", step.ID, existingStep, cidrStr)
1038 | 					}
1039 | 					subnetCIDRs[cidrStr] = step.ID
1040 | 				}
1041 | 			}
1042 | 		}
1043 | 	}
1044 | 
1045 | 	// Reality Check 3: Availability Zone Distribution
1046 | 	t.Logf("🔍 Reality Check 3: Availability zone distribution...")
1047 | 	azUsage := make(map[string]int)
1048 | 	for _, step := range decision.ExecutionPlan {
1049 | 		if step.Action == "create" && strings.Contains(strings.ToLower(step.Name), "subnet") {
1050 | 			if az, exists := step.Parameters["availabilityZone"]; exists {
1051 | 				if azStr, ok := az.(string); ok {
1052 | 					azUsage[azStr]++
1053 | 				}
1054 | 			}
1055 | 		}
1056 | 	}
1057 | 	if len(azUsage) < 2 {
1058 | 		t.Logf("⚠️ Warning: Infrastructure should use multiple AZs for high availability")
1059 | 	}
1060 | 
1061 | 	// Reality Check 4: Security Group Rule Validation
1062 | 	t.Logf("🔍 Reality Check 4: Security group rule validation...")
1063 | 	for _, step := range decision.ExecutionPlan {
1064 | 		if step.Action == "create" && strings.Contains(strings.ToLower(step.Name), "security") {
1065 | 			if cidrIp, exists := step.Parameters["cidrIp"]; exists {
1066 | 				if cidrIp == "0.0.0.0/0" {
1067 | 					t.Logf("⚠️ Security Warning: Step %s allows access from anywhere (0.0.0.0/0)", step.ID)
1068 | 				}
1069 | 			}
1070 | 		}
1071 | 	}
1072 | 
1073 | 	// Reality Check 5: Resource Naming Consistency
1074 | 	t.Logf("🔍 Reality Check 5: Resource naming consistency...")
1075 | 	namePatterns := make(map[string]int)
1076 | 	for _, step := range decision.ExecutionPlan {
1077 | 		if tags, exists := step.Parameters["tags"]; exists {
1078 | 			if tagMap, ok := tags.(map[string]interface{}); ok {
1079 | 				if name, exists := tagMap["Name"]; exists {
1080 | 					if nameStr, ok := name.(string); ok {
1081 | 						// Extract naming pattern
1082 | 						parts := strings.Split(nameStr, "-")
1083 | 						if len(parts) > 1 {
1084 | 							pattern := parts[0] // e.g., "production" from "production-vpc"
1085 | 							namePatterns[pattern]++
1086 | 						}
1087 | 					}
1088 | 				}
1089 | 			}
1090 | 		}
1091 | 	}
1092 | 
1093 | 	if len(namePatterns) > 1 {
1094 | 		t.Logf("⚠️ Warning: Multiple naming patterns detected: %v", namePatterns)
1095 | 	}
1096 | 
1097 | 	t.Logf("✅ Infrastructure reality checks completed")
1098 | }
1099 | 
1100 | // isValidCIDR performs basic CIDR validation
1101 | func isValidCIDR(cidr string) bool {
1102 | 	// Basic validation - in real implementation would use net.ParseCIDR
1103 | 	if !strings.Contains(cidr, "/") {
1104 | 		return false
1105 | 	}
1106 | 	parts := strings.Split(cidr, "/")
1107 | 	if len(parts) != 2 {
1108 | 		return false
1109 | 	}
1110 | 
1111 | 	// Check for common valid patterns
1112 | 	validPatterns := []string{
1113 | 		"10.", "172.", "192.168.", "0.0.0.0"} // Private IP ranges + default route
1114 | 
1115 | 	for _, pattern := range validPatterns {
1116 | 		if strings.HasPrefix(parts[0], pattern) {
1117 | 			return true
1118 | 		}
1119 | 	}
1120 | 
1121 | 	return false
1122 | }
1123 | 
1124 | // testWebUIFlowSimulation simulates the exact flow that would happen in the web UI
1125 | func testWebUIFlowSimulation(t *testing.T, agent *StateAwareAgent, mockSuite *mocks.MockTestSuite, decision *types.AgentDecision) {
1126 | 	t.Logf("🌐 Running Web UI flow simulation...")
1127 | 
1128 | 	// Simulate Web UI Step 1: Process Request (already done in main test)
1129 | 	t.Logf("✅ Step 1: Process Request - Already completed")
1130 | 
1131 | 	// Simulate Web UI Step 2: Plan Validation (user reviews plan)
1132 | 	t.Logf("🔍 Step 2: Simulating plan review and validation...")
1133 | 
1134 | 	// Check if plan has reasonable number of steps (not too many, not too few)
1135 | 	if len(decision.ExecutionPlan) < 5 {
1136 | 		t.Logf("⚠️ Warning: Plan has very few steps (%d) - might be incomplete", len(decision.ExecutionPlan))
1137 | 	}
1138 | 	if len(decision.ExecutionPlan) > 50 {
1139 | 		t.Logf("⚠️ Warning: Plan has many steps (%d) - might be overly complex", len(decision.ExecutionPlan))
1140 | 	}
1141 | 
1142 | 	// Simulate Web UI Step 3: Execution with progress updates
1143 | 	t.Logf("⚙️ Step 3: Simulating execution with WebSocket progress updates...")
1144 | 
1145 | 	// Create a channel to simulate WebSocket updates
1146 | 	progressChan := make(chan *types.ExecutionUpdate, 100)
1147 | 	defer close(progressChan)
1148 | 
1149 | 	// Start a goroutine to consume progress updates (like WebSocket would)
1150 | 	go func() {
1151 | 		updateCount := 0
1152 | 		for update := range progressChan {
1153 | 			updateCount++
1154 | 			if updateCount <= 5 { // Log first few updates to avoid spam
1155 | 				t.Logf("📡 Progress Update %d: %s - %s", updateCount, update.Type, update.Message)
1156 | 			}
1157 | 		}
1158 | 		t.Logf("📡 Total progress updates received: %d", updateCount)
1159 | 	}()
1160 | 
1161 | 	// Simulate execution with progress reporting
1162 | 	ctx := context.Background()
1163 | 	execution, err := agent.ExecuteConfirmedPlanWithDryRun(ctx, decision, progressChan, true) // dry run
1164 | 	if err != nil {
1165 | 		t.Errorf("❌ Simulated execution failed: %v", err)
1166 | 		return
1167 | 	}
1168 | 
1169 | 	if execution.Status != "completed" {
1170 | 		t.Errorf("❌ Execution did not complete successfully: %s", execution.Status)
1171 | 	}
1172 | 
1173 | 	// Simulate Web UI Step 4: Post-execution state verification
1174 | 	t.Logf("🔍 Step 4: Simulating post-execution state verification...")
1175 | 
1176 | 	// This would be called by the web UI to refresh the dashboard
1177 | 	ctx2 := context.Background()
1178 | 	_, err = mockSuite.MCPServer.CallTool(ctx2, "analyze-infrastructure-state", map[string]interface{}{
1179 | 		"include_drift_detection": true,
1180 | 		"detailed_analysis":       true,
1181 | 	})
1182 | 	if err != nil {
1183 | 		t.Errorf("❌ Post-execution state analysis failed: %v", err)
1184 | 	}
1185 | 
1186 | 	t.Logf("✅ Web UI flow simulation completed successfully")
1187 | }
1188 | 
1189 | func testRealAIWithComprehensiveThreeLayerPrompt(t *testing.T) {
1190 | 	// Comprehensive Three-Tier infrastructure prompt
1191 | 	comprehensivePrompt := comprehensiveThreeLayerPrompt()
1192 | 
1193 | 	// Setup test configuration
1194 | 	cfg, err := setupRealConfiguration()
1195 | 	if err != nil {
1196 | 		t.Fatalf("Failed to setup real configuration: %v", err)
1197 | 	}
1198 | 
1199 | 	// Setup real LLM client
1200 | 	llmClient, err := setupRealLLMClient(cfg)
1201 | 	if err != nil {
1202 | 		t.Fatalf("Failed to setup real LLM client: %v", err)
1203 | 	}
1204 | 
1205 | 	// Setup test agent with real AI and comprehensive mock infrastructure
1206 | 	agent, mockSuite, err := setupAgentWithRealAI(cfg, llmClient)
1207 | 	if err != nil {
1208 | 		t.Fatalf("Failed to setup test agent: %v", err)
1209 | 	}
1210 | 	// defer mockSuite.Reset()
1211 | 
1212 | 	// Create decision context using mock state manager
1213 | 	emptyState := &types.InfrastructureState{
1214 | 		Resources: make(map[string]*types.ResourceState),
1215 | 	}
1216 | 
1217 | 	decisionContext := &DecisionContext{
1218 | 		Request:             comprehensivePrompt,
1219 | 		CurrentState:        emptyState,
1220 | 		DiscoveredState:     []*types.ResourceState{},
1221 | 		Conflicts:           []*types.ConflictResolution{},
1222 | 		DeploymentOrder:     []string{},
1223 | 		ResourceCorrelation: make(map[string]*ResourceMatch),
1224 | 	}
1225 | 
1226 | 	t.Logf("🚀 Starting comprehensive three-tier execution pipeline test with real AI integration and mock infrastructure...")
1227 | 
1228 | 	// Step 1: Test AI Decision Making
1229 | 	t.Logf("📡 Step 1: Making real AI API call to process comprehensive three-tier infrastructure request...")
1230 | 
1231 | 	ctx, cancel := context.WithTimeout(context.Background(), time.Minute*5) // Extended timeout for complex infrastructure
1232 | 	defer cancel()
1233 | 
1234 | 	decisionID := "test-comprehensive-three-tier-decision"
1235 | 	decision, err := agent.generateDecisionWithPlan(ctx, decisionID, comprehensivePrompt, decisionContext)
1236 | 	if err != nil {
1237 | 		t.Fatalf("❌ Real AI API call failed: %v", err)
1238 | 	}
1239 | 
1240 | 	t.Logf("✅ Step 1 Complete: AI generated decision with %d execution steps", len(decision.ExecutionPlan))
1241 | 
1242 | 	// Step 2: Validate AI-Generated Plan Structure
1243 | 	t.Logf("🔍 Step 2: Validating AI-generated execution plan structure...")
1244 | 	validateExecutionPlanStructure(t, agent, decision)
1245 | 	t.Logf("✅ Step 2 Complete: Execution plan structure is valid")
1246 | 
1247 | 	// Step 3: Execute Full Flow with Mock Infrastructure
1248 | 	t.Logf("⚙️ Step 3: Executing full infrastructure plan using mock functions...")
1249 | 	testExecuteFullPlanWithMocks(t, agent, mockSuite, decision)
1250 | 	t.Logf("✅ Step 3 Complete: Full plan execution completed successfully")
1251 | 
1252 | 	// Step 4: Validate Mock Integration
1253 | 	t.Logf("🔬 Step 4: Validating mock infrastructure integration...")
1254 | 	testValidateMockIntegration(t, mockSuite, decision)
1255 | 	t.Logf("✅ Step 4 Complete: Mock integration validated")
1256 | 
1257 | 	t.Logf("🎉 All tests completed successfully! Three-tier AI + Mock infrastructure integration validated.")
1258 | }
1259 | 
1260 | func validateExecutionPlanStructure(t *testing.T, agent *StateAwareAgent, decision *types.AgentDecision) {
1261 | 	if len(decision.ExecutionPlan) == 0 {
1262 | 		t.Fatal("❌ AI generated empty execution plan")
1263 | 	}
1264 | 
1265 | 	planValidActions := map[string]bool{
1266 | 		"create": true,
1267 | 		"query":  true,
1268 | 		// "update":   true,
1269 | 		// "delete":   true,
1270 | 		// "validate": true,
1271 | 	}
1272 | 
1273 | 	// Get available MCP tools for validation
1274 | 	agent.capabilityMutex.RLock()
1275 | 	availableTools := make(map[string]bool)
1276 | 	for toolName := range agent.mcpTools {
1277 | 		availableTools[toolName] = true
1278 | 	}
1279 | 	agent.capabilityMutex.RUnlock()
1280 | 
1281 | 	// Validate each plan step
1282 | 	for i, planStep := range decision.ExecutionPlan {
1283 | 		// Validate action type
1284 | 		if !planValidActions[planStep.Action] {
1285 | 			t.Fatalf("❌ Invalid plan action '%s' in step %d (%s)", planStep.Action, i+1, planStep.ID)
1286 | 		}
1287 | 
1288 | 		// Validate MCP tool exists if specified
1289 | 		if planStep.MCPTool != "" {
1290 | 			if !availableTools[planStep.MCPTool] {
1291 | 				availableToolsList := make([]string, 0, len(availableTools))
1292 | 				for tool := range availableTools {
1293 | 					availableToolsList = append(availableToolsList, tool)
1294 | 				}
1295 | 
1296 | 				t.Fatalf("❌ Invalid MCP tool '%s' in step %d (%s): tool not found in discovered capabilities. Available tools: %v",
1297 | 					planStep.MCPTool, i+1, planStep.ID, availableToolsList)
1298 | 			}
1299 | 		}
1300 | 	}
1301 | 
1302 | 	// Validate plan has expected infrastructure components
1303 | 	foundComponents := make(map[string]bool)
1304 | 	expectedComponents := []string{"vpc", "subnet", "gateway", "route", "security"}
1305 | 
1306 | 	for _, step := range decision.ExecutionPlan {
1307 | 		// Check basic step structure
1308 | 		if step.ID == "" {
1309 | 			t.Errorf("❌ Step missing ID: %+v", step)
1310 | 		}
1311 | 		if step.Name == "" {
1312 | 			t.Errorf("❌ Step missing Name: %+v", step)
1313 | 		}
1314 | 		if step.Action == "" {
1315 | 			t.Errorf("❌ Step missing Action: %+v", step)
1316 | 		}
1317 | 
1318 | 		// Check for expected infrastructure components
1319 | 		stepText := step.Name + " " + step.Description + " " + step.ResourceID
1320 | 		for _, component := range expectedComponents {
1321 | 			if strings.Contains(strings.ToLower(stepText), strings.ToLower(component)) {
1322 | 				foundComponents[component] = true
1323 | 			}
1324 | 		}
1325 | 
1326 | 		t.Logf("📋 Step: %s | Action: %s | Resource: %s", step.Name, step.Action, step.ResourceID)
1327 | 	}
1328 | 
1329 | 	// Verify we found key infrastructure components
1330 | 	missingComponents := []string{}
1331 | 	for _, component := range expectedComponents {
1332 | 		if !foundComponents[component] {
1333 | 			missingComponents = append(missingComponents, component)
1334 | 		}
1335 | 	}
1336 | 
1337 | 	if len(missingComponents) > 0 {
1338 | 		t.Logf("⚠️ Warning: Some expected components not found in plan: %v", missingComponents)
1339 | 		t.Logf("📝 This may be okay if AI structured the plan differently")
1340 | 	}
1341 | }
1342 | 
1343 | // testExecuteFullPlanWithMocks executes the AI-generated plan using mock infrastructure
1344 | // This simulates the same flow as ExecuteConfirmedPlanWithDryRun but with mock tools
1345 | func testExecuteFullPlanWithMocks(t *testing.T, agent *StateAwareAgent, mockSuite *mocks.MockTestSuite, decision *types.AgentDecision) {
1346 | 	t.Logf("🚀 Executing %d plan steps with mock infrastructure...", len(decision.ExecutionPlan))
1347 | 
1348 | 	// Create mock execution tracking like the real ExecuteConfirmedPlanWithDryRun
1349 | 	execution := &types.PlanExecution{
1350 | 		ID:        "mock-execution-" + decision.ID,
1351 | 		Name:      fmt.Sprintf("Execute %s", decision.Action),
1352 | 		Status:    "running",
1353 | 		StartedAt: time.Now(),
1354 | 		Steps:     []*types.ExecutionStep{},
1355 | 		Changes:   []*types.ChangeDetection{},
1356 | 		Errors:    []string{},
1357 | 	}
1358 | 
1359 | 	t.Logf("📊 Created execution plan: ID=%s, Status=%s", execution.ID, execution.Status)
1360 | 
1361 | 	// Execute each step like the real executeExecutionStep function
1362 | 	for i, planStep := range decision.ExecutionPlan {
1363 | 		t.Logf("⚙️ Step %d/%d: Executing %s action on %s", i+1, len(decision.ExecutionPlan), planStep.Action, planStep.ResourceID)
1364 | 
1365 | 		startTime := time.Now()
1366 | 
1367 | 		// Create execution step tracking (mirroring real executeExecutionStep)
1368 | 		executionStep := &types.ExecutionStep{
1369 | 			ID:        planStep.ID,
1370 | 			Name:      planStep.Name,
1371 | 			Status:    "running",
1372 | 			Resource:  planStep.ResourceID,
1373 | 			Action:    planStep.Action,
1374 | 			StartedAt: &startTime,
1375 | 		}
1376 | 
1377 | 		// Execute step using mock infrastructure (mirroring the real action switch)
1378 | 		var result map[string]interface{}
1379 | 		var err error
1380 | 
1381 | 		switch planStep.Action {
1382 | 		case "create":
1383 | 			result, err = agent.executeCreateAction(planStep, nil, execution.ID)
1384 | 		case "update":
1385 | 			result, err = testExecuteUpdateActionWithMocks(t, mockSuite, planStep)
1386 | 		case "delete":
1387 | 			result, err = testExecuteDeleteActionWithMocks(t, mockSuite, planStep)
1388 | 		case "validate":
1389 | 			result, err = testExecuteValidateActionWithMocks(t, mockSuite, planStep)
1390 | 		case "query":
1391 | 			result, err = agent.executeQueryAction(planStep, nil, execution.ID)
1392 | 		default:
1393 | 			err = fmt.Errorf("unknown action type: %s", planStep.Action)
1394 | 		}
1395 | 
1396 | 		// Complete step tracking (mirroring real execution)
1397 | 		endTime := time.Now()
1398 | 		executionStep.CompletedAt = &endTime
1399 | 		executionStep.Duration = endTime.Sub(startTime)
1400 | 
1401 | 		if err != nil {
1402 | 			executionStep.Status = "failed"
1403 | 			executionStep.Error = err.Error()
1404 | 			execution.Errors = append(execution.Errors, err.Error())
1405 | 
1406 | 			// Check if this is a mock validation error that we can tolerate
1407 | 			if strings.Contains(err.Error(), "invalid subnet ID format") ||
1408 | 				strings.Contains(err.Error(), "validation error for parameter") ||
1409 | 				strings.Contains(err.Error(), "mock MCP tool call failed") {
1410 | 				t.Logf("⚠️ Step %d failed with mock validation error (expected): %v", i+1, err)
1411 | 			} else {
1412 | 				t.Errorf("❌ Step %d failed: %v", i+1, err)
1413 | 			}
1414 | 		} else {
1415 | 			executionStep.Status = "completed"
1416 | 			executionStep.Output = result
1417 | 			t.Logf("✅ Step %d completed successfully in %v", i+1, executionStep.Duration)
1418 | 		}
1419 | 
1420 | 		execution.Steps = append(execution.Steps, executionStep)
1421 | 	}
1422 | 
1423 | 	// Complete execution tracking
1424 | 	// completedAt := time.Now()
1425 | 	// execution.CompletedAt = &completedAt
1426 | 
1427 | 	// Count serious errors (non-mock validation errors)
1428 | 	seriousErrorCount := 0
1429 | 	mockValidationErrorCount := 0
1430 | 
1431 | 	for _, errMsg := range execution.Errors {
1432 | 		if strings.Contains(errMsg, "invalid subnet ID format") ||
1433 | 			strings.Contains(errMsg, "validation error for parameter") ||
1434 | 			strings.Contains(errMsg, "mock MCP tool call failed") {
1435 | 			mockValidationErrorCount++
1436 | 		} else {
1437 | 			seriousErrorCount++
1438 | 		}
1439 | 	}
1440 | 
1441 | 	if seriousErrorCount > 0 {
1442 | 		execution.Status = "failed"
1443 | 		t.Fatalf("❌ Execution completed with %d serious errors", seriousErrorCount)
1444 | 	} else {
1445 | 		execution.Status = "completed"
1446 | 		if mockValidationErrorCount > 0 {
1447 | 			t.Logf("✅ Execution completed successfully with %d steps (%d mock validation errors tolerated)", len(execution.Steps), mockValidationErrorCount)
1448 | 		} else {
1449 | 			t.Logf("✅ Execution completed successfully with %d steps", len(execution.Steps))
1450 | 		}
1451 | 	}
1452 | }
1453 | 
1454 | // testExecuteUpdateActionWithMocks simulates update operations
1455 | func testExecuteUpdateActionWithMocks(t *testing.T, mockSuite *mocks.MockTestSuite, planStep *types.ExecutionPlanStep) (map[string]interface{}, error) {
1456 | 	t.Logf("🔄 Updating %s resource: %s", planStep.ResourceID, planStep.Name)
1457 | 
1458 | 	// Mock update via state management
1459 | 	testResource := &types.ResourceState{
1460 | 		ID:         "mock-" + planStep.ResourceID,
1461 | 		Type:       planStep.ResourceID,
1462 | 		Status:     "updated",
1463 | 		Properties: planStep.Parameters,
1464 | 	}
1465 | 
1466 | 	mockSuite.StateManager.AddResource(testResource)
1467 | 
1468 | 	return map[string]interface{}{
1469 | 		"action":      "update",
1470 | 		"resource_id": testResource.ID,
1471 | 		"status":      "completed",
1472 | 	}, nil
1473 | }
1474 | 
1475 | // testExecuteDeleteActionWithMocks simulates delete operations
1476 | func testExecuteDeleteActionWithMocks(t *testing.T, mockSuite *mocks.MockTestSuite, planStep *types.ExecutionPlanStep) (map[string]interface{}, error) {
1477 | 	t.Logf("🗑️ Deleting %s resource: %s", planStep.ResourceID, planStep.Name)
1478 | 
1479 | 	return map[string]interface{}{
1480 | 		"action":      "delete",
1481 | 		"resource_id": "mock-" + planStep.ResourceID,
1482 | 		"status":      "completed",
1483 | 	}, nil
1484 | }
1485 | 
1486 | // testExecuteValidateActionWithMocks simulates validation operations
1487 | func testExecuteValidateActionWithMocks(t *testing.T, mockSuite *mocks.MockTestSuite, planStep *types.ExecutionPlanStep) (map[string]interface{}, error) {
1488 | 	t.Logf("✅ Validating %s resource: %s", planStep.ResourceID, planStep.Name)
1489 | 
1490 | 	return map[string]interface{}{
1491 | 		"action":            "validate",
1492 | 		"resource_id":       "mock-" + planStep.ResourceID,
1493 | 		"validation_result": "passed",
1494 | 	}, nil
1495 | }
1496 | 
1497 | // testValidateMockIntegration validates that mock infrastructure components are working correctly
1498 | func testValidateMockIntegration(t *testing.T, mockSuite *mocks.MockTestSuite, decision *types.AgentDecision) {
1499 | 	t.Logf("🔍 Validating mock infrastructure integration...")
1500 | 
1501 | 	// Test 1: Mock MCP Server Integration
1502 | 	t.Logf("📡 Testing Mock MCP Server...")
1503 | 	ctx := context.Background()
1504 | 	testResult, err := mockSuite.MCPServer.CallTool(ctx, "describe_vpcs", map[string]interface{}{})
1505 | 	if err != nil {
1506 | 		t.Errorf("❌ Mock MCP Server failed: %v", err)
1507 | 	} else {
1508 | 		t.Logf("✅ Mock MCP Server working: %v", testResult != nil)
1509 | 	}
1510 | 
1511 | 	// Test 2: Mock State Manager Integration
1512 | 	t.Logf("💾 Testing Mock State Manager...")
1513 | 	testResource := &types.ResourceState{
1514 | 		ID:     "test-validation-resource",
1515 | 		Type:   "vpc",
1516 | 		Status: "active",
1517 | 		Properties: map[string]interface{}{
1518 | 			"cidr": "10.0.0.0/16",
1519 | 		},
1520 | 	}
1521 | 	mockSuite.StateManager.AddResource(testResource)
1522 | 
1523 | 	// Verify resource was added
1524 | 	resources := mockSuite.StateManager.GetResources()
1525 | 	found := false
1526 | 	for _, resource := range resources {
1527 | 		if resource.ID == "test-validation-resource" {
1528 | 			found = true
1529 | 			break
1530 | 		}
1531 | 	}
1532 | 
1533 | 	if !found {
1534 | 		t.Error("❌ Mock State Manager failed to store resource")
1535 | 	} else {
1536 | 		t.Logf("✅ Mock State Manager working: stored %d resources", len(resources))
1537 | 	}
1538 | 
1539 | 	// Test 3: Mock AWS Client Integration
1540 | 	t.Logf("☁️ Testing Mock AWS Client...")
1541 | 	mockSuite.AWSClient.AddDefaultTestData()
1542 | 	// Just verify it doesn't panic - AWS client functionality is tested in its own unit tests
1543 | 	t.Logf("✅ Mock AWS Client working")
1544 | 
1545 | 	// Note: Retrieval registry tests removed - retrieval functions are deprecated
1546 | 	// All resource queries now use MCP tools with "query" action
1547 | 
1548 | 	t.Logf("✅ All mock integration tests passed!")
1549 | }
1550 | 
1551 | // testEnhancedPreExecutionValidation performs comprehensive validation before execution
1552 | func testEnhancedPreExecutionValidation(t *testing.T, agent *StateAwareAgent, mockSuite *mocks.MockTestSuite, decision *types.AgentDecision) {
1553 | 	t.Logf("🔍 Running enhanced pre-execution validation...")
1554 | 
1555 | 	// Test 1: Validate Resource ID Uniqueness in Plan
1556 | 	t.Logf("🔍 Test 1: Validating resource ID uniqueness...")
1557 | 	resourceIDs := make(map[string]bool)
1558 | 	for _, step := range decision.ExecutionPlan {
1559 | 		if step.ResourceID == "" {
1560 | 			t.Errorf("❌ Step %s has empty ResourceID", step.ID)
1561 | 			continue
1562 | 		}
1563 | 		if resourceIDs[step.ResourceID] {
1564 | 			t.Logf("⚠️ Warning: Duplicate ResourceID '%s' found in plan - this could cause state conflicts", step.ResourceID)
1565 | 		}
1566 | 		resourceIDs[step.ResourceID] = true
1567 | 	}
1568 | 	t.Logf("✅ Resource ID uniqueness check completed")
1569 | 
1570 | 	// Test 2: Validate Dependency Resolution Logic
1571 | 	t.Logf("🔍 Test 2: Validating dependency resolution...")
1572 | 	for _, step := range decision.ExecutionPlan {
1573 | 		// Check if step has dependency references
1574 | 		if step.Parameters != nil {
1575 | 			validateDependencyReferences(t, step, decision.ExecutionPlan)
1576 | 		}
1577 | 	}
1578 | 	t.Logf("✅ Dependency resolution validation completed")
1579 | 
1580 | 	// Test 3: Validate Parameter Completeness
1581 | 	t.Logf("🔍 Test 3: Validating parameter completeness...")
1582 | 	for _, step := range decision.ExecutionPlan {
1583 | 		validateParameterCompleteness(t, step)
1584 | 	}
1585 | 	t.Logf("✅ Parameter completeness validation completed")
1586 | 
1587 | 	// Test 4: Validate Tool Availability
1588 | 	t.Logf("🔍 Test 4: Validating tool availability...")
1589 | 	for _, step := range decision.ExecutionPlan {
1590 | 		if step.Action == "create" && step.MCPTool != "" {
1591 | 			// Simulate checking if tool exists in mock MCP server
1592 | 			ctx := context.Background()
1593 | 			_, err := mockSuite.MCPServer.CallTool(ctx, step.MCPTool, map[string]interface{}{})
1594 | 			if err != nil && !strings.Contains(err.Error(), "validation") {
1595 | 				t.Errorf("❌ Tool '%s' not available in MCP server: %v", step.MCPTool, err)
1596 | 			}
1597 | 		}
1598 | 	}
1599 | 	t.Logf("✅ Tool availability validation completed")
1600 | }
1601 | 
1602 | // testEnhancedPostExecutionValidation performs comprehensive validation after execution
1603 | func testEnhancedPostExecutionValidation(t *testing.T, agent *StateAwareAgent, mockSuite *mocks.MockTestSuite, decision *types.AgentDecision) {
1604 | 	t.Logf("🔍 Running enhanced post-execution validation...")
1605 | 
1606 | 	// Test 1: Validate State Consistency
1607 | 	t.Logf("🔍 Test 1: Validating state consistency...")
1608 | 	resources := mockSuite.StateManager.GetResources()
1609 | 
1610 | 	// Create a map for quick lookup
1611 | 	resourceMap := make(map[string]*types.ResourceState)
1612 | 	for _, resource := range resources {
1613 | 		resourceMap[resource.ID] = resource
1614 | 	}
1615 | 
1616 | 	// Check if all created resources are in state
1617 | 	expectedResources := 0
1618 | 	for _, step := range decision.ExecutionPlan {
1619 | 		if step.Action == "create" {
1620 | 			expectedResources++
1621 | 		}
1622 | 	}
1623 | 
1624 | 	if len(resources) == 0 {
1625 | 		t.Errorf("❌ No resources found in state after execution")
1626 | 	}
1627 | 	t.Logf("✅ Found %d resources in state (expected approximately %d)", len(resources), expectedResources)
1628 | 
1629 | 	// Test 2: Validate Resource Dependencies in State
1630 | 	t.Logf("🔍 Test 2: Validating resource dependencies in state...")
1631 | 	for _, step := range decision.ExecutionPlan {
1632 | 		if len(step.DependsOn) > 0 {
1633 | 			// Verify dependencies exist in state
1634 | 			for _, depID := range step.DependsOn {
1635 | 				found := false
1636 | 				for _, resource := range resources {
1637 | 					if resource.ID == depID || strings.Contains(resource.ID, depID) {
1638 | 						found = true
1639 | 						break
1640 | 					}
1641 | 				}
1642 | 				if !found {
1643 | 					t.Logf("⚠️ Warning: Dependency '%s' for step '%s' not found in final state", depID, step.ID)
1644 | 				}
1645 | 			}
1646 | 		}
1647 | 	}
1648 | 	t.Logf("✅ Resource dependency validation completed")
1649 | 
1650 | 	// Test 3: Validate Resource Properties
1651 | 	t.Logf("🔍 Test 3: Validating resource properties...")
1652 | 	for _, resource := range resources {
1653 | 		if resource.Type == "" {
1654 | 			t.Errorf("❌ Resource %s has empty type", resource.ID)
1655 | 		}
1656 | 		if resource.Status == "" {
1657 | 			t.Errorf("❌ Resource %s has empty status", resource.ID)
1658 | 		}
1659 | 		if resource.Properties == nil {
1660 | 			t.Logf("⚠️ Warning: Resource %s has nil properties", resource.ID)
1661 | 		}
1662 | 	}
1663 | 	t.Logf("✅ Resource properties validation completed")
1664 | 
1665 | 	// Test 4: Simulate Web UI State Retrieval
1666 | 	t.Logf("🔍 Test 4: Simulating web UI state retrieval...")
1667 | 	ctx := context.Background()
1668 | 	_, err := mockSuite.MCPServer.CallTool(ctx, "analyze-infrastructure-state", map[string]interface{}{
1669 | 		"include_drift_detection": true,
1670 | 		"detailed_analysis":       true,
1671 | 	})
1672 | 	if err != nil {
1673 | 		t.Errorf("❌ Failed to analyze infrastructure state: %v", err)
1674 | 	} else {
1675 | 		t.Logf("✅ Infrastructure state analysis successful")
1676 | 	}
1677 | }
1678 | 
1679 | // testErrorScenarios tests various error scenarios that could occur in actual execution
1680 | func testErrorScenarios(t *testing.T, agent *StateAwareAgent, mockSuite *mocks.MockTestSuite, decision *types.AgentDecision) {
1681 | 	t.Logf("🚨 Running error scenario testing...")
1682 | 
1683 | 	// Test 1: Simulate AWS API Errors
1684 | 	t.Logf("🚨 Test 1: Simulating AWS API errors...")
1685 | 
1686 | 	// Enable error simulation on mock client
1687 | 	mockSuite.AWSClient.EnableErrorSimulation(0.3) // 30% error rate
1688 | 	defer mockSuite.AWSClient.DisableErrorSimulation()
1689 | 
1690 | 	// Try executing a simple step with error simulation
1691 | 	if len(decision.ExecutionPlan) > 0 {
1692 | 		firstStep := decision.ExecutionPlan[0]
1693 | 		t.Logf("🚨 Testing error resilience with step: %s", firstStep.Name)
1694 | 
1695 | 		// Create a mock execution context
1696 | 		execution := &types.PlanExecution{
1697 | 			ID:     "error-test-execution",
1698 | 			Status: "running",
1699 | 			Steps:  []*types.ExecutionStep{},
1700 | 		}
1701 | 
1702 | 		// Execute step with error simulation
1703 | 		var result map[string]interface{}
1704 | 		var err error
1705 | 
1706 | 		if firstStep.Action == "create" {
1707 | 			result, err = agent.executeCreateAction(firstStep, nil, execution.ID)
1708 | 		}
1709 | 
1710 | 		if err != nil {
1711 | 			t.Logf("✅ Error simulation working: got expected error: %v", err)
1712 | 		} else {
1713 | 			t.Logf("✅ Step completed despite error simulation: %v", result != nil)
1714 | 		}
1715 | 	}
1716 | 
1717 | 	// Test 2: Simulate Dependency Resolution Failures
1718 | 	t.Logf("🚨 Test 2: Simulating dependency resolution failures...")
1719 | 
1720 | 	// Create a step with invalid dependency reference
1721 | 	invalidStep := &types.ExecutionPlanStep{
1722 | 		ID:         "test-invalid-dependency",
1723 | 		Name:       "Test Invalid Dependency",
1724 | 		Action:     "create",
1725 | 		ResourceID: "test-resource",
1726 | 		Parameters: map[string]interface{}{
1727 | 			"vpcId": "{{non-existent-step.resourceId}}",
1728 | 		},
1729 | 		DependsOn: []string{"non-existent-step"},
1730 | 	}
1731 | 
1732 | 	// Try to resolve dependencies - should fail gracefully
1733 | 	t.Logf("🚨 Testing invalid dependency: %s", invalidStep.Parameters["vpcId"])
1734 | 
1735 | 	// Test 3: Simulate State Corruption
1736 | 	t.Logf("🚨 Test 3: Simulating state corruption scenarios...")
1737 | 
1738 | 	// Add a resource with invalid data to state
1739 | 	corruptedResource := &types.ResourceState{
1740 | 		ID:     "corrupted-resource",
1741 | 		Type:   "", // Empty type should cause issues
1742 | 		Status: "unknown",
1743 | 		Properties: map[string]interface{}{
1744 | 			"invalid": make(chan int), // Non-serializable data
1745 | 		},
1746 | 	}
1747 | 
1748 | 	// Try adding corrupted resource (should handle gracefully)
1749 | 	mockSuite.StateManager.AddResource(corruptedResource)
1750 | 
1751 | 	// Test 4: Simulate Network/Timeout Scenarios
1752 | 	t.Logf("🚨 Test 4: Simulating timeout scenarios...")
1753 | 
1754 | 	// Create a context with very short timeout
1755 | 	shortCtx, cancel := context.WithTimeout(context.Background(), time.Millisecond*1)
1756 | 	defer cancel()
1757 | 
1758 | 	// Try to make an API call with short timeout
1759 | 	_, err := mockSuite.MCPServer.CallTool(shortCtx, "list-vpcs", map[string]interface{}{})
1760 | 	if err != nil {
1761 | 		t.Logf("✅ Timeout handling working: %v", err)
1762 | 	}
1763 | 
1764 | 	t.Logf("✅ Error scenario testing completed")
1765 | }
1766 | 
1767 | // validateDependencyReferences validates dependency references in step parameters
1768 | func validateDependencyReferences(t *testing.T, step *types.ExecutionPlanStep, allSteps []*types.ExecutionPlanStep) {
1769 | 	// Create a map of all step IDs for validation
1770 | 	stepMap := make(map[string]*types.ExecutionPlanStep)
1771 | 	for _, s := range allSteps {
1772 | 		stepMap[s.ID] = s
1773 | 	}
1774 | 
1775 | 	// Check parameters for dependency references
1776 | 	for key, value := range step.Parameters {
1777 | 		if strVal, ok := value.(string); ok {
1778 | 			// Look for dependency references like {{step-id.resourceId}}
1779 | 			if strings.HasPrefix(strVal, "{{") && strings.HasSuffix(strVal, "}}") {
1780 | 				ref := strings.TrimPrefix(strings.TrimSuffix(strVal, "}}"), "{{")
1781 | 				parts := strings.Split(ref, ".")
1782 | 				if len(parts) > 0 {
1783 | 					refStepID := parts[0]
1784 | 					if _, exists := stepMap[refStepID]; !exists {
1785 | 						t.Errorf("❌ Step %s parameter %s references non-existent step: %s", step.ID, key, refStepID)
1786 | 					}
1787 | 				}
1788 | 			}
1789 | 		}
1790 | 	}
1791 | }
1792 | 
1793 | // validateParameterCompleteness validates that steps have required parameters
1794 | func validateParameterCompleteness(t *testing.T, step *types.ExecutionPlanStep) {
1795 | 	// Define required parameters for common actions
1796 | 	requiredParams := map[string][]string{
1797 | 		"create-vpc":            {"cidrBlock"},
1798 | 		"create-subnet":         {"vpcId", "cidrBlock"},
1799 | 		"create-security-group": {"vpcId", "groupName"},
1800 | 		"create-ec2-instance":   {"imageId", "instanceType"},
1801 | 	}
1802 | 
1803 | 	if step.MCPTool != "" {
1804 | 		if required, exists := requiredParams[step.MCPTool]; exists {
1805 | 			for _, param := range required {
1806 | 				// Check both Parameters and ToolParameters
1807 | 				hasParam := false
1808 | 				if _, exists := step.Parameters[param]; exists {
1809 | 					hasParam = true
1810 | 				}
1811 | 				if step.ToolParameters != nil {
1812 | 					if _, exists := step.ToolParameters[param]; exists {
1813 | 						hasParam = true
1814 | 					}
1815 | 				}
1816 | 
1817 | 				if !hasParam {
1818 | 					t.Errorf("❌ Step %s missing required parameter: %s", step.ID, param)
1819 | 				}
1820 | 			}
1821 | 		}
1822 | 	}
1823 | }
1824 | 
```
Page 98/104FirstPrevNextLast