cdk-factory 0.18.27__tar.gz → 0.19.6__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.

Potentially problematic release.


This version of cdk-factory might be problematic. Click here for more details.

Files changed (166) hide show
  1. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/PKG-INFO +1 -1
  2. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/pyproject.toml +1 -1
  3. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/resources/lambda_edge.py +1 -1
  4. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/resources/rds.py +1 -1
  5. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/resources/s3.py +9 -1
  6. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/constructs/cloudfront/cloudfront_distribution_construct.py +1 -1
  7. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stack_library/acm/acm_stack.py +4 -15
  8. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stack_library/cloudfront/cloudfront_stack.py +25 -4
  9. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stack_library/code_artifact/code_artifact_stack.py +3 -25
  10. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stack_library/ecs/ecs_service_stack.py +4 -25
  11. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stack_library/lambda_edge/lambda_edge_stack.py +1 -24
  12. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stack_library/load_balancer/load_balancer_stack.py +2 -59
  13. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stack_library/rds/rds_stack.py +1 -25
  14. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stack_library/route53/route53_stack.py +1 -34
  15. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stack_library/security_group/security_group_full_stack.py +1 -31
  16. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stack_library/security_group/security_group_stack.py +1 -8
  17. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stack_library/simple_queue_service/sqs_stack.py +1 -34
  18. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stack_library/vpc/vpc_stack.py +2 -109
  19. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stack_library/websites/static_website_stack.py +6 -2
  20. cdk_factory-0.19.6/src/cdk_factory/version.py +1 -0
  21. cdk_factory-0.18.27/src/cdk_factory/version.py +0 -1
  22. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/.gitignore +0 -0
  23. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/.windsurfrules +0 -0
  24. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/LICENSE +0 -0
  25. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/README.md +0 -0
  26. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/REFACTORING_PLAN.md +0 -0
  27. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/archive/README.md +0 -0
  28. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/archive/migrate_to_enhanced_ssm.py +0 -0
  29. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/examples/json-imports/README.md +0 -0
  30. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/examples/separate-api-gateway/README.md +0 -0
  31. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/examples/separate-api-gateway/api-gateway-stack.json +0 -0
  32. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/examples/separate-api-gateway/config.json +0 -0
  33. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/examples/separate-api-gateway/lambda-stack.json +0 -0
  34. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/mypy.ini +0 -0
  35. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/publish_to_pypi.py +0 -0
  36. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/publish_to_pypi.sh +0 -0
  37. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/pysetup.py +0 -0
  38. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/pysetup.sh +0 -0
  39. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/requirements.dev.txt +0 -0
  40. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/requirements.tests.txt +0 -0
  41. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/requirements.txt +0 -0
  42. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/run-checks.sh +0 -0
  43. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/run-tests-clean-venv.sh +0 -0
  44. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/run-tests.sh +0 -0
  45. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/scripts/cloudfront-cleanup.sh +0 -0
  46. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/__init__.py +0 -0
  47. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/app.py +0 -0
  48. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/builds/README.md +0 -0
  49. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/cdk.json +0 -0
  50. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/cli.py +0 -0
  51. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/commands/command_loader.py +0 -0
  52. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/base_config.py +0 -0
  53. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/cdk_config.py +0 -0
  54. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/deployment.py +0 -0
  55. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/deployment_wave.py +0 -0
  56. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/devops.py +0 -0
  57. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/enhanced_base_config.py +0 -0
  58. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/enhanced_ssm_config.py +0 -0
  59. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/management.py +0 -0
  60. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/pipeline.py +0 -0
  61. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/pipeline_stage.py +0 -0
  62. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/resources/_resources.py +0 -0
  63. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/resources/acm.py +0 -0
  64. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/resources/api_gateway.py +0 -0
  65. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/resources/apigateway_route_config.py +0 -0
  66. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/resources/auto_scaling.py +0 -0
  67. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/resources/cloudfront.py +0 -0
  68. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/resources/cloudwatch_widget.py +0 -0
  69. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/resources/code_artifact.py +0 -0
  70. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/resources/code_artifact_login.py +0 -0
  71. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/resources/code_repository.py +0 -0
  72. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/resources/cognito.py +0 -0
  73. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/resources/docker.py +0 -0
  74. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/resources/dynamodb.py +0 -0
  75. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/resources/ecr.py +0 -0
  76. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/resources/ecs_cluster.py +0 -0
  77. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/resources/ecs_service.py +0 -0
  78. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/resources/exisiting.py +0 -0
  79. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/resources/lambda_function.py +0 -0
  80. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/resources/lambda_layers.py +0 -0
  81. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/resources/lambda_triggers.py +0 -0
  82. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/resources/load_balancer.py +0 -0
  83. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/resources/monitoring.py +0 -0
  84. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/resources/resource_mapping.py +0 -0
  85. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/resources/resource_naming.py +0 -0
  86. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/resources/resource_types.py +0 -0
  87. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/resources/route53.py +0 -0
  88. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/resources/route53_hosted_zone.py +0 -0
  89. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/resources/rum.py +0 -0
  90. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/resources/security_group.py +0 -0
  91. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/resources/security_group_full_stack.py +0 -0
  92. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/resources/sqs.py +0 -0
  93. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/resources/vpc.py +0 -0
  94. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/stack.py +0 -0
  95. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/configurations/workload.py +0 -0
  96. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/constructs/ecr/ecr_construct.py +0 -0
  97. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/constructs/lambdas/lambda_function_construct.py +0 -0
  98. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/constructs/lambdas/lambda_function_docker_construct.py +0 -0
  99. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/constructs/lambdas/lambda_function_role_construct.py +0 -0
  100. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/constructs/lambdas/policies/policy_docs.py +0 -0
  101. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/constructs/lambdas/policies/policy_statements.py +0 -0
  102. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/constructs/s3_buckets/s3_bucket_construct.py +0 -0
  103. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/constructs/s3_buckets/s3_bucket_replication_destination_construct.py +0 -0
  104. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/constructs/s3_buckets/s3_bucket_replication_source_construct.py +0 -0
  105. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/constructs/sqs/policies/sqs_policies.py +0 -0
  106. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/interfaces/istack.py +0 -0
  107. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/interfaces/live_ssm_resolver.py +0 -0
  108. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/interfaces/networked_stack_mixin.py +0 -0
  109. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/interfaces/standardized_ssm_mixin.py +0 -0
  110. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/interfaces/vpc_provider_mixin.py +0 -0
  111. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/lambdas/edge/ip_gate/handler.py +0 -0
  112. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/lambdas/health_handler.py +0 -0
  113. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/pipeline/path_utils.py +0 -0
  114. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/pipeline/pipeline_factory.py +0 -0
  115. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/pipeline/security/policies.py +0 -0
  116. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/pipeline/security/roles.py +0 -0
  117. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/pipeline/stage.py +0 -0
  118. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stack/istack.py +0 -0
  119. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stack/stack_factory.py +0 -0
  120. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stack/stack_module_loader.py +0 -0
  121. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stack/stack_module_registry.py +0 -0
  122. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stack/stack_modules.py +0 -0
  123. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stack_library/__init__.py +0 -0
  124. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stack_library/acm/__init__.py +0 -0
  125. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stack_library/api_gateway/api_gateway_stack.py +0 -0
  126. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stack_library/auto_scaling/__init__.py +0 -0
  127. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stack_library/auto_scaling/auto_scaling_stack.py +0 -0
  128. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stack_library/aws_lambdas/lambda_stack.py +0 -0
  129. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stack_library/buckets/README.md +0 -0
  130. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stack_library/buckets/bucket_stack.py +0 -0
  131. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stack_library/cloudfront/__init__.py +0 -0
  132. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stack_library/cognito/cognito_stack.py +0 -0
  133. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stack_library/dynamodb/dynamodb_stack.py +0 -0
  134. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stack_library/ecr/README.md +0 -0
  135. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stack_library/ecr/ecr_stack.py +0 -0
  136. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stack_library/ecs/__init__.py +0 -0
  137. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stack_library/ecs/ecs_cluster_stack.py +0 -0
  138. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stack_library/lambda_edge/__init__.py +0 -0
  139. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stack_library/load_balancer/__init__.py +0 -0
  140. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stack_library/monitoring/__init__.py +0 -0
  141. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stack_library/monitoring/monitoring_stack.py +0 -0
  142. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stack_library/rds/__init__.py +0 -0
  143. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stack_library/route53/__init__.py +0 -0
  144. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stack_library/rum/__init__.py +0 -0
  145. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stack_library/rum/rum_stack.py +0 -0
  146. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stack_library/security_group/__init__.py +0 -0
  147. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stack_library/stack_base.py +0 -0
  148. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stack_library/vpc/__init__.py +0 -0
  149. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/stages/websites/static_website_stage.py +0 -0
  150. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/templates/README.md +0 -0
  151. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/templates/app.py.template +0 -0
  152. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/templates/cdk.json.template +0 -0
  153. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/utilities/api_gateway_integration_utility.py +0 -0
  154. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/utilities/commandline_args.py +0 -0
  155. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/utilities/configuration_loader.py +0 -0
  156. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/utilities/docker_utilities.py +0 -0
  157. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/utilities/environment_services.py +0 -0
  158. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/utilities/file_operations.py +0 -0
  159. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/utilities/git_utilities.py +0 -0
  160. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/utilities/json_loading_utility.py +0 -0
  161. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/utilities/lambda_function_utilities.py +0 -0
  162. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/utilities/os_execute.py +0 -0
  163. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/utils/api_gateway_utilities.py +0 -0
  164. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/validation/config_validator.py +0 -0
  165. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/src/cdk_factory/workload/workload_factory.py +0 -0
  166. {cdk_factory-0.18.27 → cdk_factory-0.19.6}/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.18.27
