cdk-factory 0.19.14__tar.gz → 0.19.18__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.
Files changed (166) hide show
  1. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/PKG-INFO +1 -1
  2. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/pyproject.toml +1 -1
  3. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stack_library/lambda_edge/lambda_edge_stack.py +42 -98
  4. cdk_factory-0.19.18/src/cdk_factory/version.py +1 -0
  5. cdk_factory-0.19.14/src/cdk_factory/version.py +0 -1
  6. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/.gitignore +0 -0
  7. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/.windsurfrules +0 -0
  8. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/LICENSE +0 -0
  9. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/README.md +0 -0
  10. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/REFACTORING_PLAN.md +0 -0
  11. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/archive/README.md +0 -0
  12. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/archive/migrate_to_enhanced_ssm.py +0 -0
  13. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/examples/json-imports/README.md +0 -0
  14. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/examples/separate-api-gateway/README.md +0 -0
  15. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/examples/separate-api-gateway/api-gateway-stack.json +0 -0
  16. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/examples/separate-api-gateway/config.json +0 -0
  17. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/examples/separate-api-gateway/lambda-stack.json +0 -0
  18. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/mypy.ini +0 -0
  19. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/publish_to_pypi.py +0 -0
  20. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/publish_to_pypi.sh +0 -0
  21. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/pysetup.py +0 -0
  22. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/pysetup.sh +0 -0
  23. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/requirements.dev.txt +0 -0
  24. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/requirements.tests.txt +0 -0
  25. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/requirements.txt +0 -0
  26. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/run-checks.sh +0 -0
  27. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/run-tests-clean-venv.sh +0 -0
  28. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/run-tests.sh +0 -0
  29. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/scripts/cloudfront-cleanup.sh +0 -0
  30. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/__init__.py +0 -0
  31. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/app.py +0 -0
  32. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/builds/README.md +0 -0
  33. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/cdk.json +0 -0
  34. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/cli.py +0 -0
  35. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/commands/command_loader.py +0 -0
  36. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/base_config.py +0 -0
  37. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/cdk_config.py +0 -0
  38. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/deployment.py +0 -0
  39. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/deployment_wave.py +0 -0
  40. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/devops.py +0 -0
  41. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/enhanced_base_config.py +0 -0
  42. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/enhanced_ssm_config.py +0 -0
  43. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/management.py +0 -0
  44. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/pipeline.py +0 -0
  45. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/pipeline_stage.py +0 -0
  46. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/resources/_resources.py +0 -0
  47. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/resources/acm.py +0 -0
  48. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/resources/api_gateway.py +0 -0
  49. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/resources/apigateway_route_config.py +0 -0
  50. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/resources/auto_scaling.py +0 -0
  51. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/resources/cloudfront.py +0 -0
  52. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/resources/cloudwatch_widget.py +0 -0
  53. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/resources/code_artifact.py +0 -0
  54. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/resources/code_artifact_login.py +0 -0
  55. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/resources/code_repository.py +0 -0
  56. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/resources/cognito.py +0 -0
  57. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/resources/docker.py +0 -0
  58. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/resources/dynamodb.py +0 -0
  59. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/resources/ecr.py +0 -0
  60. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/resources/ecs_cluster.py +0 -0
  61. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/resources/ecs_service.py +0 -0
  62. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/resources/exisiting.py +0 -0
  63. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/resources/lambda_edge.py +0 -0
  64. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/resources/lambda_function.py +0 -0
  65. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/resources/lambda_layers.py +0 -0
  66. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/resources/lambda_triggers.py +0 -0
  67. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/resources/load_balancer.py +0 -0
  68. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/resources/monitoring.py +0 -0
  69. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/resources/rds.py +0 -0
  70. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/resources/resource_mapping.py +0 -0
  71. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/resources/resource_naming.py +0 -0
  72. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/resources/resource_types.py +0 -0
  73. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/resources/route53.py +0 -0
  74. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/resources/route53_hosted_zone.py +0 -0
  75. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/resources/rum.py +0 -0
  76. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/resources/s3.py +0 -0
  77. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/resources/security_group.py +0 -0
  78. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/resources/security_group_full_stack.py +0 -0
  79. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/resources/sqs.py +0 -0
  80. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/resources/vpc.py +0 -0
  81. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/stack.py +0 -0
  82. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/configurations/workload.py +0 -0
  83. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/constructs/cloudfront/cloudfront_distribution_construct.py +0 -0
  84. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/constructs/ecr/ecr_construct.py +0 -0
  85. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/constructs/lambdas/lambda_function_construct.py +0 -0
  86. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/constructs/lambdas/lambda_function_docker_construct.py +0 -0
  87. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/constructs/lambdas/lambda_function_role_construct.py +0 -0
  88. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/constructs/lambdas/policies/policy_docs.py +0 -0
  89. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/constructs/lambdas/policies/policy_statements.py +0 -0
  90. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/constructs/s3_buckets/s3_bucket_construct.py +0 -0
  91. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/constructs/s3_buckets/s3_bucket_replication_destination_construct.py +0 -0
  92. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/constructs/s3_buckets/s3_bucket_replication_source_construct.py +0 -0
  93. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/constructs/sqs/policies/sqs_policies.py +0 -0
  94. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/interfaces/istack.py +0 -0
  95. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/interfaces/live_ssm_resolver.py +0 -0
  96. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/interfaces/networked_stack_mixin.py +0 -0
  97. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/interfaces/standardized_ssm_mixin.py +0 -0
  98. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/interfaces/vpc_provider_mixin.py +0 -0
  99. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/lambdas/edge/ip_gate/handler.py +0 -0
  100. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/lambdas/health_handler.py +0 -0
  101. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/pipeline/path_utils.py +0 -0
  102. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/pipeline/pipeline_factory.py +0 -0
  103. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/pipeline/security/policies.py +0 -0
  104. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/pipeline/security/roles.py +0 -0
  105. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/pipeline/stage.py +0 -0
  106. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stack/istack.py +0 -0
  107. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stack/stack_factory.py +0 -0
  108. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stack/stack_module_loader.py +0 -0
  109. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stack/stack_module_registry.py +0 -0
  110. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stack/stack_modules.py +0 -0
  111. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stack_library/__init__.py +0 -0
  112. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stack_library/acm/__init__.py +0 -0
  113. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stack_library/acm/acm_stack.py +0 -0
  114. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stack_library/api_gateway/api_gateway_stack.py +0 -0
  115. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stack_library/auto_scaling/__init__.py +0 -0
  116. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stack_library/auto_scaling/auto_scaling_stack.py +0 -0
  117. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stack_library/aws_lambdas/lambda_stack.py +0 -0
  118. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stack_library/buckets/README.md +0 -0
  119. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stack_library/buckets/bucket_stack.py +0 -0
  120. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stack_library/cloudfront/__init__.py +0 -0
  121. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stack_library/cloudfront/cloudfront_stack.py +0 -0
  122. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stack_library/code_artifact/code_artifact_stack.py +0 -0
  123. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stack_library/cognito/cognito_stack.py +0 -0
  124. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stack_library/dynamodb/dynamodb_stack.py +0 -0
  125. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stack_library/ecr/README.md +0 -0
  126. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stack_library/ecr/ecr_stack.py +0 -0
  127. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stack_library/ecs/__init__.py +0 -0
  128. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stack_library/ecs/ecs_cluster_stack.py +0 -0
  129. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stack_library/ecs/ecs_service_stack.py +0 -0
  130. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stack_library/lambda_edge/__init__.py +0 -0
  131. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stack_library/load_balancer/__init__.py +0 -0
  132. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stack_library/load_balancer/load_balancer_stack.py +0 -0
  133. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stack_library/monitoring/__init__.py +0 -0
  134. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stack_library/monitoring/monitoring_stack.py +0 -0
  135. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stack_library/rds/__init__.py +0 -0
  136. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stack_library/rds/rds_stack.py +0 -0
  137. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stack_library/route53/__init__.py +0 -0
  138. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stack_library/route53/route53_stack.py +0 -0
  139. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stack_library/rum/__init__.py +0 -0
  140. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stack_library/rum/rum_stack.py +0 -0
  141. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stack_library/security_group/__init__.py +0 -0
  142. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stack_library/security_group/security_group_full_stack.py +0 -0
  143. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stack_library/security_group/security_group_stack.py +0 -0
  144. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stack_library/simple_queue_service/sqs_stack.py +0 -0
  145. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stack_library/stack_base.py +0 -0
  146. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stack_library/vpc/__init__.py +0 -0
  147. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stack_library/vpc/vpc_stack.py +0 -0
  148. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stack_library/websites/static_website_stack.py +0 -0
  149. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/stages/websites/static_website_stage.py +0 -0
  150. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/templates/README.md +0 -0
  151. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/templates/app.py.template +0 -0
  152. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/templates/cdk.json.template +0 -0
  153. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/utilities/api_gateway_integration_utility.py +0 -0
  154. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/utilities/commandline_args.py +0 -0
  155. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/utilities/configuration_loader.py +0 -0
  156. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/utilities/docker_utilities.py +0 -0
  157. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/utilities/environment_services.py +0 -0
  158. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/utilities/file_operations.py +0 -0
  159. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/utilities/git_utilities.py +0 -0
  160. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/utilities/json_loading_utility.py +0 -0
  161. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/utilities/lambda_function_utilities.py +0 -0
  162. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/utilities/os_execute.py +0 -0
  163. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/utils/api_gateway_utilities.py +0 -0
  164. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/validation/config_validator.py +0 -0
  165. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/src/cdk_factory/workload/workload_factory.py +0 -0
  166. {cdk_factory-0.19.14 → cdk_factory-0.19.18}/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.19.14
