cdk-factory 0.11.0__tar.gz → 0.13.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.11.0 → cdk_factory-0.13.0}/PKG-INFO +1 -1
  2. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/pyproject.toml +1 -1
  3. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/stack_library/lambda_edge/lambda_edge_stack.py +78 -5
  4. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/stack_library/websites/static_website_stack.py +59 -0
  5. cdk_factory-0.13.0/src/cdk_factory/version.py +1 -0
  6. cdk_factory-0.11.0/src/cdk_factory/version.py +0 -1
  7. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/.gitignore +0 -0
  8. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/.windsurfrules +0 -0
  9. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/LICENSE +0 -0
  10. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/README.md +0 -0
  11. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/archive/README.md +0 -0
  12. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/archive/migrate_to_enhanced_ssm.py +0 -0
  13. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/examples/json-imports/README.md +0 -0
  14. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/examples/separate-api-gateway/README.md +0 -0
  15. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/examples/separate-api-gateway/api-gateway-stack.json +0 -0
  16. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/examples/separate-api-gateway/config.json +0 -0
  17. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/examples/separate-api-gateway/lambda-stack.json +0 -0
  18. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/mypy.ini +0 -0
  19. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/publish_to_pypi.py +0 -0
  20. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/publish_to_pypi.sh +0 -0
  21. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/pysetup.py +0 -0
  22. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/pysetup.sh +0 -0
  23. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/requirements.dev.txt +0 -0
  24. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/requirements.tests.txt +0 -0
  25. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/requirements.txt +0 -0
  26. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/run-checks.sh +0 -0
  27. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/run-tests-clean-venv.sh +0 -0
  28. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/run-tests.sh +0 -0
  29. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/__init__.py +0 -0
  30. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/app.py +0 -0
  31. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/builds/README.md +0 -0
  32. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/cdk.json +0 -0
  33. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/cli.py +0 -0
  34. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/commands/command_loader.py +0 -0
  35. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/base_config.py +0 -0
  36. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/cdk_config.py +0 -0
  37. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/deployment.py +0 -0
  38. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/deployment_wave.py +0 -0
  39. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/devops.py +0 -0
  40. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/enhanced_base_config.py +0 -0
  41. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/enhanced_ssm_config.py +0 -0
  42. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/management.py +0 -0
  43. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/pipeline.py +0 -0
  44. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/pipeline_stage.py +0 -0
  45. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/resources/_resources.py +0 -0
  46. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/resources/api_gateway.py +0 -0
  47. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/resources/apigateway_route_config.py +0 -0
  48. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/resources/auto_scaling.py +0 -0
  49. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/resources/cloudfront.py +0 -0
  50. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/resources/cloudwatch_widget.py +0 -0
  51. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/resources/code_artifact.py +0 -0
  52. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/resources/code_artifact_login.py +0 -0
  53. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/resources/code_repository.py +0 -0
  54. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/resources/cognito.py +0 -0
  55. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/resources/docker.py +0 -0
  56. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/resources/dynamodb.py +0 -0
  57. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/resources/ecr.py +0 -0
  58. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/resources/ecs_service.py +0 -0
  59. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/resources/exisiting.py +0 -0
  60. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/resources/lambda_edge.py +0 -0
  61. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/resources/lambda_function.py +0 -0
  62. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/resources/lambda_layers.py +0 -0
  63. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/resources/lambda_triggers.py +0 -0
  64. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/resources/load_balancer.py +0 -0
  65. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/resources/monitoring.py +0 -0
  66. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/resources/rds.py +0 -0
  67. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/resources/resource_mapping.py +0 -0
  68. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/resources/resource_naming.py +0 -0
  69. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/resources/resource_types.py +0 -0
  70. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/resources/route53.py +0 -0
  71. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/resources/route53_hosted_zone.py +0 -0
  72. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/resources/rum.py +0 -0
  73. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/resources/s3.py +0 -0
  74. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/resources/security_group.py +0 -0
  75. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/resources/security_group_full_stack.py +0 -0
  76. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/resources/sqs.py +0 -0
  77. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/resources/vpc.py +0 -0
  78. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/stack.py +0 -0
  79. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/configurations/workload.py +0 -0
  80. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/constructs/cloudfront/cloudfront_distribution_construct.py +0 -0
  81. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/constructs/ecr/ecr_construct.py +0 -0
  82. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/constructs/lambdas/lambda_function_construct.py +0 -0
  83. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/constructs/lambdas/lambda_function_docker_construct.py +0 -0
  84. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/constructs/lambdas/lambda_function_role_construct.py +0 -0
  85. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/constructs/lambdas/policies/policy_docs.py +0 -0
  86. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/constructs/lambdas/policies/policy_statements.py +0 -0
  87. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/constructs/s3_buckets/s3_bucket_construct.py +0 -0
  88. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/constructs/s3_buckets/s3_bucket_replication_destination_construct.py +0 -0
  89. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/constructs/s3_buckets/s3_bucket_replication_source_construct.py +0 -0
  90. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/constructs/sqs/policies/sqs_policies.py +0 -0
  91. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/interfaces/enhanced_ssm_parameter_mixin.py +0 -0
  92. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/interfaces/istack.py +0 -0
  93. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/interfaces/live_ssm_resolver.py +0 -0
  94. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/interfaces/ssm_parameter_mixin.py +0 -0
  95. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/lambdas/edge/ip_gate/handler.py +0 -0
  96. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/lambdas/health_handler.py +0 -0
  97. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/pipeline/path_utils.py +0 -0
  98. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/pipeline/pipeline_factory.py +0 -0
  99. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/pipeline/security/policies.py +0 -0
  100. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/pipeline/security/roles.py +0 -0
  101. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/pipeline/stage.py +0 -0
  102. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/stack/istack.py +0 -0
  103. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/stack/stack_factory.py +0 -0
  104. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/stack/stack_module_loader.py +0 -0
  105. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/stack/stack_module_registry.py +0 -0
  106. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/stack/stack_modules.py +0 -0
  107. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/stack_library/__init__.py +0 -0
  108. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/stack_library/api_gateway/api_gateway_stack.py +0 -0
  109. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/stack_library/auto_scaling/__init__.py +0 -0
  110. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/stack_library/auto_scaling/auto_scaling_stack.py +0 -0
  111. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/stack_library/aws_lambdas/lambda_stack.py +0 -0
  112. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/stack_library/buckets/README.md +0 -0
  113. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/stack_library/buckets/bucket_stack.py +0 -0
  114. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/stack_library/cloudfront/__init__.py +0 -0
  115. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/stack_library/cloudfront/cloudfront_stack.py +0 -0
  116. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/stack_library/code_artifact/code_artifact_stack.py +0 -0
  117. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/stack_library/cognito/cognito_stack.py +0 -0
  118. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/stack_library/dynamodb/dynamodb_stack.py +0 -0
  119. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/stack_library/ecr/README.md +0 -0
  120. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/stack_library/ecr/ecr_stack.py +0 -0
  121. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/stack_library/ecs/__init__.py +0 -0
  122. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/stack_library/ecs/ecs_service_stack.py +0 -0
  123. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/stack_library/lambda_edge/__init__.py +0 -0
  124. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/stack_library/load_balancer/__init__.py +0 -0
  125. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/stack_library/load_balancer/load_balancer_stack.py +0 -0
  126. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/stack_library/monitoring/__init__.py +0 -0
  127. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/stack_library/monitoring/monitoring_stack.py +0 -0
  128. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/stack_library/rds/__init__.py +0 -0
  129. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/stack_library/rds/rds_stack.py +0 -0
  130. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/stack_library/route53/__init__.py +0 -0
  131. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/stack_library/route53/route53_stack.py +0 -0
  132. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/stack_library/rum/__init__.py +0 -0
  133. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/stack_library/rum/rum_stack.py +0 -0
  134. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/stack_library/security_group/__init__.py +0 -0
  135. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/stack_library/security_group/security_group_full_stack.py +0 -0
  136. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/stack_library/security_group/security_group_stack.py +0 -0
  137. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/stack_library/simple_queue_service/sqs_stack.py +0 -0
  138. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/stack_library/stack_base.py +0 -0
  139. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/stack_library/vpc/__init__.py +0 -0
  140. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/stack_library/vpc/vpc_stack.py +0 -0
  141. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/stages/websites/static_website_stage.py +0 -0
  142. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/templates/README.md +0 -0
  143. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/templates/app.py.template +0 -0
  144. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/templates/cdk.json.template +0 -0
  145. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/utilities/api_gateway_integration_utility.py +0 -0
  146. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/utilities/commandline_args.py +0 -0
  147. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/utilities/configuration_loader.py +0 -0
  148. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/utilities/docker_utilities.py +0 -0
  149. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/utilities/environment_services.py +0 -0
  150. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/utilities/file_operations.py +0 -0
  151. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/utilities/git_utilities.py +0 -0
  152. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/utilities/json_loading_utility.py +0 -0
  153. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/utilities/lambda_function_utilities.py +0 -0
  154. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/utilities/os_execute.py +0 -0
  155. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/utils/api_gateway_utilities.py +0 -0
  156. {cdk_factory-0.11.0 → cdk_factory-0.13.0}/src/cdk_factory/workload/workload_factory.py +0 -0
  157. {cdk_factory-0.11.0 → cdk_factory-0.13.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.11.0
3
+ Version: 0.13.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.11.0"
36
+ version = "0.13.0"
37
37
  authors = [
38
38
  { name="Eric Wilson", email="eric.wilson@geekcafe.com" }
39
39
  ]
@@ -8,6 +8,7 @@ MIT License. See Project Root for the license information.
8
8
 
9
9
  from typing import Optional, Dict
10
10
  from pathlib import Path
11
+ import json
11
12
 
12
13
  import aws_cdk as cdk
13
14
  from aws_cdk import aws_lambda as _lambda
@@ -139,6 +140,22 @@ class LambdaEdgeStack(IStack, EnhancedSsmParameterMixin):
139
140
 
140
141
  logger.info(f"Loading Lambda code from: {code_path}")
141
142
 
143
+ # Create runtime configuration file for Lambda@Edge
144
+ # Since Lambda@Edge doesn't support environment variables, we bundle a config file
145
+ runtime_config = {
146
+ 'environment': self.deployment.environment,
147
+ 'function_name': self.edge_config.name,
148
+ 'region': self.deployment.region
149
+ }
150
+
151
+ runtime_config_path = code_path / 'runtime_config.json'
152
+ logger.info(f"Creating runtime config at: {runtime_config_path}")
153
+
154
+ with open(runtime_config_path, 'w') as f:
155
+ json.dump(runtime_config, f, indent=2)
156
+
157
+ logger.info(f"Runtime config: {runtime_config}")
158
+
142
159
  # Map runtime string to CDK Runtime
143
160
  runtime_map = {
144
161
  "python3.11": _lambda.Runtime.PYTHON_3_11,
@@ -154,10 +171,23 @@ class LambdaEdgeStack(IStack, EnhancedSsmParameterMixin):
154
171
  _lambda.Runtime.PYTHON_3_11
155
172
  )
156
173
 
157
- # Resolve environment variables (handles SSM parameter references)
158
- resolved_environment = self._resolve_environment_variables()
174
+ # Lambda@Edge does NOT support environment variables
175
+ # Configuration must be handled via:
176
+ # 1. Hardcoded in the function code
177
+ # 2. Fetched from SSM Parameter Store at runtime
178
+ # 3. Other configuration mechanisms
159
179
 
160
- # Create execution role with CloudWatch Logs permissions
180
+ # Log warning if environment variables are configured
181
+ if self.edge_config.environment:
182
+ logger.warning(
183
+ f"Lambda@Edge function '{function_name}' has environment variables configured, "
184
+ "but Lambda@Edge does not support environment variables. "
185
+ "The function must fetch these values from SSM Parameter Store at runtime."
186
+ )
187
+ for key, value in self.edge_config.environment.items():
188
+ logger.warning(f" - {key}: {value}")
189
+
190
+ # Create execution role with CloudWatch Logs and SSM permissions
161
191
  execution_role = iam.Role(
162
192
  self,
163
193
  f"{function_name}-Role",
@@ -173,7 +203,23 @@ class LambdaEdgeStack(IStack, EnhancedSsmParameterMixin):
173
203
  ]
174
204
  )