3
+ Version: 0.19.6
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.18.27"
36
+ version = "0.19.6"
37
37
  authors = [
38
38
  { name="Eric Wilson", email="eric.wilson@geekcafe.com" }
39
39
  ]
@@ -58,7 +58,7 @@ class LambdaEdgeConfig(EnhancedBaseConfig):
58
58
  @property
59
59
  def code_path(self) -> str:
60
60
  """Path to Lambda function code directory"""
61
- return self._config.get("code_path", "./lambdas/edge/ip_gate")
61
+ return self._config.get("code_path", "./lambdas/cloudfront/ip_gate")
62
62
 
63
63
  @property
64
64
  def environment(self) -> Dict[str, str]:
@@ -29,7 +29,7 @@ class RdsConfig(EnhancedBaseConfig):
29
29
  @property
30
30
  def name(self) -> str:
31
31
  """RDS instance name"""
32
- return self.__config.get("name", "database")
32
+ return self.__config.get("name", self.database_name)
33
33
 
34
34
  @property
35
35
  def identifier(self) -> str:
@@ -158,7 +158,15 @@ class S3BucketConfig(EnhancedBaseConfig):
158
158
  value = self.__config.get("block_public_access")
159
159
 
160
160
  if value and isinstance(value, str):
161
- if value.lower() == "block_acls":
161
+ if value.lower() == "disabled":
162
+ # For public website hosting, disable block public access
163
+ return s3.BlockPublicAccess(
164
+ block_public_acls=False,
165
+ block_public_policy=False,
166
+ ignore_public_acls=False,
167
+ restrict_public_buckets=False
168
+ )
169
+ elif value.lower() == "block_acls":
162
170
  return s3.BlockPublicAccess.BLOCK_ACLS