3
+ Version: 0.19.18
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.19.14"
36
+ version = "0.19.18"
37
37
  authors = [
38
38
  { name="Eric Wilson", email="eric.wilson@geekcafe.com" }
39
39
  ]
@@ -290,8 +290,21 @@ class LambdaEdgeStack(IStack, StandardizedSsmMixin):
290
290
  ]
291
291
  )
292
292
  )
293
-
294
293
 
294
+ # Add Secrets Manager permissions for origin secret access
295
+ execution_role.add_to_policy(
296
+ iam.PolicyStatement(
297
+ effect=iam.Effect.ALLOW,
298
+ actions=[
299
+ "secretsmanager:GetSecretValue",
300
+ "secretsmanager:DescribeSecret"
301
+ ],
302
+ resources=[
303
+ f"arn:aws:secretsmanager:*:{cdk.Aws.ACCOUNT_ID}:secret:{self.deployment.environment}/{self.workload.name}/origin-secret*"
304
+ ]
305
+ )
306
+ )
307
+
295
308
  self.function = _lambda.Function(
296
309
  self,
297
310
  function_name,
@@ -359,10 +372,7 @@ class LambdaEdgeStack(IStack, StandardizedSsmMixin):
359
372
 
360
373
  def _configure_edge_log_retention(self, function_name: str) -> None:
361
374
  """
362
- Configure log retention for Lambda@Edge regional logs.
363
-
364
- Lambda@Edge creates log groups in multiple regions that need
365
- separate retention configuration from the primary log group.
375
+ Configure log retention for Lambda@Edge log groups in all edge regions
366
376
  """
367
377
  from aws_cdk import custom_resources as cr
368
378
 
@@ -377,15 +387,18 @@ class LambdaEdgeStack(IStack, StandardizedSsmMixin):
377
387
  'ca-central-1', 'sa-east-1'
378
388
  ]
379
389
 
380
- # Create custom resource to set log retention for each region
381
- for region in edge_regions:
382
- log_group_name = f"/aws/lambda/{region}.{function_name}"
390
+ # Lambda@Edge log groups are created in us-east-1 with region prefix
391
+ # Pattern: /aws/lambda/{edge-region}.{function-name}
392
+ # But they're all located in us-east-1
393
+
394
+ for edge_region in edge_regions:
395
+ log_group_name = f"/aws/lambda/{edge_region}.{function_name}"
383
396
 
384
397
  # Use AwsCustomResource to set log retention
385
398
  cr.AwsCustomResource(
386
- self, f"EdgeLogRetention-{region}",
399
+ self, f"EdgeLogRetention-{edge_region}",
387
400
  on_update={
388
- "service": "Logs",
401
+ "service": "CloudWatchLogs",
389
402
  "action": "putRetentionPolicy",
390
403
  "parameters": {
391
404
  "logGroupName": log_group_name,
@@ -394,16 +407,26 @@ class LambdaEdgeStack(IStack, StandardizedSsmMixin):
394
407
  "physical_resource_id": cr.PhysicalResourceId.from_response("logGroupName")
395
408
  },
396
409
  on_delete={
397
- "service": "Logs",
410
+ "service": "CloudWatchLogs",
398
411
  "action": "deleteRetentionPolicy",
399
412
  "parameters": {
400
413
  "logGroupName": log_group_name
401
414
  },
402
415
  "physical_resource_id": cr.PhysicalResourceId.from_response("logGroupName")
403
416
  },
404
- policy=cr.AwsCustomResourcePolicy.from_sdk_calls(
405
- resources=[f"arn:aws:logs:{region}:*:log-group:{log_group_name}*"]
406
- )
417
+ policy=cr.AwsCustomResourcePolicy.from_statements([
418
+ iam.PolicyStatement(
419
+ effect=iam.Effect.ALLOW,
420
+ actions=[
421
+ "logs:PutRetentionPolicy",
422
+ "logs:DeleteRetentionPolicy",
423
+ "logs:DescribeLogGroups",
424
+ "logs:DescribeLogStreams"
425
+ ],
426
+ # All Lambda@Edge log groups are in us-east-1
427
+ resources=[f"arn:aws:logs:us-east-1:*:log-group:{log_group_name}*"]
428
+ )
429
+ ])
407
430
  )
408
431
 
409
432
  logger.info(f"Configured edge log retention to {edge_retention_days} days for {len(edge_regions)} regions")
@@ -411,8 +434,6 @@ class LambdaEdgeStack(IStack, StandardizedSsmMixin):
411
434
  def _add_outputs(self, function_name: str) -> None:
412
435
  """Add CloudFormation outputs and SSM exports"""
413
436
 
414
-
415
-
416
437
  # SSM Parameter Store exports (if configured)
417
438
  ssm_exports = self.edge_config.dictionary.get("ssm", {}).get("exports", {})
418
439
  if ssm_exports:
@@ -434,35 +455,13 @@ class LambdaEdgeStack(IStack, StandardizedSsmMixin):
434
455
  description=f"{key} for Lambda@Edge function {function_name}"
435
456
  )
