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

@@ -18,6 +18,11 @@ class EcsClusterConfig:
18
18
  def __init__(self, config: Dict[str, Any]) -> None:
19
19
  self._config = config or {}
20
20
 
21
+ @property
22
+ def dictionary(self) -> Dict[str, Any]:
23
+ """Access to the underlying configuration dictionary (for compatibility with SSM mixin)"""
24
+ return self._config
25
+
21
26
  @property
22
27
  def name(self) -> str:
23
28
  """Name of the ECS cluster. Supports template variables like {{WORKLOAD_NAME}}-{{ENVIRONMENT}}-cluster"""
@@ -118,7 +118,9 @@ class EcsClusterStack(IStack, VPCProviderMixin, StandardizedSsmMixin):
118
118
  self._export_cluster_info()
119
119
 
120
120
  # Export SSM parameters
121
+ logger.info("Starting SSM parameter export for ECS cluster")
121
122
  self._export_ssm_parameters()
123
+ logger.info("Completed SSM parameter export for ECS cluster")
122
124
 
123
125
  logger.info(f"ECS Cluster stack created: {cluster_name}")
124
126
 
@@ -174,6 +176,8 @@ class EcsClusterStack(IStack, VPCProviderMixin, StandardizedSsmMixin):
174
176
 
175
177
  def _create_iam_roles(self):
176
178
  """Create IAM roles for the ECS cluster if configured."""
179
+ logger.info(f"create_instance_role setting: {self.ecs_config.create_instance_role}")
180
+
177
181
  if not self.ecs_config.create_instance_role:
178
182
  logger.info("Skipping instance role creation (disabled in config)")
179
183
  return
@@ -193,14 +197,18 @@ class EcsClusterStack(IStack, VPCProviderMixin, StandardizedSsmMixin):
193
197
  role_name=f"{self.ecs_config.name}-ecs-instance-role",
194
198
  )
195
199
 
200
+ logger.info(f"Created ECS instance role: {self.instance_role.role_name}")
201
+
196
202
  # Create instance profile
197
203
  self.instance_profile = iam.CfnInstanceProfile(
198
204
  self,
199
205
  "ECSInstanceProfile",
200
- roles=[self.instance_role.role_name],
201
206
  instance_profile_name=f"{self.ecs_config.name}-ecs-instance-profile",
207
+ roles=[self.instance_role.role_name],
202
208
  )
203
209
 
210
+ logger.info(f"Created ECS instance profile: {self.instance_profile.instance_profile_name}")
211
+
204
212
  logger.info("ECS instance role and profile created")
205
213
 
206
214
  def _export_cluster_info(self):
@@ -254,31 +262,51 @@ class EcsClusterStack(IStack, VPCProviderMixin, StandardizedSsmMixin):
254
262
 
255
263
  def _export_ssm_parameters(self) -> None:
256
264
  """Export SSM parameters using standardized approach"""
265
+ logger.info("=== Starting SSM Parameter Export ===")
266
+
257
267
  if not self.ecs_cluster:
258
268
  logger.warning("No ECS cluster to export")
259
269
  return
260
270
 
271
+ logger.info(f"ECS cluster found: {self.ecs_cluster.cluster_name}")
272
+ logger.info(f"SSM exports configured: {self.ssm_config.get('exports', {})}")
273
+
261
274
  # Prepare resource values for export
262
275
  resource_values = {
263
276
  "cluster_name": self.ecs_cluster.cluster_name,
264
277
  "cluster_arn": self.ecs_cluster.cluster_arn,
265
- "instance_role_arn": self.instance_role.role_arn,
266
278
  }
267
279
 
280
+ # Add instance role ARN if created
281
+ if self.instance_role:
282
+ resource_values["instance_role_arn"] = self.instance_role.role_arn
283
+ logger.info(f"Instance role ARN added: {self.instance_role.role_name}")
284
+ else:
285
+ logger.info("No instance role to export")
286
+
268
287
  # Add security group ID if available
269
288
  if hasattr(self.ecs_cluster, 'connections') and self.ecs_cluster.connections:
270
289
  security_groups = self.ecs_cluster.connections.security_groups
271
290
  if security_groups:
272
291
  resource_values["security_group_id"] = security_groups[0].security_group_id
292
+ logger.info(f"Security group ID added: {security_groups[0].security_group_id}")
273
293
 
274
294
  # Add instance profile ARN if created
275
295
  if self.instance_profile:
276
296
  resource_values["instance_profile_arn"] = self.instance_profile.attr_arn
297
+ logger.info(f"Instance profile ARN added: {self.instance_profile.instance_profile_name}")
277
298
 
278
299
  # Export using standardized SSM mixin
279
- exported_params = self.export_standardized_ssm_parameters(resource_values)
280
-
281
- logger.info(f"Exported SSM parameters: {exported_params}")
300
+ logger.info(f"Resource values available for export: {list(resource_values.keys())}")
301
+ for key, value in resource_values.items():
302
+ logger.info(f" {key}: {value}")
303
+
304
+ try:
305
+ exported_params = self.export_standardized_ssm_parameters(resource_values)
306
+ logger.info(f"Successfully exported SSM parameters: {exported_params}")
307
+ except Exception as e:
308
+ logger.error(f"Failed to export SSM parameters: {str(e)}")
309
+ raise
282
310
 
283
311
  # Backward compatibility methods
284
312
  def process_ssm_imports(self, config: Any, deployment: DeploymentConfig, resource_type: str = "resource") -> None:
cdk_factory/version.py CHANGED
@@ -1 +1 @@
1
- __version__ = "0.18.0"
1
+ __version__ = "0.18.3"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cdk_factory
3
- Version: 0.18.0
3
+ Version: 0.18.3
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=0EHw4xygmgkGSyfwNfEoMlQyN0uHxjHtlSFF79s6120,23
5
+ cdk_factory/version.py,sha256=gFZ2jBuhpo2tEeGzLqhbiYFDJrpaFW_VBCOIhFFdh2I,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
@@ -31,7 +31,7 @@ cdk_factory/configurations/resources/cognito.py,sha256=udX2AJ1ITLhy4f1XiJQwrva6F
31
31
  cdk_factory/configurations/resources/docker.py,sha256=hUbuxkuhcQu9LnLX7I8_57eTmHefEAGVnOHO37MkqC4,2166
32
32
  cdk_factory/configurations/resources/dynamodb.py,sha256=HsZMOaRwfuNPwKIzokeeE3f5zAQLTB5hRb_GzYq2ibg,2903
33
33
  cdk_factory/configurations/resources/ecr.py,sha256=iJEtKqBT7vQU0LU4urIglraIR7cPZqp3HQBs_2An7kA,8303
34
- cdk_factory/configurations/resources/ecs_cluster.py,sha256=vVbaRs9AdMlYapwGh40jYm949gpmsc_MDeuMqiOjH9g,3445
34
+ cdk_factory/configurations/resources/ecs_cluster.py,sha256=mQYJu7SUPDl5E4dMR6HCPFoWvFA3RGIb0iMNn-K7LX8,3635
35
35
  cdk_factory/configurations/resources/ecs_service.py,sha256=iwUVewUy9fQSLpkfRTNuIaWy7eQYWTHFiiD1jIYt9zU,5452
36
36
  cdk_factory/configurations/resources/exisiting.py,sha256=EVOLnkB-DGfTlmDgyQ5DD5k2zYfpFxqI3gugDR7mifI,478
37
37
  cdk_factory/configurations/resources/lambda_edge.py,sha256=MjmiwDkys4aoRvDQhH3MT6BgeShzJXNWL7761HJrLtQ,3404
@@ -98,7 +98,7 @@ cdk_factory/stack_library/dynamodb/dynamodb_stack.py,sha256=3_8lQP91GnBY77-61mtn
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=ebM8vVboNBplK0ua6bMSpNjewcFFkdvJ5wvVYEL1ONQ,302
101
- cdk_factory/stack_library/ecs/ecs_cluster_stack_standardized.py,sha256=QT_pNQYS28nQ3vQ-kvICOCRvkGeLRrOXuUMDKqJ-C64,11379
101
+ cdk_factory/stack_library/ecs/ecs_cluster_stack_standardized.py,sha256=-NK1U9vCFad8CcW6dOTguQgr0IBL_bhtg5cxyU2MR6U,12832
102
102
  cdk_factory/stack_library/ecs/ecs_service_stack.py,sha256=3en447kWBOqd0d_i2C8mRRBscO2GqN9-B2l_PW7kZuM,27409
103
103
  cdk_factory/stack_library/lambda_edge/__init__.py,sha256=ByBJ_CWdc4UtTmFBZH-6pzBMNkjkdtE65AmnB0Fs6lM,156
104
104
  cdk_factory/stack_library/lambda_edge/lambda_edge_stack.py,sha256=ft5AxHy8__F90ZYDaoJwTjACGIfrn2Sd9Zr2CdHO7GE,16398
@@ -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.18.0.dist-info/METADATA,sha256=Ck5iFO4mcy-raXGcEbs-RTfDx-RWqbLBtrNDRcogK_E,2451
140
- cdk_factory-0.18.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
141
- cdk_factory-0.18.0.dist-info/entry_points.txt,sha256=S1DPe0ORcdiwEALMN_WIo3UQrW_g4YdQCLEsc_b0Swg,53
142
- cdk_factory-0.18.0.dist-info/licenses/LICENSE,sha256=NOtdOeLwg2il_XBJdXUPFPX8JlV4dqTdDGAd2-khxT8,1066
143
- cdk_factory-0.18.0.dist-info/RECORD,,
139
+ cdk_factory-0.18.3.dist-info/METADATA,sha256=bjGa--we56QRn-Mf3pRHKvva3If16v1JH85-uiX3KOc,2451
140
+ cdk_factory-0.18.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
141
+ cdk_factory-0.18.3.dist-info/entry_points.txt,sha256=S1DPe0ORcdiwEALMN_WIo3UQrW_g4YdQCLEsc_b0Swg,53
142
+ cdk_factory-0.18.3.dist-info/licenses/LICENSE,sha256=NOtdOeLwg2il_XBJdXUPFPX8JlV4dqTdDGAd2-khxT8,1066
143
+ cdk_factory-0.18.3.dist-info/RECORD,,