163
171
  # elif value.lower() == "block_public_acls":
164
172
  # return s3.BlockPublicAccess.block_public_acls
@@ -558,7 +558,7 @@ class CloudFrontDistributionConstruct(Construct):
558
558
  """
559
559
  bucket_policy = s3.BucketPolicy(
560
560
  self,
561
- id=f"CloudFrontBucketPolicy-{self.source_bucket.bucket_name}",
561
+ id="CloudFrontBucketPolicy",
562
562
  bucket=self.source_bucket,
563
563
  )
564
564
 
@@ -153,18 +153,7 @@ class AcmStack(IStack, StandardizedSsmMixin):
153
153
 
154
154
  def _add_outputs(self, cert_name: str) -> None:
155
155
  """Add CloudFormation outputs"""
156
- cdk.CfnOutput(
157
- self,
158
- "CertificateArn",
159
- value=self.certificate.certificate_arn,
160
- description=f"Certificate ARN for {self.acm_config.domain_name}",
161
- export_name=f"{cert_name}-arn",
162
- )
163
-
164
- cdk.CfnOutput(
165
- self,
166
- "DomainName",
167
- value=self.acm_config.domain_name,
168
- description="Primary domain name for the certificate",
169
- export_name=f"{cert_name}-domain",
170
- )
156
+
157
+ return
158
+
159
+
@@ -14,6 +14,7 @@ from aws_cdk import (
14
14
  aws_cloudfront_origins as origins,
15
15
  aws_certificatemanager as acm,
16
16
  aws_route53 as route53,
17
+ aws_s3 as s3,
17
18
  aws_lambda as _lambda,
18
19
  aws_ssm as ssm,
19
20
  CfnOutput,
@@ -296,11 +297,31 @@ class CloudFrontStack(IStack):
296
297
 
297
298
  def _create_s3_origin(self, config: Dict[str, Any]) -> cloudfront.IOrigin:
298
299
  """Create S3 origin"""
299
- # S3 origin implementation
300
- # This would use origins.S3Origin
301
- raise NotImplementedError(
302
- "S3 origin support - use existing static_website_stack for S3"
300
+ bucket_name = config.get("bucket_name")
301
+ domain_name = config.get("domain_name")
302
+ origin_path = config.get("origin_path", "")
303
+
304
+ if not bucket_name:
305
+ raise ValueError("S3 origin requires 'bucket_name' configuration")
306
+
307
+ # For S3 origins, we need to import the bucket by name
308
+ bucket = s3.Bucket.from_bucket_name(
309
+ self,
310
+ id=f"S3OriginBucket-{config.get('id', 'unknown')}",
311
+ bucket_name=bucket_name
312
+ )
313
+
314
+ # Create S3 origin with OAC (Origin Access Control) for security
315
+ origin = origins.S3BucketOrigin.with_origin_access_control(
316
+ bucket,
317
+ origin_path=origin_path,
318
+ origin_access_levels=[
319
+ cloudfront.AccessLevel.READ,
320
+ cloudfront.AccessLevel.LIST,
321
+ ],
303
322
  )
323
+
324
+ return origin
304
325
 
305
326
  def _create_distribution(self) -> None:
306
327
  """Create CloudFront distribution"""
@@ -140,32 +140,10 @@ class CodeArtifactStack(IStack, StandardizedSsmMixin):
140
140
 
141
141
  def _add_outputs(self) -> None:
142
142
  """Add CloudFormation outputs for the CodeArtifact resources"""
143
+
144
+
143
145
  # Domain outputs
144
146
  if self.domain:
145
147
  domain_name = self.code_artifact_config.domain_name
146
148
 
147
- # Domain ARN
148
- cdk.CfnOutput(
149
- self,
150
- f"{domain_name}-domain-arn",
151
- value=self.domain.attr_arn,
152
- export_name=f"{self.deployment.build_resource_name(domain_name)}-domain-arn"
153
- )
154
-
155
- # Domain URL
156
- cdk.CfnOutput(
157
- self,
158
- f"{domain_name}-domain-url",
159
- value=f"https://{self.code_artifact_config.account}.d.codeartifact.{self.code_artifact_config.region}.amazonaws.com/",
160
- export_name=f"{self.deployment.build_resource_name(domain_name)}-domain-url"
161
- )
162
-
163
- # Repository outputs
164
- for repo_name, repo in self.repositories.items():
165
- # Repository ARN
166
- cdk.CfnOutput(
167
- self,
168
- f"{repo_name}-repo-arn",
169
- value=repo.attr_arn,
170
- export_name=f"{self.deployment.build_resource_name(repo_name)}-repo-arn"
171
- )
149
+
@@ -101,6 +101,7 @@ class EcsServiceStack(IStack, VPCProviderMixin, StandardizedSsmMixin):
101
101
 
102
102
  # Add outputs
103
103
  self._add_outputs(service_name)
104
+ self._export_to_ssm(service_name)
104
105
 
105
106
  def _load_vpc(self) -> None:
106
107
  """Load VPC using the centralized VPC provider mixin."""
@@ -603,35 +604,13 @@ class EcsServiceStack(IStack, VPCProviderMixin, StandardizedSsmMixin):
603
604
  scale_out_cooldown=cdk.Duration.seconds(60),
604
605
  )
605
606
 
607
+
608
+
606
609
  def _add_outputs(self, service_name: str) -> None:
607
610
  """Add CloudFormation outputs"""
611
+ return
608
612
 
609
- # Service name output
610
- cdk.CfnOutput(
611
- self,
612
- "ServiceName",
613
- value=self.service.service_name,
614
- description=f"ECS Service Name: {service_name}",
615
- )
616
-
617
- # Service ARN output
618
- cdk.CfnOutput(
619
- self,
620
- "ServiceArn",
621
- value=self.service.service_arn,
622
- description=f"ECS Service ARN: {service_name}",
623
- )
624
-
625
- # Cluster name output
626
- cdk.CfnOutput(
627
- self,
628
- "ClusterName",
629
- value=self.cluster.cluster_name,
630
- description=f"ECS Cluster Name for {service_name}",
631
- )
632
613
 
633
- # Export to SSM if configured
634
- self._export_to_ssm(service_name)
635
614
 
636
615
  def _export_to_ssm(self, service_name: str) -> None:
637
616
  """Export resource ARNs and names to SSM Parameter Store"""
@@ -132,7 +132,7 @@ class LambdaEdgeStack(IStack, StandardizedSsmMixin):
132
132
  def _create_lambda_function(self, function_name: str) -> None:
133
133
  """Create the Lambda function"""
134
134
 
135
- # Resolve code path - support package references (e.g., "cdk_factory:lambdas/edge/ip_gate")
135
+ # Resolve code path - support package references (e.g., "cdk_factory:lambdas/cloudfront/ip_gate")
136
136
  code_path_str = self.edge_config.code_path
137
137
 
138
138
  if ':' in code_path_str:
@@ -303,30 +303,7 @@ class LambdaEdgeStack(IStack, StandardizedSsmMixin):
303
303
  def _add_outputs(self, function_name: str) -> None:
304
304
  """Add CloudFormation outputs and SSM exports"""
305
305
 
306
- # CloudFormation outputs
307
- cdk.CfnOutput(
308
- self,
309
- "FunctionName",
310
- value=self.function.function_name,
311
- description="Lambda function name",
312
- export_name=f"{function_name}-name"
313
- )
314
306
 
315
- cdk.CfnOutput(
316
- self,
317
- "FunctionArn",
318
- value=self.function.function_arn,
319
- description="Lambda function ARN (unversioned)",
320
- export_name=f"{function_name}-arn"
321
- )
322
-
323
- cdk.CfnOutput(
324
- self,
325
- "FunctionVersionArn",
326
- value=self.function_version.function_arn,
327
- description="Lambda function version ARN (use this for Lambda@Edge)",
328
- export_name=f"{function_name}-version-arn"
329
- )
330
307
 
331
308
  # SSM Parameter Store exports (if configured)
332
309
  ssm_exports = self.edge_config.dictionary.get("ssm", {}).get("exports", {})
@@ -656,36 +656,7 @@ class LoadBalancerStack(IStack, VPCProviderMixin, StandardizedSsmMixin):
656
656
 
657
657
  def _export_cfn_outputs(self, lb_name: str) -> None:
658
658
  """Add CloudFormation outputs for the Load Balancer"""
659
- if self.load_balancer:
660
- # Load Balancer DNS Name
661
- cdk.CfnOutput(
662
- self,
663
- f"{lb_name}-dns-name",
664
- value=self.load_balancer.load_balancer_dns_name,
665
- export_name=f"{self.deployment.build_resource_name(lb_name)}-dns-name",
666
- )
667
-
668
- # Load Balancer ARN
669
- cdk.CfnOutput(
670
- self,
671
- f"{lb_name}-arn",
672
- value=self.load_balancer.load_balancer_arn,
673
- export_name=f"{self.deployment.build_resource_name(lb_name)}-arn",
674
- )
675
-
676
- # Target Group ARNs
677
- for tg_name, target_group in self.target_groups.items():
678
- # Normalize target group name for consistent CloudFormation export naming
679
- normalized_tg_name = self.normalize_resource_name(
680
- tg_name, for_export=True
681
- )
682
- cdk.CfnOutput(
683
- self,
684
- f"{lb_name}-{normalized_tg_name}-arn",
685
- value=target_group.target_group_arn,
686
- export_name=f"{self.deployment.build_resource_name(lb_name)}-{normalized_tg_name}-arn",
687
- )
688
-
659
+ return
689
660
  def _export_ssm_parameters(self, lb_name: str) -> None:
690
661
  """Export Load Balancer resources to SSM Parameter Store if configured"""
691
662
  if not self.load_balancer:
@@ -716,32 +687,4 @@ class LoadBalancerStack(IStack, VPCProviderMixin, StandardizedSsmMixin):
716
687
 
717
688
  def _export_cfn_outputs(self, lb_name: str) -> None:
718
689
  """Add CloudFormation outputs for the Load Balancer"""
719
- if self.load_balancer:
720
- # Load Balancer DNS Name
721
- cdk.CfnOutput(
722
- self,
723
- f"{lb_name}-dns-name",
724
- value=self.load_balancer.load_balancer_dns_name,
725
- export_name=f"{self.deployment.build_resource_name(lb_name)}-dns-name",
726
- )
727
-
728
- # Load Balancer ARN
729
- cdk.CfnOutput(
730
- self,
731
- f"{lb_name}-arn",
732
- value=self.load_balancer.load_balancer_arn,
733
- export_name=f"{self.deployment.build_resource_name(lb_name)}-arn",
734
- )
735
-
736
- # Target Group ARNs
737
- for tg_name, target_group in self.target_groups.items():
738
- # Normalize target group name for consistent CloudFormation export naming
739
- normalized_tg_name = self.normalize_resource_name(
740
- tg_name, for_export=True
741
- )
742
- cdk.CfnOutput(
743
- self,
744
- f"{lb_name}-{normalized_tg_name}-arn",
745
- value=target_group.target_group_arn,
746
- export_name=f"{self.deployment.build_resource_name(lb_name)}-{normalized_tg_name}-arn",
747
- )
690
+ return
@@ -285,31 +285,7 @@ class RdsStack(IStack, VPCProviderMixin, StandardizedSsmMixin):
285
285
 
286
286
  def _add_outputs(self, db_name: str) -> None:
287
287
  """Add CloudFormation outputs for the RDS instance"""
288
- if self.db_instance:
289
- # Database endpoint
290
- cdk.CfnOutput(
291
- self,
292
- f"{db_name}-endpoint",
293
- value=self.db_instance.db_instance_endpoint_address,
294
- export_name=f"{self.deployment.build_resource_name(db_name)}-endpoint",
295
- )
296
-
297
- # Database port
298
- cdk.CfnOutput(
299
- self,
300
- f"{db_name}-port",
301
- value=self.db_instance.db_instance_endpoint_port,
302
- export_name=f"{self.deployment.build_resource_name(db_name)}-port",
303
- )
304
-
305
- # Secret ARN (if available)
306
- if hasattr(self.db_instance, "secret") and self.db_instance.secret:
307
- cdk.CfnOutput(
308
- self,
309
- f"{db_name}-secret-arn",
310
- value=self.db_instance.secret.secret_arn,
311
- export_name=f"{self.deployment.build_resource_name(db_name)}-secret-arn",
312
- )
288
+ return
313
289
 
314
290
  def _export_ssm_parameters(self, db_name: str) -> None:
315
291
  """Export RDS connection info and credentials to SSM Parameter Store"""
@@ -413,37 +413,4 @@ class Route53Stack(IStack, StandardizedSsmMixin):
413
413
  def _add_outputs(self) -> None:
414
414
  """Add CloudFormation outputs for the Route53 resources"""
415
415
  # Hosted Zone ID
416
- if self.hosted_zone:
417
- cdk.CfnOutput(
418
- self,
419
- "HostedZoneId",
420
- value=self.hosted_zone.hosted_zone_id,
421
- export_name=f"{self.deployment.build_resource_name('hosted-zone')}-id"
422
- )
423
-
424
- # Hosted Zone Name Servers
425
- if hasattr(self.hosted_zone, "name_servers") and self.hosted_zone.name_servers:
426
- cdk.CfnOutput(
427
- self,
428
- "NameServers",
429
- value=",".join(self.hosted_zone.name_servers),
430
- export_name=f"{self.deployment.build_resource_name('hosted-zone')}-name-servers"
431
- )
432
-
433
- # Certificate ARN
434
- if self.certificate:
435
- cdk.CfnOutput(
436
- self,
437
- "CertificateArn",
438
- value=self.certificate.certificate_arn,
439
- export_name=f"{self.deployment.build_resource_name('certificate')}-arn"
440
- )
441
-
442
- # Record names
443
- for name, record in self.records.items():
444
- cdk.CfnOutput(
445
- self,
446
- f"Record-{name}",
447
- value=name,
448
- export_name=f"{self.deployment.build_resource_name('record')}-{name}"
449
- )
416
+ return
@@ -194,37 +194,7 @@ class SecurityGroupsStack(IStack, VPCProviderMixin):
194
194
  description="Uptime Robot",
195
195
  )
196
196
 
197
- # =========================================================
198
- # Outputs (exports)
199
- # =========================================================
200
- cdk.CfnOutput(
201
- self,
202
- "WebFleetAlbSecurityGroupOut",
203
- value=alb_sg.ref,
204
- description="Web Fleet Application Load Balancer Security Group",
205
- export_name=f"{self.deployment.environment}-{self.workload.name}-WebFleetAlbSecurityGroup",
206
- )
207
- cdk.CfnOutput(
208
- self,
209
- "WebFleetInstancesSecurityGroupOut",
210
- value=web_fleet_sg.ref,
211
- description="Web Fleet Instances Security Group",
212
- export_name=f"{self.deployment.environment}-{self.workload.name}-WebFleetInstancesSecurityGroup",
213
- )
214
- cdk.CfnOutput(
215
- self,
216
- "MySqlDbSecurityGroupOut",
217
- value=mysql_sg.ref,
218
- description="MySql Security Group",
219
- export_name=f"{self.deployment.environment}-{self.workload.name}-MySqlDbSecurityGroup",
220
- )
221
- cdk.CfnOutput(
222
- self,
223
- "WebMonitoringSecurityGroupOut",
224
- value=monitoring_sg.ref,
225
- description="Web Fleet Application Load Balancer Security Group",
226
- export_name=f"{self.deployment.environment}-{self.workload.name}-WebMonitoringSecurityGroup",
227
- )
197
+
228
198
 
229
199
  # =========================================================
230
200
  # SSM Parameter Store Exports
@@ -337,14 +337,7 @@ class SecurityGroupStack(IStack, VPCProviderMixin, StandardizedSsmMixin):
337
337
 
338
338
  def _export_cfn_outputs(self, sg_name: str) -> None:
339
339
  """Add CloudFormation outputs for the Security Group"""
340
- if self.security_group:
341
- # Security Group ID
342
- cdk.CfnOutput(
343
- self,
344
- f"{sg_name}-id",
345
- value=self.security_group.security_group_id,
346
- export_name=f"{self.deployment.build_resource_name(sg_name)}-id",
347
- )
340
+ return
348
341
 
349
342
  def _export_ssm_parameters(self, sg_name: str) -> None:
350
343
  """Add SSM parameters for the Security Group"""
@@ -131,37 +131,4 @@ class SQSStack(IStack):
131
131
 
132
132
  def _add_outputs(self) -> None:
133
133
  """Add CloudFormation outputs for the SQS queues"""
134
- for queue_name, queue in self.queues.items():
135
- # Queue ARN
136
- cdk.CfnOutput(
137
- self,
138
- f"{queue_name}-arn",
139
- value=queue.queue_arn,
140
- export_name=f"{self.deployment.build_resource_name(queue_name)}-arn"
141
- )
142
-
143
- # Queue URL
144
- cdk.CfnOutput(
145
- self,
146
- f"{queue_name}-url",
147
- value=queue.queue_url,
148
- export_name=f"{self.deployment.build_resource_name(queue_name)}-url"
149
- )
150
-
151
- # Also add outputs for DLQs
152
- for dlq_name, dlq in self.dead_letter_queues.items():
153
- # DLQ ARN
154
- cdk.CfnOutput(
155
- self,
156
- f"{dlq_name}-arn",
157
- value=dlq.queue_arn,
158
- export_name=f"{self.deployment.build_resource_name(dlq_name)}-arn"
159
- )
160
-
161
- # DLQ URL
162
- cdk.CfnOutput(
163
- self,
164
- f"{dlq_name}-url",
165
- value=dlq.queue_url,
166
- export_name=f"{self.deployment.build_resource_name(dlq_name)}-url"
167
- )
134
+ return
@@ -241,115 +241,8 @@ class VpcStack(IStack, StandardizedSsmMixin):
241
241
 
242
242
  def _add_outputs(self, vpc_name: str) -> None:
243
243
  """Add CloudFormation outputs for the VPC"""
244
- if not self.vpc:
245
- return
246
-
247
- # VPC outputs
248
- # Use workload environment for consistency
249
- workload_env = self.workload.dictionary.get("environment", self.deployment.environment)
250
- workload_name = self.workload.dictionary.get("name", self.deployment.workload_name)
251
-
252
- cdk.CfnOutput(
253
- self,
254
- f"{vpc_name}-VpcId",
255
- value=self.vpc.vpc_id,
256
- description=f"VPC ID for {vpc_name}",
257
- export_name=f"{workload_name}-{workload_env}-vpc-id",
258
- )
259
-
260
- # Subnet outputs
261
- public_subnet_ids = [subnet.subnet_id for subnet in self.vpc.public_subnets]
262
- if public_subnet_ids:
263
- cdk.CfnOutput(
264
- self,
265
- f"{vpc_name}-PublicSubnetIds",
266
- value=",".join(public_subnet_ids),
267
- description=f"Public subnet IDs for {vpc_name}",
268
- export_name=f"{workload_name}-{workload_env}-public-subnet-ids",
269
- )
270
-
271
- private_subnet_ids = [subnet.subnet_id for subnet in self.vpc.private_subnets]
272
- if private_subnet_ids:
273
- cdk.CfnOutput(
274
- self,
275
- f"{vpc_name}-PrivateSubnetIds",
276
- value=",".join(private_subnet_ids),
277
- description=f"Private subnet IDs for {vpc_name}",
278
- export_name=f"{workload_name}-{workload_env}-private-subnet-ids",
279
- )
280
-
281
- isolated_subnet_ids = [subnet.subnet_id for subnet in self.vpc.isolated_subnets]
282
- if isolated_subnet_ids:
283
- cdk.CfnOutput(
284
- self,
285
- f"{vpc_name}-IsolatedSubnetIds",
286
- value=",".join(isolated_subnet_ids),
287
- description=f"Isolated subnet IDs for {vpc_name}",
288
- export_name=f"{workload_name}-{workload_env}-isolated-subnet-ids",
289
- )
290
-
291
- # Route table outputs - simplified to avoid route table access issues
292
- # Skip route table outputs for now as they're causing CDK API issues
293
- # public_route_table_ids = []
294
- # if self.vpc.public_subnets:
295
- # for subnet in self.vpc.public_subnets:
296
- # # Access route table through the subnet's route table association
297
- # for association in subnet.node.children:
298
- # if hasattr(association, 'route_table_id') and association.route_table_id:
299
- # public_route_table_ids.append(association.route_table_id)
300
- #
301
- # if public_route_table_ids:
302
- # cdk.CfnOutput(
303
- # self,
304
- # f"{vpc_name}-PublicRouteTableIds",
305
- # value=",".join(public_route_table_ids),
306
- # description=f"Public route table IDs for {vpc_name}",
307
- # export_name=f"{self.deployment.workload_name}-{self.deployment.environment}-public-route-table-ids",
308
- # )
309
- #
310
- # private_route_table_ids = []
311
- # if self.vpc.private_subnets:
312
- # for subnet in self.vpc.private_subnets:
313
- # # Access route table through the subnet's route table association
314
- # for association in subnet.node.children:
315
- # if hasattr(association, 'route_table_id') and association.route_table_id:
316
- # private_route_table_ids.append(association.route_table_id)
317
- #
318
- # if private_route_table_ids:
319
- # cdk.CfnOutput(
320
- # self,
321
- # f"{vpc_name}-PrivateRouteTableIds",
322
- # value=",".join(private_route_table_ids),
323
- # description=f"Private route table IDs for {vpc_name}",
324
- # export_name=f"{self.deployment.workload_name}-{self.deployment.environment}-private-route-table-ids",
325
- # )
326
-
327
- # Internet Gateway output
328
- if hasattr(self.vpc, 'internet_gateway_id') and self.vpc.internet_gateway_id:
329
- cdk.CfnOutput(
330
- self,
331
- f"{vpc_name}-InternetGatewayId",
332
- value=self.vpc.internet_gateway_id,
333
- description=f"Internet Gateway ID for {vpc_name}",
334
- export_name=f"{workload_name}-{workload_env}-internet-gateway-id",
335
- )
336
-
337
- # NAT Gateway outputs - simplified to avoid None values
338
- nat_gateway_ids = []
339
- for subnet in self.vpc.public_subnets:
340
- if hasattr(subnet, 'node') and subnet.node:
341
- for child in subnet.node.children:
342
- if hasattr(child, 'nat_gateway_id') and child.nat_gateway_id:
343
- nat_gateway_ids.append(child.nat_gateway_id)
344
-
345
- if nat_gateway_ids:
346
- cdk.CfnOutput(
347
- self,
348
- f"{vpc_name}-NatGatewayIds",
349
- value=",".join(nat_gateway_ids),
350
- description=f"NAT Gateway IDs for {vpc_name}",
351
- export_name=f"{workload_name}-{workload_env}-nat-gateway-ids",
352
- )
244
+ return
245
+
353
246
 
354
247
  def _export_ssm_parameters(self) -> None:
355
248
  """Export SSM parameters using standardized approach"""
@@ -113,12 +113,16 @@ class StaticWebSiteStack(IStack):
113
113
  self, stack_config: StackConfig, workload: WorkloadConfig
114
114
  ) -> str:
115
115
  source = stack_config.dictionary.get("src", {}).get("path")
116
+ if not source:
117
+ raise ValueError("Source path is required for static website stack")
116
118
  for base in workload.paths:
117
- candidate = Path(os.path.join(Path(base), source)).resolve()
119
+ if base is None:
120
+ continue
121
+ candidate = Path(os.path.join(str(Path(base)), source)).resolve()
118
122
 
119
123
  if candidate.exists():
120
124
  return str(candidate)
121
- raise ValueError(f"Could not find the source path: {source}")
125
+ raise ValueError(f"Could not find the source path for static site: {source}")
122
126
 
123
127
  def __setup_cloudfront_distribution(
124
128
  self,
@@ -0,0 +1 @@
1
+ __version__ = "0.19.6"
@@ -1 +0,0 @@
1
- __version__ = "0.18.27"
File without changes
File without changes
File without changes