cdk-factory 0.15.6__tar.gz → 0.15.8__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 (158) hide show
  1. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/PKG-INFO +1 -1
  2. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/pyproject.toml +1 -1
  3. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/lambdas/edge/ip_gate/handler.py +33 -23
  4. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/stack_library/websites/static_website_stack.py +12 -0
  5. cdk_factory-0.15.8/src/cdk_factory/version.py +1 -0
  6. cdk_factory-0.15.6/src/cdk_factory/version.py +0 -1
  7. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/.gitignore +0 -0
  8. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/.windsurfrules +0 -0
  9. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/LICENSE +0 -0
  10. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/README.md +0 -0
  11. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/archive/README.md +0 -0
  12. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/archive/migrate_to_enhanced_ssm.py +0 -0
  13. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/examples/json-imports/README.md +0 -0
  14. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/examples/separate-api-gateway/README.md +0 -0
  15. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/examples/separate-api-gateway/api-gateway-stack.json +0 -0
  16. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/examples/separate-api-gateway/config.json +0 -0
  17. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/examples/separate-api-gateway/lambda-stack.json +0 -0
  18. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/mypy.ini +0 -0
  19. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/publish_to_pypi.py +0 -0
  20. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/publish_to_pypi.sh +0 -0
  21. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/pysetup.py +0 -0
  22. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/pysetup.sh +0 -0
  23. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/requirements.dev.txt +0 -0
  24. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/requirements.tests.txt +0 -0
  25. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/requirements.txt +0 -0
  26. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/run-checks.sh +0 -0
  27. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/run-tests-clean-venv.sh +0 -0
  28. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/run-tests.sh +0 -0
  29. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/scripts/cloudfront-cleanup.sh +0 -0
  30. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/__init__.py +0 -0
  31. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/app.py +0 -0
  32. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/builds/README.md +0 -0
  33. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/cdk.json +0 -0
  34. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/cli.py +0 -0
  35. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/commands/command_loader.py +0 -0
  36. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/base_config.py +0 -0
  37. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/cdk_config.py +0 -0
  38. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/deployment.py +0 -0
  39. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/deployment_wave.py +0 -0
  40. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/devops.py +0 -0
  41. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/enhanced_base_config.py +0 -0
  42. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/enhanced_ssm_config.py +0 -0
  43. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/management.py +0 -0
  44. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/pipeline.py +0 -0
  45. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/pipeline_stage.py +0 -0
  46. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/resources/_resources.py +0 -0
  47. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/resources/api_gateway.py +0 -0
  48. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/resources/apigateway_route_config.py +0 -0
  49. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/resources/auto_scaling.py +0 -0
  50. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/resources/cloudfront.py +0 -0
  51. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/resources/cloudwatch_widget.py +0 -0
  52. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/resources/code_artifact.py +0 -0
  53. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/resources/code_artifact_login.py +0 -0
  54. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/resources/code_repository.py +0 -0
  55. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/resources/cognito.py +0 -0
  56. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/resources/docker.py +0 -0
  57. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/resources/dynamodb.py +0 -0
  58. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/resources/ecr.py +0 -0
  59. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/resources/ecs_service.py +0 -0
  60. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/resources/exisiting.py +0 -0
  61. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/resources/lambda_edge.py +0 -0
  62. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/resources/lambda_function.py +0 -0
  63. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/resources/lambda_layers.py +0 -0
  64. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/resources/lambda_triggers.py +0 -0
  65. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/resources/load_balancer.py +0 -0
  66. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/resources/monitoring.py +0 -0
  67. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/resources/rds.py +0 -0
  68. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/resources/resource_mapping.py +0 -0
  69. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/resources/resource_naming.py +0 -0
  70. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/resources/resource_types.py +0 -0
  71. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/resources/route53.py +0 -0
  72. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/resources/route53_hosted_zone.py +0 -0
  73. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/resources/rum.py +0 -0
  74. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/resources/s3.py +0 -0
  75. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/resources/security_group.py +0 -0
  76. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/resources/security_group_full_stack.py +0 -0
  77. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/resources/sqs.py +0 -0
  78. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/resources/vpc.py +0 -0
  79. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/stack.py +0 -0
  80. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/configurations/workload.py +0 -0
  81. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/constructs/cloudfront/cloudfront_distribution_construct.py +0 -0
  82. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/constructs/ecr/ecr_construct.py +0 -0
  83. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/constructs/lambdas/lambda_function_construct.py +0 -0
  84. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/constructs/lambdas/lambda_function_docker_construct.py +0 -0
  85. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/constructs/lambdas/lambda_function_role_construct.py +0 -0
  86. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/constructs/lambdas/policies/policy_docs.py +0 -0
  87. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/constructs/lambdas/policies/policy_statements.py +0 -0
  88. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/constructs/s3_buckets/s3_bucket_construct.py +0 -0
  89. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/constructs/s3_buckets/s3_bucket_replication_destination_construct.py +0 -0
  90. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/constructs/s3_buckets/s3_bucket_replication_source_construct.py +0 -0
  91. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/constructs/sqs/policies/sqs_policies.py +0 -0
  92. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/interfaces/enhanced_ssm_parameter_mixin.py +0 -0
  93. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/interfaces/istack.py +0 -0
  94. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/interfaces/live_ssm_resolver.py +0 -0
  95. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/interfaces/ssm_parameter_mixin.py +0 -0
  96. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/lambdas/health_handler.py +0 -0
  97. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/pipeline/path_utils.py +0 -0
  98. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/pipeline/pipeline_factory.py +0 -0
  99. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/pipeline/security/policies.py +0 -0
  100. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/pipeline/security/roles.py +0 -0
  101. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/pipeline/stage.py +0 -0
  102. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/stack/istack.py +0 -0
  103. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/stack/stack_factory.py +0 -0
  104. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/stack/stack_module_loader.py +0 -0
  105. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/stack/stack_module_registry.py +0 -0
  106. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/stack/stack_modules.py +0 -0
  107. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/stack_library/__init__.py +0 -0
  108. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/stack_library/api_gateway/api_gateway_stack.py +0 -0
  109. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/stack_library/auto_scaling/__init__.py +0 -0
  110. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/stack_library/auto_scaling/auto_scaling_stack.py +0 -0
  111. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/stack_library/aws_lambdas/lambda_stack.py +0 -0
  112. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/stack_library/buckets/README.md +0 -0
  113. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/stack_library/buckets/bucket_stack.py +0 -0
  114. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/stack_library/cloudfront/__init__.py +0 -0
  115. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/stack_library/cloudfront/cloudfront_stack.py +0 -0
  116. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/stack_library/code_artifact/code_artifact_stack.py +0 -0
  117. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/stack_library/cognito/cognito_stack.py +0 -0
  118. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/stack_library/dynamodb/dynamodb_stack.py +0 -0
  119. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/stack_library/ecr/README.md +0 -0
  120. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/stack_library/ecr/ecr_stack.py +0 -0
  121. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/stack_library/ecs/__init__.py +0 -0
  122. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/stack_library/ecs/ecs_service_stack.py +0 -0
  123. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/stack_library/lambda_edge/__init__.py +0 -0
  124. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/stack_library/lambda_edge/lambda_edge_stack.py +0 -0
  125. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/stack_library/load_balancer/__init__.py +0 -0
  126. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/stack_library/load_balancer/load_balancer_stack.py +0 -0
  127. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/stack_library/monitoring/__init__.py +0 -0
  128. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/stack_library/monitoring/monitoring_stack.py +0 -0
  129. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/stack_library/rds/__init__.py +0 -0
  130. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/stack_library/rds/rds_stack.py +0 -0
  131. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/stack_library/route53/__init__.py +0 -0
  132. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/stack_library/route53/route53_stack.py +0 -0
  133. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/stack_library/rum/__init__.py +0 -0
  134. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/stack_library/rum/rum_stack.py +0 -0
  135. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/stack_library/security_group/__init__.py +0 -0
  136. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/stack_library/security_group/security_group_full_stack.py +0 -0
  137. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/stack_library/security_group/security_group_stack.py +0 -0
  138. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/stack_library/simple_queue_service/sqs_stack.py +0 -0
  139. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/stack_library/stack_base.py +0 -0
  140. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/stack_library/vpc/__init__.py +0 -0
  141. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/stack_library/vpc/vpc_stack.py +0 -0
  142. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/stages/websites/static_website_stage.py +0 -0
  143. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/templates/README.md +0 -0
  144. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/templates/app.py.template +0 -0
  145. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/templates/cdk.json.template +0 -0
  146. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/utilities/api_gateway_integration_utility.py +0 -0
  147. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/utilities/commandline_args.py +0 -0
  148. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/utilities/configuration_loader.py +0 -0
  149. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/utilities/docker_utilities.py +0 -0
  150. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/utilities/environment_services.py +0 -0
  151. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/utilities/file_operations.py +0 -0
  152. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/utilities/git_utilities.py +0 -0
  153. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/utilities/json_loading_utility.py +0 -0
  154. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/utilities/lambda_function_utilities.py +0 -0
  155. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/utilities/os_execute.py +0 -0
  156. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/utils/api_gateway_utilities.py +0 -0
  157. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/src/cdk_factory/workload/workload_factory.py +0 -0
  158. {cdk_factory-0.15.6 → cdk_factory-0.15.8}/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.6
3
+ Version: 0.15.8
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.6"
36
+ version = "0.15.8"
37
37
  authors = [
38
38
  { name="Eric Wilson", email="eric.wilson@geekcafe.com" }
39
39
  ]
@@ -15,7 +15,7 @@ from functools import lru_cache
15
15
  ssm = None
16
16
 
17
17
  @lru_cache(maxsize=128)
18
- def get_ssm_parameter(parameter_name: str, region: str = 'us-east-1') -> str:
18
+ def get_ssm_parameter(parameter_name: str, region: str = 'us-east-1', default: str = None) -> str:
19
19
  """
20
20
  Fetch SSM parameter with caching.
21
21
  Lambda@Edge cannot use environment variables, so we fetch from SSM.
@@ -25,9 +25,10 @@ def get_ssm_parameter(parameter_name: str, region: str = 'us-east-1') -> str:
25
25
  Args:
26
26
  parameter_name: Name of the SSM parameter
27
27
  region: AWS region (default us-east-1)
28
+ default: Default value to return if parameter not found (optional)
28
29
 
29
30
  Returns:
30
- Parameter value, or empty string if value is 'NONE'
31
+ Parameter value, default value if parameter not found, or empty string if value is 'NONE'
31
32
  """
32
33
  global ssm
33
34
  if ssm is None:
@@ -43,8 +44,17 @@ def get_ssm_parameter(parameter_name: str, region: str = 'us-east-1') -> str:
43
44
  return ''
44
45
 
45
46
  return value
47
+ except ssm.exceptions.ParameterNotFound:
48
+ if default is not None:
49
+ print(f"SSM parameter {parameter_name} not found, using default: {default}")
50
+ return default
51
+ print(f"SSM parameter {parameter_name} not found and no default provided")
52
+ raise
46
53
  except Exception as e:
47
54
  print(f"Error fetching SSM parameter {parameter_name}: {str(e)}")
55
+ if default is not None:
56
+ print(f"Returning default value due to error: {default}")
57
+ return default
48
58
  raise
49
59
 
50
60
 
@@ -103,7 +113,7 @@ def lambda_handler(event, context):
103
113
  Configuration (fetched from SSM Parameter Store):
104
114
  - GATE_ENABLED: Whether IP gating is enabled (true/false)
105
115
  - ALLOW_CIDRS: Comma-separated list of allowed CIDR ranges
106
- - MAINT_CF_HOST: CloudFront domain for maintenance/lockout page
116
+ - DNS_ALIAS: CloudFront domain for backup/lockout page
107
117
 
108
118
  Runtime configuration is bundled in runtime_config.json by CDK.
109
119
  SSM parameter paths are auto-generated by CDK as:
@@ -162,9 +172,9 @@ def lambda_handler(event, context):
162
172
  print(f"IP gating is disabled (GATE_ENABLED={gate_enabled or 'NONE'})")
163
173
  return request
164
174
 
165
- # Get allowed CIDRs and maintenance host
175
+ # Get allowed CIDRs and backup host
166
176
  allow_cidrs_str = get_ssm_parameter(f'/{env}/{function_name}/allow-cidrs', 'us-east-1')
167
- maint_cf_host = get_ssm_parameter(f'/{env}/{function_name}/maint-cf-host', 'us-east-1')
177
+ dns_alias = get_ssm_parameter(f'/{env}/{function_name}/dns-alias', 'us-east-1')
168
178
 
169
179
  # Parse allowed CIDRs (empty string results in empty list)
170
180
  allowed_cidrs = [cidr.strip() for cidr in allow_cidrs_str.split(',') if cidr.strip()]
@@ -178,35 +188,35 @@ def lambda_handler(event, context):
178
188
  print(f"IP {client_ip} is allowed")
179
189
  return request
180
190
 
181
- # IP not allowed - either redirect or proxy maintenance page
191
+ # IP not allowed - either redirect or proxy backup page
182
192
  # Check response mode from SSM (default: redirect for backward compatibility)
183
- response_mode_param = f"/{function_name}/response-mode"
184
- response_mode = get_ssm_parameter(response_mode_param, default='redirect')
193
+ response_mode_param = f"/{env}/{function_name}/response-mode"
194
+ response_mode = get_ssm_parameter(response_mode_param, 'us-east-1', default='redirect')
185
195
 
186
196
  if response_mode == 'proxy':
187
- # Proxy mode: Fetch and return maintenance content (keeps URL the same)
188
- print(f"IP {client_ip} is NOT allowed, proxying content from {maint_cf_host}")
197
+ # Proxy mode: Fetch and return backup content (keeps URL the same)
198
+ print(f"IP {client_ip} is NOT allowed, proxying content from {dns_alias}")
189
199
 
190
200
  try:
191
201
  import urllib3
192
202
  http = urllib3.PoolManager()
193
203
 
194
- # Fetch the maintenance page
195
- maint_response = http.request(
204
+ # Fetch the backup page - always request /index.html
205
+ alias_response = http.request(
196
206
  'GET',
197
- f'https://{maint_cf_host}',
207
+ f'https://{dns_alias}/index.html',
198
208
  headers={'User-Agent': 'CloudFront-IP-Gate-Proxy'},
199
209
  timeout=3.0
200
210
  )
201
211
 
202
- # Return the maintenance content
212
+ # Return the backup content
203
213
  response = {
204
- 'status': str(maint_response.status),
205
- 'statusDescription': 'OK' if maint_response.status == 200 else 'Service Unavailable',
214
+ 'status': str(alias_response.status),
215
+ 'statusDescription': 'OK' if alias_response.status == 200 else 'Service Unavailable',
206
216
  'headers': {
207
217
  'content-type': [{
208
218
  'key': 'Content-Type',
209
- 'value': maint_response.headers.get('Content-Type', 'text/html')
219
+ 'value': alias_response.headers.get('Content-Type', 'text/html')
210
220
  }],
211
221
  'cache-control': [{
212
222
  'key': 'Cache-Control',
@@ -217,20 +227,20 @@ def lambda_handler(event, context):
217
227
  'value': 'proxy'
218
228
  }]
219
229
  },
220
- 'body': maint_response.data.decode('utf-8')
230
+ 'body': alias_response.data.decode('utf-8')
221
231
  }
222
232
 
223
- print(f"Successfully proxied maintenance page (status {maint_response.status})")
233
+ print(f"Successfully proxied backup page (status {alias_response.status})")
224
234
  return response
225
235
 
226
236
  except Exception as proxy_error:
227
- print(f"Error proxying maintenance content: {str(proxy_error)}")
237
+ print(f"Error proxying backup content: {str(proxy_error)}")
228
238
  # Fall back to redirect if proxy fails
229
239
  print(f"Falling back to redirect mode")
230
240
  response_mode = 'redirect'
231
241
 
232
- # Redirect mode (default): HTTP 302 redirect to maintenance site
233
- print(f"IP {client_ip} is NOT allowed, redirecting to {maint_cf_host}")
242
+ # Redirect mode (default): HTTP 302 redirect to backup site
243
+ print(f"IP {client_ip} is NOT allowed, redirecting to {dns_alias}")
234
244
 
235
245
  response = {
236
246
  'status': '302',
@@ -238,7 +248,7 @@ def lambda_handler(event, context):
238
248
  'headers': {
239
249
  'location': [{
240
250
  'key': 'Location',
241
- 'value': f'https://{maint_cf_host}'
251
+ 'value': f'https://{dns_alias}'
242
252
  }],
243
253
  'cache-control': [{
244
254
  'key': 'Cache-Control',
@@ -261,6 +261,18 @@ class StaticWebSiteStack(IStack):
261
261
  description=f"CloudFront distribution ID for {stack_config.name}",
262
262
  )
263
263
 
264
+ # Export DNS alias (first alias) if configured
265
+ if "dns_alias" in ssm_exports and cloudfront_distribution.aliases:
266
+ # Export the first alias (primary domain)
267
+ primary_alias = cloudfront_distribution.aliases[0] if isinstance(cloudfront_distribution.aliases, list) else cloudfront_distribution.aliases
268
+ self.export_ssm_parameter(
269
+ scope=self,
270
+ id="SsmExportDnsAlias",
271
+ value=primary_alias,
272
+ parameter_name=ssm_exports["dns_alias"],
273
+ description=f"Primary DNS alias for {stack_config.name}",
274
+ )
275
+
264
276
  logger.info(f"Exported {len(ssm_exports)} SSM parameters for stack {stack_config.name}")
265
277
 
266
278
  def __get_version_number(self, assets_path: str) -> str:
@@ -0,0 +1 @@
1
+ __version__ = "0.15.8"
@@ -1 +0,0 @@
1
- __version__ = "0.15.6"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes