cdk-factory 0.7.30__tar.gz → 0.7.31__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 (133) hide show
  1. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/PKG-INFO +1 -1
  2. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/pyproject.toml +1 -1
  3. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/constructs/cloudfront/cloudfront_distribution_construct.py +63 -3
  4. cdk_factory-0.7.31/src/cdk_factory/version.py +1 -0
  5. cdk_factory-0.7.30/src/cdk_factory/version.py +0 -1
  6. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/.gitignore +0 -0
  7. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/LICENSE +0 -0
  8. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/README.md +0 -0
  9. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/archive/README.md +0 -0
  10. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/archive/migrate_to_enhanced_ssm.py +0 -0
  11. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/mypy.ini +0 -0
  12. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/publish_to_pypi.py +0 -0
  13. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/publish_to_pypi.sh +0 -0
  14. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/pysetup.py +0 -0
  15. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/pysetup.sh +0 -0
  16. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/requirements.dev.txt +0 -0
  17. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/requirements.tests.txt +0 -0
  18. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/requirements.txt +0 -0
  19. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/run-checks.sh +0 -0
  20. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/run-tests.sh +0 -0
  21. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/__init__.py +0 -0
  22. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/app.py +0 -0
  23. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/builds/README.md +0 -0
  24. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/cdk.json +0 -0
  25. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/commands/command_loader.py +0 -0
  26. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/configurations/base_config.py +0 -0
  27. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/configurations/cdk_config.py +0 -0
  28. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/configurations/deployment.py +0 -0
  29. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/configurations/deployment_wave.py +0 -0
  30. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/configurations/devops.py +0 -0
  31. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/configurations/enhanced_base_config.py +0 -0
  32. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/configurations/enhanced_ssm_config.py +0 -0
  33. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/configurations/management.py +0 -0
  34. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/configurations/pipeline.py +0 -0
  35. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/configurations/pipeline_stage.py +0 -0
  36. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/configurations/resources/_resources.py +0 -0
  37. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/configurations/resources/api_gateway.py +0 -0
  38. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/configurations/resources/apigateway_route_config.py +0 -0
  39. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/configurations/resources/auto_scaling.py +0 -0
  40. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/configurations/resources/cloudfront.py +0 -0
  41. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/configurations/resources/cloudwatch_widget.py +0 -0
  42. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/configurations/resources/code_artifact.py +0 -0
  43. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/configurations/resources/code_artifact_login.py +0 -0
  44. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/configurations/resources/code_repository.py +0 -0
  45. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/configurations/resources/cognito.py +0 -0
  46. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/configurations/resources/docker.py +0 -0
  47. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/configurations/resources/dynamodb.py +0 -0
  48. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/configurations/resources/ecr.py +0 -0
  49. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/configurations/resources/exisiting.py +0 -0
  50. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/configurations/resources/lambda_function.py +0 -0
  51. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/configurations/resources/lambda_layers.py +0 -0
  52. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/configurations/resources/lambda_triggers.py +0 -0
  53. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/configurations/resources/load_balancer.py +0 -0
  54. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/configurations/resources/rds.py +0 -0
  55. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/configurations/resources/resource_mapping.py +0 -0
  56. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/configurations/resources/resource_naming.py +0 -0
  57. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/configurations/resources/resource_types.py +0 -0
  58. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/configurations/resources/route53.py +0 -0
  59. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/configurations/resources/route53_hosted_zone.py +0 -0
  60. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/configurations/resources/rum.py +0 -0
  61. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/configurations/resources/s3.py +0 -0
  62. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/configurations/resources/security_group.py +0 -0
  63. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/configurations/resources/security_group_full_stack.py +0 -0
  64. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/configurations/resources/sqs.py +0 -0
  65. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/configurations/resources/vpc.py +0 -0
  66. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/configurations/stack.py +0 -0
  67. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/configurations/workload.py +0 -0
  68. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/constructs/ecr/ecr_construct.py +0 -0
  69. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/constructs/lambdas/lambda_function_construct.py +0 -0
  70. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/constructs/lambdas/lambda_function_docker_construct.py +0 -0
  71. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/constructs/lambdas/lambda_function_role_construct.py +0 -0
  72. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/constructs/lambdas/policies/policy_docs.py +0 -0
  73. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/constructs/lambdas/policies/policy_statements.py +0 -0
  74. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/constructs/s3_buckets/s3_bucket_construct.py +0 -0
  75. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/constructs/s3_buckets/s3_bucket_replication_destination_construct.py +0 -0
  76. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/constructs/s3_buckets/s3_bucket_replication_source_construct.py +0 -0
  77. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/constructs/sqs/policies/sqs_policies.py +0 -0
  78. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/interfaces/enhanced_ssm_parameter_mixin.py +0 -0
  79. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/interfaces/istack.py +0 -0
  80. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/interfaces/live_ssm_resolver.py +0 -0
  81. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/interfaces/ssm_parameter_mixin.py +0 -0
  82. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/lambdas/health_handler.py +0 -0
  83. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/pipeline/pipeline_factory.py +0 -0
  84. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/pipeline/security/policies.py +0 -0
  85. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/pipeline/security/roles.py +0 -0
  86. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/pipeline/stage.py +0 -0
  87. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/stack/istack.py +0 -0
  88. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/stack/stack_factory.py +0 -0
  89. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/stack/stack_module_loader.py +0 -0
  90. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/stack/stack_module_registry.py +0 -0
  91. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/stack/stack_modules.py +0 -0
  92. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/stack_library/__init__.py +0 -0
  93. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/stack_library/api_gateway/api_gateway_stack.py +0 -0
  94. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/stack_library/auto_scaling/__init__.py +0 -0
  95. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/stack_library/auto_scaling/auto_scaling_stack.py +0 -0
  96. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/stack_library/aws_lambdas/lambda_stack.py +0 -0
  97. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/stack_library/buckets/README.md +0 -0
  98. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/stack_library/buckets/bucket_stack.py +0 -0
  99. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/stack_library/code_artifact/code_artifact_stack.py +0 -0
  100. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/stack_library/cognito/cognito_stack.py +0 -0
  101. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/stack_library/dynamodb/dynamodb_stack.py +0 -0
  102. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/stack_library/ecr/README.md +0 -0
  103. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/stack_library/ecr/ecr_stack.py +0 -0
  104. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/stack_library/load_balancer/__init__.py +0 -0
  105. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/stack_library/load_balancer/load_balancer_stack.py +0 -0
  106. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/stack_library/rds/__init__.py +0 -0
  107. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/stack_library/rds/rds_stack.py +0 -0
  108. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/stack_library/route53/__init__.py +0 -0
  109. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/stack_library/route53/route53_stack.py +0 -0
  110. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/stack_library/rum/__init__.py +0 -0
  111. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/stack_library/rum/rum_stack.py +0 -0
  112. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/stack_library/security_group/__init__.py +0 -0
  113. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/stack_library/security_group/security_group_full_stack.py +0 -0
  114. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/stack_library/security_group/security_group_stack.py +0 -0
  115. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/stack_library/simple_queue_service/sqs_stack.py +0 -0
  116. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/stack_library/stack_base.py +0 -0
  117. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/stack_library/vpc/__init__.py +0 -0
  118. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/stack_library/vpc/vpc_stack.py +0 -0
  119. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/stack_library/websites/static_website_stack.py +0 -0
  120. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/stages/websites/static_website_stage.py +0 -0
  121. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/utilities/api_gateway_integration_utility.py +0 -0
  122. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/utilities/commandline_args.py +0 -0
  123. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/utilities/configuration_loader.py +0 -0
  124. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/utilities/docker_utilities.py +0 -0
  125. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/utilities/environment_services.py +0 -0
  126. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/utilities/file_operations.py +0 -0
  127. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/utilities/git_utilities.py +0 -0
  128. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/utilities/json_loading_utility.py +0 -0
  129. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/utilities/lambda_function_utilities.py +0 -0
  130. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/utilities/os_execute.py +0 -0
  131. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/utils/api_gateway_utilities.py +0 -0
  132. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/src/cdk_factory/workload/workload_factory.py +0 -0
  133. {cdk_factory-0.7.30 → cdk_factory-0.7.31}/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.7.30
3
+ Version: 0.7.31
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.7.30"
36
+ version = "0.7.31"
37
37
  authors = [
38
38
  { name="Eric Wilson", email="eric.wilson@geekcafe.com" }
39
39
  ]
@@ -190,15 +190,23 @@ class CloudFrontDistributionConstruct(Construct):
190
190
  cloudfront_config = self.stack_config.dictionary.get("cloudfront", {})
191
191
  enable_url_rewrite = cloudfront_config.get("enable_url_rewrite", False)
192
192
 
193
- if enable_url_rewrite:
193
+ # CloudFront only allows ONE function per event type
194
+ # If both URL rewrite and host restrictions are needed, combine them
195
+ if enable_url_rewrite and self.restrict_to_known_hosts and self.aliases:
196
+ function_associations.append(
197
+ cloudfront.FunctionAssociation(
198
+ function=self.__get_combined_function(hosts=self.aliases),
199
+ event_type=cloudfront.FunctionEventType.VIEWER_REQUEST,
200
+ )
201
+ )
202
+ elif enable_url_rewrite:
194
203
  function_associations.append(
195
204
  cloudfront.FunctionAssociation(
196
205
  function=self.__get_url_rewrite_function(),
197
206
  event_type=cloudfront.FunctionEventType.VIEWER_REQUEST,
198
207
  )
199
208
  )
200
-
201
- if self.restrict_to_known_hosts and self.aliases:
209
+ elif self.restrict_to_known_hosts and self.aliases:
202
210
  function_associations.append(
203
211
  cloudfront.FunctionAssociation(
204
212
  function=self.__get_cloudfront_host_restrictions(
@@ -210,6 +218,58 @@ class CloudFrontDistributionConstruct(Construct):
210
218
 
211
219
  return function_associations
212
220
 
221
+ def __get_combined_function(self, hosts: List[str]) -> cloudfront.Function:
222
+ """
223
+ Creates a combined CloudFront function that does both URL rewriting and host restrictions.
224
+ This is necessary because CloudFront only allows one function per event type.
225
+
226
+ Args:
227
+ hosts: List of allowed hostnames
228
+
229
+ Returns:
230
+ cloudfront.Function: Combined function
231
+ """
232
+ allowed_hosts = "[" + ", ".join(f"'{host}'" for host in hosts) + "]"
233
+
234
+ function_code = f"""
235
+ function handler(event) {{
236
+ var request = event.request;
237
+ var allowedHosts = {allowed_hosts};
238
+ var hostHeader = request.headers.host.value;
239
+
240
+ // Check host restrictions first
241
+ if (allowedHosts.indexOf(hostHeader) === -1) {{
242
+ return {{ statusCode: 403, statusDescription: 'Forbidden' }};
243
+ }}
244
+
245
+ // Then do URL rewrite
246
+ var uri = request.uri;
247
+
248
+ // If URI doesn't have a file extension and doesn't end with /
249
+ if (!uri.includes('.') && !uri.endsWith('/')) {{
250
+ request.uri = uri + '/index.html';
251
+ }}
252
+ // If URI ends with / but not index.html
253
+ else if (uri.endsWith('/') && !uri.endsWith('index.html')) {{
254
+ request.uri = uri + 'index.html';
255
+ }}
256
+ // If URI is exactly /
257
+ else if (uri === '/') {{
258
+ request.uri = '/index.html';
259
+ }}
260
+
261
+ return request;
262
+ }}
263
+ """
264
+
265
+ combined_function = cloudfront.Function(
266
+ self,
267
+ "CombinedFunction",
268
+ comment="Combined URL rewrite and host restrictions for static site routing",
269
+ code=cloudfront.FunctionCode.from_inline(function_code),
270
+ )
271
+ return combined_function
272
+
213
273
  def __get_url_rewrite_function(self) -> cloudfront.Function:
214
274
  """
215
275
  Creates a CloudFront function that rewrites URLs for SPA/static site routing.
@@ -0,0 +1 @@
1
+ __version__ = "0.7.31"
@@ -1 +0,0 @@
1
- __version__ = "0.7.30"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes