cdk-factory 0.13.6__py3-none-any.whl → 0.14.1__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.

@@ -66,9 +66,9 @@ class EnhancedBaseConfig(BaseConfig):
66
66
  return self.ssm_workload
67
67
 
68
68
  @property
69
- def ssm_environment(self) -> str:
69
+ def ssm_environment(self) -> str | None:
70
70
  """Get the environment name for SSM parameter paths"""
71
- return self._enhanced_ssm.environment if self._enhanced_ssm else "dev"
71
+ return self._enhanced_ssm.environment if self._enhanced_ssm else None
72
72
 
73
73
  @property
74
74
  def ssm_pattern(self) -> str:
@@ -32,10 +32,14 @@ class EnhancedSsmConfig:
32
32
  config: Dict,
33
33
  resource_type: str,
34
34
  resource_name: str,
35
+ workload_config: Optional[Dict] = None,
36
+ deployment_config: Optional[Dict] = None,
35
37
  ):
36
38
  self.config = config.get("ssm", {})
37
39
  self.resource_type = resource_type
38
40
  self.resource_name = resource_name
41
+ self._workload_config = workload_config or {}
42
+ self._deployment_config = deployment_config or {} # Deprecated, for backward compatibility
39
43
 
40
44
  @property
41
45
  def enabled(self) -> bool:
@@ -49,11 +53,65 @@ class EnhancedSsmConfig:
49
53
 
50
54
  @property
51
55
  def environment(self) -> str:
52
- env = self.config.get("environment", "${ENVIRONMENT}")
53
- # Replace environment variables
54
- if env.startswith("${") and env.endswith("}"):
56
+ """
57
+ Get environment - MUST be at workload level.
58
+
59
+ Architecture: One workload deployment = One environment
60
+
61
+ Priority:
62
+ 1. workload_config["environment"] - **STANDARD LOCATION** (required)
63
+ 2. workload_config["deployment"]["environment"] - Legacy (backward compatibility)
64
+ 3. deployment_config["environment"] - Legacy (backward compatibility)
65
+ 4. config["ssm"]["environment"] - Legacy (backward compatibility)
66
+ 5. ${ENVIRONMENT} - Environment variable (with validation)
67
+
68
+ NO DEFAULT to 'dev' - fails explicitly to prevent cross-environment contamination
69
+
70
+ Best Practice:
71
+ {
72
+ "workload": {
73
+ "name": "my-app",
74
+ "environment": "dev" ← Single source of truth
75
+ }
76
+ }
77
+ """
78
+ # 1. Try workload config first (STANDARD LOCATION)
79
+ env = self._workload_config.get("environment")
80
+
81
+ # 2. Try workload["deployment"]["environment"] (backward compatibility)
82
+ if not env:
83
+ env = self._workload_config.get("deployment", {}).get("environment")
84
+
85
+ # 3. Try deployment config (backward compatibility)
86
+ if not env:
87
+ env = self._deployment_config.get("environment")
88
+
89
+ # 4. Fall back to SSM config (backward compatibility)
90
+ if not env:
91
+ env = self.config.get("environment", "${ENVIRONMENT}")
92
+
93
+ # 5. Resolve environment variables
94
+ if isinstance(env, str) and env.startswith("${") and env.endswith("}"):
55
95
  env_var = env[2:-1]
56
- return os.getenv(env_var, "dev")
96
+ env_value = os.getenv(env_var)
97
+ if not env_value:
98
+ raise ValueError(
99
+ f"Environment variable '{env_var}' is not set. "
100
+ f"Cannot default to 'dev' as this may cause cross-environment contamination. "
101
+ f"Best practice: Set 'environment' at workload level in your config. "
102
+ f"Alternatively, set the {env_var} environment variable."
103
+ )
104
+ return env_value
105
+
106
+ # If still no environment, fail explicitly
107
+ if not env:
108
+ raise ValueError(
109
+ "Environment must be explicitly specified at workload level. "
110
+ "Cannot default to 'dev' as this may cause cross-environment resource contamination. "
111
+ "Best practice: Add 'environment' to your workload config:\n"
112
+ ' {"workload": {"name": "...", "environment": "dev|prod"}}'
113
+ )
114
+
57
115
  return env
