cdk-factory 0.18.15__tar.gz → 0.18.20__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.
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/PKG-INFO +1 -1
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/pyproject.toml +1 -1
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/auto_scaling.py +5 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/interfaces/standardized_ssm_mixin.py +10 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/auto_scaling/auto_scaling_stack.py +54 -5
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/load_balancer/load_balancer_stack.py +41 -34
- cdk_factory-0.18.20/src/cdk_factory/version.py +1 -0
- cdk_factory-0.18.15/src/cdk_factory/version.py +0 -1
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/.gitignore +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/.windsurfrules +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/LICENSE +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/README.md +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/REFACTORING_PLAN.md +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/archive/README.md +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/archive/migrate_to_enhanced_ssm.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/examples/json-imports/README.md +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/examples/separate-api-gateway/README.md +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/examples/separate-api-gateway/api-gateway-stack.json +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/examples/separate-api-gateway/config.json +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/examples/separate-api-gateway/lambda-stack.json +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/mypy.ini +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/publish_to_pypi.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/publish_to_pypi.sh +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/pysetup.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/pysetup.sh +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/requirements.dev.txt +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/requirements.tests.txt +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/requirements.txt +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/run-checks.sh +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/run-tests-clean-venv.sh +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/run-tests.sh +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/scripts/cloudfront-cleanup.sh +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/__init__.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/app.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/builds/README.md +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/cdk.json +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/cli.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/commands/command_loader.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/base_config.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/cdk_config.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/deployment.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/deployment_wave.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/devops.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/enhanced_base_config.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/enhanced_ssm_config.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/management.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/pipeline.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/pipeline_stage.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/_resources.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/acm.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/api_gateway.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/apigateway_route_config.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/cloudfront.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/cloudwatch_widget.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/code_artifact.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/code_artifact_login.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/code_repository.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/cognito.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/docker.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/dynamodb.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/ecr.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/ecs_cluster.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/ecs_service.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/exisiting.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/lambda_edge.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/lambda_function.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/lambda_layers.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/lambda_triggers.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/load_balancer.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/monitoring.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/rds.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/resource_mapping.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/resource_naming.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/resource_types.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/route53.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/route53_hosted_zone.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/rum.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/s3.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/security_group.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/security_group_full_stack.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/sqs.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/vpc.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/stack.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/workload.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/constructs/cloudfront/cloudfront_distribution_construct.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/constructs/ecr/ecr_construct.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/constructs/lambdas/lambda_function_construct.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/constructs/lambdas/lambda_function_docker_construct.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/constructs/lambdas/lambda_function_role_construct.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/constructs/lambdas/policies/policy_docs.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/constructs/lambdas/policies/policy_statements.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/constructs/s3_buckets/s3_bucket_construct.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/constructs/s3_buckets/s3_bucket_replication_destination_construct.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/constructs/s3_buckets/s3_bucket_replication_source_construct.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/constructs/sqs/policies/sqs_policies.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/interfaces/istack.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/interfaces/live_ssm_resolver.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/interfaces/networked_stack_mixin.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/interfaces/vpc_provider_mixin.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/lambdas/edge/ip_gate/handler.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/lambdas/health_handler.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/pipeline/path_utils.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/pipeline/pipeline_factory.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/pipeline/security/policies.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/pipeline/security/roles.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/pipeline/stage.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack/istack.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack/stack_factory.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack/stack_module_loader.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack/stack_module_registry.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack/stack_modules.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/__init__.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/acm/__init__.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/acm/acm_stack.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/api_gateway/api_gateway_stack.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/auto_scaling/__init__.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/aws_lambdas/lambda_stack.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/buckets/README.md +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/buckets/bucket_stack.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/cloudfront/__init__.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/cloudfront/cloudfront_stack.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/code_artifact/code_artifact_stack.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/cognito/cognito_stack.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/dynamodb/dynamodb_stack.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/ecr/README.md +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/ecr/ecr_stack.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/ecs/__init__.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/ecs/ecs_cluster_stack.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/ecs/ecs_service_stack.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/lambda_edge/__init__.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/lambda_edge/lambda_edge_stack.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/load_balancer/__init__.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/monitoring/__init__.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/monitoring/monitoring_stack.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/rds/__init__.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/rds/rds_stack.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/route53/__init__.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/route53/route53_stack.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/rum/__init__.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/rum/rum_stack.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/security_group/__init__.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/security_group/security_group_full_stack.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/security_group/security_group_stack.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/simple_queue_service/sqs_stack.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/stack_base.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/vpc/__init__.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/vpc/vpc_stack.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/websites/static_website_stack.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stages/websites/static_website_stage.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/templates/README.md +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/templates/app.py.template +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/templates/cdk.json.template +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/utilities/api_gateway_integration_utility.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/utilities/commandline_args.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/utilities/configuration_loader.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/utilities/docker_utilities.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/utilities/environment_services.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/utilities/file_operations.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/utilities/git_utilities.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/utilities/json_loading_utility.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/utilities/lambda_function_utilities.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/utilities/os_execute.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/utils/api_gateway_utilities.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/validation/config_validator.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/workload/workload_factory.py +0 -0
- {cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/handlers/test/handler.py +0 -0
{cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/auto_scaling.py
RENAMED
|
@@ -74,6 +74,11 @@ class AutoScalingConfig(EnhancedBaseConfig):
|
|
|
74
74
|
"""Update policy configuration"""
|
|
75
75
|
return self.__config.get("update_policy")
|
|
76
76
|
|
|
77
|
+
@property
|
|
78
|
+
def instance_refresh(self) -> Optional[Dict[str, Any]]:
|
|
79
|
+
"""Instance refresh configuration for rolling updates"""
|
|
80
|
+
return self.__config.get("instance_refresh")
|
|
81
|
+
|
|
77
82
|
@property
|
|
78
83
|
def user_data_commands(self) -> List[str]:
|
|
79
84
|
"""User data commands to run on instance launch"""
|
{cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/interfaces/standardized_ssm_mixin.py
RENAMED
|
@@ -119,6 +119,7 @@ class StandardizedSsmMixin:
|
|
|
119
119
|
"""Export multiple resource values to SSM Parameter Store."""
|
|
120
120
|
params = {}
|
|
121
121
|
|
|
122
|
+
invalid_export_keys = []
|
|
122
123
|
# Only export parameters that are explicitly configured in ssm_exports
|
|
123
124
|
if not hasattr(config, 'ssm_exports') or not config.ssm_exports:
|
|
124
125
|
logger.debug("No SSM exports configured")
|
|
@@ -138,8 +139,17 @@ class StandardizedSsmMixin:
|
|
|
138
139
|
)
|
|
139
140
|
params[key] = param
|
|
140
141
|
else:
|
|
142
|
+
invalid_export_keys.append(key)
|
|
141
143
|
logger.warning(f"SSM export configured for '{key}' but no value found in resource_values")
|
|
142
144
|
|
|
145
|
+
if invalid_export_keys:
|
|
146
|
+
message = f"Export SSM Error\n🚨 SSM exports configured for '{invalid_export_keys}' but no values found in resource_values"
|
|
147
|
+
available_keys = list(resource_values.keys())
|
|
148
|
+
message = f"{message}\n✅ Available keys: {available_keys}"
|
|
149
|
+
message = f"{message}\n👉 Please update to the correct key or remove from the export list."
|
|
150
|
+
logger.warning(message)
|
|
151
|
+
raise ValueError(message)
|
|
152
|
+
|
|
143
153
|
return params
|
|
144
154
|
|
|
145
155
|
def normalize_resource_name(self, name: str, for_export: bool = False) -> str:
|
|
@@ -241,11 +241,12 @@ class AutoScalingStack(IStack, VPCProviderMixin, StandardizedSsmMixin):
|
|
|
241
241
|
user_data = ec2.UserData.for_linux()
|
|
242
242
|
|
|
243
243
|
# Add basic setup commands
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
244
|
+
# this will break amazon linux 2023 which uses dnf instead of yum
|
|
245
|
+
# user_data.add_commands(
|
|
246
|
+
# "#!/bin/bash",
|
|
247
|
+
# "yum update -y",
|
|
248
|
+
# "yum install -y aws-cfn-bootstrap",
|
|
249
|
+
# )
|
|
249
250
|
|
|
250
251
|
# Add user data commands from configuration
|
|
251
252
|
if self.asg_config.user_data_commands:
|
|
@@ -423,6 +424,10 @@ class AutoScalingStack(IStack, VPCProviderMixin, StandardizedSsmMixin):
|
|
|
423
424
|
],
|
|
424
425
|
)
|
|
425
426
|
|
|
427
|
+
# Add instance refresh if configured
|
|
428
|
+
if self.asg_config.instance_refresh:
|
|
429
|
+
self._configure_instance_refresh(auto_scaling_group)
|
|
430
|
+
|
|
426
431
|
# Attach target groups if configured
|
|
427
432
|
self._attach_target_groups(auto_scaling_group)
|
|
428
433
|
|
|
@@ -528,6 +533,50 @@ class AutoScalingStack(IStack, VPCProviderMixin, StandardizedSsmMixin):
|
|
|
528
533
|
|
|
529
534
|
logger.info(f"Exported SSM parameters: {exported_params}")
|
|
530
535
|
|
|
536
|
+
def _configure_instance_refresh(self, asg: autoscaling.AutoScalingGroup) -> None:
|
|
537
|
+
"""Configure instance refresh for rolling updates"""
|
|
538
|
+
instance_refresh_config = self.asg_config.instance_refresh
|
|
539
|
+
|
|
540
|
+
if not instance_refresh_config.get("enabled", False):
|
|
541
|
+
return
|
|
542
|
+
|
|
543
|
+
# Get the CloudFormation ASG resource
|
|
544
|
+
cfn_asg = asg.node.default_child
|
|
545
|
+
|
|
546
|
+
# Configure instance refresh properties
|
|
547
|
+
refresh_props = {}
|
|
548
|
+
|
|
549
|
+
if "min_healthy_percentage" in instance_refresh_config:
|
|
550
|
+
refresh_props["min_healthy_percentage"] = instance_refresh_config["min_healthy_percentage"]
|
|
551
|
+
|
|
552
|
+
if "instance_warmup" in instance_refresh_config:
|
|
553
|
+
refresh_props["instance_warmup"] = instance_refresh_config["instance_warmup"]
|
|
554
|
+
|
|
555
|
+
if "preferences" in instance_refresh_config:
|
|
556
|
+
preferences = instance_refresh_config["preferences"]
|
|
557
|
+
|
|
558
|
+
# Build preferences property
|
|
559
|
+
pref_props = {}
|
|
560
|
+
|
|
561
|
+
if "skip_matching" in preferences:
|
|
562
|
+
pref_props["skip_matching"] = preferences["skip_matching"]
|
|
563
|
+
|
|
564
|
+
if "auto_rollback" in preferences:
|
|
565
|
+
pref_props["auto_rollback"] = preferences["auto_rollback"]
|
|
566
|
+
|
|
567
|
+
if "instance_warmup" in preferences:
|
|
568
|
+
pref_props["instance_warmup"] = preferences["instance_warmup"]
|
|
569
|
+
|
|
570
|
+
if "min_healthy_percentage" in preferences:
|
|
571
|
+
pref_props["min_healthy_percentage"] = preferences["min_healthy_percentage"]
|
|
572
|
+
|
|
573
|
+
if pref_props:
|
|
574
|
+
refresh_props["preferences"] = pref_props
|
|
575
|
+
|
|
576
|
+
if refresh_props:
|
|
577
|
+
cfn_asg.add_property_override("InstanceRefresh", refresh_props)
|
|
578
|
+
logger.info(f"Configured instance refresh: {refresh_props}")
|
|
579
|
+
|
|
531
580
|
|
|
532
581
|
# Backward compatibility alias
|
|
533
582
|
AutoScalingStackStandardized = AutoScalingStack
|
|
@@ -456,44 +456,42 @@ class LoadBalancerStack(IStack, VPCProviderMixin, StandardizedSsmMixin):
|
|
|
456
456
|
# Configure conditions
|
|
457
457
|
conditions = []
|
|
458
458
|
|
|
459
|
-
#
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
http_headers = rule_config.get("http_headers", {})
|
|
471
|
-
for header_name, header_values in http_headers.items():
|
|
472
|
-
conditions.append(
|
|
473
|
-
elbv2.ListenerCondition.http_header(header_name, header_values)
|
|
474
|
-
)
|
|
475
|
-
|
|
476
|
-
# Query strings
|
|
477
|
-
query_strings = rule_config.get("query_strings", [])
|
|
478
|
-
if query_strings:
|
|
479
|
-
query_string_conditions = []
|
|
480
|
-
for qs in query_strings:
|
|
481
|
-
query_string_conditions.append(
|
|
482
|
-
elbv2.QueryStringCondition(
|
|
483
|
-
key=qs.get("key"), value=qs.get("value")
|
|
459
|
+
# Parse AWS ALB conditions format
|
|
460
|
+
aws_conditions = rule_config.get("conditions", [])
|
|
461
|
+
for condition in aws_conditions:
|
|
462
|
+
field = condition.get("field")
|
|
463
|
+
if field == "http-header" and "http_header_config" in condition:
|
|
464
|
+
header_config = condition["http_header_config"]
|
|
465
|
+
header_name = header_config.get("header_name")
|
|
466
|
+
header_values = header_config.get("values", [])
|
|
467
|
+
if header_name and header_values:
|
|
468
|
+
conditions.append(
|
|
469
|
+
elbv2.ListenerCondition.http_header(header_name, header_values)
|
|
484
470
|
)
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
471
|
+
elif field == "path-pattern" and "values" in condition:
|
|
472
|
+
path_patterns = condition.get("values", [])
|
|
473
|
+
if path_patterns:
|
|
474
|
+
conditions.append(elbv2.ListenerCondition.path_patterns(path_patterns))
|
|
475
|
+
elif field == "host-header" and "values" in condition:
|
|
476
|
+
host_headers = condition.get("values", [])
|
|
477
|
+
if host_headers:
|
|
478
|
+
conditions.append(elbv2.ListenerCondition.host_headers(host_headers))
|
|
489
479
|
|
|
490
480
|
# Configure actions
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
)
|
|
481
|
+
target_group = None
|
|
482
|
+
|
|
483
|
+
# Parse AWS ALB actions format
|
|
484
|
+
aws_actions = rule_config.get("actions", [])
|
|
485
|
+
for action in aws_actions:
|
|
486
|
+
if action.get("type") == "forward":
|
|
487
|
+
target_group_name = action.get("target_group")
|
|
488
|
+
target_group = (
|
|
489
|
+
self.target_groups.get(target_group_name) if target_group_name else None
|
|
490
|
+
)
|
|
491
|
+
break # Use first forward action
|
|
495
492
|
|
|
496
|
-
|
|
493
|
+
# Validate that we have both conditions and target group before creating rule
|
|
494
|
+
if target_group and conditions:
|
|
497
495
|
# Create rule with forward action
|
|
498
496
|
elbv2.ApplicationListenerRule(
|
|
499
497
|
self,
|
|
@@ -503,6 +501,15 @@ class LoadBalancerStack(IStack, VPCProviderMixin, StandardizedSsmMixin):
|
|
|
503
501
|
conditions=conditions,
|
|
504
502
|
target_groups=[target_group],
|
|
505
503
|
)
|
|
504
|
+
elif not conditions:
|
|
505
|
+
logger.warning(
|
|
506
|
+
f"Skipping listener rule '{rule_id}' - no conditions defined. "
|
|
507
|
+
f"CDK requires at least one condition for every rule."
|
|
508
|
+
)
|
|
509
|
+
elif not target_group:
|
|
510
|
+
logger.warning(
|
|
511
|
+
f"Skipping listener rule '{rule_id}' - no valid target group found."
|
|
512
|
+
)
|
|
506
513
|
|
|
507
514
|
def _add_ip_whitelist_rules(
|
|
508
515
|
self,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.18.20"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.18.15"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cdk_factory-0.18.15 → cdk_factory-0.18.20}/examples/separate-api-gateway/api-gateway-stack.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/deployment_wave.py
RENAMED
|
File without changes
|
|
File without changes
|
{cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/enhanced_base_config.py
RENAMED
|
File without changes
|
{cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/enhanced_ssm_config.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/pipeline_stage.py
RENAMED
|
File without changes
|
{cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/_resources.py
RENAMED
|
File without changes
|
|
File without changes
|
{cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/api_gateway.py
RENAMED
|
File without changes
|
|
File without changes
|
{cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/cloudfront.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/cognito.py
RENAMED
|
File without changes
|
{cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/docker.py
RENAMED
|
File without changes
|
{cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/dynamodb.py
RENAMED
|
File without changes
|
|
File without changes
|
{cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/ecs_cluster.py
RENAMED
|
File without changes
|
{cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/ecs_service.py
RENAMED
|
File without changes
|
{cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/exisiting.py
RENAMED
|
File without changes
|
{cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/lambda_edge.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/monitoring.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/configurations/resources/route53.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/constructs/sqs/policies/sqs_policies.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/interfaces/networked_stack_mixin.py
RENAMED
|
File without changes
|
{cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/interfaces/vpc_provider_mixin.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/auto_scaling/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/buckets/bucket_stack.py
RENAMED
|
File without changes
|
{cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/cloudfront/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/cognito/cognito_stack.py
RENAMED
|
File without changes
|
{cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/dynamodb/dynamodb_stack.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/ecs/ecs_cluster_stack.py
RENAMED
|
File without changes
|
{cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/ecs/ecs_service_stack.py
RENAMED
|
File without changes
|
{cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/lambda_edge/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/load_balancer/__init__.py
RENAMED
|
File without changes
|
{cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/monitoring/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/route53/__init__.py
RENAMED
|
File without changes
|
{cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/route53/route53_stack.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stack_library/security_group/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/stages/websites/static_website_stage.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/utilities/configuration_loader.py
RENAMED
|
File without changes
|
|
File without changes
|
{cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/utilities/environment_services.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/utilities/json_loading_utility.py
RENAMED
|
File without changes
|
{cdk_factory-0.18.15 → cdk_factory-0.18.20}/src/cdk_factory/utilities/lambda_function_utilities.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|