436
457
 
437
- # Export environment variables as SSM parameters
438
- # Since Lambda@Edge doesn't support environment variables, we export them
439
- # to SSM so the Lambda function can fetch them at runtime
440
- if self.edge_config.environment:
441
- logger.info("Exporting Lambda@Edge environment variables as SSM parameters")
442
- env_ssm_exports = self.edge_config.dictionary.get("environment_ssm_exports", {})
443
-
444
- # If no explicit environment_ssm_exports, create default SSM paths
445
- if not env_ssm_exports:
446
- env_ssm_exports = {
447
- key: f"/{self.deployment.environment}/{self.workload.name}/lambda-edge/{key.lower()}"
448
- for key in self.edge_config.environment.keys()
449
- }
450
-
451
- # Export each environment variable to SSM
452
- for var_name, var_value in self.edge_config.environment.items():
453
- ssm_path = env_ssm_exports.get(var_name, f"/{self.deployment.environment}/{self.workload.name}/lambda-edge/{var_name.lower()}")
454
- self.export_ssm_parameter(
455
- self,
456
- f"{var_name}-env-param",
457
- var_value,
458
- ssm_path,
459
- description=f"Lambda@Edge environment variable: {var_name} for {function_name}"
460
- )
461
-
462
- # Export the complete configuration as a single SSM parameter for dynamic updates
458
+ # Export the complete configuration as a single SSM parameter
463
459
  config_ssm_path = f"/{self.deployment.environment}/{self.workload.name}/lambda-edge/config"
460
+ configuration = self.edge_config.dictionary.get("configuration", {})
461
+ environment_variables = configuration.get("environment_variables", {})
462
+
464
463
  full_config = {
465
- "environment_variables": self.edge_config.environment or {}
464
+ "environment_variables": environment_variables
466
465
  }
467
466
 
468
467
  self.export_ssm_parameter(
@@ -484,58 +483,3 @@ class LambdaEdgeStack(IStack, StandardizedSsmMixin):
484
483
  cache_ttl_ssm_path,
485
484
  description=f"Lambda@Edge configuration cache TTL in seconds for {function_name} - adjust for maintenance windows (30-3600)"
486
485
  )
487
-
488
- # Create additional default parameters if configured
489
- default_params = self.edge_config.dictionary.get("default_parameters", {})
490
- if default_params:
491
- logger.info(f"Creating {len(default_params)} default SSM parameters")
492
-
493
- for param_name, param_value in default_params.items():
494
- param_path = f"/{self.deployment.environment}/{self.workload.name}/lambda-edge/defaults/{param_name}"
495
-
496
- # Create descriptive parameter description
497
- descriptions = {
498
- "CACHE_TTL": f"Configuration cache TTL in seconds for {function_name}",
499
- "HEALTH_CHECK_TIMEOUT": f"ALB health check timeout in seconds for {function_name}",
500
- "HEALTH_CHECK_CACHE_TTL": f"Health check result cache TTL in seconds for {function_name}",
501
- "MAINTENANCE_MODE": f"Maintenance mode toggle for {function_name}",
502
- "GATE_ENABLED": f"IP gate toggle for {function_name}",
503
- "ALLOW_CIDRS": f"Allowed CIDR blocks for {function_name}",
504
- "HEALTH_CHECK_PATH": f"Health check endpoint path for {function_name}",
505
- "ALB_DOMAIN": f"ALB DNS name for {function_name}",
506
- "DEBUG_MODE": f"Debug mode toggle for {function_name}",
507
- "CIRCUIT_BREAKER_THRESHOLD": f"Circuit breaker failure threshold for {function_name}",
508
- "CIRCUIT_BREAKER_TIMEOUT": f"Circuit breaker timeout in seconds for {function_name}"
509
- }
510
-
511
- description = descriptions.get(param_name, f"Default parameter '{param_name}' for Lambda@Edge function {function_name}")
512
-
513
- self.export_ssm_parameter(
514
- scope=self,
515
- id=f"default-{param_name.lower()}-param",
516
- value=str(param_value),
517
- parameter_name=param_path,
518
- description=description
519
- )
520
-
521
- # Resolve and export environment variables to SSM
522
- resolved_env = self._resolve_environment_variables()
523
- for env_key, env_value in resolved_env.items():
524
- if env_key in resolved_env:
525
- env_value = resolved_env[env_key]
526
- # Handle empty values - SSM doesn't allow empty strings
527
- # Use sentinel value "NONE" to indicate explicitly unset
528
- if not env_value or (isinstance(env_value, str) and env_value.strip() == ""):
529
- env_value = "NONE"
530
- logger.info(
531
- f"Environment variable {env_key} is empty - setting SSM parameter to 'NONE'. "
532
- f"Lambda function should treat 'NONE' as unset/disabled."
533
- )
534
-
535
- self.export_ssm_parameter(
536
- scope=self,
537
- id=f"env-{env_key}-param",
538
- value=env_value,
539
- parameter_name=ssm_path,
540
- description=f"Configuration for Lambda@Edge: {env_key}"
541
- )
@@ -0,0 +1 @@
1
+ __version__ = "0.19.18"
@@ -1 +0,0 @@
1
- __version__ = "0.19.14"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes