cdk-factory 0.15.3__py3-none-any.whl → 0.15.6__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/ecs_service.py +4 -1
- cdk_factory/configurations/resources/load_balancer.py +8 -0
- cdk_factory/configurations/resources/rds.py +3 -0
- cdk_factory/configurations/resources/security_group_full_stack.py +3 -0
- cdk_factory/constructs/cloudfront/cloudfront_distribution_construct.py +77 -0
- cdk_factory/stack_library/ecs/ecs_service_stack.py +76 -8
- cdk_factory/stack_library/load_balancer/load_balancer_stack.py +92 -4
- cdk_factory/stack_library/websites/static_website_stack.py +5 -0
- cdk_factory/version.py +1 -1
- {cdk_factory-0.15.3.dist-info → cdk_factory-0.15.6.dist-info}/METADATA +1 -1
- {cdk_factory-0.15.3.dist-info → cdk_factory-0.15.6.dist-info}/RECORD +14 -14
- {cdk_factory-0.15.3.dist-info → cdk_factory-0.15.6.dist-info}/WHEEL +0 -0
- {cdk_factory-0.15.3.dist-info → cdk_factory-0.15.6.dist-info}/entry_points.txt +0 -0
- {cdk_factory-0.15.3.dist-info → cdk_factory-0.15.6.dist-info}/licenses/LICENSE +0 -0
|
@@ -129,8 +129,11 @@ class EcsServiceConfig:
|
|
|
129
129
|
return self._config.get("ssm_exports", {})
|
|
130
130
|
|
|
131
131
|
@property
|
|
132
|
-
def ssm_imports(self) -> Dict[str,
|
|
132
|
+
def ssm_imports(self) -> Dict[str, Any]:
|
|
133
133
|
"""SSM parameter imports"""
|
|
134
|
+
# Check both nested and flat structures for backwards compatibility
|
|
135
|
+
if "ssm" in self._config and "imports" in self._config["ssm"]:
|
|
136
|
+
return self._config["ssm"]["imports"]
|
|
134
137
|
return self._config.get("ssm_imports", {})
|
|
135
138
|
|
|
136
139
|
@property
|
|
@@ -143,3 +143,11 @@ class LoadBalancerConfig(EnhancedBaseConfig):
|
|
|
143
143
|
return self.__config.get("ip_whitelist", {}).get(
|
|
144
144
|
"block_response", default_response
|
|
145
145
|
)
|
|
146
|
+
|
|
147
|
+
@property
|
|
148
|
+
def ssm_imports(self) -> Dict[str, Any]:
|
|
149
|
+
"""SSM parameter imports for the Load Balancer"""
|
|
150
|
+
# Check both nested and flat structures for backwards compatibility
|
|
151
|
+
if "ssm" in self.__config and "imports" in self.__config["ssm"]:
|
|
152
|
+
return self.__config["ssm"]["imports"]
|
|
153
|
+
return self.__config.get("ssm_imports", {})
|
|
@@ -134,4 +134,7 @@ class RdsConfig(EnhancedBaseConfig):
|
|
|
134
134
|
@property
|
|
135
135
|
def ssm_imports(self) -> Dict[str, str]:
|
|
136
136
|
"""SSM parameter imports for the RDS instance"""
|
|
137
|
+
# Check both nested and flat structures for backwards compatibility
|
|
138
|
+
if "ssm" in self.__config and "imports" in self.__config["ssm"]:
|
|
139
|
+
return self.__config["ssm"]["imports"]
|
|
137
140
|
return self.__config.get("ssm_imports", {})
|
|
@@ -65,4 +65,7 @@ class SecurityGroupFullStackConfig:
|
|
|
65
65
|
@property
|
|
66
66
|
def ssm_imports(self) -> Dict[str, str]:
|
|
67
67
|
"""SSM parameter imports for the Security Group"""
|
|
68
|
+
# Check both nested and flat structures for backwards compatibility
|
|
69
|
+
if "ssm" in self.__config and "imports" in self.__config["ssm"]:
|
|
70
|
+
return self.__config["ssm"]["imports"]
|
|
68
71
|
return self.__config.get("ssm_imports", {})
|
|
@@ -78,10 +78,87 @@ class CloudFrontDistributionConstruct(Construct):
|
|
|
78
78
|
"""
|
|
79
79
|
return CloudFrontDistributionConstruct.AWS_HOSTED_ZONE_ID
|
|
80
80
|
|
|
81
|
+
def __validate_function_associations(self):
|
|
82
|
+
"""
|
|
83
|
+
Validate CloudFront function association configuration.
|
|
84
|
+
Provides clear error messages for common misconfigurations.
|
|
85
|
+
|
|
86
|
+
CloudFront limits:
|
|
87
|
+
- 1 CloudFront Function (JavaScript) per event type
|
|
88
|
+
- 1 Lambda@Edge (Python/Node) per event type
|
|
89
|
+
- Different types CAN coexist at same event type
|
|
90
|
+
"""
|
|
91
|
+
if not self.stack_config or not isinstance(self.stack_config, StackConfig):
|
|
92
|
+
return # No config to validate
|
|
93
|
+
|
|
94
|
+
cloudfront_config = self.stack_config.dictionary.get("cloudfront", {})
|
|
95
|
+
|
|
96
|
+
# Get configuration flags
|
|
97
|
+
enable_url_rewrite = cloudfront_config.get("enable_url_rewrite", False)
|
|
98
|
+
enable_ip_gating = cloudfront_config.get("enable_ip_gating", False)
|
|
99
|
+
restrict_to_known_hosts = cloudfront_config.get("restrict_to_known_hosts", self.restrict_to_known_hosts)
|
|
100
|
+
|
|
101
|
+
# Count CloudFront Functions at viewer-request
|
|
102
|
+
cloudfront_functions_at_viewer_request = 0
|
|
103
|
+
if enable_url_rewrite:
|
|
104
|
+
cloudfront_functions_at_viewer_request += 1
|
|
105
|
+
if restrict_to_known_hosts and self.aliases:
|
|
106
|
+
cloudfront_functions_at_viewer_request += 1
|
|
107
|
+
|
|
108
|
+
# Note: Multiple CloudFront Functions are OK - we combine them automatically
|
|
109
|
+
if cloudfront_functions_at_viewer_request > 1:
|
|
110
|
+
logger.info(
|
|
111
|
+
f"Multiple CloudFront Functions at viewer-request detected. "
|
|
112
|
+
f"Will combine into single function. "
|
|
113
|
+
f"Features: enable_url_rewrite={enable_url_rewrite}, "
|
|
114
|
+
f"restrict_to_known_hosts={restrict_to_known_hosts}"
|
|
115
|
+
)
|
|
116
|
+
|
|
117
|
+
# Check for manual Lambda@Edge associations that might conflict
|
|
118
|
+
lambda_edge_associations = cloudfront_config.get("lambda_edge_associations", [])
|
|
119
|
+
manual_viewer_request = any(
|
|
120
|
+
assoc.get("event_type") == "viewer-request"
|
|
121
|
+
for assoc in lambda_edge_associations
|
|
122
|
+
)
|
|
123
|
+
|
|
124
|
+
# ERROR: Manual Lambda@Edge + enable_ip_gating both at viewer-request
|
|
125
|
+
if enable_ip_gating and manual_viewer_request:
|
|
126
|
+
raise ValueError(
|
|
127
|
+
"Configuration conflict: Cannot use both 'enable_ip_gating: true' "
|
|
128
|
+
"and manual 'lambda_edge_associations' with 'event_type: viewer-request'. "
|
|
129
|
+
"\n\nSolution 1 (Recommended): Use only 'enable_ip_gating: true' "
|
|
130
|
+
"and remove manual lambda_edge_associations."
|
|
131
|
+
"\n\nSolution 2: Use only manual lambda_edge_associations "
|
|
132
|
+
"and set 'enable_ip_gating: false'."
|
|
133
|
+
"\n\nCurrent config:"
|
|
134
|
+
f"\n enable_ip_gating: {enable_ip_gating}"
|
|
135
|
+
f"\n lambda_edge_associations with viewer-request: {manual_viewer_request}"
|
|
136
|
+
)
|
|
137
|
+
|
|
138
|
+
# WARNING: Both Lambda@Edge IP gating and CloudFront Functions enabled
|
|
139
|
+
# This is VALID but might indicate misconfiguration
|
|
140
|
+
if enable_ip_gating and cloudfront_functions_at_viewer_request > 0:
|
|
141
|
+
features = []
|
|
142
|
+
if enable_url_rewrite:
|
|
143
|
+
features.append("URL rewrite")
|
|
144
|
+
if restrict_to_known_hosts:
|
|
145
|
+
features.append("Host restrictions")
|
|
146
|
+
|
|
147
|
+
logger.info(
|
|
148
|
+
f"✓ CloudFront configuration at viewer-request:"
|
|
149
|
+
f"\n - CloudFront Function: {', '.join(features)}"
|
|
150
|
+
f"\n - Lambda@Edge: IP gating"
|
|
151
|
+
f"\nThis is valid: CloudFront Functions and Lambda@Edge can coexist "
|
|
152
|
+
f"at the same event type."
|
|
153
|
+
)
|
|
154
|
+
|
|
81
155
|
def __setup(self):
|
|
82
156
|
"""
|
|
83
157
|
Any setup / init logic goes here
|
|
84
158
|
"""
|
|
159
|
+
# Validate CloudFront function association configuration
|
|
160
|
+
self.__validate_function_associations()
|
|
161
|
+
|
|
85
162
|
self.oai = cloudfront.OriginAccessIdentity(
|
|
86
163
|
self, "OAI", comment="OAI for accessing S3 bucket content securely"
|
|
87
164
|
)
|
|
@@ -49,6 +49,8 @@ class EcsServiceStack(IStack, EnhancedSsmParameterMixin):
|
|
|
49
49
|
self.service: Optional[ecs.FargateService] = None
|
|
50
50
|
self.task_definition: Optional[ecs.FargateTaskDefinition] = None
|
|
51
51
|
self._vpc: Optional[ec2.IVpc] = None
|
|
52
|
+
# SSM imported values
|
|
53
|
+
self.ssm_imported_values: Dict[str, Any] = {}
|
|
52
54
|
|
|
53
55
|
def build(
|
|
54
56
|
self,
|
|
@@ -77,6 +79,9 @@ class EcsServiceStack(IStack, EnhancedSsmParameterMixin):
|
|
|
77
79
|
|
|
78
80
|
service_name = deployment.build_resource_name(self.ecs_config.name)
|
|
79
81
|
|
|
82
|
+
# Process SSM imports first
|
|
83
|
+
self._process_ssm_imports()
|
|
84
|
+
|
|
80
85
|
# Load VPC
|
|
81
86
|
self._load_vpc()
|
|
82
87
|
|
|
@@ -98,16 +103,79 @@ class EcsServiceStack(IStack, EnhancedSsmParameterMixin):
|
|
|
98
103
|
|
|
99
104
|
def _load_vpc(self) -> None:
|
|
100
105
|
"""Load VPC from configuration"""
|
|
101
|
-
|
|
106
|
+
# Check SSM imported values first
|
|
107
|
+
if "vpc_id" in self.ssm_imported_values:
|
|
108
|
+
vpc_id = self.ssm_imported_values["vpc_id"]
|
|
109
|
+
|
|
110
|
+
# Build VPC attributes
|
|
111
|
+
vpc_attrs = {
|
|
112
|
+
"vpc_id": vpc_id,
|
|
113
|
+
"availability_zones": ["us-east-1a", "us-east-1b"]
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
# Use from_vpc_attributes() for SSM tokens
|
|
117
|
+
self._vpc = ec2.Vpc.from_vpc_attributes(self, "VPC", **vpc_attrs)
|
|
118
|
+
else:
|
|
119
|
+
vpc_id = self.ecs_config.vpc_id or self.workload.vpc_id
|
|
120
|
+
|
|
121
|
+
if not vpc_id:
|
|
122
|
+
raise ValueError("VPC ID is required for ECS service")
|
|
123
|
+
|
|
124
|
+
self._vpc = ec2.Vpc.from_lookup(
|
|
125
|
+
self,
|
|
126
|
+
"VPC",
|
|
127
|
+
vpc_id=vpc_id
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
def _process_ssm_imports(self) -> None:
|
|
131
|
+
"""
|
|
132
|
+
Process SSM imports from configuration.
|
|
133
|
+
Follows the same pattern as RDS, Load Balancer, and Security Group stacks.
|
|
134
|
+
"""
|
|
135
|
+
from aws_cdk import aws_ssm as ssm
|
|
102
136
|
|
|
103
|
-
|
|
104
|
-
raise ValueError("VPC ID is required for ECS service")
|
|
137
|
+
ssm_imports = self.ecs_config.ssm_imports
|
|
105
138
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
)
|
|
139
|
+
if not ssm_imports:
|
|
140
|
+
logger.debug("No SSM imports configured for ECS Service")
|
|
141
|
+
return
|
|
142
|
+
|
|
143
|
+
logger.info(f"Processing {len(ssm_imports)} SSM imports for ECS Service")
|
|
144
|
+
|
|
145
|
+
for param_key, param_value in ssm_imports.items():
|
|
146
|
+
try:
|
|
147
|
+
# Handle list values (like security_group_ids)
|
|
148
|
+
if isinstance(param_value, list):
|
|
149
|
+
imported_list = []
|
|
150
|
+
for idx, param_path in enumerate(param_value):
|
|
151
|
+
if not param_path.startswith('/'):
|
|
152
|
+
param_path = f"/{param_path}"
|
|
153
|
+
|
|
154
|
+
construct_id = f"ssm-import-{param_key}-{idx}-{hash(param_path) % 10000}"
|
|
155
|
+
param = ssm.StringParameter.from_string_parameter_name(
|
|
156
|
+
self, construct_id, param_path
|
|
157
|
+
)
|
|
158
|
+
imported_list.append(param.string_value)
|
|
159
|
+
|
|
160
|
+
self.ssm_imported_values[param_key] = imported_list
|
|
161
|
+
logger.info(f"Imported SSM parameter list: {param_key} with {len(imported_list)} items")
|
|
162
|
+
else:
|
|
163
|
+
# Handle string values
|
|
164
|
+
param_path = param_value
|
|
165
|
+
if not param_path.startswith('/'):
|
|
166
|
+
param_path = f"/{param_path}"
|
|
167
|
+
|
|
168
|
+
construct_id = f"ssm-import-{param_key}-{hash(param_path) % 10000}"
|
|
169
|
+
param = ssm.StringParameter.from_string_parameter_name(
|
|
170
|
+
self, construct_id, param_path
|
|
171
|
+
)
|
|
172
|
+
|
|
173
|
+
self.ssm_imported_values[param_key] = param.string_value
|
|
174
|
+
logger.info(f"Imported SSM parameter: {param_key} from {param_path}")
|
|
175
|
+
|
|
176
|
+
except Exception as e:
|
|
177
|
+
logger.error(f"Failed to import SSM parameter {param_key}: {e}")
|
|
178
|
+
raise
|
|
111
179
|
|
|
112
180
|
def _create_or_load_cluster(self) -> None:
|
|
113
181
|
"""Create a new ECS cluster or load an existing one"""
|
|
@@ -48,6 +48,8 @@ class LoadBalancerStack(IStack, EnhancedSsmParameterMixin):
|
|
|
48
48
|
self._vpc = None
|
|
49
49
|
self._hosted_zone = None
|
|
50
50
|
self._record_names = None
|
|
51
|
+
# SSM imported values
|
|
52
|
+
self.ssm_imported_values: Dict[str, str] = {}
|
|
51
53
|
|
|
52
54
|
def build(
|
|
53
55
|
self,
|
|
@@ -74,6 +76,9 @@ class LoadBalancerStack(IStack, EnhancedSsmParameterMixin):
|
|
|
74
76
|
)
|
|
75
77
|
lb_name = deployment.build_resource_name(self.lb_config.name)
|
|
76
78
|
|
|
79
|
+
# Process SSM imports first
|
|
80
|
+
self._process_ssm_imports()
|
|
81
|
+
|
|
77
82
|
self._prep_dns()
|
|
78
83
|
|
|
79
84
|
# set up SSL certificate if configured
|
|
@@ -148,6 +153,18 @@ class LoadBalancerStack(IStack, EnhancedSsmParameterMixin):
|
|
|
148
153
|
if self._vpc:
|
|
149
154
|
return self._vpc
|
|
150
155
|
|
|
156
|
+
# Check SSM imported values first (tokens from SSM parameters)
|
|
157
|
+
if "vpc_id" in self.ssm_imported_values:
|
|
158
|
+
vpc_id = self.ssm_imported_values["vpc_id"]
|
|
159
|
+
|
|
160
|
+
# Build VPC attributes
|
|
161
|
+
vpc_attrs = {
|
|
162
|
+
"vpc_id": vpc_id,
|
|
163
|
+
"availability_zones": ["us-east-1a", "us-east-1b"]
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
# Use from_vpc_attributes() instead of from_lookup() because SSM imports return tokens
|
|
167
|
+
self._vpc = ec2.Vpc.from_vpc_attributes(self, "VPC", **vpc_attrs)
|
|
151
168
|
elif self.lb_config.vpc_id:
|
|
152
169
|
self._vpc = ec2.Vpc.from_lookup(self, "VPC", vpc_id=self.lb_config.vpc_id)
|
|
153
170
|
elif self.workload.vpc_id:
|
|
@@ -162,13 +179,72 @@ class LoadBalancerStack(IStack, EnhancedSsmParameterMixin):
|
|
|
162
179
|
|
|
163
180
|
return self._vpc
|
|
164
181
|
|
|
182
|
+
def _process_ssm_imports(self) -> None:
|
|
183
|
+
"""
|
|
184
|
+
Process SSM imports from configuration.
|
|
185
|
+
Follows the same pattern as RDS and Security Group stacks.
|
|
186
|
+
"""
|
|
187
|
+
from aws_cdk import aws_ssm as ssm
|
|
188
|
+
|
|
189
|
+
ssm_imports = self.lb_config.ssm_imports
|
|
190
|
+
|
|
191
|
+
if not ssm_imports:
|
|
192
|
+
logger.debug("No SSM imports configured for Load Balancer")
|
|
193
|
+
return
|
|
194
|
+
|
|
195
|
+
logger.info(f"Processing {len(ssm_imports)} SSM imports for Load Balancer")
|
|
196
|
+
|
|
197
|
+
for param_key, param_value in ssm_imports.items():
|
|
198
|
+
try:
|
|
199
|
+
# Handle list values (like security_groups)
|
|
200
|
+
if isinstance(param_value, list):
|
|
201
|
+
imported_list = []
|
|
202
|
+
for idx, param_path in enumerate(param_value):
|
|
203
|
+
if not param_path.startswith('/'):
|
|
204
|
+
param_path = f"/{param_path}"
|
|
205
|
+
|
|
206
|
+
construct_id = f"ssm-import-{param_key}-{idx}-{hash(param_path) % 10000}"
|
|
207
|
+
param = ssm.StringParameter.from_string_parameter_name(
|
|
208
|
+
self, construct_id, param_path
|
|
209
|
+
)
|
|
210
|
+
imported_list.append(param.string_value)
|
|
211
|
+
|
|
212
|
+
self.ssm_imported_values[param_key] = imported_list
|
|
213
|
+
logger.info(f"Imported SSM parameter list: {param_key} with {len(imported_list)} items")
|
|
214
|
+
else:
|
|
215
|
+
# Handle string values
|
|
216
|
+
param_path = param_value
|
|
217
|
+
if not param_path.startswith('/'):
|
|
218
|
+
param_path = f"/{param_path}"
|
|
219
|
+
|
|
220
|
+
construct_id = f"ssm-import-{param_key}-{hash(param_path) % 10000}"
|
|
221
|
+
param = ssm.StringParameter.from_string_parameter_name(
|
|
222
|
+
self, construct_id, param_path
|
|
223
|
+
)
|
|
224
|
+
|
|
225
|
+
self.ssm_imported_values[param_key] = param.string_value
|
|
226
|
+
logger.info(f"Imported SSM parameter: {param_key} from {param_path}")
|
|
227
|
+
|
|
228
|
+
except Exception as e:
|
|
229
|
+
logger.error(f"Failed to import SSM parameter {param_key}: {e}")
|
|
230
|
+
raise
|
|
231
|
+
|
|
165
232
|
def _get_security_groups(self) -> List[ec2.ISecurityGroup]:
|
|
166
233
|
"""Get security groups for the Load Balancer"""
|
|
167
234
|
security_groups = []
|
|
168
|
-
|
|
235
|
+
|
|
236
|
+
# Check SSM imported values first
|
|
237
|
+
if "security_groups" in self.ssm_imported_values:
|
|
238
|
+
sg_ids = self.ssm_imported_values["security_groups"]
|
|
239
|
+
if not isinstance(sg_ids, list):
|
|
240
|
+
sg_ids = [sg_ids]
|
|
241
|
+
else:
|
|
242
|
+
sg_ids = self.lb_config.security_groups
|
|
243
|
+
|
|
244
|
+
for idx, sg_id in enumerate(sg_ids):
|
|
169
245
|
security_groups.append(
|
|
170
246
|
ec2.SecurityGroup.from_security_group_id(
|
|
171
|
-
self, f"SecurityGroup-{
|
|
247
|
+
self, f"SecurityGroup-{idx}", sg_id
|
|
172
248
|
)
|
|
173
249
|
)
|
|
174
250
|
return security_groups
|
|
@@ -176,9 +252,21 @@ class LoadBalancerStack(IStack, EnhancedSsmParameterMixin):
|
|
|
176
252
|
def _get_subnets(self) -> List[ec2.ISubnet]:
|
|
177
253
|
"""Get subnets for the Load Balancer"""
|
|
178
254
|
subnets = []
|
|
179
|
-
|
|
255
|
+
|
|
256
|
+
# Check SSM imported values first
|
|
257
|
+
if "subnet_ids" in self.ssm_imported_values:
|
|
258
|
+
subnet_ids = self.ssm_imported_values["subnet_ids"]
|
|
259
|
+
# SSM returns comma-separated string for StringList, need to split
|
|
260
|
+
if isinstance(subnet_ids, str):
|
|
261
|
+
subnet_ids = [s.strip() for s in subnet_ids.split(',')]
|
|
262
|
+
elif not isinstance(subnet_ids, list):
|
|
263
|
+
subnet_ids = [subnet_ids]
|
|
264
|
+
else:
|
|
265
|
+
subnet_ids = self.lb_config.subnets
|
|
266
|
+
|
|
267
|
+
for idx, subnet_id in enumerate(subnet_ids):
|
|
180
268
|
subnets.append(
|
|
181
|
-
ec2.Subnet.from_subnet_id(self, f"Subnet-{
|
|
269
|
+
ec2.Subnet.from_subnet_id(self, f"Subnet-{idx}", subnet_id)
|
|
182
270
|
)
|
|
183
271
|
return subnets
|
|
184
272
|
|
|
@@ -135,6 +135,10 @@ class StaticWebSiteStack(IStack):
|
|
|
135
135
|
version = self.__get_version_number(assets_path)
|
|
136
136
|
logger.info(f"👉 WEBSITE VERSION NUMBER: {version}")
|
|
137
137
|
|
|
138
|
+
# Get cloudfront config options
|
|
139
|
+
cloudfront_config = stack_config.dictionary.get("cloudfront", {})
|
|
140
|
+
restrict_to_known_hosts = cloudfront_config.get("restrict_to_known_hosts", True)
|
|
141
|
+
|
|
138
142
|
cloudfront_distribution = CloudFrontDistributionConstruct(
|
|
139
143
|
scope=self,
|
|
140
144
|
id=deployment.build_resource_name("CloudFrontDistribution"),
|
|
@@ -142,6 +146,7 @@ class StaticWebSiteStack(IStack):
|
|
|
142
146
|
aliases=aliases,
|
|
143
147
|
source_bucket_sub_directory=version,
|
|
144
148
|
certificate=certificate,
|
|
149
|
+
restrict_to_known_hosts=restrict_to_known_hosts,
|
|
145
150
|
stack_config=stack_config,
|
|
146
151
|
)
|
|
147
152
|
|
cdk_factory/version.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "0.15.
|
|
1
|
+
__version__ = "0.15.6"
|
|
@@ -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=So0qfsz_A4mujJ9XBWY4PqtrU6DdTz1l5TygxPTJj1Y,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=JKjhNsy0RCUZy1s8n5D_aXXI-upR9izaLtCTfKYiV9k,9624
|
|
@@ -30,15 +30,15 @@ cdk_factory/configurations/resources/cognito.py,sha256=udX2AJ1ITLhy4f1XiJQwrva6F
|
|
|
30
30
|
cdk_factory/configurations/resources/docker.py,sha256=hUbuxkuhcQu9LnLX7I8_57eTmHefEAGVnOHO37MkqC4,2166
|
|
31
31
|
cdk_factory/configurations/resources/dynamodb.py,sha256=HsZMOaRwfuNPwKIzokeeE3f5zAQLTB5hRb_GzYq2ibg,2903
|
|
32
32
|
cdk_factory/configurations/resources/ecr.py,sha256=o9hHzEBVPoxUvWZGXGbRJ-98FmP6fMLY5a1-qg42jL0,8253
|
|
33
|
-
cdk_factory/configurations/resources/ecs_service.py,sha256=
|
|
33
|
+
cdk_factory/configurations/resources/ecs_service.py,sha256=fAW4EuBNhPrE7G0QcHXongKoAnFeGMRS6iP7OuGP5Fw,4926
|
|
34
34
|
cdk_factory/configurations/resources/exisiting.py,sha256=EVOLnkB-DGfTlmDgyQ5DD5k2zYfpFxqI3gugDR7mifI,478
|
|
35
35
|
cdk_factory/configurations/resources/lambda_edge.py,sha256=MjmiwDkys4aoRvDQhH3MT6BgeShzJXNWL7761HJrLtQ,3404
|
|
36
36
|
cdk_factory/configurations/resources/lambda_function.py,sha256=VENZ9-ABJ5mjcN8J8wdLH4KHDYr1kWO0iFDH0B2mJXA,14659
|
|
37
37
|
cdk_factory/configurations/resources/lambda_layers.py,sha256=gVeP_-LC3Eq0lkPaG_JfFUwboM5evRPr99SfKj53m7A,633
|
|
38
38
|
cdk_factory/configurations/resources/lambda_triggers.py,sha256=MD7cdMNKEulNBhtMLIFnWJuJ5R-yyIqa0LHUgbSQerA,834
|
|
39
|
-
cdk_factory/configurations/resources/load_balancer.py,sha256=
|
|
39
|
+
cdk_factory/configurations/resources/load_balancer.py,sha256=idpKdvkkCM7J9J2pNjMBOY1DNaFR1tk1tFjTg76bvrY,5267
|
|
40
40
|
cdk_factory/configurations/resources/monitoring.py,sha256=zsfDMa7yph33Ql8iP7lIqqLAyixh-Mesi0imtZJFdcE,2310
|
|
41
|
-
cdk_factory/configurations/resources/rds.py,sha256=
|
|
41
|
+
cdk_factory/configurations/resources/rds.py,sha256=fYyS9qlsdHCdGQ5jS3f-edQUvbNYX30T96gxEwlz9tM,4828
|
|
42
42
|
cdk_factory/configurations/resources/resource_mapping.py,sha256=cwv3n63RJ6E59ErsmSTdkW4i-g8huhHtKI0ExbRhJxA,2182
|
|
43
43
|
cdk_factory/configurations/resources/resource_naming.py,sha256=VE9S2cpzp11qqPL2z1sX79wXH0o1SntO2OG74nEmWC8,5508
|
|
44
44
|
cdk_factory/configurations/resources/resource_types.py,sha256=1WQHyDoErb-M-tETZZzyLDtbq_jdC85-I403dM48pgE,2317
|
|
@@ -47,10 +47,10 @@ cdk_factory/configurations/resources/route53_hosted_zone.py,sha256=qjEYPCSxSOx5b
|
|
|
47
47
|
cdk_factory/configurations/resources/rum.py,sha256=5aNLhyJEl97spby2gEV59RsMIQpUto2hGh1DeSyIp_I,5149
|
|
48
48
|
cdk_factory/configurations/resources/s3.py,sha256=LBwTOZ4tOxNbgiu1fFGHOTyF5jlzeVphc_9VAqNw8zA,6042
|
|
49
49
|
cdk_factory/configurations/resources/security_group.py,sha256=8kQtaaRVEn2aDm8XoC7QFh2mDOFbPbgobmssIuqU8MA,2259
|
|
50
|
-
cdk_factory/configurations/resources/security_group_full_stack.py,sha256=
|
|
50
|
+
cdk_factory/configurations/resources/security_group_full_stack.py,sha256=3LHIJw4BEsagb0EMnc8C2_g4OQxUe0kQTn3XqQltUIE,2402
|
|
51
51
|
cdk_factory/configurations/resources/sqs.py,sha256=fAh2dqttJ6PX46enFRULuiLEu3TEj0Vb2xntAOgUpYE,4346
|
|
52
52
|
cdk_factory/configurations/resources/vpc.py,sha256=sNn6w76bHFwmt6N76gZZhqpsuNB9860C1SZu6tebaXY,3835
|
|
53
|
-
cdk_factory/constructs/cloudfront/cloudfront_distribution_construct.py,sha256=
|
|
53
|
+
cdk_factory/constructs/cloudfront/cloudfront_distribution_construct.py,sha256=LHgjvTNghCMTpHh90VWl7AbE100Er-S9EgyEVt12J_c,25809
|
|
54
54
|
cdk_factory/constructs/ecr/ecr_construct.py,sha256=JLz3gWrsjlM0XghvbgxuoGlF-VIo_7IYxtgX7mTkidE,10660
|
|
55
55
|
cdk_factory/constructs/lambdas/lambda_function_construct.py,sha256=SQ5SEXn4kezVAzXuv_A_JB3o_svyBXOMi-htvfB9HQs,4516
|
|
56
56
|
cdk_factory/constructs/lambdas/lambda_function_docker_construct.py,sha256=O8aiHpNQ59eE3qEttEHVxbvp06v4byXOeYCVTAOI_Cg,9993
|
|
@@ -93,11 +93,11 @@ cdk_factory/stack_library/dynamodb/dynamodb_stack.py,sha256=TVyOrUhgaSuN8uymkpaQ
|
|
|
93
93
|
cdk_factory/stack_library/ecr/README.md,sha256=xw2wPx9WN03Y4BBwqvbi9lAFGNyaD1FUNpqxVJX14Oo,179
|
|
94
94
|
cdk_factory/stack_library/ecr/ecr_stack.py,sha256=1xA68sxFVyqreYjXrP_7U9I8RF9RtFeR6KeEfSWuC2U,2118
|
|
95
95
|
cdk_factory/stack_library/ecs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
96
|
-
cdk_factory/stack_library/ecs/ecs_service_stack.py,sha256=
|
|
96
|
+
cdk_factory/stack_library/ecs/ecs_service_stack.py,sha256=IVqzrV6cJCJXQV-eS2mPInUr1bjjIwGIKDNH2Gc-LFM,27709
|
|
97
97
|
cdk_factory/stack_library/lambda_edge/__init__.py,sha256=ByBJ_CWdc4UtTmFBZH-6pzBMNkjkdtE65AmnB0Fs6lM,156
|
|
98
98
|
cdk_factory/stack_library/lambda_edge/lambda_edge_stack.py,sha256=CdId_1kcZmYr1lLI9AD3-KqtE6voC3641PIloJmWiNI,16414
|
|
99
99
|
cdk_factory/stack_library/load_balancer/__init__.py,sha256=wZpKw2OecLJGdF5mPayCYAEhu2H3c2gJFFIxwXftGDU,52
|
|
100
|
-
cdk_factory/stack_library/load_balancer/load_balancer_stack.py,sha256=
|
|
100
|
+
cdk_factory/stack_library/load_balancer/load_balancer_stack.py,sha256=SBB-Cknon7U317iR2chFNWjny-lp8BFmzFMCYLP-8Uo,28253
|
|
101
101
|
cdk_factory/stack_library/monitoring/__init__.py,sha256=k1G_KDx47Aw0UugaL99PN_TKlyLK4nkJVApCaAK7GJg,153
|
|
102
102
|
cdk_factory/stack_library/monitoring/monitoring_stack.py,sha256=N_1YvEXE7fboH_S3kv_dSKZsufxMuPdFMjGzlNFpuSo,19283
|
|
103
103
|
cdk_factory/stack_library/rds/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -112,7 +112,7 @@ cdk_factory/stack_library/security_group/security_group_stack.py,sha256=2zxd5ozg
|
|
|
112
112
|
cdk_factory/stack_library/simple_queue_service/sqs_stack.py,sha256=jJksWrvrvgZUMM01RZ317DOIxqIJbkYYSYu38w0jHpc,6039
|
|
113
113
|
cdk_factory/stack_library/vpc/__init__.py,sha256=7pIqP97Gf2AJbv9Ebp1WbQGHYhgEbWJ52L1MzeXBybA,42
|
|
114
114
|
cdk_factory/stack_library/vpc/vpc_stack.py,sha256=UZuzb5uSOi4ghuLGPvsKqc3gwe6XI89jHV4WHX8MelA,11472
|
|
115
|
-
cdk_factory/stack_library/websites/static_website_stack.py,sha256=
|
|
115
|
+
cdk_factory/stack_library/websites/static_website_stack.py,sha256=XtrqJaMnrs1XvSz5-8LFaohtY68mtprIOrrizyjnS0w,10608
|
|
116
116
|
cdk_factory/stages/websites/static_website_stage.py,sha256=X4fpKXkhb0zIbSHx3QyddBhVSLBryb1vf1Cg2fMTqog,755
|
|
117
117
|
cdk_factory/templates/README.md,sha256=ATBEjG6beYvbEAdLtZ_8xnxgFD5X0cgZoI_6pToqH90,2679
|
|
118
118
|
cdk_factory/templates/app.py.template,sha256=aM60x0nNV80idtCL8jm1EddY63F5tDITYOlavg-BPMU,1069
|
|
@@ -129,8 +129,8 @@ cdk_factory/utilities/lambda_function_utilities.py,sha256=S1GvBsY_q2cyUiaud3HORJ
|
|
|
129
129
|
cdk_factory/utilities/os_execute.py,sha256=5Op0LY_8Y-pUm04y1k8MTpNrmQvcLmQHPQITEP7EuSU,1019
|
|
130
130
|
cdk_factory/utils/api_gateway_utilities.py,sha256=If7Xu5s_UxmuV-kL3JkXxPLBdSVUKoLtohm0IUFoiV8,4378
|
|
131
131
|
cdk_factory/workload/workload_factory.py,sha256=mM8GU_5mKq_0OyK060T3JrUSUiGAcKf0eqNlT9mfaws,6028
|
|
132
|
-
cdk_factory-0.15.
|
|
133
|
-
cdk_factory-0.15.
|
|
134
|
-
cdk_factory-0.15.
|
|
135
|
-
cdk_factory-0.15.
|
|
136
|
-
cdk_factory-0.15.
|
|
132
|
+
cdk_factory-0.15.6.dist-info/METADATA,sha256=qanYZlntfcMe0rhD-XjfZePXjUPb2N2_vVjXLgdN8PU,2451
|
|
133
|
+
cdk_factory-0.15.6.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
134
|
+
cdk_factory-0.15.6.dist-info/entry_points.txt,sha256=S1DPe0ORcdiwEALMN_WIo3UQrW_g4YdQCLEsc_b0Swg,53
|
|
135
|
+
cdk_factory-0.15.6.dist-info/licenses/LICENSE,sha256=NOtdOeLwg2il_XBJdXUPFPX8JlV4dqTdDGAd2-khxT8,1066
|
|
136
|
+
cdk_factory-0.15.6.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|