58
116
 
59
117
  @property
@@ -55,7 +55,9 @@ class RdsConfig(EnhancedBaseConfig):
55
55
  @property
56
56
  def secret_name(self) -> str:
57
57
  """Name of the secret to store credentials"""
58
- env_name = self.__deployment.environment if self.__deployment else "dev"
58
+ env_name = self.__deployment.environment if self.__deployment else None
59
+ if not env_name:
60
+ raise ValueError("No environment found for RDS secret name. Please add an environment to the deployment.")
59
61
  return self.__config.get("secret_name", f"/{env_name}/db/creds")
60
62
 
61
63
  @property
@@ -1,5 +1,6 @@
1
1
  from typing import Any, List, Mapping, Optional
2
2
 
3
+ import aws_cdk as cdk
3
4
  from aws_cdk import Duration
4
5
  from aws_cdk import aws_certificatemanager as acm
5
6
  from aws_cdk import aws_cloudfront as cloudfront
@@ -257,10 +258,32 @@ class CloudFrontDistributionConstruct(Construct):
257
258
  logger.info("IP gating enabled via convenience flag - adding Lambda@Edge association")
258
259
 
259
260
  # Extract environment and workload name from config
260
- # These come from the workload/deployment configuration
261
+ # Architecture: One workload deployment = One environment
261
262
  workload_dict = self.stack_config.workload
262
- environment = workload_dict.get("deployment", {}).get("environment", "dev")
263
- workload_name = workload_dict.get("name", "workload")
263
+
264
+ # CRITICAL: Environment must be at workload level - no defaults!
265
+ # Defaulting to "dev" is dangerous and can cause cross-environment contamination
266
+ # Try workload["environment"] first (STANDARD), then workload["deployment"]["environment"] (legacy)
267
+ environment = workload_dict.get("environment")
268
+ if not environment:
269
+ # Backward compatibility: try deployment.environment
270
+ environment = workload_dict.get("deployment", {}).get("environment")
271
+
272
+ if not environment:
273
+ raise ValueError(
274
+ "Environment must be explicitly specified at workload level. "
275
+ "Cannot default to 'dev' as this may cause cross-environment resource contamination. "
276
+ "Best practice: Add 'environment' to your workload config:\n"
277
+ ' {\"workload\": {\"name\": \"...\", \"environment\": \"dev|prod\"}}\n'
278
+ "Legacy: 'deployment.environment' is also supported for backward compatibility."
279
+ )
280
+
281
+ workload_name = workload_dict.get("name")
282
+ if not workload_name:
283
+ raise ValueError(
284
+ "Workload name must be specified in configuration. "
285
+ "Please set 'name' in your workload config."
286
+ )
264
287
 
265
288
  # Auto-derive SSM parameter path or use override
266
289
  default_ssm_path = f"/{environment}/{workload_name}/lambda-edge/version-arn"
@@ -291,14 +314,21 @@ class CloudFrontDistributionConstruct(Construct):
291
314
  ssm_param_path = lambda_arn[6:-2] # Extract parameter path
292
315
  logger.info(f"Importing Lambda ARN from SSM parameter: {ssm_param_path}")
293
316
 
294
- # Import SSM parameter - this creates a reference that resolves at deployment time
295
- param = ssm.StringParameter.from_string_parameter_name(
317
+ # CRITICAL: Import SSM parameter using CloudFormation parameter type
318
+ # This ensures CloudFormation validates the parameter EXISTS at deployment time
319
+ # If the parameter is missing, CloudFormation will FAIL the deployment
320
+ # This prevents accidentally using wrong/missing Lambda@Edge functions
321
+
322
+ # Create CloudFormation parameter that resolves SSM value
323
+ cfn_param = cdk.CfnParameter(
296
324
  self,
297
- f"lambda-edge-arn-{hash(ssm_param_path) % 10000}",
298
- ssm_param_path
325
+ f"lambda-edge-arn-{hash(ssm_param_path) % 10000}-param",
326
+ type="AWS::SSM::Parameter::Value<String>",
327
+ default=ssm_param_path,
328
+ description=f"Lambda@Edge function ARN from SSM: {ssm_param_path}"
299
329
  )
300
- lambda_arn = param.string_value
301
- logger.info(f"Lambda ARN will be resolved from SSM: {ssm_param_path}")
330
+ lambda_arn = cfn_param.value_as_string
331
+ logger.info(f"Lambda ARN will be resolved from SSM (validated at deploy): {ssm_param_path}")
302
332
 
303
333
  # Map event type string to CloudFront enum
304
334
  event_type_map = {
@@ -54,7 +54,7 @@ class LambdaDockerConstruct(Construct):
54
54
  scope: Construct,
55
55
  deployment: Deployment,
56
56
  lambda_config: LambdaFunctionConfig,
57
- tag_or_digest: str | None = "dev",
57
+ tag_or_digest: str | None = None,
58
58
  ecr_repo_name: str | None = None,
59
59
  ecr_arn: str | None = None,
60
60
  role: iam.Role | None = None,
@@ -70,7 +70,8 @@ class LambdaDockerConstruct(Construct):
70
70
  Returns:
71
71
  aws_lambda.DockerImageFunction: Docker Image Function Reference
72
72
  """
73
- assert tag_or_digest
73
+ if not tag_or_digest:
74
+ raise ValueError("tag_or_digest is required for a docker image function")
74
75
 
75
76
  if not role:
76
77
  role = LambdaRoleConstruct.Role(
@@ -31,21 +31,39 @@ class EnhancedSsmParameterMixin:
31
31
  - Enhanced error handling and logging
32
32
  """
33
33
 
34
- def setup_enhanced_ssm_integration(self, scope: Construct, config, resource_type: str = None, resource_name: str = None):
34
+ def setup_enhanced_ssm_integration(
35
+ self,
36
+ scope: Construct,
37
+ config,
38
+ resource_type: str = None,
39
+ resource_name: str = None,
40
+ workload_config = None,
41
+ deployment_config = None # Deprecated, for backward compatibility
42
+ ):
35
43
  """
36
44
  Setup enhanced SSM integration for a resource.
37
45
 
46
+ Architecture: One workload deployment = One environment
47
+ Environment should be defined at workload level.
48
+
38
49
  Args:
39
50
  scope: The CDK construct scope
40
51
  config: Configuration object with SSM settings
41
52
  resource_type: Type of resource (e.g., 'api_gateway', 'cognito', 'dynamodb')
42
53
  resource_name: Name of the resource instance
54
+ workload_config: Workload configuration (PRIMARY - contains environment)
55
+ deployment_config: Deployment configuration (DEPRECATED - for backward compatibility)
43
56
  """
44
57
  config_dict = config if isinstance(config, dict) else config.dictionary
58
+ workload_dict = workload_config.dictionary if hasattr(workload_config, 'dictionary') else (workload_config or {})
59
+ deployment_dict = deployment_config.dictionary if hasattr(deployment_config, 'dictionary') else (deployment_config or {})
60
+
45
61
  self.enhanced_ssm_config = EnhancedSsmConfig(
46
62
  config=config_dict,
47
63
  resource_type=resource_type or "unknown",
48
- resource_name=resource_name or "default"
64
+ resource_name=resource_name or "default",
65
+ workload_config=workload_dict,
66
+ deployment_config=deployment_dict # For backward compatibility
49
67
  )
50
68
  self.scope = scope
51
69
 
@@ -95,9 +95,8 @@ class StaticWebSiteStack(IStack):
95
95
  hosted_zone=hosted_zone,
96
96
  )
97
97
 
98
- if stack_config.dependencies:
99
- for dependency in stack_config.dependencies:
100
- self.add_dependency(deployment.build_resource_name(dependency))
98
+ # Note: Stack dependencies are handled by pipeline_factory, not here
99
+ # Dependencies are resolved after all stacks are created so we have stack objects
101
100
 
102
101
  def __get_s3_website_bucket(
103
102
  self, stack_config: StackConfig, deployment: DeploymentConfig
@@ -206,9 +206,8 @@ class DockerUtilities:
206
206
  def main():
207
207
  print("Starting docker build utilities")
208
208
  ecr_uri: str | None = os.getenv("ECR_URI")
209
- environment: str = os.getenv("ENVIRONMENT") or "dev"
209
+ environment: str = os.getenv("ENVIRONMENT")
210
210
  tag: str = os.getenv("DOCKER_TAG") or environment
211
- branch: str = os.getenv("GIT_BRANCH") or "dev"
212
211
  version: str = os.getenv("VERSION") or "0.0.0"
213
212
  aws_profile: str | None = os.getenv("AWS_PROFILE")
214
213
  aws_region: str | None = os.getenv("DEPLOYMENT_AWS_REGION") or os.getenv(
@@ -216,6 +215,8 @@ def main():
216
215
  )
217
216
  docker_file: str | None = os.getenv("DOCKER_FILE")
218
217
 
218
+
219
+
219
220
  # print all environment vars
220
221
  print("Printing all environment vars")
221
222
  print("-----------------------------")
@@ -223,6 +224,10 @@ def main():
223
224
  print(f"{key}: {value}")
224
225
  print("-----------------------------")
225
226
 
227
+ if not environment:
228
+ raise RuntimeError("Missing environment. To fix add an environment var of ENVIRONMENT")
229
+ if not tag:
230
+ raise RuntimeError("Missing tag. To fix add an environment var of DOCKER_TAG")
226
231
  if not ecr_uri:
227
232
  raise RuntimeError("Missing ECR URI. To fix add an environment var of ECR_URI")
228
233
  if not docker_file:
cdk_factory/version.py CHANGED
@@ -1 +1 @@
1
- __version__ = "0.13.6"
1
+ __version__ = "0.14.1"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cdk_factory
3
- Version: 0.13.6
3
+ Version: 0.14.1
4
4
  Summary: CDK Factory. A QuickStarter and best practices setup for CDK projects
5
5
  Author-email: Eric Wilson <eric.wilson@geekcafe.com>
6
6
  License: MIT License
@@ -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=riz4KLyxI3rKxqm-AbvFFuR22uDgmXnMIjs0NxKBiIE,23
5
+ cdk_factory/version.py,sha256=DcrUHmqhXJJz-Sh-CsHfn9W6Q5OL-VL2FalGEX5hy6E,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
@@ -10,8 +10,8 @@ cdk_factory/configurations/cdk_config.py,sha256=eYboaXcz9CUx4rJbEagX8ppgtIERUlop
10
10
  cdk_factory/configurations/deployment.py,sha256=LO2gd1yv1nqlX_2MIjRXptylFybWiTKsMKZU0N58rSM,12110
11
11
  cdk_factory/configurations/deployment_wave.py,sha256=TFX7CYgr5SmLyziEb-R_OTteFWtlMHB4pT53ekV3d1Y,233
12
12
  cdk_factory/configurations/devops.py,sha256=PG-s2ldZmMULheWdKf2lf2LSugLoKiOKyLELTZJJxu8,2506
13
- cdk_factory/configurations/enhanced_base_config.py,sha256=Y1gcGZxyf_O2KFnVpCBORSGHWHqHxw0vNx_ijMad_QA,6654
14
- cdk_factory/configurations/enhanced_ssm_config.py,sha256=KXRYMHztlqZAAnKNt1pfMvctLZJw6TvR1BrHNejLA6I,13254
13
+ cdk_factory/configurations/enhanced_base_config.py,sha256=LQQBn_99n41vkqvpU3NhY_baizCwPz2Di-V3iFBL6oE,6660
14
+ cdk_factory/configurations/enhanced_ssm_config.py,sha256=J23PCinDTlji1XzsjOhIk9C8PubZc5ICpSWqPf3B0Vw,15873
15
15
  cdk_factory/configurations/management.py,sha256=TSOIyxO9hGNxbgiTsS8a3pz03ungXiNqPPtZtfOpr8M,1373
16
16
  cdk_factory/configurations/pipeline.py,sha256=3RmRP1GIk42rjYZ-A9H3357RcO13IA47N-2IQcBkySQ,4939
17
17
  cdk_factory/configurations/pipeline_stage.py,sha256=eAT-FoIepIuv5tObk4TXlCN47FaatQO2rrFchgbMdXU,3415
@@ -38,7 +38,7 @@ cdk_factory/configurations/resources/lambda_layers.py,sha256=gVeP_-LC3Eq0lkPaG_J
38
38
  cdk_factory/configurations/resources/lambda_triggers.py,sha256=MD7cdMNKEulNBhtMLIFnWJuJ5R-yyIqa0LHUgbSQerA,834
39
39
  cdk_factory/configurations/resources/load_balancer.py,sha256=DHVKuEDaTfbB0UKYBt7UQQCPCM4FY-ThT1T52lcwg_E,4897
40
40
  cdk_factory/configurations/resources/monitoring.py,sha256=zsfDMa7yph33Ql8iP7lIqqLAyixh-Mesi0imtZJFdcE,2310
41
- cdk_factory/configurations/resources/rds.py,sha256=vHmR1zpDmV8HqgYhLgWi26w0S3lJN9hpgFboomiQgY8,4315
41
+ cdk_factory/configurations/resources/rds.py,sha256=-ccbd_rcOBIcI1ipZz2W3aRVRGyjQ-MSOaoznPNl_UI,4459
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
@@ -50,10 +50,10 @@ cdk_factory/configurations/resources/security_group.py,sha256=8kQtaaRVEn2aDm8XoC
50
50
  cdk_factory/configurations/resources/security_group_full_stack.py,sha256=x5MIMCa_olO7prFBKx9zVOfvsVdKo-2mWyhrCy27dFw,2031
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=MS3xrjm1I4gnUZorh2Orc6oi_fZE_ZPU29czDDhiD_A,20072
53
+ cdk_factory/constructs/cloudfront/cloudfront_distribution_construct.py,sha256=Co3pQ5NQVd5mXzPeGNN4UabvQVWyWL44xDyscNGAXUQ,21967
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
- cdk_factory/constructs/lambdas/lambda_function_docker_construct.py,sha256=aSyn3eh1YnuIahZ7CbZ5WswwPL8u70ZibMoS24QQifc,9907
56
+ cdk_factory/constructs/lambdas/lambda_function_docker_construct.py,sha256=O8aiHpNQ59eE3qEttEHVxbvp06v4byXOeYCVTAOI_Cg,9993
57
57
  cdk_factory/constructs/lambdas/lambda_function_role_construct.py,sha256=nJoxKv-4CWugX-ZkAzoG8wrfSsHqXqiMZnGRqSyS4Po,1453
58
58
  cdk_factory/constructs/lambdas/policies/policy_docs.py,sha256=YKXCk_tUTIGlWghLm_gLvLZFvc92AVxISyMkeWcym_o,21150
59
59
  cdk_factory/constructs/lambdas/policies/policy_statements.py,sha256=9DnSehsV8A_sBrSe4A--PQB6kii2HSnW4RnmhgVfon0,4164
@@ -61,7 +61,7 @@ cdk_factory/constructs/s3_buckets/s3_bucket_construct.py,sha256=5DK5aVUAveJYBjmP
61
61
  cdk_factory/constructs/s3_buckets/s3_bucket_replication_destination_construct.py,sha256=H-EJ2Q71LI5FPQ9thMkXDGRuwJdFc_2OzGIrWA98lxg,2517
62
62
  cdk_factory/constructs/s3_buckets/s3_bucket_replication_source_construct.py,sha256=ZLKbRcMK1q73VruxCH62XbymebKt-lKV5Kul9OjkZiA,3763
63
63
  cdk_factory/constructs/sqs/policies/sqs_policies.py,sha256=4p0G8G-fqNKSr68I55fvqH-DkhIeXyGaFBKkICIJ-qM,1277
64
- cdk_factory/interfaces/enhanced_ssm_parameter_mixin.py,sha256=GYFaUo_vzmuox8dK0U-cI9d-OBhToXlTkrWeveGZr3k,13522
64
+ cdk_factory/interfaces/enhanced_ssm_parameter_mixin.py,sha256=5-aQ4sg47LQ4AHjd0j20gxyM5U5-NOTeBsGsEUA_K3E,14374
65
65
  cdk_factory/interfaces/istack.py,sha256=bhTBs-o9FgKwvJMSuwxjUV6D3nUlvZHVzfm27jP9x9Y,987
66
66
  cdk_factory/interfaces/live_ssm_resolver.py,sha256=3FIr9a02SXqZmbFs3RT0WxczWEQR_CF7QSt7kWbDrVE,8163
67
67
  cdk_factory/interfaces/ssm_parameter_mixin.py,sha256=uA2j8HmAOpuEA9ynRj51s0WjUHMVLsbLQN-QS9NKyHA,12089
@@ -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=zdDiGilf03esxuya5Z8zVYSVMAIuZBeD-ZKgfnEd6aw,10077
115
- cdk_factory/stack_library/websites/static_website_stack.py,sha256=VoQOUZ_HFdRErBo0mpw73uXSNbjftxqdF5vbnZQHq4A,10351
115
+ cdk_factory/stack_library/websites/static_website_stack.py,sha256=hcdZQxyhupCy7n7UpNaX8egc2oI9TrssyOufj-oJuo8,10343
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
@@ -120,7 +120,7 @@ cdk_factory/templates/cdk.json.template,sha256=SuGz4Y6kCVMDRpJrA_AJlp0kwdENiJPVn
120
120
  cdk_factory/utilities/api_gateway_integration_utility.py,sha256=yblKiMIHGXqKb7JK5IbzGM_TXjX9j893BMqgqBT44DE,63449
121
121
  cdk_factory/utilities/commandline_args.py,sha256=0FiNEJFbWVN8Ct7r0VHnJEx7rhUlaRKT7R7HMNJBSTI,2216
122
122
  cdk_factory/utilities/configuration_loader.py,sha256=z0ZdGLNbTO4_yfluB9zUh_i_Poc9qj-7oRyjMRlNkN8,1522
123
- cdk_factory/utilities/docker_utilities.py,sha256=9r8C-lXYpymqEfi3gTeWCQzHldvfjttPqn6p3j2khTE,8111
123
+ cdk_factory/utilities/docker_utilities.py,sha256=6ee9KEGsaRJWo6FqvdPtE3_L2Emp3Lc0vu2Ie3VoflI,8280
124
124
  cdk_factory/utilities/environment_services.py,sha256=cd2T0efJtFPMLa1Fm7MPL-sqUlhKXCB7_XHsR8sfymE,9696
125
125
  cdk_factory/utilities/file_operations.py,sha256=fxqT0iyYZkb46lQr_XXadhFTca_1neVW0VRVkbyMmhA,9462
126
126
  cdk_factory/utilities/git_utilities.py,sha256=7Xac8PaThc7Lmk5jtDBHaJOj-fWRT017cgZmgXkVizM,3155
@@ -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.13.6.dist-info/METADATA,sha256=RPvjI9sW6v7gaupaQN8KDqHYj5HGNq0hU8v68SQOs_s,2451
133
- cdk_factory-0.13.6.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
134
- cdk_factory-0.13.6.dist-info/entry_points.txt,sha256=S1DPe0ORcdiwEALMN_WIo3UQrW_g4YdQCLEsc_b0Swg,53
135
- cdk_factory-0.13.6.dist-info/licenses/LICENSE,sha256=NOtdOeLwg2il_XBJdXUPFPX8JlV4dqTdDGAd2-khxT8,1066
136
- cdk_factory-0.13.6.dist-info/RECORD,,
132
+ cdk_factory-0.14.1.dist-info/METADATA,sha256=CeDWK6i4lTujrWo11UnQ49_HrdhmIsOSilsQppIGE_o,2451
133
+ cdk_factory-0.14.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
134
+ cdk_factory-0.14.1.dist-info/entry_points.txt,sha256=S1DPe0ORcdiwEALMN_WIo3UQrW_g4YdQCLEsc_b0Swg,53
135
+ cdk_factory-0.14.1.dist-info/licenses/LICENSE,sha256=NOtdOeLwg2il_XBJdXUPFPX8JlV4dqTdDGAd2-khxT8,1066
136
+ cdk_factory-0.14.1.dist-info/RECORD,,