cdk-factory 0.18.12__tar.gz → 0.18.19__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.12 → cdk_factory-0.18.19}/PKG-INFO +1 -1
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/pyproject.toml +1 -1
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/resources/ecs_service.py +24 -2
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/resources/route53.py +5 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/interfaces/standardized_ssm_mixin.py +27 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stack_library/cloudfront/cloudfront_stack.py +8 -3
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stack_library/ecs/ecs_service_stack.py +1 -1
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stack_library/load_balancer/load_balancer_stack.py +41 -34
- cdk_factory-0.18.19/src/cdk_factory/stack_library/route53/route53_stack.py +449 -0
- cdk_factory-0.18.19/src/cdk_factory/version.py +1 -0
- cdk_factory-0.18.12/src/cdk_factory/stack_library/route53/route53_stack.py +0 -210
- cdk_factory-0.18.12/src/cdk_factory/version.py +0 -1
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/.gitignore +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/.windsurfrules +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/LICENSE +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/README.md +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/REFACTORING_PLAN.md +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/archive/README.md +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/archive/migrate_to_enhanced_ssm.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/examples/json-imports/README.md +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/examples/separate-api-gateway/README.md +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/examples/separate-api-gateway/api-gateway-stack.json +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/examples/separate-api-gateway/config.json +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/examples/separate-api-gateway/lambda-stack.json +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/mypy.ini +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/publish_to_pypi.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/publish_to_pypi.sh +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/pysetup.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/pysetup.sh +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/requirements.dev.txt +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/requirements.tests.txt +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/requirements.txt +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/run-checks.sh +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/run-tests-clean-venv.sh +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/run-tests.sh +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/scripts/cloudfront-cleanup.sh +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/__init__.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/app.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/builds/README.md +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/cdk.json +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/cli.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/commands/command_loader.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/base_config.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/cdk_config.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/deployment.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/deployment_wave.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/devops.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/enhanced_base_config.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/enhanced_ssm_config.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/management.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/pipeline.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/pipeline_stage.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/resources/_resources.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/resources/acm.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/resources/api_gateway.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/resources/apigateway_route_config.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/resources/auto_scaling.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/resources/cloudfront.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/resources/cloudwatch_widget.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/resources/code_artifact.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/resources/code_artifact_login.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/resources/code_repository.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/resources/cognito.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/resources/docker.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/resources/dynamodb.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/resources/ecr.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/resources/ecs_cluster.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/resources/exisiting.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/resources/lambda_edge.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/resources/lambda_function.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/resources/lambda_layers.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/resources/lambda_triggers.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/resources/load_balancer.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/resources/monitoring.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/resources/rds.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/resources/resource_mapping.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/resources/resource_naming.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/resources/resource_types.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/resources/route53_hosted_zone.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/resources/rum.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/resources/s3.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/resources/security_group.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/resources/security_group_full_stack.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/resources/sqs.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/resources/vpc.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/stack.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/workload.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/constructs/cloudfront/cloudfront_distribution_construct.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/constructs/ecr/ecr_construct.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/constructs/lambdas/lambda_function_construct.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/constructs/lambdas/lambda_function_docker_construct.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/constructs/lambdas/lambda_function_role_construct.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/constructs/lambdas/policies/policy_docs.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/constructs/lambdas/policies/policy_statements.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/constructs/s3_buckets/s3_bucket_construct.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/constructs/s3_buckets/s3_bucket_replication_destination_construct.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/constructs/s3_buckets/s3_bucket_replication_source_construct.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/constructs/sqs/policies/sqs_policies.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/interfaces/istack.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/interfaces/live_ssm_resolver.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/interfaces/networked_stack_mixin.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/interfaces/vpc_provider_mixin.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/lambdas/edge/ip_gate/handler.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/lambdas/health_handler.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/pipeline/path_utils.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/pipeline/pipeline_factory.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/pipeline/security/policies.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/pipeline/security/roles.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/pipeline/stage.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stack/istack.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stack/stack_factory.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stack/stack_module_loader.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stack/stack_module_registry.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stack/stack_modules.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stack_library/__init__.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stack_library/acm/__init__.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stack_library/acm/acm_stack.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stack_library/api_gateway/api_gateway_stack.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stack_library/auto_scaling/__init__.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stack_library/auto_scaling/auto_scaling_stack.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stack_library/aws_lambdas/lambda_stack.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stack_library/buckets/README.md +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stack_library/buckets/bucket_stack.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stack_library/cloudfront/__init__.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stack_library/code_artifact/code_artifact_stack.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stack_library/cognito/cognito_stack.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stack_library/dynamodb/dynamodb_stack.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stack_library/ecr/README.md +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stack_library/ecr/ecr_stack.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stack_library/ecs/__init__.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stack_library/ecs/ecs_cluster_stack.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stack_library/lambda_edge/__init__.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stack_library/lambda_edge/lambda_edge_stack.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stack_library/load_balancer/__init__.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stack_library/monitoring/__init__.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stack_library/monitoring/monitoring_stack.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stack_library/rds/__init__.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stack_library/rds/rds_stack.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stack_library/route53/__init__.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stack_library/rum/__init__.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stack_library/rum/rum_stack.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stack_library/security_group/__init__.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stack_library/security_group/security_group_full_stack.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stack_library/security_group/security_group_stack.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stack_library/simple_queue_service/sqs_stack.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stack_library/stack_base.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stack_library/vpc/__init__.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stack_library/vpc/vpc_stack.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stack_library/websites/static_website_stack.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stages/websites/static_website_stage.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/templates/README.md +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/templates/app.py.template +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/templates/cdk.json.template +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/utilities/api_gateway_integration_utility.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/utilities/commandline_args.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/utilities/configuration_loader.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/utilities/docker_utilities.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/utilities/environment_services.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/utilities/file_operations.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/utilities/git_utilities.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/utilities/json_loading_utility.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/utilities/lambda_function_utilities.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/utilities/os_execute.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/utils/api_gateway_utilities.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/validation/config_validator.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/workload/workload_factory.py +0 -0
- {cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/handlers/test/handler.py +0 -0
{cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/resources/ecs_service.py
RENAMED
|
@@ -83,14 +83,27 @@ class EcsServiceConfig:
|
|
|
83
83
|
"""Whether to assign public IP addresses"""
|
|
84
84
|
return self._config.get("assign_public_ip", False)
|
|
85
85
|
|
|
86
|
+
@property
|
|
87
|
+
def load_balancer_config(self) -> Dict[str, Any]:
|
|
88
|
+
"""Load balancer configuration"""
|
|
89
|
+
return self._config.get("load_balancer", {})
|
|
90
|
+
|
|
86
91
|
@property
|
|
87
92
|
def target_group_arns(self) -> List[str]:
|
|
88
93
|
"""Target group ARNs for load balancing"""
|
|
94
|
+
# Check if load_balancer config has target_group_arn
|
|
95
|
+
if self.load_balancer_config and self.load_balancer_config.get("target_group_arn"):
|
|
96
|
+
arn = self.load_balancer_config["target_group_arn"]
|
|
97
|
+
if arn and arn != "arn:aws:elasticloadbalancing:placeholder":
|
|
98
|
+
return [arn]
|
|
89
99
|
return self._config.get("target_group_arns", [])
|
|
90
100
|
|
|
91
101
|
@property
|
|
92
102
|
def container_port(self) -> int:
|
|
93
103
|
"""Container port for load balancer"""
|
|
104
|
+
# Check load_balancer config first
|
|
105
|
+
if self.load_balancer_config and self.load_balancer_config.get("container_port"):
|
|
106
|
+
return self.load_balancer_config["container_port"]
|
|
94
107
|
return self._config.get("container_port", 80)
|
|
95
108
|
|
|
96
109
|
@property
|
|
@@ -138,8 +151,17 @@ class EcsServiceConfig:
|
|
|
138
151
|
"""SSM parameter imports"""
|
|
139
152
|
# Check both nested and flat structures for backwards compatibility
|
|
140
153
|
if "ssm" in self._config and "imports" in self._config["ssm"]:
|
|
141
|
-
|
|
142
|
-
|
|
154
|
+
imports = self._config["ssm"]["imports"]
|
|
155
|
+
else:
|
|
156
|
+
imports = self.ssm.get("imports", {})
|
|
157
|
+
|
|
158
|
+
# Add load_balancer SSM imports if they exist
|
|
159
|
+
if self.load_balancer_config and "ssm" in self.load_balancer_config:
|
|
160
|
+
lb_ssm = self.load_balancer_config["ssm"]
|
|
161
|
+
if "imports" in lb_ssm:
|
|
162
|
+
imports.update(lb_ssm["imports"])
|
|
163
|
+
|
|
164
|
+
return imports
|
|
143
165
|
|
|
144
166
|
@property
|
|
145
167
|
def deployment_type(self) -> str:
|
{cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/configurations/resources/route53.py
RENAMED
|
@@ -106,3 +106,8 @@ class Route53Config:
|
|
|
106
106
|
def tags(self) -> Dict[str, str]:
|
|
107
107
|
"""Tags to apply to the Route53 resources"""
|
|
108
108
|
return self.__config.get("tags", {})
|
|
109
|
+
|
|
110
|
+
@property
|
|
111
|
+
def records(self) -> List[Dict[str, Any]]:
|
|
112
|
+
"""Records to create"""
|
|
113
|
+
return self.__config.get("records", [])
|
{cdk_factory-0.18.12 → cdk_factory-0.18.19}/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:
|
|
@@ -269,6 +279,23 @@ class StandardizedSsmMixin:
|
|
|
269
279
|
|
|
270
280
|
return exported_params
|
|
271
281
|
|
|
282
|
+
def resolve_ssm_value(self, scope: Construct, value: str, unique_id: str)-> str:
|
|
283
|
+
if isinstance(value, str) and value.startswith("{{ssm:") and value.endswith("}}"):
|
|
284
|
+
# Extract SSM parameter path
|
|
285
|
+
ssm_param_path = value[6:-2] # Remove {{ssm: and }}
|
|
286
|
+
|
|
287
|
+
# Import SSM parameter - this creates a token that resolves at deployment time
|
|
288
|
+
param = ssm.StringParameter.from_string_parameter_name(
|
|
289
|
+
scope=scope,
|
|
290
|
+
id=f"{unique_id}-env-{hash(ssm_param_path) % 10000}",
|
|
291
|
+
string_parameter_name=ssm_param_path
|
|
292
|
+
)
|
|
293
|
+
resolved_value = param.string_value
|
|
294
|
+
logger.info(f"Resolved SSM parameter {ssm_param_path}")
|
|
295
|
+
return resolved_value
|
|
296
|
+
else:
|
|
297
|
+
return value
|
|
298
|
+
|
|
272
299
|
def _resolve_ssm_import(self, import_value: Union[str, List[str]], import_key: str) -> Union[str, List[str]]:
|
|
273
300
|
"""
|
|
274
301
|
Resolve SSM import value with proper error handling and validation.
|
|
@@ -13,6 +13,7 @@ from aws_cdk import (
|
|
|
13
13
|
aws_cloudfront as cloudfront,
|
|
14
14
|
aws_cloudfront_origins as origins,
|
|
15
15
|
aws_certificatemanager as acm,
|
|
16
|
+
aws_route53 as route53,
|
|
16
17
|
aws_lambda as _lambda,
|
|
17
18
|
aws_ssm as ssm,
|
|
18
19
|
CfnOutput,
|
|
@@ -173,14 +174,18 @@ class CloudFrontStack(IStack):
|
|
|
173
174
|
return
|
|
174
175
|
|
|
175
176
|
# Create the certificate
|
|
177
|
+
# Get hosted zone from SSM imports
|
|
178
|
+
hosted_zone_id = cert_config.get("hosted_zone_id")
|
|
179
|
+
hosted_zone = route53.HostedZone.from_hosted_zone_id(
|
|
180
|
+
self, "HostedZone", hosted_zone_id
|
|
181
|
+
)
|
|
182
|
+
|
|
176
183
|
self.certificate = acm.Certificate(
|
|
177
184
|
self,
|
|
178
185
|
"Certificate",
|
|
179
186
|
domain_name=domain_name,
|
|
180
187
|
subject_alternative_names=self.cf_config.aliases,
|
|
181
|
-
|
|
182
|
-
cert_config.get("validation_method", "DNS")
|
|
183
|
-
),
|
|
188
|
+
validation=acm.CertificateValidation.from_dns(hosted_zone=hosted_zone),
|
|
184
189
|
)
|
|
185
190
|
logger.info(f"Created new ACM certificate for domain: {domain_name}")
|
|
186
191
|
return
|
{cdk_factory-0.18.12 → cdk_factory-0.18.19}/src/cdk_factory/stack_library/ecs/ecs_service_stack.py
RENAMED
|
@@ -563,7 +563,7 @@ class EcsServiceStack(IStack, VPCProviderMixin, StandardizedSsmMixin):
|
|
|
563
563
|
for param_key, param_name in ssm_imports.items():
|
|
564
564
|
if 'target_group' in param_key.lower() or 'tg' in param_key.lower():
|
|
565
565
|
try:
|
|
566
|
-
param_value = self.
|
|
566
|
+
param_value = self.get_ssm_imported_value(param_name)
|
|
567
567
|
if param_value and param_value.startswith('arn:'):
|
|
568
568
|
target_group_arns.append(param_value)
|
|
569
569
|
except Exception as e:
|
|
@@ -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,
|