cdk-factory 0.18.26__py3-none-any.whl → 0.19.7__py3-none-any.whl
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/configurations/resources/lambda_edge.py +2 -2
- cdk_factory/configurations/resources/rds.py +1 -1
- cdk_factory/configurations/resources/s3.py +9 -1
- cdk_factory/constructs/cloudfront/cloudfront_distribution_construct.py +1 -1
- cdk_factory/stack_library/acm/acm_stack.py +4 -15
- cdk_factory/stack_library/auto_scaling/auto_scaling_stack.py +35 -8
- cdk_factory/stack_library/cloudfront/cloudfront_stack.py +42 -20
- cdk_factory/stack_library/code_artifact/code_artifact_stack.py +3 -25
- cdk_factory/stack_library/ecs/ecs_service_stack.py +4 -25
- cdk_factory/stack_library/lambda_edge/lambda_edge_stack.py +1 -24
- cdk_factory/stack_library/load_balancer/load_balancer_stack.py +2 -59
- cdk_factory/stack_library/rds/rds_stack.py +1 -25
- cdk_factory/stack_library/route53/route53_stack.py +1 -34
- cdk_factory/stack_library/security_group/security_group_full_stack.py +1 -31
- cdk_factory/stack_library/security_group/security_group_stack.py +1 -8
- cdk_factory/stack_library/simple_queue_service/sqs_stack.py +1 -34
- cdk_factory/stack_library/vpc/vpc_stack.py +2 -109
- cdk_factory/stack_library/websites/static_website_stack.py +6 -2
- cdk_factory/version.py +1 -1
- {cdk_factory-0.18.26.dist-info → cdk_factory-0.19.7.dist-info}/METADATA +1 -1
- {cdk_factory-0.18.26.dist-info → cdk_factory-0.19.7.dist-info}/RECORD +24 -24
- {cdk_factory-0.18.26.dist-info → cdk_factory-0.19.7.dist-info}/WHEEL +0 -0
- {cdk_factory-0.18.26.dist-info → cdk_factory-0.19.7.dist-info}/entry_points.txt +0 -0
- {cdk_factory-0.18.26.dist-info → cdk_factory-0.19.7.dist-info}/licenses/LICENSE +0 -0
|
@@ -52,13 +52,13 @@ class LambdaEdgeConfig(EnhancedBaseConfig):
|
|
|
52
52
|
"""Timeout in seconds (max 5 for origin-request)"""
|
|
53
53
|
timeout = int(self._config.get("timeout", 5))
|
|
54
54
|
if timeout > 5:
|
|
55
|
-
raise ValueError("Lambda@Edge origin-request timeout cannot exceed 5 seconds")
|
|
55
|
+
raise ValueError("Lambda@Edge origin-request timeout cannot exceed 5 seconds. Value was set to {}".format(timeout))
|
|
56
56
|
return timeout
|
|
57
57
|
|
|
58
58
|
@property
|
|
59
59
|
def code_path(self) -> str:
|
|
60
60
|
"""Path to Lambda function code directory"""
|
|
61
|
-
return self._config.get("code_path", "./lambdas/
|
|
61
|
+
return self._config.get("code_path", "./lambdas/cloudfront/ip_gate")
|
|
62
62
|
|
|
63
63
|
@property
|
|
64
64
|
def environment(self) -> Dict[str, str]:
|
|
@@ -158,7 +158,15 @@ class S3BucketConfig(EnhancedBaseConfig):
|
|
|
158
158
|
value = self.__config.get("block_public_access")
|
|
159
159
|
|
|
160
160
|
if value and isinstance(value, str):
|
|
161
|
-
if value.lower() == "
|
|
161
|
+
if value.lower() == "disabled":
|
|
162
|
+
# For public website hosting, disable block public access
|
|
163
|
+
return s3.BlockPublicAccess(
|
|
164
|
+
block_public_acls=False,
|
|
165
|
+
block_public_policy=False,
|
|
166
|
+
ignore_public_acls=False,
|
|
167
|
+
restrict_public_buckets=False
|
|
168
|
+
)
|
|
169
|
+
elif value.lower() == "block_acls":
|
|
162
170
|
return s3.BlockPublicAccess.BLOCK_ACLS
|
|
163
171
|
# elif value.lower() == "block_public_acls":
|
|
164
172
|
# return s3.BlockPublicAccess.block_public_acls
|
|
@@ -153,18 +153,7 @@ class AcmStack(IStack, StandardizedSsmMixin):
|
|
|
153
153
|
|
|
154
154
|
def _add_outputs(self, cert_name: str) -> None:
|
|
155
155
|
"""Add CloudFormation outputs"""
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
description=f"Certificate ARN for {self.acm_config.domain_name}",
|
|
161
|
-
export_name=f"{cert_name}-arn",
|
|
162
|
-
)
|
|
163
|
-
|
|
164
|
-
cdk.CfnOutput(
|
|
165
|
-
self,
|
|
166
|
-
"DomainName",
|
|
167
|
-
value=self.acm_config.domain_name,
|
|
168
|
-
description="Primary domain name for the certificate",
|
|
169
|
-
export_name=f"{cert_name}-domain",
|
|
170
|
-
)
|
|
156
|
+
|
|
157
|
+
return
|
|
158
|
+
|
|
159
|
+
|
|
@@ -13,7 +13,7 @@ from aws_cdk import aws_cloudwatch as cloudwatch
|
|
|
13
13
|
from aws_cdk import aws_iam as iam
|
|
14
14
|
from aws_cdk import aws_ssm as ssm
|
|
15
15
|
from aws_cdk import aws_ecs as ecs
|
|
16
|
-
from aws_cdk import Duration, Stack
|
|
16
|
+
from aws_cdk import Duration, Stack, CfnUpdatePolicy
|
|
17
17
|
from aws_lambda_powertools import Logger
|
|
18
18
|
from constructs import Construct
|
|
19
19
|
|
|
@@ -539,12 +539,15 @@ class AutoScalingStack(IStack, VPCProviderMixin, StandardizedSsmMixin):
|
|
|
539
539
|
|
|
540
540
|
if not instance_refresh_config.get("enabled", False):
|
|
541
541
|
return
|
|
542
|
+
|
|
543
|
+
logger.warning("Instance refresh is not supported in this version of the CDK")
|
|
544
|
+
return
|
|
542
545
|
|
|
543
546
|
# Get the CloudFormation ASG resource
|
|
544
547
|
cfn_asg = asg.node.default_child
|
|
545
548
|
|
|
546
549
|
# Configure instance refresh using CloudFormation UpdatePolicy
|
|
547
|
-
#
|
|
550
|
+
# UpdatePolicy is added at the resource level, not as a property
|
|
548
551
|
update_policy = {
|
|
549
552
|
"AutoScalingRollingUpdate": {
|
|
550
553
|
"PauseTime": "PT300S", # 5 minutes pause
|
|
@@ -561,13 +564,37 @@ class AutoScalingStack(IStack, VPCProviderMixin, StandardizedSsmMixin):
|
|
|
561
564
|
}
|
|
562
565
|
}
|
|
563
566
|
|
|
564
|
-
# Apply instance refresh using CloudFormation
|
|
565
|
-
cfn_asg.
|
|
566
|
-
|
|
567
|
+
# # Apply instance refresh using CloudFormation's cfn_options.update_policy
|
|
568
|
+
# cfn_asg.cfn_options.update_policy = cdk.CfnUpdatePolicy.from_rolling_update(
|
|
569
|
+
# pause_time=cdk.Duration.seconds(300),
|
|
570
|
+
# min_instances_in_service=1,
|
|
571
|
+
# max_batch_size=1,
|
|
572
|
+
# wait_on_resource_signals=True
|
|
573
|
+
# )
|
|
574
|
+
|
|
575
|
+
# Grab the L1 to attach UpdatePolicy.InstanceRefresh
|
|
576
|
+
cfn_asg: autoscaling.CfnAutoScalingGroup = asg.node.default_child
|
|
577
|
+
|
|
578
|
+
# cfn_asg.cfn_options.update_policy = CfnUpdatePolicy.from_auto_scaling_instance_refresh(
|
|
579
|
+
# # Triggers tell CFN *what* changes should start a refresh
|
|
580
|
+
# triggers=[CfnUpdatePolicy.InstanceRefreshTrigger.LAUNCH_TEMPLATE],
|
|
581
|
+
# preferences=CfnUpdatePolicy.InstanceRefreshPreferences(
|
|
582
|
+
# # warmup is like “grace” before counting a new instance healthy
|
|
583
|
+
# instance_warmup=Duration.minutes(5),
|
|
584
|
+
# # how aggressive the refresh is; 90 keeps capacity high
|
|
585
|
+
# min_healthy_percentage=90,
|
|
586
|
+
# # skip instances that already match the new LT (fast when only userdata/env tweaked)
|
|
587
|
+
# skip_matching=True,
|
|
588
|
+
# # optional: put instances in Standby first; default is rolling terminate/launch
|
|
589
|
+
# # standby_instances=CfnUpdatePolicy.StandbyInstances.TERMINATE,
|
|
590
|
+
# # checkpoint_percentages=[25, 50, 75], # optional: progressive checkpoints
|
|
591
|
+
# # checkpoint_delay=Duration.minutes(2), # optional delay at checkpoints
|
|
592
|
+
# ),
|
|
593
|
+
# )
|
|
594
|
+
logger.info(f"Configured instance refresh via CDK CfnUpdatePolicy")
|
|
567
595
|
|
|
568
|
-
# Note:
|
|
569
|
-
#
|
|
570
|
-
# This rolling update policy provides similar functionality
|
|
596
|
+
# Note: This provides rolling update functionality similar to instance refresh
|
|
597
|
+
# For true instance refresh with preferences, we would need CDK v2.80+ or custom CloudFormation
|
|
571
598
|
|
|
572
599
|
|
|
573
600
|
# Backward compatibility alias
|
|
@@ -14,6 +14,7 @@ from aws_cdk import (
|
|
|
14
14
|
aws_cloudfront_origins as origins,
|
|
15
15
|
aws_certificatemanager as acm,
|
|
16
16
|
aws_route53 as route53,
|
|
17
|
+
aws_s3 as s3,
|
|
17
18
|
aws_lambda as _lambda,
|
|
18
19
|
aws_ssm as ssm,
|
|
19
20
|
CfnOutput,
|
|
@@ -222,27 +223,27 @@ class CloudFrontStack(IStack):
|
|
|
222
223
|
|
|
223
224
|
def _create_custom_origin(self, config: Dict[str, Any]) -> cloudfront.IOrigin:
|
|
224
225
|
"""Create custom origin (ALB, API Gateway, etc.)"""
|
|
225
|
-
domain_name = config.get("domain_name")
|
|
226
|
+
domain_name = self.resolve_ssm_value(self, config.get("domain_name"), config.get("domain_name"))
|
|
226
227
|
origin_id = config.get("id")
|
|
227
228
|
|
|
228
229
|
if not domain_name:
|
|
229
230
|
raise ValueError("domain_name is required for custom origin")
|
|
230
231
|
|
|
231
|
-
# Check if domain name is a placeholder from ssm_imports
|
|
232
|
-
if domain_name.startswith("{{") and domain_name.endswith("}}"):
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
# Legacy support: Check if domain name is an SSM parameter reference
|
|
241
|
-
elif domain_name.startswith("{{ssm:") and domain_name.endswith("}}"):
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
232
|
+
# # Check if domain name is a placeholder from ssm_imports
|
|
233
|
+
# if domain_name.startswith("{{") and domain_name.endswith("}}"):
|
|
234
|
+
# placeholder_key = domain_name[2:-2] # Remove {{ and }}
|
|
235
|
+
# if placeholder_key in self.ssm_imported_values:
|
|
236
|
+
# domain_name = self.ssm_imported_values[placeholder_key]
|
|
237
|
+
# logger.info(f"Resolved domain from SSM import: {placeholder_key}")
|
|
238
|
+
# else:
|
|
239
|
+
# logger.warning(f"Placeholder {domain_name} not found in SSM imports")
|
|
240
|
+
|
|
241
|
+
# # Legacy support: Check if domain name is an SSM parameter reference
|
|
242
|
+
# elif domain_name.startswith("{{ssm:") and domain_name.endswith("}}"):
|
|
243
|
+
# # Extract SSM parameter name
|
|
244
|
+
# ssm_param = domain_name[6:-2] # Remove {{ssm: and }}
|
|
245
|
+
# domain_name = ssm.StringParameter.value_from_lookup(self, ssm_param)
|
|
246
|
+
# logger.info(f"Resolved domain from SSM lookup {ssm_param}: {domain_name}")
|
|
246
247
|
|
|
247
248
|
# Build custom headers (e.g., X-Origin-Secret)
|
|
248
249
|
custom_headers = {}
|
|
@@ -296,11 +297,32 @@ class CloudFrontStack(IStack):
|
|
|
296
297
|
|
|
297
298
|
def _create_s3_origin(self, config: Dict[str, Any]) -> cloudfront.IOrigin:
|
|
298
299
|
"""Create S3 origin"""
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
300
|
+
bucket_name = self.resolve_ssm_value(self, config.get("bucket_name"), config.get("bucket_name"))
|
|
301
|
+
|
|
302
|
+
|
|
303
|
+
origin_path = config.get("origin_path", "")
|
|
304
|
+
|
|
305
|
+
if not bucket_name:
|
|
306
|
+
raise ValueError("S3 origin requires 'bucket_name' configuration")
|
|
307
|
+
|
|
308
|
+
# For S3 origins, we need to import the bucket by name
|
|
309
|
+
bucket = s3.Bucket.from_bucket_name(
|
|
310
|
+
self,
|
|
311
|
+
id=f"S3OriginBucket-{config.get('id', 'unknown')}",
|
|
312
|
+
bucket_name=bucket_name
|
|
313
|
+
)
|
|
314
|
+
|
|
315
|
+
# Create S3 origin with OAC (Origin Access Control) for security
|
|
316
|
+
origin = origins.S3BucketOrigin.with_origin_access_control(
|
|
317
|
+
bucket,
|
|
318
|
+
origin_path=origin_path,
|
|
319
|
+
origin_access_levels=[
|
|
320
|
+
cloudfront.AccessLevel.READ,
|
|
321
|
+
cloudfront.AccessLevel.LIST,
|
|
322
|
+
],
|
|
303
323
|
)
|
|
324
|
+
|
|
325
|
+
return origin
|
|
304
326
|
|
|
305
327
|
def _create_distribution(self) -> None:
|
|
306
328
|
"""Create CloudFront distribution"""
|
|
@@ -140,32 +140,10 @@ class CodeArtifactStack(IStack, StandardizedSsmMixin):
|
|
|
140
140
|
|
|
141
141
|
def _add_outputs(self) -> None:
|
|
142
142
|
"""Add CloudFormation outputs for the CodeArtifact resources"""
|
|
143
|
+
|
|
144
|
+
|
|
143
145
|
# Domain outputs
|
|
144
146
|
if self.domain:
|
|
145
147
|
domain_name = self.code_artifact_config.domain_name
|
|
146
148
|
|
|
147
|
-
|
|
148
|
-
cdk.CfnOutput(
|
|
149
|
-
self,
|
|
150
|
-
f"{domain_name}-domain-arn",
|
|
151
|
-
value=self.domain.attr_arn,
|
|
152
|
-
export_name=f"{self.deployment.build_resource_name(domain_name)}-domain-arn"
|
|
153
|
-
)
|
|
154
|
-
|
|
155
|
-
# Domain URL
|
|
156
|
-
cdk.CfnOutput(
|
|
157
|
-
self,
|
|
158
|
-
f"{domain_name}-domain-url",
|
|
159
|
-
value=f"https://{self.code_artifact_config.account}.d.codeartifact.{self.code_artifact_config.region}.amazonaws.com/",
|
|
160
|
-
export_name=f"{self.deployment.build_resource_name(domain_name)}-domain-url"
|
|
161
|
-
)
|
|
162
|
-
|
|
163
|
-
# Repository outputs
|
|
164
|
-
for repo_name, repo in self.repositories.items():
|
|
165
|
-
# Repository ARN
|
|
166
|
-
cdk.CfnOutput(
|
|
167
|
-
self,
|
|
168
|
-
f"{repo_name}-repo-arn",
|
|
169
|
-
value=repo.attr_arn,
|
|
170
|
-
export_name=f"{self.deployment.build_resource_name(repo_name)}-repo-arn"
|
|
171
|
-
)
|
|
149
|
+
|
|
@@ -101,6 +101,7 @@ class EcsServiceStack(IStack, VPCProviderMixin, StandardizedSsmMixin):
|
|
|
101
101
|
|
|
102
102
|
# Add outputs
|
|
103
103
|
self._add_outputs(service_name)
|
|
104
|
+
self._export_to_ssm(service_name)
|
|
104
105
|
|
|
105
106
|
def _load_vpc(self) -> None:
|
|
106
107
|
"""Load VPC using the centralized VPC provider mixin."""
|
|
@@ -603,35 +604,13 @@ class EcsServiceStack(IStack, VPCProviderMixin, StandardizedSsmMixin):
|
|
|
603
604
|
scale_out_cooldown=cdk.Duration.seconds(60),
|
|
604
605
|
)
|
|
605
606
|
|
|
607
|
+
|
|
608
|
+
|
|
606
609
|
def _add_outputs(self, service_name: str) -> None:
|
|
607
610
|
"""Add CloudFormation outputs"""
|
|
611
|
+
return
|
|
608
612
|
|
|
609
|
-
# Service name output
|
|
610
|
-
cdk.CfnOutput(
|
|
611
|
-
self,
|
|
612
|
-
"ServiceName",
|
|
613
|
-
value=self.service.service_name,
|
|
614
|
-
description=f"ECS Service Name: {service_name}",
|
|
615
|
-
)
|
|
616
|
-
|
|
617
|
-
# Service ARN output
|
|
618
|
-
cdk.CfnOutput(
|
|
619
|
-
self,
|
|
620
|
-
"ServiceArn",
|
|
621
|
-
value=self.service.service_arn,
|
|
622
|
-
description=f"ECS Service ARN: {service_name}",
|
|
623
|
-
)
|
|
624
|
-
|
|
625
|
-
# Cluster name output
|
|
626
|
-
cdk.CfnOutput(
|
|
627
|
-
self,
|
|
628
|
-
"ClusterName",
|
|
629
|
-
value=self.cluster.cluster_name,
|
|
630
|
-
description=f"ECS Cluster Name for {service_name}",
|
|
631
|
-
)
|
|
632
613
|
|
|
633
|
-
# Export to SSM if configured
|
|
634
|
-
self._export_to_ssm(service_name)
|
|
635
614
|
|
|
636
615
|
def _export_to_ssm(self, service_name: str) -> None:
|
|
637
616
|
"""Export resource ARNs and names to SSM Parameter Store"""
|
|
@@ -132,7 +132,7 @@ class LambdaEdgeStack(IStack, StandardizedSsmMixin):
|
|
|
132
132
|
def _create_lambda_function(self, function_name: str) -> None:
|
|
133
133
|
"""Create the Lambda function"""
|
|
134
134
|
|
|
135
|
-
# Resolve code path - support package references (e.g., "cdk_factory:lambdas/
|
|
135
|
+
# Resolve code path - support package references (e.g., "cdk_factory:lambdas/cloudfront/ip_gate")
|
|
136
136
|
code_path_str = self.edge_config.code_path
|
|
137
137
|
|
|
138
138
|
if ':' in code_path_str:
|
|
@@ -303,30 +303,7 @@ class LambdaEdgeStack(IStack, StandardizedSsmMixin):
|
|
|
303
303
|
def _add_outputs(self, function_name: str) -> None:
|
|
304
304
|
"""Add CloudFormation outputs and SSM exports"""
|
|
305
305
|
|
|
306
|
-
# CloudFormation outputs
|
|
307
|
-
cdk.CfnOutput(
|
|
308
|
-
self,
|
|
309
|
-
"FunctionName",
|
|
310
|
-
value=self.function.function_name,
|
|
311
|
-
description="Lambda function name",
|
|
312
|
-
export_name=f"{function_name}-name"
|
|
313
|
-
)
|
|
314
306
|
|
|
315
|
-
cdk.CfnOutput(
|
|
316
|
-
self,
|
|
317
|
-
"FunctionArn",
|
|
318
|
-
value=self.function.function_arn,
|
|
319
|
-
description="Lambda function ARN (unversioned)",
|
|
320
|
-
export_name=f"{function_name}-arn"
|
|
321
|
-
)
|
|
322
|
-
|
|
323
|
-
cdk.CfnOutput(
|
|
324
|
-
self,
|
|
325
|
-
"FunctionVersionArn",
|
|
326
|
-
value=self.function_version.function_arn,
|
|
327
|
-
description="Lambda function version ARN (use this for Lambda@Edge)",
|
|
328
|
-
export_name=f"{function_name}-version-arn"
|
|
329
|
-
)
|
|
330
307
|
|
|
331
308
|
# SSM Parameter Store exports (if configured)
|
|
332
309
|
ssm_exports = self.edge_config.dictionary.get("ssm", {}).get("exports", {})
|
|
@@ -656,36 +656,7 @@ class LoadBalancerStack(IStack, VPCProviderMixin, StandardizedSsmMixin):
|
|
|
656
656
|
|
|
657
657
|
def _export_cfn_outputs(self, lb_name: str) -> None:
|
|
658
658
|
"""Add CloudFormation outputs for the Load Balancer"""
|
|
659
|
-
|
|
660
|
-
# Load Balancer DNS Name
|
|
661
|
-
cdk.CfnOutput(
|
|
662
|
-
self,
|
|
663
|
-
f"{lb_name}-dns-name",
|
|
664
|
-
value=self.load_balancer.load_balancer_dns_name,
|
|
665
|
-
export_name=f"{self.deployment.build_resource_name(lb_name)}-dns-name",
|
|
666
|
-
)
|
|
667
|
-
|
|
668
|
-
# Load Balancer ARN
|
|
669
|
-
cdk.CfnOutput(
|
|
670
|
-
self,
|
|
671
|
-
f"{lb_name}-arn",
|
|
672
|
-
value=self.load_balancer.load_balancer_arn,
|
|
673
|
-
export_name=f"{self.deployment.build_resource_name(lb_name)}-arn",
|
|
674
|
-
)
|
|
675
|
-
|
|
676
|
-
# Target Group ARNs
|
|
677
|
-
for tg_name, target_group in self.target_groups.items():
|
|
678
|
-
# Normalize target group name for consistent CloudFormation export naming
|
|
679
|
-
normalized_tg_name = self.normalize_resource_name(
|
|
680
|
-
tg_name, for_export=True
|
|
681
|
-
)
|
|
682
|
-
cdk.CfnOutput(
|
|
683
|
-
self,
|
|
684
|
-
f"{lb_name}-{normalized_tg_name}-arn",
|
|
685
|
-
value=target_group.target_group_arn,
|
|
686
|
-
export_name=f"{self.deployment.build_resource_name(lb_name)}-{normalized_tg_name}-arn",
|
|
687
|
-
)
|
|
688
|
-
|
|
659
|
+
return
|
|
689
660
|
def _export_ssm_parameters(self, lb_name: str) -> None:
|
|
690
661
|
"""Export Load Balancer resources to SSM Parameter Store if configured"""
|
|
691
662
|
if not self.load_balancer:
|
|
@@ -716,32 +687,4 @@ class LoadBalancerStack(IStack, VPCProviderMixin, StandardizedSsmMixin):
|
|
|
716
687
|
|
|
717
688
|
def _export_cfn_outputs(self, lb_name: str) -> None:
|
|
718
689
|
"""Add CloudFormation outputs for the Load Balancer"""
|
|
719
|
-
|
|
720
|
-
# Load Balancer DNS Name
|
|
721
|
-
cdk.CfnOutput(
|
|
722
|
-
self,
|
|
723
|
-
f"{lb_name}-dns-name",
|
|
724
|
-
value=self.load_balancer.load_balancer_dns_name,
|
|
725
|
-
export_name=f"{self.deployment.build_resource_name(lb_name)}-dns-name",
|
|
726
|
-
)
|
|
727
|
-
|
|
728
|
-
# Load Balancer ARN
|
|
729
|
-
cdk.CfnOutput(
|
|
730
|
-
self,
|
|
731
|
-
f"{lb_name}-arn",
|
|
732
|
-
value=self.load_balancer.load_balancer_arn,
|
|
733
|
-
export_name=f"{self.deployment.build_resource_name(lb_name)}-arn",
|
|
734
|
-
)
|
|
735
|
-
|
|
736
|
-
# Target Group ARNs
|
|
737
|
-
for tg_name, target_group in self.target_groups.items():
|
|
738
|
-
# Normalize target group name for consistent CloudFormation export naming
|
|
739
|
-
normalized_tg_name = self.normalize_resource_name(
|
|
740
|
-
tg_name, for_export=True
|
|
741
|
-
)
|
|
742
|
-
cdk.CfnOutput(
|
|
743
|
-
self,
|
|
744
|
-
f"{lb_name}-{normalized_tg_name}-arn",
|
|
745
|
-
value=target_group.target_group_arn,
|
|
746
|
-
export_name=f"{self.deployment.build_resource_name(lb_name)}-{normalized_tg_name}-arn",
|
|
747
|
-
)
|
|
690
|
+
return
|
|
@@ -285,31 +285,7 @@ class RdsStack(IStack, VPCProviderMixin, StandardizedSsmMixin):
|
|
|
285
285
|
|
|
286
286
|
def _add_outputs(self, db_name: str) -> None:
|
|
287
287
|
"""Add CloudFormation outputs for the RDS instance"""
|
|
288
|
-
|
|
289
|
-
# Database endpoint
|
|
290
|
-
cdk.CfnOutput(
|
|
291
|
-
self,
|
|
292
|
-
f"{db_name}-endpoint",
|
|
293
|
-
value=self.db_instance.db_instance_endpoint_address,
|
|
294
|
-
export_name=f"{self.deployment.build_resource_name(db_name)}-endpoint",
|
|
295
|
-
)
|
|
296
|
-
|
|
297
|
-
# Database port
|
|
298
|
-
cdk.CfnOutput(
|
|
299
|
-
self,
|
|
300
|
-
f"{db_name}-port",
|
|
301
|
-
value=self.db_instance.db_instance_endpoint_port,
|
|
302
|
-
export_name=f"{self.deployment.build_resource_name(db_name)}-port",
|
|
303
|
-
)
|
|
304
|
-
|
|
305
|
-
# Secret ARN (if available)
|
|
306
|
-
if hasattr(self.db_instance, "secret") and self.db_instance.secret:
|
|
307
|
-
cdk.CfnOutput(
|
|
308
|
-
self,
|
|
309
|
-
f"{db_name}-secret-arn",
|
|
310
|
-
value=self.db_instance.secret.secret_arn,
|
|
311
|
-
export_name=f"{self.deployment.build_resource_name(db_name)}-secret-arn",
|
|
312
|
-
)
|
|
288
|
+
return
|
|
313
289
|
|
|
314
290
|
def _export_ssm_parameters(self, db_name: str) -> None:
|
|
315
291
|
"""Export RDS connection info and credentials to SSM Parameter Store"""
|
|
@@ -413,37 +413,4 @@ class Route53Stack(IStack, StandardizedSsmMixin):
|
|
|
413
413
|
def _add_outputs(self) -> None:
|
|
414
414
|
"""Add CloudFormation outputs for the Route53 resources"""
|
|
415
415
|
# Hosted Zone ID
|
|
416
|
-
|
|
417
|
-
cdk.CfnOutput(
|
|
418
|
-
self,
|
|
419
|
-
"HostedZoneId",
|
|
420
|
-
value=self.hosted_zone.hosted_zone_id,
|
|
421
|
-
export_name=f"{self.deployment.build_resource_name('hosted-zone')}-id"
|
|
422
|
-
)
|
|
423
|
-
|
|
424
|
-
# Hosted Zone Name Servers
|
|
425
|
-
if hasattr(self.hosted_zone, "name_servers") and self.hosted_zone.name_servers:
|
|
426
|
-
cdk.CfnOutput(
|
|
427
|
-
self,
|
|
428
|
-
"NameServers",
|
|
429
|
-
value=",".join(self.hosted_zone.name_servers),
|
|
430
|
-
export_name=f"{self.deployment.build_resource_name('hosted-zone')}-name-servers"
|
|
431
|
-
)
|
|
432
|
-
|
|
433
|
-
# Certificate ARN
|
|
434
|
-
if self.certificate:
|
|
435
|
-
cdk.CfnOutput(
|
|
436
|
-
self,
|
|
437
|
-
"CertificateArn",
|
|
438
|
-
value=self.certificate.certificate_arn,
|
|
439
|
-
export_name=f"{self.deployment.build_resource_name('certificate')}-arn"
|
|
440
|
-
)
|
|
441
|
-
|
|
442
|
-
# Record names
|
|
443
|
-
for name, record in self.records.items():
|
|
444
|
-
cdk.CfnOutput(
|
|
445
|
-
self,
|
|
446
|
-
f"Record-{name}",
|
|
447
|
-
value=name,
|
|
448
|
-
export_name=f"{self.deployment.build_resource_name('record')}-{name}"
|
|
449
|
-
)
|
|
416
|
+
return
|
|
@@ -194,37 +194,7 @@ class SecurityGroupsStack(IStack, VPCProviderMixin):
|
|
|
194
194
|
description="Uptime Robot",
|
|
195
195
|
)
|
|
196
196
|
|
|
197
|
-
|
|
198
|
-
# Outputs (exports)
|
|
199
|
-
# =========================================================
|
|
200
|
-
cdk.CfnOutput(
|
|
201
|
-
self,
|
|
202
|
-
"WebFleetAlbSecurityGroupOut",
|
|
203
|
-
value=alb_sg.ref,
|
|
204
|
-
description="Web Fleet Application Load Balancer Security Group",
|
|
205
|
-
export_name=f"{self.deployment.environment}-{self.workload.name}-WebFleetAlbSecurityGroup",
|
|
206
|
-
)
|
|
207
|
-
cdk.CfnOutput(
|
|
208
|
-
self,
|
|
209
|
-
"WebFleetInstancesSecurityGroupOut",
|
|
210
|
-
value=web_fleet_sg.ref,
|
|
211
|
-
description="Web Fleet Instances Security Group",
|
|
212
|
-
export_name=f"{self.deployment.environment}-{self.workload.name}-WebFleetInstancesSecurityGroup",
|
|
213
|
-
)
|
|
214
|
-
cdk.CfnOutput(
|
|
215
|
-
self,
|
|
216
|
-
"MySqlDbSecurityGroupOut",
|
|
217
|
-
value=mysql_sg.ref,
|
|
218
|
-
description="MySql Security Group",
|
|
219
|
-
export_name=f"{self.deployment.environment}-{self.workload.name}-MySqlDbSecurityGroup",
|
|
220
|
-
)
|
|
221
|
-
cdk.CfnOutput(
|
|
222
|
-
self,
|
|
223
|
-
"WebMonitoringSecurityGroupOut",
|
|
224
|
-
value=monitoring_sg.ref,
|
|
225
|
-
description="Web Fleet Application Load Balancer Security Group",
|
|
226
|
-
export_name=f"{self.deployment.environment}-{self.workload.name}-WebMonitoringSecurityGroup",
|
|
227
|
-
)
|
|
197
|
+
|
|
228
198
|
|
|
229
199
|
# =========================================================
|
|
230
200
|
# SSM Parameter Store Exports
|
|
@@ -337,14 +337,7 @@ class SecurityGroupStack(IStack, VPCProviderMixin, StandardizedSsmMixin):
|
|
|
337
337
|
|
|
338
338
|
def _export_cfn_outputs(self, sg_name: str) -> None:
|
|
339
339
|
"""Add CloudFormation outputs for the Security Group"""
|
|
340
|
-
|
|
341
|
-
# Security Group ID
|
|
342
|
-
cdk.CfnOutput(
|
|
343
|
-
self,
|
|
344
|
-
f"{sg_name}-id",
|
|
345
|
-
value=self.security_group.security_group_id,
|
|
346
|
-
export_name=f"{self.deployment.build_resource_name(sg_name)}-id",
|
|
347
|
-
)
|
|
340
|
+
return
|
|
348
341
|
|
|
349
342
|
def _export_ssm_parameters(self, sg_name: str) -> None:
|
|
350
343
|
"""Add SSM parameters for the Security Group"""
|
|
@@ -131,37 +131,4 @@ class SQSStack(IStack):
|
|
|
131
131
|
|
|
132
132
|
def _add_outputs(self) -> None:
|
|
133
133
|
"""Add CloudFormation outputs for the SQS queues"""
|
|
134
|
-
|
|
135
|
-
# Queue ARN
|
|
136
|
-
cdk.CfnOutput(
|
|
137
|
-
self,
|
|
138
|
-
f"{queue_name}-arn",
|
|
139
|
-
value=queue.queue_arn,
|
|
140
|
-
export_name=f"{self.deployment.build_resource_name(queue_name)}-arn"
|
|
141
|
-
)
|
|
142
|
-
|
|
143
|
-
# Queue URL
|
|
144
|
-
cdk.CfnOutput(
|
|
145
|
-
self,
|
|
146
|
-
f"{queue_name}-url",
|
|
147
|
-
value=queue.queue_url,
|
|
148
|
-
export_name=f"{self.deployment.build_resource_name(queue_name)}-url"
|
|
149
|
-
)
|
|
150
|
-
|
|
151
|
-
# Also add outputs for DLQs
|
|
152
|
-
for dlq_name, dlq in self.dead_letter_queues.items():
|
|
153
|
-
# DLQ ARN
|
|
154
|
-
cdk.CfnOutput(
|
|
155
|
-
self,
|
|
156
|
-
f"{dlq_name}-arn",
|
|
157
|
-
value=dlq.queue_arn,
|
|
158
|
-
export_name=f"{self.deployment.build_resource_name(dlq_name)}-arn"
|
|
159
|
-
)
|
|
160
|
-
|
|
161
|
-
# DLQ URL
|
|
162
|
-
cdk.CfnOutput(
|
|
163
|
-
self,
|
|
164
|
-
f"{dlq_name}-url",
|
|
165
|
-
value=dlq.queue_url,
|
|
166
|
-
export_name=f"{self.deployment.build_resource_name(dlq_name)}-url"
|
|
167
|
-
)
|
|
134
|
+
return
|
|
@@ -241,115 +241,8 @@ class VpcStack(IStack, StandardizedSsmMixin):
|
|
|
241
241
|
|
|
242
242
|
def _add_outputs(self, vpc_name: str) -> None:
|
|
243
243
|
"""Add CloudFormation outputs for the VPC"""
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
# VPC outputs
|
|
248
|
-
# Use workload environment for consistency
|
|
249
|
-
workload_env = self.workload.dictionary.get("environment", self.deployment.environment)
|
|
250
|
-
workload_name = self.workload.dictionary.get("name", self.deployment.workload_name)
|
|
251
|
-
|
|
252
|
-
cdk.CfnOutput(
|
|
253
|
-
self,
|
|
254
|
-
f"{vpc_name}-VpcId",
|
|
255
|
-
value=self.vpc.vpc_id,
|
|
256
|
-
description=f"VPC ID for {vpc_name}",
|
|
257
|
-
export_name=f"{workload_name}-{workload_env}-vpc-id",
|
|
258
|
-
)
|
|
259
|
-
|
|
260
|
-
# Subnet outputs
|
|
261
|
-
public_subnet_ids = [subnet.subnet_id for subnet in self.vpc.public_subnets]
|
|
262
|
-
if public_subnet_ids:
|
|
263
|
-
cdk.CfnOutput(
|
|
264
|
-
self,
|
|
265
|
-
f"{vpc_name}-PublicSubnetIds",
|
|
266
|
-
value=",".join(public_subnet_ids),
|
|
267
|
-
description=f"Public subnet IDs for {vpc_name}",
|
|
268
|
-
export_name=f"{workload_name}-{workload_env}-public-subnet-ids",
|
|
269
|
-
)
|
|
270
|
-
|
|
271
|
-
private_subnet_ids = [subnet.subnet_id for subnet in self.vpc.private_subnets]
|
|
272
|
-
if private_subnet_ids:
|
|
273
|
-
cdk.CfnOutput(
|
|
274
|
-
self,
|
|
275
|
-
f"{vpc_name}-PrivateSubnetIds",
|
|
276
|
-
value=",".join(private_subnet_ids),
|
|
277
|
-
description=f"Private subnet IDs for {vpc_name}",
|
|
278
|
-
export_name=f"{workload_name}-{workload_env}-private-subnet-ids",
|
|
279
|
-
)
|
|
280
|
-
|
|
281
|
-
isolated_subnet_ids = [subnet.subnet_id for subnet in self.vpc.isolated_subnets]
|
|
282
|
-
if isolated_subnet_ids:
|
|
283
|
-
cdk.CfnOutput(
|
|
284
|
-
self,
|
|
285
|
-
f"{vpc_name}-IsolatedSubnetIds",
|
|
286
|
-
value=",".join(isolated_subnet_ids),
|
|
287
|
-
description=f"Isolated subnet IDs for {vpc_name}",
|
|
288
|
-
export_name=f"{workload_name}-{workload_env}-isolated-subnet-ids",
|
|
289
|
-
)
|
|
290
|
-
|
|
291
|
-
# Route table outputs - simplified to avoid route table access issues
|
|
292
|
-
# Skip route table outputs for now as they're causing CDK API issues
|
|
293
|
-
# public_route_table_ids = []
|
|
294
|
-
# if self.vpc.public_subnets:
|
|
295
|
-
# for subnet in self.vpc.public_subnets:
|
|
296
|
-
# # Access route table through the subnet's route table association
|
|
297
|
-
# for association in subnet.node.children:
|
|
298
|
-
# if hasattr(association, 'route_table_id') and association.route_table_id:
|
|
299
|
-
# public_route_table_ids.append(association.route_table_id)
|
|
300
|
-
#
|
|
301
|
-
# if public_route_table_ids:
|
|
302
|
-
# cdk.CfnOutput(
|
|
303
|
-
# self,
|
|
304
|
-
# f"{vpc_name}-PublicRouteTableIds",
|
|
305
|
-
# value=",".join(public_route_table_ids),
|
|
306
|
-
# description=f"Public route table IDs for {vpc_name}",
|
|
307
|
-
# export_name=f"{self.deployment.workload_name}-{self.deployment.environment}-public-route-table-ids",
|
|
308
|
-
# )
|
|
309
|
-
#
|
|
310
|
-
# private_route_table_ids = []
|
|
311
|
-
# if self.vpc.private_subnets:
|
|
312
|
-
# for subnet in self.vpc.private_subnets:
|
|
313
|
-
# # Access route table through the subnet's route table association
|
|
314
|
-
# for association in subnet.node.children:
|
|
315
|
-
# if hasattr(association, 'route_table_id') and association.route_table_id:
|
|
316
|
-
# private_route_table_ids.append(association.route_table_id)
|
|
317
|
-
#
|
|
318
|
-
# if private_route_table_ids:
|
|
319
|
-
# cdk.CfnOutput(
|
|
320
|
-
# self,
|
|
321
|
-
# f"{vpc_name}-PrivateRouteTableIds",
|
|
322
|
-
# value=",".join(private_route_table_ids),
|
|
323
|
-
# description=f"Private route table IDs for {vpc_name}",
|
|
324
|
-
# export_name=f"{self.deployment.workload_name}-{self.deployment.environment}-private-route-table-ids",
|
|
325
|
-
# )
|
|
326
|
-
|
|
327
|
-
# Internet Gateway output
|
|
328
|
-
if hasattr(self.vpc, 'internet_gateway_id') and self.vpc.internet_gateway_id:
|
|
329
|
-
cdk.CfnOutput(
|
|
330
|
-
self,
|
|
331
|
-
f"{vpc_name}-InternetGatewayId",
|
|
332
|
-
value=self.vpc.internet_gateway_id,
|
|
333
|
-
description=f"Internet Gateway ID for {vpc_name}",
|
|
334
|
-
export_name=f"{workload_name}-{workload_env}-internet-gateway-id",
|
|
335
|
-
)
|
|
336
|
-
|
|
337
|
-
# NAT Gateway outputs - simplified to avoid None values
|
|
338
|
-
nat_gateway_ids = []
|
|
339
|
-
for subnet in self.vpc.public_subnets:
|
|
340
|
-
if hasattr(subnet, 'node') and subnet.node:
|
|
341
|
-
for child in subnet.node.children:
|
|
342
|
-
if hasattr(child, 'nat_gateway_id') and child.nat_gateway_id:
|
|
343
|
-
nat_gateway_ids.append(child.nat_gateway_id)
|
|
344
|
-
|
|
345
|
-
if nat_gateway_ids:
|
|
346
|
-
cdk.CfnOutput(
|
|
347
|
-
self,
|
|
348
|
-
f"{vpc_name}-NatGatewayIds",
|
|
349
|
-
value=",".join(nat_gateway_ids),
|
|
350
|
-
description=f"NAT Gateway IDs for {vpc_name}",
|
|
351
|
-
export_name=f"{workload_name}-{workload_env}-nat-gateway-ids",
|
|
352
|
-
)
|
|
244
|
+
return
|
|
245
|
+
|
|
353
246
|
|
|
354
247
|
def _export_ssm_parameters(self) -> None:
|
|
355
248
|
"""Export SSM parameters using standardized approach"""
|
|
@@ -113,12 +113,16 @@ class StaticWebSiteStack(IStack):
|
|
|
113
113
|
self, stack_config: StackConfig, workload: WorkloadConfig
|
|
114
114
|
) -> str:
|
|
115
115
|
source = stack_config.dictionary.get("src", {}).get("path")
|
|
116
|
+
if not source:
|
|
117
|
+
raise ValueError("Source path is required for static website stack")
|
|
116
118
|
for base in workload.paths:
|
|
117
|
-
|
|
119
|
+
if base is None:
|
|
120
|
+
continue
|
|
121
|
+
candidate = Path(os.path.join(str(Path(base)), source)).resolve()
|
|
118
122
|
|
|
119
123
|
if candidate.exists():
|
|
120
124
|
return str(candidate)
|
|
121
|
-
raise ValueError(f"Could not find the source path: {source}")
|
|
125
|
+
raise ValueError(f"Could not find the source path for static site: {source}")
|
|
122
126
|
|
|
123
127
|
def __setup_cloudfront_distribution(
|
|
124
128
|
self,
|
cdk_factory/version.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "0.
|
|
1
|
+
__version__ = "0.19.7"
|
|
@@ -2,7 +2,7 @@ cdk_factory/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
2
2
|
cdk_factory/app.py,sha256=RnX0-pwdTAPAdKJK_j13Zl8anf9zYKBwboR0KA8K8xM,10346
|
|
3
3
|
cdk_factory/cdk.json,sha256=SKZKhJ2PBpFH78j-F8S3VDYW-lf76--Q2I3ON-ZIQfw,3106
|
|
4
4
|
cdk_factory/cli.py,sha256=FGbCTS5dYCNsfp-etshzvFlGDCjC28r6rtzYbe7KoHI,6407
|
|
5
|
-
cdk_factory/version.py,sha256=
|
|
5
|
+
cdk_factory/version.py,sha256=J3c1qqXnw8COuFtpXV6qt-A8xrobxQgGCMZ8gzmz1I4,23
|
|
6
6
|
cdk_factory/builds/README.md,sha256=9BBWd7bXpyKdMU_g2UljhQwrC9i5O_Tvkb6oPvndoZk,90
|
|
7
7
|
cdk_factory/commands/command_loader.py,sha256=QbLquuP_AdxtlxlDy-2IWCQ6D-7qa58aphnDPtp_uTs,3744
|
|
8
8
|
cdk_factory/configurations/base_config.py,sha256=eJ3Pl3GWk1jVr_bYQaaWlw4_-ZiFGaiXllI_fOOX1i0,9323
|
|
@@ -34,25 +34,25 @@ cdk_factory/configurations/resources/ecr.py,sha256=iJEtKqBT7vQU0LU4urIglraIR7cPZ
|
|
|
34
34
|
cdk_factory/configurations/resources/ecs_cluster.py,sha256=mQYJu7SUPDl5E4dMR6HCPFoWvFA3RGIb0iMNn-K7LX8,3635
|
|
35
35
|
cdk_factory/configurations/resources/ecs_service.py,sha256=bOWjVECd6Kbc5NGGSnDaopnKrjRsUfmaZ6-qrsmTs3Q,6468
|
|
36
36
|
cdk_factory/configurations/resources/exisiting.py,sha256=EVOLnkB-DGfTlmDgyQ5DD5k2zYfpFxqI3gugDR7mifI,478
|
|
37
|
-
cdk_factory/configurations/resources/lambda_edge.py,sha256=
|
|
37
|
+
cdk_factory/configurations/resources/lambda_edge.py,sha256=1tzxNPIsUSbwrdBHWrmqg08S629U3IGHNaNjEaLO_r8,3447
|
|
38
38
|
cdk_factory/configurations/resources/lambda_function.py,sha256=VENZ9-ABJ5mjcN8J8wdLH4KHDYr1kWO0iFDH0B2mJXA,14659
|
|
39
39
|
cdk_factory/configurations/resources/lambda_layers.py,sha256=gVeP_-LC3Eq0lkPaG_JfFUwboM5evRPr99SfKj53m7A,633
|
|
40
40
|
cdk_factory/configurations/resources/lambda_triggers.py,sha256=MD7cdMNKEulNBhtMLIFnWJuJ5R-yyIqa0LHUgbSQerA,834
|
|
41
41
|
cdk_factory/configurations/resources/load_balancer.py,sha256=P-jKemIjIWWqScmQKspmRy1m3BrwNkRtTNHDStOAJds,5617
|
|
42
42
|
cdk_factory/configurations/resources/monitoring.py,sha256=CPYWbUbWQzoPqDhdPiB4Vahq-pPi6BEkavkVohadSIo,2422
|
|
43
|
-
cdk_factory/configurations/resources/rds.py,sha256=
|
|
43
|
+
cdk_factory/configurations/resources/rds.py,sha256=pX6uihguv1apYH93obcE4RloQDP48q5JHnYTnO39Pn0,15935
|
|
44
44
|
cdk_factory/configurations/resources/resource_mapping.py,sha256=cwv3n63RJ6E59ErsmSTdkW4i-g8huhHtKI0ExbRhJxA,2182
|
|
45
45
|
cdk_factory/configurations/resources/resource_naming.py,sha256=VE9S2cpzp11qqPL2z1sX79wXH0o1SntO2OG74nEmWC8,5508
|
|
46
46
|
cdk_factory/configurations/resources/resource_types.py,sha256=1WQHyDoErb-M-tETZZzyLDtbq_jdC85-I403dM48pgE,2317
|
|
47
47
|
cdk_factory/configurations/resources/route53.py,sha256=u63kw9cLBdOQrvxnULmopFqiArIYNvoWhrILNWvhD7w,3599
|
|
48
48
|
cdk_factory/configurations/resources/route53_hosted_zone.py,sha256=qjEYPCSxSOx5blr9EULv892ezxkCs--yrLa1ngWbyXM,880
|
|
49
49
|
cdk_factory/configurations/resources/rum.py,sha256=KgC2Mxhtr5XrICVXdgOXmxYp0GKu9lBs7izfG-Re9Ck,5294
|
|
50
|
-
cdk_factory/configurations/resources/s3.py,sha256=
|
|
50
|
+
cdk_factory/configurations/resources/s3.py,sha256=3RVGvHLEnxa-hCgDXsqZ9nq8Aic0zW0JVgMdybl95is,6407
|
|
51
51
|
cdk_factory/configurations/resources/security_group.py,sha256=8kQtaaRVEn2aDm8XoC7QFh2mDOFbPbgobmssIuqU8MA,2259
|
|
52
52
|
cdk_factory/configurations/resources/security_group_full_stack.py,sha256=CujSl6mfPlVO0Dxso8fDjwW5VZB0vbeP9HqbcTaM8H4,2657
|
|
53
53
|
cdk_factory/configurations/resources/sqs.py,sha256=fAh2dqttJ6PX46enFRULuiLEu3TEj0Vb2xntAOgUpYE,4346
|
|
54
54
|
cdk_factory/configurations/resources/vpc.py,sha256=_W77du9wf8SJM64JbEAxEOQYerOm6aw4YaSsE7A_kKE,4453
|
|
55
|
-
cdk_factory/constructs/cloudfront/cloudfront_distribution_construct.py,sha256=
|
|
55
|
+
cdk_factory/constructs/cloudfront/cloudfront_distribution_construct.py,sha256=WbbI37Ez262kffJNNpvyjXtFwOQlNfRql0NGBCLjpgE,25775
|
|
56
56
|
cdk_factory/constructs/ecr/ecr_construct.py,sha256=jEimLwLvO5ERuFEn_L2q2pyPKgkdHQ6Oi7Sy990ttSg,11002
|
|
57
57
|
cdk_factory/constructs/lambdas/lambda_function_construct.py,sha256=SQ5SEXn4kezVAzXuv_A_JB3o_svyBXOMi-htvfB9HQs,4516
|
|
58
58
|
cdk_factory/constructs/lambdas/lambda_function_docker_construct.py,sha256=O8aiHpNQ59eE3qEttEHVxbvp06v4byXOeYCVTAOI_Cg,9993
|
|
@@ -83,42 +83,42 @@ cdk_factory/stack/stack_modules.py,sha256=kgEK-j0smZPozVwTCfM1g1V17EyTBT0TXAQZq4
|
|
|
83
83
|
cdk_factory/stack_library/__init__.py,sha256=_v4kz9EYAjox6strrTK_4fb9GloJ2Kyhf63VRPivl2U,638
|
|
84
84
|
cdk_factory/stack_library/stack_base.py,sha256=Cu3qeqPQf33QaaXoxk_EaziNCIXcyspOo5AU3eX_wyM,5140
|
|
85
85
|
cdk_factory/stack_library/acm/__init__.py,sha256=4FNRLykblcKZvq_wieYwvv9N_jgrZnJ7ECH9xKh-0Ls,81
|
|
86
|
-
cdk_factory/stack_library/acm/acm_stack.py,sha256=
|
|
86
|
+
cdk_factory/stack_library/acm/acm_stack.py,sha256=LW4QgzcMDvtSpqwfc4ykgpzDGvXe4udvWVE_DtBN4Zg,5414
|
|
87
87
|
cdk_factory/stack_library/api_gateway/api_gateway_stack.py,sha256=PvLdGvcopGpLP0FwpfUcfXNiTIfYLTXqrG-TniE38yc,39643
|
|
88
88
|
cdk_factory/stack_library/auto_scaling/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
89
|
-
cdk_factory/stack_library/auto_scaling/auto_scaling_stack.py,sha256
|
|
89
|
+
cdk_factory/stack_library/auto_scaling/auto_scaling_stack.py,sha256=G8OOgTAfsTDVArvuDfzuNpuGHzqz8kREHnnkMtjulAQ,25334
|
|
90
90
|
cdk_factory/stack_library/aws_lambdas/lambda_stack.py,sha256=SFbBPvvCopbyiuYtq-O5sQkFCf94Wzua6aDUXiFDSB4,26161
|
|
91
91
|
cdk_factory/stack_library/buckets/README.md,sha256=XkK3UNVtRLE7NtUvbhCOBBYUYi8hlrrSaI1s3GJVrqI,78
|
|
92
92
|
cdk_factory/stack_library/buckets/bucket_stack.py,sha256=SLoZqSffAqmeBBEVUQg54D_8Ad5UKdkjEAmKAVgAqQo,1778
|
|
93
93
|
cdk_factory/stack_library/cloudfront/__init__.py,sha256=Zfx50q4xIJ4ZEoVIzUBDTKbRE9DKDM6iyVIFhtQXvww,153
|
|
94
|
-
cdk_factory/stack_library/cloudfront/cloudfront_stack.py,sha256=
|
|
95
|
-
cdk_factory/stack_library/code_artifact/code_artifact_stack.py,sha256=
|
|
94
|
+
cdk_factory/stack_library/cloudfront/cloudfront_stack.py,sha256=Se5xvSp5QyubTI3BsAWeBeZHykGGHGYeSial1FzKP7s,32281
|
|
95
|
+
cdk_factory/stack_library/code_artifact/code_artifact_stack.py,sha256=o86cmC_ZV82z-K7DoAR0u1nAieoTi-vxRF01tyJn-9M,5297
|
|
96
96
|
cdk_factory/stack_library/cognito/cognito_stack.py,sha256=3tjKCNcIwXZn7fd4EDQdY6H9m6CnZohI4uTQ4TpacRQ,25327
|
|
97
97
|
cdk_factory/stack_library/dynamodb/dynamodb_stack.py,sha256=-_Ij1zXIxUuZIWgdevam_1vD3LEJ6pFs9U0hmw0KwIw,6743
|
|
98
98
|
cdk_factory/stack_library/ecr/README.md,sha256=xw2wPx9WN03Y4BBwqvbi9lAFGNyaD1FUNpqxVJX14Oo,179
|
|
99
99
|
cdk_factory/stack_library/ecr/ecr_stack.py,sha256=KLbd5WN5-ZiojsS5wJ4PX-tIL0cCylCSvXjO6sVrgWY,2102
|
|
100
100
|
cdk_factory/stack_library/ecs/__init__.py,sha256=o5vGDtD_h-gVXb3-Ysr8xUNpEcMsnmMVgZv2Pupcdow,219
|
|
101
101
|
cdk_factory/stack_library/ecs/ecs_cluster_stack.py,sha256=sAPTLU5CAwMoLTW_pNy_cd0OtVkfDR7IxxsSq5AE0yo,12091
|
|
102
|
-
cdk_factory/stack_library/ecs/ecs_service_stack.py,sha256=
|
|
102
|
+
cdk_factory/stack_library/ecs/ecs_service_stack.py,sha256=oZdFfCPrLJpNwERCj1vr1pGq1AExOE6Tt4lwdTPQfaw,27049
|
|
103
103
|
cdk_factory/stack_library/lambda_edge/__init__.py,sha256=ByBJ_CWdc4UtTmFBZH-6pzBMNkjkdtE65AmnB0Fs6lM,156
|
|
104
|
-
cdk_factory/stack_library/lambda_edge/lambda_edge_stack.py,sha256=
|
|
104
|
+
cdk_factory/stack_library/lambda_edge/lambda_edge_stack.py,sha256=qH1kiaL0u0v8jYTX0GinNhrPjnMpPXct3L5OLpNrMoY,15643
|
|
105
105
|
cdk_factory/stack_library/load_balancer/__init__.py,sha256=wZpKw2OecLJGdF5mPayCYAEhu2H3c2gJFFIxwXftGDU,52
|
|
106
|
-
cdk_factory/stack_library/load_balancer/load_balancer_stack.py,sha256=
|
|
106
|
+
cdk_factory/stack_library/load_balancer/load_balancer_stack.py,sha256=ApW5q3SAvSJtiK0RInNljmubqXqKZU5QBAaUoeIW-pM,28287
|
|
107
107
|
cdk_factory/stack_library/monitoring/__init__.py,sha256=k1G_KDx47Aw0UugaL99PN_TKlyLK4nkJVApCaAK7GJg,153
|
|
108
108
|
cdk_factory/stack_library/monitoring/monitoring_stack.py,sha256=N_1YvEXE7fboH_S3kv_dSKZsufxMuPdFMjGzlNFpuSo,19283
|
|
109
109
|
cdk_factory/stack_library/rds/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
110
|
-
cdk_factory/stack_library/rds/rds_stack.py,sha256=
|
|
110
|
+
cdk_factory/stack_library/rds/rds_stack.py,sha256=VToW-uFKAfilyhN4T8-TXaFW8f_VuXEIuUoBHvDN0Ns,14398
|
|
111
111
|
cdk_factory/stack_library/route53/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
112
|
-
cdk_factory/stack_library/route53/route53_stack.py,sha256=
|
|
112
|
+
cdk_factory/stack_library/route53/route53_stack.py,sha256=taREOw-s7i1NZcdR-za1lKkj-Cj8UPmr4BO5txS18fI,18348
|
|
113
113
|
cdk_factory/stack_library/rum/__init__.py,sha256=gUrWQdzd4rZ2J0YzAQC8PsEGAS7QgyYjB2ZCUKWasy4,90
|
|
114
114
|
cdk_factory/stack_library/rum/rum_stack.py,sha256=c67m0Jbyx8hx9TTx9TBBhZMDqtSK7QCqKx_Ec1t8LgY,14067
|
|
115
115
|
cdk_factory/stack_library/security_group/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
116
|
-
cdk_factory/stack_library/security_group/security_group_full_stack.py,sha256=
|
|
117
|
-
cdk_factory/stack_library/security_group/security_group_stack.py,sha256=
|
|
118
|
-
cdk_factory/stack_library/simple_queue_service/sqs_stack.py,sha256=
|
|
116
|
+
cdk_factory/stack_library/security_group/security_group_full_stack.py,sha256=Y9JYD0QpKNe11fuCPjWlV1rucX1DMm7bs8Eu4t4XDqw,12204
|
|
117
|
+
cdk_factory/stack_library/security_group/security_group_stack.py,sha256=uthk_MX2gNfA6a7gR7PjEfjov4WgTTtJ09G0cJOFWko,14168
|
|
118
|
+
cdk_factory/stack_library/simple_queue_service/sqs_stack.py,sha256=HSJgWo4Wl6nQ5rJFQXOkDTyd_6PuHhx5VyaZLVvmYM8,4891
|
|
119
119
|
cdk_factory/stack_library/vpc/__init__.py,sha256=7pIqP97Gf2AJbv9Ebp1WbQGHYhgEbWJ52L1MzeXBybA,42
|
|
120
|
-
cdk_factory/stack_library/vpc/vpc_stack.py,sha256=
|
|
121
|
-
cdk_factory/stack_library/websites/static_website_stack.py,sha256=
|
|
120
|
+
cdk_factory/stack_library/vpc/vpc_stack.py,sha256=8uFyPIhAu-4A3iclTFlOiJrEZuYu67gI5UtiDSzmFF4,14461
|
|
121
|
+
cdk_factory/stack_library/websites/static_website_stack.py,sha256=twpR9y4bxDx2GcEn0uP8PFNbsrgb8G9juZfeuHj7VqE,11433
|
|
122
122
|
cdk_factory/stages/websites/static_website_stage.py,sha256=X4fpKXkhb0zIbSHx3QyddBhVSLBryb1vf1Cg2fMTqog,755
|
|
123
123
|
cdk_factory/templates/README.md,sha256=ATBEjG6beYvbEAdLtZ_8xnxgFD5X0cgZoI_6pToqH90,2679
|
|
124
124
|
cdk_factory/templates/app.py.template,sha256=aM60x0nNV80idtCL8jm1EddY63F5tDITYOlavg-BPMU,1069
|
|
@@ -136,8 +136,8 @@ cdk_factory/utilities/os_execute.py,sha256=5Op0LY_8Y-pUm04y1k8MTpNrmQvcLmQHPQITE
|
|
|
136
136
|
cdk_factory/utils/api_gateway_utilities.py,sha256=If7Xu5s_UxmuV-kL3JkXxPLBdSVUKoLtohm0IUFoiV8,4378
|
|
137
137
|
cdk_factory/validation/config_validator.py,sha256=Pb0TkLiPFzUplBOgMorhRCVm08vEzZhRU5xXCDTa5CA,17602
|
|
138
138
|
cdk_factory/workload/workload_factory.py,sha256=yDI3cRhVI5ELNDcJPLpk9UY54Uind1xQoV3spzT4z7E,6068
|
|
139
|
-
cdk_factory-0.
|
|
140
|
-
cdk_factory-0.
|
|
141
|
-
cdk_factory-0.
|
|
142
|
-
cdk_factory-0.
|
|
143
|
-
cdk_factory-0.
|
|
139
|
+
cdk_factory-0.19.7.dist-info/METADATA,sha256=B5-Ks_26hBqjD7alogh6QAJPt7FnxStsR1oDIdl_uQA,2451
|
|
140
|
+
cdk_factory-0.19.7.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
141
|
+
cdk_factory-0.19.7.dist-info/entry_points.txt,sha256=S1DPe0ORcdiwEALMN_WIo3UQrW_g4YdQCLEsc_b0Swg,53
|
|
142
|
+
cdk_factory-0.19.7.dist-info/licenses/LICENSE,sha256=NOtdOeLwg2il_XBJdXUPFPX8JlV4dqTdDGAd2-khxT8,1066
|
|
143
|
+
cdk_factory-0.19.7.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|