175
205
 
176
- # Create the Lambda function
206
+ # Add SSM read permissions if environment variables reference SSM parameters
207
+ if self.edge_config.environment:
208
+ execution_role.add_to_policy(
209
+ iam.PolicyStatement(
210
+ effect=iam.Effect.ALLOW,
211
+ actions=[
212
+ "ssm:GetParameter",
213
+ "ssm:GetParameters",
214
+ "ssm:GetParametersByPath"
215
+ ],
216
+ resources=[
217
+ f"arn:aws:ssm:*:{cdk.Aws.ACCOUNT_ID}:parameter/*"
218
+ ]
219
+ )
220
+ )
221
+
222
+ # Create the Lambda function WITHOUT environment variables
177
223
  self.function = _lambda.Function(
178
224
  self,
179
225
  function_name,
@@ -185,7 +231,7 @@ class LambdaEdgeStack(IStack, EnhancedSsmParameterMixin):
185
231
  timeout=cdk.Duration.seconds(self.edge_config.timeout),
186
232
  description=self.edge_config.description,
187
233
  role=execution_role,
188
- environment=resolved_environment,
234
+ # Lambda@Edge does NOT support environment variables
189
235
  log_retention=logs.RetentionDays.ONE_WEEK,
190
236
  )
191
237
 
@@ -256,3 +302,30 @@ class LambdaEdgeStack(IStack, EnhancedSsmParameterMixin):
256
302
  param_path,
257
303
  description=f"{key} for Lambda@Edge function {function_name}"
258
304
  )
305
+
306
+ # Export environment variables as SSM parameters
307
+ # Since Lambda@Edge doesn't support environment variables, we export them
308
+ # to SSM so the Lambda function can fetch them at runtime
309
+ if self.edge_config.environment:
310
+ logger.info("Exporting Lambda@Edge environment variables as SSM parameters")
311
+ env_ssm_exports = self.edge_config.dictionary.get("environment_ssm_exports", {})
312
+
313
+ # If no explicit environment_ssm_exports, create default SSM paths
314
+ if not env_ssm_exports:
315
+ # Auto-generate SSM parameter names based on environment variable names
316
+ for env_key in self.edge_config.environment.keys():
317
+ # Use snake_case version of the key for SSM path
318
+ ssm_key = env_key.lower().replace('_', '-')
319
+ env_ssm_exports[env_key] = f"/{self.deployment.environment}/{function_name}/{ssm_key}"
320
+
321
+ # Resolve and export environment variables to SSM
322
+ resolved_env = self._resolve_environment_variables()
323
+ for env_key, ssm_path in env_ssm_exports.items():
324
+ if env_key in resolved_env:
325
+ self.export_ssm_parameter(
326
+ self,
327
+ f"env-{env_key}-param",
328
+ resolved_env[env_key],
329
+ ssm_path,
330
+ description=f"Configuration for Lambda@Edge: {env_key}"
331
+ )
@@ -169,6 +169,13 @@ class StaticWebSiteStack(IStack):
169
169
  aliases=aliases,
170
170
  distribution=cloudfront_distribution.distribution,
171
171
  )
172
+
173
+ # Export SSM parameters if configured
174
+ self.__export_ssm_parameters(
175
+ stack_config=stack_config,
176
+ bucket=bucket,
177
+ cloudfront_distribution=cloudfront_distribution,
178
+ )
172
179
 
173
180
  def __setup_route53_records(
174
181
  self,
@@ -200,6 +207,58 @@ class StaticWebSiteStack(IStack):
200
207
  zone_name=hosted_zone_name,
201
208
  )
202
209
 
210
+ def __export_ssm_parameters(
211
+ self,
212
+ stack_config: StackConfig,
213
+ bucket: s3.IBucket,
214
+ cloudfront_distribution: CloudFrontDistributionConstruct,
215
+ ) -> None:
216
+ """
217
+ Export stack outputs to SSM Parameter Store if ssm_exports is configured.
218
+
219
+ Args:
220
+ stack_config: Stack configuration containing ssm_exports
221
+ bucket: The S3 bucket
222
+ cloudfront_distribution: The CloudFront distribution construct
223
+ """
224
+ ssm_exports = stack_config.dictionary.get("ssm_exports", {})
225
+
226
+ if not ssm_exports:
227
+ logger.debug("No SSM exports configured for this stack")
228
+ return
229
+
230
+ # Export bucket name if configured
231
+ if "bucket_name" in ssm_exports:
232
+ self.export_ssm_parameter(
233
+ scope=self,
234
+ id="SsmExportBucketName",
235
+ value=bucket.bucket_name,
236
+ parameter_name=ssm_exports["bucket_name"],
237
+ description=f"S3 bucket name for {stack_config.name}",
238
+ )
239
+
240
+ # Export CloudFront domain if configured
241
+ if "cloudfront_domain" in ssm_exports and cloudfront_distribution.distribution:
242
+ self.export_ssm_parameter(
243
+ scope=self,
244
+ id="SsmExportCloudFrontDomain",
245
+ value=cloudfront_distribution.dns_name,
246
+ parameter_name=ssm_exports["cloudfront_domain"],
247
+ description=f"CloudFront domain name for {stack_config.name}",
248
+ )
249
+
250
+ # Export CloudFront distribution ID if configured
251
+ if "cloudfront_distribution_id" in ssm_exports and cloudfront_distribution.distribution:
252
+ self.export_ssm_parameter(
253
+ scope=self,
254
+ id="SsmExportCloudFrontDistributionId",
255
+ value=cloudfront_distribution.distribution_id,
256
+ parameter_name=ssm_exports["cloudfront_distribution_id"],
257
+ description=f"CloudFront distribution ID for {stack_config.name}",
258
+ )
259
+
260
+ logger.info(f"Exported {len(ssm_exports)} SSM parameters for stack {stack_config.name}")
261
+
203
262
  def __get_version_number(self, assets_path: str) -> str:
204
263
  version = "0.0.1.ckd.factory"
205
264
 
@@ -0,0 +1 @@
1
+ __version__ = "0.13.0"
@@ -1 +0,0 @@
1
- __version__ = "0.11.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