cdk-factory 0.14.0__tar.gz → 0.15.0__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 (157) hide show
  1. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/PKG-INFO +1 -1
  2. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/pyproject.toml +1 -1
  3. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/constructs/cloudfront/cloudfront_distribution_construct.py +2 -1
  4. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/lambdas/edge/ip_gate/handler.py +56 -1
  5. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/stack_library/websites/static_website_stack.py +2 -3
  6. cdk_factory-0.15.0/src/cdk_factory/version.py +1 -0
  7. cdk_factory-0.14.0/src/cdk_factory/version.py +0 -1
  8. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/.gitignore +0 -0
  9. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/.windsurfrules +0 -0
  10. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/LICENSE +0 -0
  11. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/README.md +0 -0
  12. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/archive/README.md +0 -0
  13. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/archive/migrate_to_enhanced_ssm.py +0 -0
  14. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/examples/json-imports/README.md +0 -0
  15. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/examples/separate-api-gateway/README.md +0 -0
  16. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/examples/separate-api-gateway/api-gateway-stack.json +0 -0
  17. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/examples/separate-api-gateway/config.json +0 -0
  18. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/examples/separate-api-gateway/lambda-stack.json +0 -0
  19. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/mypy.ini +0 -0
  20. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/publish_to_pypi.py +0 -0
  21. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/publish_to_pypi.sh +0 -0
  22. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/pysetup.py +0 -0
  23. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/pysetup.sh +0 -0
  24. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/requirements.dev.txt +0 -0
  25. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/requirements.tests.txt +0 -0
  26. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/requirements.txt +0 -0
  27. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/run-checks.sh +0 -0
  28. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/run-tests-clean-venv.sh +0 -0
  29. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/run-tests.sh +0 -0
  30. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/__init__.py +0 -0
  31. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/app.py +0 -0
  32. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/builds/README.md +0 -0
  33. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/cdk.json +0 -0
  34. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/cli.py +0 -0
  35. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/commands/command_loader.py +0 -0
  36. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/base_config.py +0 -0
  37. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/cdk_config.py +0 -0
  38. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/deployment.py +0 -0
  39. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/deployment_wave.py +0 -0
  40. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/devops.py +0 -0
  41. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/enhanced_base_config.py +0 -0
  42. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/enhanced_ssm_config.py +0 -0
  43. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/management.py +0 -0
  44. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/pipeline.py +0 -0
  45. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/pipeline_stage.py +0 -0
  46. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/resources/_resources.py +0 -0
  47. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/resources/api_gateway.py +0 -0
  48. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/resources/apigateway_route_config.py +0 -0
  49. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/resources/auto_scaling.py +0 -0
  50. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/resources/cloudfront.py +0 -0
  51. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/resources/cloudwatch_widget.py +0 -0
  52. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/resources/code_artifact.py +0 -0
  53. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/resources/code_artifact_login.py +0 -0
  54. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/resources/code_repository.py +0 -0
  55. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/resources/cognito.py +0 -0
  56. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/resources/docker.py +0 -0
  57. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/resources/dynamodb.py +0 -0
  58. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/resources/ecr.py +0 -0
  59. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/resources/ecs_service.py +0 -0
  60. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/resources/exisiting.py +0 -0
  61. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/resources/lambda_edge.py +0 -0
  62. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/resources/lambda_function.py +0 -0
  63. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/resources/lambda_layers.py +0 -0
  64. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/resources/lambda_triggers.py +0 -0
  65. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/resources/load_balancer.py +0 -0
  66. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/resources/monitoring.py +0 -0
  67. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/resources/rds.py +0 -0
  68. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/resources/resource_mapping.py +0 -0
  69. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/resources/resource_naming.py +0 -0
  70. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/resources/resource_types.py +0 -0
  71. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/resources/route53.py +0 -0
  72. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/resources/route53_hosted_zone.py +0 -0
  73. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/resources/rum.py +0 -0
  74. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/resources/s3.py +0 -0
  75. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/resources/security_group.py +0 -0
  76. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/resources/security_group_full_stack.py +0 -0
  77. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/resources/sqs.py +0 -0
  78. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/resources/vpc.py +0 -0
  79. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/stack.py +0 -0
  80. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/configurations/workload.py +0 -0
  81. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/constructs/ecr/ecr_construct.py +0 -0
  82. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/constructs/lambdas/lambda_function_construct.py +0 -0
  83. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/constructs/lambdas/lambda_function_docker_construct.py +0 -0
  84. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/constructs/lambdas/lambda_function_role_construct.py +0 -0
  85. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/constructs/lambdas/policies/policy_docs.py +0 -0
  86. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/constructs/lambdas/policies/policy_statements.py +0 -0
  87. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/constructs/s3_buckets/s3_bucket_construct.py +0 -0
  88. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/constructs/s3_buckets/s3_bucket_replication_destination_construct.py +0 -0
  89. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/constructs/s3_buckets/s3_bucket_replication_source_construct.py +0 -0
  90. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/constructs/sqs/policies/sqs_policies.py +0 -0
  91. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/interfaces/enhanced_ssm_parameter_mixin.py +0 -0
  92. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/interfaces/istack.py +0 -0
  93. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/interfaces/live_ssm_resolver.py +0 -0
  94. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/interfaces/ssm_parameter_mixin.py +0 -0
  95. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/lambdas/health_handler.py +0 -0
  96. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/pipeline/path_utils.py +0 -0
  97. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/pipeline/pipeline_factory.py +0 -0
  98. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/pipeline/security/policies.py +0 -0
  99. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/pipeline/security/roles.py +0 -0
  100. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/pipeline/stage.py +0 -0
  101. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/stack/istack.py +0 -0
  102. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/stack/stack_factory.py +0 -0
  103. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/stack/stack_module_loader.py +0 -0
  104. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/stack/stack_module_registry.py +0 -0
  105. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/stack/stack_modules.py +0 -0
  106. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/stack_library/__init__.py +0 -0
  107. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/stack_library/api_gateway/api_gateway_stack.py +0 -0
  108. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/stack_library/auto_scaling/__init__.py +0 -0
  109. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/stack_library/auto_scaling/auto_scaling_stack.py +0 -0
  110. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/stack_library/aws_lambdas/lambda_stack.py +0 -0
  111. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/stack_library/buckets/README.md +0 -0
  112. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/stack_library/buckets/bucket_stack.py +0 -0
  113. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/stack_library/cloudfront/__init__.py +0 -0
  114. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/stack_library/cloudfront/cloudfront_stack.py +0 -0
  115. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/stack_library/code_artifact/code_artifact_stack.py +0 -0
  116. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/stack_library/cognito/cognito_stack.py +0 -0
  117. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/stack_library/dynamodb/dynamodb_stack.py +0 -0
  118. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/stack_library/ecr/README.md +0 -0
  119. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/stack_library/ecr/ecr_stack.py +0 -0
  120. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/stack_library/ecs/__init__.py +0 -0
  121. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/stack_library/ecs/ecs_service_stack.py +0 -0
  122. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/stack_library/lambda_edge/__init__.py +0 -0
  123. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/stack_library/lambda_edge/lambda_edge_stack.py +0 -0
  124. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/stack_library/load_balancer/__init__.py +0 -0
  125. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/stack_library/load_balancer/load_balancer_stack.py +0 -0
  126. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/stack_library/monitoring/__init__.py +0 -0
  127. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/stack_library/monitoring/monitoring_stack.py +0 -0
  128. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/stack_library/rds/__init__.py +0 -0
  129. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/stack_library/rds/rds_stack.py +0 -0
  130. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/stack_library/route53/__init__.py +0 -0
  131. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/stack_library/route53/route53_stack.py +0 -0
  132. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/stack_library/rum/__init__.py +0 -0
  133. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/stack_library/rum/rum_stack.py +0 -0
  134. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/stack_library/security_group/__init__.py +0 -0
  135. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/stack_library/security_group/security_group_full_stack.py +0 -0
  136. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/stack_library/security_group/security_group_stack.py +0 -0
  137. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/stack_library/simple_queue_service/sqs_stack.py +0 -0
  138. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/stack_library/stack_base.py +0 -0
  139. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/stack_library/vpc/__init__.py +0 -0
  140. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/stack_library/vpc/vpc_stack.py +0 -0
  141. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/stages/websites/static_website_stage.py +0 -0
  142. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/templates/README.md +0 -0
  143. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/templates/app.py.template +0 -0
  144. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/templates/cdk.json.template +0 -0
  145. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/utilities/api_gateway_integration_utility.py +0 -0
  146. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/utilities/commandline_args.py +0 -0
  147. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/utilities/configuration_loader.py +0 -0
  148. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/utilities/docker_utilities.py +0 -0
  149. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/utilities/environment_services.py +0 -0
  150. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/utilities/file_operations.py +0 -0
  151. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/utilities/git_utilities.py +0 -0
  152. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/utilities/json_loading_utility.py +0 -0
  153. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/utilities/lambda_function_utilities.py +0 -0
  154. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/utilities/os_execute.py +0 -0
  155. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/utils/api_gateway_utilities.py +0 -0
  156. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/src/cdk_factory/workload/workload_factory.py +0 -0
  157. {cdk_factory-0.14.0 → cdk_factory-0.15.0}/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.14.0
3
+ Version: 0.15.0
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.14.0"
36
+ version = "0.15.0"
37
37
  authors = [
38
38
  { name="Eric Wilson", email="eric.wilson@geekcafe.com" }
39
39
  ]
@@ -292,8 +292,9 @@ class CloudFrontDistributionConstruct(Construct):
292
292
  logger.info(f"Using IP gate Lambda ARN from SSM: {ip_gate_ssm_path}")
293
293
 
294
294
  # Add the IP gating Lambda@Edge association
295
+ # MUST use viewer-request to run BEFORE cache check!
295
296
  lambda_edge_associations = [{
296
- "event_type": "origin-request",
297
+ "event_type": "viewer-request",
297
298
  "lambda_arn": f"{{{{ssm:{ip_gate_ssm_path}}}}}",
298
299
  "include_body": False
299
300
  }]
@@ -178,7 +178,58 @@ def lambda_handler(event, context):
178
178
  print(f"IP {client_ip} is allowed")
179
179
  return request
180
180
 
181
- # IP not allowed - redirect to maintenance page
181
+ # IP not allowed - either redirect or proxy maintenance page
182
+ # 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')
185
+
186
+ 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}")
189
+
190
+ try:
191
+ import urllib3
192
+ http = urllib3.PoolManager()
193
+
194
+ # Fetch the maintenance page
195
+ maint_response = http.request(
196
+ 'GET',
197
+ f'https://{maint_cf_host}',
198
+ headers={'User-Agent': 'CloudFront-IP-Gate-Proxy'},
199
+ timeout=3.0
200
+ )
201
+
202
+ # Return the maintenance content
203
+ response = {
204
+ 'status': str(maint_response.status),
205
+ 'statusDescription': 'OK' if maint_response.status == 200 else 'Service Unavailable',
206
+ 'headers': {
207
+ 'content-type': [{
208
+ 'key': 'Content-Type',
209
+ 'value': maint_response.headers.get('Content-Type', 'text/html')
210
+ }],
211
+ 'cache-control': [{
212
+ 'key': 'Cache-Control',
213
+ 'value': 'no-cache, no-store, must-revalidate, max-age=0'
214
+ }],
215
+ 'x-ip-gate-mode': [{
216
+ 'key': 'X-IP-Gate-Mode',
217
+ 'value': 'proxy'
218
+ }]
219
+ },
220
+ 'body': maint_response.data.decode('utf-8')
221
+ }
222
+
223
+ print(f"Successfully proxied maintenance page (status {maint_response.status})")
224
+ return response
225
+
226
+ except Exception as proxy_error:
227
+ print(f"Error proxying maintenance content: {str(proxy_error)}")
228
+ # Fall back to redirect if proxy fails
229
+ print(f"Falling back to redirect mode")
230
+ response_mode = 'redirect'
231
+
232
+ # Redirect mode (default): HTTP 302 redirect to maintenance site
182
233
  print(f"IP {client_ip} is NOT allowed, redirecting to {maint_cf_host}")
183
234
 
184
235
  response = {
@@ -192,6 +243,10 @@ def lambda_handler(event, context):
192
243
  'cache-control': [{
193
244
  'key': 'Cache-Control',
194
245
  'value': 'no-cache, no-store, must-revalidate'
246
+ }],
247
+ 'x-ip-gate-mode': [{
248
+ 'key': 'X-IP-Gate-Mode',
249
+ 'value': 'redirect'
195
250
  }]
196
251
  }
197
252
  }
@@ -95,9 +95,8 @@ class StaticWebSiteStack(IStack):
95
95
  hosted_zone=hosted_zone,
96
96
  )
97
97
 
98
- if stack_config.dependencies:
99
- for dependency in stack_config.dependencies:
100
- self.add_dependency(deployment.build_resource_name(dependency))
98
+ # Note: Stack dependencies are handled by pipeline_factory, not here
99
+ # Dependencies are resolved after all stacks are created so we have stack objects
101
100
 
102
101
  def __get_s3_website_bucket(
103
102
  self, stack_config: StackConfig, deployment: DeploymentConfig
@@ -0,0 +1 @@
1
+ __version__ = "0.15.0"
@@ -1 +0,0 @@
1
- __version__ = "0.14.0"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes