cdk-factory 0.15.19__tar.gz → 0.15.22__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/PKG-INFO +1 -1
  2. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/pyproject.toml +1 -1
  3. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/stack_library/load_balancer/load_balancer_stack.py +32 -6
  4. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/utilities/json_loading_utility.py +11 -2
  5. cdk_factory-0.15.22/src/cdk_factory/version.py +1 -0
  6. cdk_factory-0.15.19/src/cdk_factory/version.py +0 -1
  7. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/.gitignore +0 -0
  8. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/.windsurfrules +0 -0
  9. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/LICENSE +0 -0
  10. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/README.md +0 -0
  11. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/archive/README.md +0 -0
  12. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/archive/migrate_to_enhanced_ssm.py +0 -0
  13. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/examples/json-imports/README.md +0 -0
  14. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/examples/separate-api-gateway/README.md +0 -0
  15. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/examples/separate-api-gateway/api-gateway-stack.json +0 -0
  16. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/examples/separate-api-gateway/config.json +0 -0
  17. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/examples/separate-api-gateway/lambda-stack.json +0 -0
  18. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/mypy.ini +0 -0
  19. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/publish_to_pypi.py +0 -0
  20. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/publish_to_pypi.sh +0 -0
  21. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/pysetup.py +0 -0
  22. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/pysetup.sh +0 -0
  23. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/requirements.dev.txt +0 -0
  24. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/requirements.tests.txt +0 -0
  25. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/requirements.txt +0 -0
  26. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/run-checks.sh +0 -0
  27. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/run-tests-clean-venv.sh +0 -0
  28. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/run-tests.sh +0 -0
  29. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/scripts/cloudfront-cleanup.sh +0 -0
  30. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/__init__.py +0 -0
  31. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/app.py +0 -0
  32. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/builds/README.md +0 -0
  33. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/cdk.json +0 -0
  34. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/cli.py +0 -0
  35. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/commands/command_loader.py +0 -0
  36. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/base_config.py +0 -0
  37. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/cdk_config.py +0 -0
  38. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/deployment.py +0 -0
  39. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/deployment_wave.py +0 -0
  40. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/devops.py +0 -0
  41. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/enhanced_base_config.py +0 -0
  42. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/enhanced_ssm_config.py +0 -0
  43. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/management.py +0 -0
  44. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/pipeline.py +0 -0
  45. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/pipeline_stage.py +0 -0
  46. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/resources/_resources.py +0 -0
  47. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/resources/api_gateway.py +0 -0
  48. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/resources/apigateway_route_config.py +0 -0
  49. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/resources/auto_scaling.py +0 -0
  50. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/resources/cloudfront.py +0 -0
  51. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/resources/cloudwatch_widget.py +0 -0
  52. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/resources/code_artifact.py +0 -0
  53. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/resources/code_artifact_login.py +0 -0
  54. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/resources/code_repository.py +0 -0
  55. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/resources/cognito.py +0 -0
  56. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/resources/docker.py +0 -0
  57. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/resources/dynamodb.py +0 -0
  58. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/resources/ecr.py +0 -0
  59. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/resources/ecs_service.py +0 -0
  60. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/resources/exisiting.py +0 -0
  61. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/resources/lambda_edge.py +0 -0
  62. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/resources/lambda_function.py +0 -0
  63. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/resources/lambda_layers.py +0 -0
  64. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/resources/lambda_triggers.py +0 -0
  65. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/resources/load_balancer.py +0 -0
  66. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/resources/monitoring.py +0 -0
  67. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/resources/rds.py +0 -0
  68. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/resources/resource_mapping.py +0 -0
  69. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/resources/resource_naming.py +0 -0
  70. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/resources/resource_types.py +0 -0
  71. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/resources/route53.py +0 -0
  72. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/resources/route53_hosted_zone.py +0 -0
  73. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/resources/rum.py +0 -0
  74. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/resources/s3.py +0 -0
  75. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/resources/security_group.py +0 -0
  76. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/resources/security_group_full_stack.py +0 -0
  77. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/resources/sqs.py +0 -0
  78. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/resources/vpc.py +0 -0
  79. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/stack.py +0 -0
  80. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/configurations/workload.py +0 -0
  81. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/constructs/cloudfront/cloudfront_distribution_construct.py +0 -0
  82. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/constructs/ecr/ecr_construct.py +0 -0
  83. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/constructs/lambdas/lambda_function_construct.py +0 -0
  84. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/constructs/lambdas/lambda_function_docker_construct.py +0 -0
  85. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/constructs/lambdas/lambda_function_role_construct.py +0 -0
  86. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/constructs/lambdas/policies/policy_docs.py +0 -0
  87. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/constructs/lambdas/policies/policy_statements.py +0 -0
  88. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/constructs/s3_buckets/s3_bucket_construct.py +0 -0
  89. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/constructs/s3_buckets/s3_bucket_replication_destination_construct.py +0 -0
  90. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/constructs/s3_buckets/s3_bucket_replication_source_construct.py +0 -0
  91. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/constructs/sqs/policies/sqs_policies.py +0 -0
  92. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/interfaces/enhanced_ssm_parameter_mixin.py +0 -0
  93. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/interfaces/istack.py +0 -0
  94. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/interfaces/live_ssm_resolver.py +0 -0
  95. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/interfaces/ssm_parameter_mixin.py +0 -0
  96. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/lambdas/edge/ip_gate/handler.py +0 -0
  97. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/lambdas/health_handler.py +0 -0
  98. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/pipeline/path_utils.py +0 -0
  99. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/pipeline/pipeline_factory.py +0 -0
  100. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/pipeline/security/policies.py +0 -0
  101. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/pipeline/security/roles.py +0 -0
  102. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/pipeline/stage.py +0 -0
  103. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/stack/istack.py +0 -0
  104. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/stack/stack_factory.py +0 -0
  105. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/stack/stack_module_loader.py +0 -0
  106. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/stack/stack_module_registry.py +0 -0
  107. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/stack/stack_modules.py +0 -0
  108. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/stack_library/__init__.py +0 -0
  109. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/stack_library/api_gateway/api_gateway_stack.py +0 -0
  110. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/stack_library/auto_scaling/__init__.py +0 -0
  111. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/stack_library/auto_scaling/auto_scaling_stack.py +0 -0
  112. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/stack_library/aws_lambdas/lambda_stack.py +0 -0
  113. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/stack_library/buckets/README.md +0 -0
  114. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/stack_library/buckets/bucket_stack.py +0 -0
  115. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/stack_library/cloudfront/__init__.py +0 -0
  116. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/stack_library/cloudfront/cloudfront_stack.py +0 -0
  117. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/stack_library/code_artifact/code_artifact_stack.py +0 -0
  118. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/stack_library/cognito/cognito_stack.py +0 -0
  119. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/stack_library/dynamodb/dynamodb_stack.py +0 -0
  120. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/stack_library/ecr/README.md +0 -0
  121. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/stack_library/ecr/ecr_stack.py +0 -0
  122. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/stack_library/ecs/__init__.py +0 -0
  123. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/stack_library/ecs/ecs_service_stack.py +0 -0
  124. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/stack_library/lambda_edge/__init__.py +0 -0
  125. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/stack_library/lambda_edge/lambda_edge_stack.py +0 -0
  126. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/stack_library/load_balancer/__init__.py +0 -0
  127. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/stack_library/monitoring/__init__.py +0 -0
  128. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/stack_library/monitoring/monitoring_stack.py +0 -0
  129. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/stack_library/rds/__init__.py +0 -0
  130. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/stack_library/rds/rds_stack.py +0 -0
  131. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/stack_library/route53/__init__.py +0 -0
  132. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/stack_library/route53/route53_stack.py +0 -0
  133. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/stack_library/rum/__init__.py +0 -0
  134. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/stack_library/rum/rum_stack.py +0 -0
  135. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/stack_library/security_group/__init__.py +0 -0
  136. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/stack_library/security_group/security_group_full_stack.py +0 -0
  137. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/stack_library/security_group/security_group_stack.py +0 -0
  138. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/stack_library/simple_queue_service/sqs_stack.py +0 -0
  139. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/stack_library/stack_base.py +0 -0
  140. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/stack_library/vpc/__init__.py +0 -0
  141. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/stack_library/vpc/vpc_stack.py +0 -0
  142. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/stack_library/websites/static_website_stack.py +0 -0
  143. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/stages/websites/static_website_stage.py +0 -0
  144. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/templates/README.md +0 -0
  145. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/templates/app.py.template +0 -0
  146. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/templates/cdk.json.template +0 -0
  147. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/utilities/api_gateway_integration_utility.py +0 -0
  148. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/utilities/commandline_args.py +0 -0
  149. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/utilities/configuration_loader.py +0 -0
  150. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/utilities/docker_utilities.py +0 -0
  151. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/utilities/environment_services.py +0 -0
  152. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/utilities/file_operations.py +0 -0
  153. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/utilities/git_utilities.py +0 -0
  154. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/utilities/lambda_function_utilities.py +0 -0
  155. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/utilities/os_execute.py +0 -0
  156. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/utils/api_gateway_utilities.py +0 -0
  157. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/cdk_factory/workload/workload_factory.py +0 -0
  158. {cdk_factory-0.15.19 → cdk_factory-0.15.22}/src/handlers/test/handler.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cdk_factory
3
- Version: 0.15.19
3
+ Version: 0.15.22
4
4
  Summary: CDK Factory. A QuickStarter and best practices setup for CDK projects
5
5
  Author-email: Eric Wilson <eric.wilson@geekcafe.com>
6
6
  License: MIT License
@@ -33,7 +33,7 @@ markers = [
33
33
  [project]
34
34
 
35
35
  name = "cdk_factory"
36
- version = "0.15.19"
36
+ version = "0.15.22"
37
37
  authors = [
38
38
  { name="Eric Wilson", email="eric.wilson@geekcafe.com" }
39
39
  ]
@@ -141,6 +141,19 @@ class LoadBalancerStack(IStack, EnhancedSsmParameterMixin):
141
141
  vpc_subnets=ec2.SubnetSelection(subnets=subnets) if subnets else None,
142
142
  )
143
143
 
144
+ # If subnets is None, check if we have SSM-imported subnet_ids as a token
145
+ # We need to use Fn.Split to convert the comma-separated string to an array
146
+ if subnets is None and "subnet_ids" in self.ssm_imported_values:
147
+ subnet_ids_value = self.ssm_imported_values["subnet_ids"]
148
+ if cdk.Token.is_unresolved(subnet_ids_value):
149
+ logger.info("Using Fn.Split to convert comma-separated subnet IDs token to array")
150
+ # Use CloudFormation escape hatch to set Subnets property with Fn.Split
151
+ cfn_lb = load_balancer.node.default_child
152
+ cfn_lb.add_property_override(
153
+ "Subnets",
154
+ cdk.Fn.split(",", subnet_ids_value)
155
+ )
156
+
144
157
  # Add tags
145
158
  for key, value in self.lb_config.tags.items():
146
159
  cdk.Tags.of(load_balancer).add(key, value)
@@ -255,15 +268,28 @@ class LoadBalancerStack(IStack, EnhancedSsmParameterMixin):
255
268
 
256
269
  # Check SSM imported values first
257
270
  if "subnet_ids" in self.ssm_imported_values:
258
- subnet_ids = self.ssm_imported_values["subnet_ids"]
259
- # SSM returns comma-separated string for StringList, need to split
260
- if isinstance(subnet_ids, str):
261
- subnet_ids = [s.strip() for s in subnet_ids.split(',')]
262
- elif not isinstance(subnet_ids, list):
263
- subnet_ids = [subnet_ids]
271
+ subnet_ids_value = self.ssm_imported_values["subnet_ids"]
272
+
273
+ # Check if this is a CDK token (unresolved SSM parameter)
274
+ if cdk.Token.is_unresolved(subnet_ids_value):
275
+ # For tokens, we can't split at synth time
276
+ # Return None to signal that subnets should be resolved via SubnetSelection
277
+ # The ALB construct will handle the token-based subnet IDs
278
+ logger.info("Subnet IDs are unresolved tokens, will use vpc_subnets with token resolution")
279
+ return None
280
+ elif isinstance(subnet_ids_value, str):
281
+ # If it's a resolved string, split it
282
+ subnet_ids = [s.strip() for s in subnet_ids_value.split(',')]
283
+ elif isinstance(subnet_ids_value, list):
284
+ subnet_ids = subnet_ids_value
285
+ else:
286
+ subnet_ids = [subnet_ids_value]
264
287
  else:
265
288
  subnet_ids = self.lb_config.subnets
266
289
 
290
+ if not subnet_ids:
291
+ return None
292
+
267
293
  for idx, subnet_id in enumerate(subnet_ids):
268
294
  subnets.append(
269
295
  ec2.Subnet.from_subnet_id(self, f"Subnet-{idx}", subnet_id)
@@ -171,9 +171,18 @@ class JsonLoadingUtility:
171
171
  def merge_sections(self, base: dict, new: dict):
172
172
  """Merge two configuration sections, with new section overriding base section."""
173
173
  for key, value in new.items():
174
- if key in base and isinstance(base[key], dict) and isinstance(value, dict):
175
- self.merge_sections(base[key], value)
174
+ if key in base:
175
+ if isinstance(base[key], dict) and isinstance(value, dict):
176
+ # Recursively merge nested dicts
177
+ self.merge_sections(base[key], value)
178
+ elif isinstance(base[key], list) and isinstance(value, list):
179
+ # Extend arrays instead of replacing them
180
+ base[key].extend(value)
181
+ else:
182
+ # Override for all other types (string, int, bool, etc.)
183
+ base[key] = value
176
184
  else:
185
+ # Key doesn't exist in base, add it
177
186
  base[key] = value
178
187
  return base
179
188
 
@@ -0,0 +1 @@
1
+ __version__ = "0.15.22"
@@ -1 +0,0 @@
1
- __version__ = "0.15.19"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes