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

@@ -138,3 +138,11 @@ class RdsConfig(EnhancedBaseConfig):
138
138
  if "ssm" in self.__config and "imports" in self.__config["ssm"]:
139
139
  return self.__config["ssm"]["imports"]
140
140
  return self.__config.get("ssm_imports", {})
141
+
142
+ @property
143
+ def ssm_exports(self) -> Dict[str, str]:
144
+ """SSM parameter exports for the RDS instance"""
145
+ # Check both nested and flat structures for backwards compatibility
146
+ if "ssm" in self.__config and "exports" in self.__config["ssm"]:
147
+ return self.__config["ssm"]["exports"]
148
+ return self.__config.get("ssm_exports", {})
@@ -82,6 +82,9 @@ class RdsStack(IStack, EnhancedSsmParameterMixin):
82
82
 
83
83
  # Add outputs
84
84
  self._add_outputs(db_name)
85
+
86
+ # Export to SSM Parameter Store
87
+ self._export_ssm_parameters(db_name)
85
88
 
86
89
  def _process_ssm_imports(self) -> None:
87
90
  """Process SSM imports from configuration"""
@@ -208,8 +211,10 @@ class RdsStack(IStack, EnhancedSsmParameterMixin):
208
211
  raise ValueError(f"Unsupported database engine: {self.rds_config.engine}")
209
212
 
210
213
  # Configure instance type
214
+ # Strip 'db.' prefix if present since ec2.InstanceType expects just the instance family/size
211
215
  instance_class = self.rds_config.instance_class
212
- instance_type = ec2.InstanceType(instance_class)
216
+ instance_class_name = instance_class.replace("db.", "") if instance_class.startswith("db.") else instance_class
217
+ instance_type = ec2.InstanceType(instance_class_name)
213
218
 
214
219
  # Configure removal policy
215
220
  removal_policy = None
@@ -296,3 +301,60 @@ class RdsStack(IStack, EnhancedSsmParameterMixin):
296
301
  value=self.db_instance.secret.secret_arn,
297
302
  export_name=f"{self.deployment.build_resource_name(db_name)}-secret-arn",
298
303
  )
304
+
305
+ def _export_ssm_parameters(self, db_name: str) -> None:
306
+ """Export RDS connection info and credentials to SSM Parameter Store"""
307
+ ssm_exports = self.rds_config.ssm_exports
308
+
309
+ if not ssm_exports:
310
+ logger.debug("No SSM exports configured for RDS")
311
+ return
312
+
313
+ logger.info(f"Exporting {len(ssm_exports)} SSM parameters for RDS")
314
+
315
+ # Export database endpoint
316
+ if "db_endpoint" in ssm_exports:
317
+ self.export_ssm_parameter(
318
+ scope=self,
319
+ id="SsmExportDbEndpoint",
320
+ value=self.db_instance.db_instance_endpoint_address,
321
+ parameter_name=ssm_exports["db_endpoint"],
322
+ description=f"RDS endpoint for {db_name}",
323
+ )
324
+ logger.info(f"Exported SSM parameter: {ssm_exports['db_endpoint']}")
325
+
326
+ # Export database port
327
+ if "db_port" in ssm_exports:
328
+ self.export_ssm_parameter(
329
+ scope=self,
330
+ id="SsmExportDbPort",
331
+ value=self.db_instance.db_instance_endpoint_port,
332
+ parameter_name=ssm_exports["db_port"],
333
+ description=f"RDS port for {db_name}",
334
+ )
335
+ logger.info(f"Exported SSM parameter: {ssm_exports['db_port']}")
336
+
337
+ # Export database name
338
+ if "db_name" in ssm_exports and self.rds_config.database_name:
339
+ self.export_ssm_parameter(
340
+ scope=self,
341
+ id="SsmExportDbName",
342
+ value=self.rds_config.database_name,
343
+ parameter_name=ssm_exports["db_name"],
344
+ description=f"RDS database name for {db_name}",
345
+ )
346
+ logger.info(f"Exported SSM parameter: {ssm_exports['db_name']}")
347
+
348
+ # Export secret ARN (contains username and password)
349
+ if "db_secret_arn" in ssm_exports:
350
+ if hasattr(self.db_instance, "secret") and self.db_instance.secret:
351
+ self.export_ssm_parameter(
352
+ scope=self,
353
+ id="SsmExportDbSecretArn",
354
+ value=self.db_instance.secret.secret_arn,
355
+ parameter_name=ssm_exports["db_secret_arn"],
356
+ description=f"Secrets Manager ARN containing RDS credentials for {db_name}",
357
+ )
358
+ logger.info(f"Exported SSM parameter: {ssm_exports['db_secret_arn']}")
359
+ else:
360
+ logger.warning(f"Secret not found for RDS instance {db_name}, skipping secret ARN export")
cdk_factory/version.py CHANGED
@@ -1 +1 @@
1
- __version__ = "0.15.9"
1
+ __version__ = "0.15.11"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cdk_factory
3
- Version: 0.15.9
3
+ Version: 0.15.11
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=k-GJzgMV-c2ATHbR4wgw0IKwlkANiQ4VvTZ6xMxt9UA,23
5
+ cdk_factory/version.py,sha256=Bw5DUxQ3jqdKvFLsxUsxaKKMc-9Ywbelea4Rftx-Kj0,24
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
@@ -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=idpKdvkkCM7J9J2pNjMBOY1DNaFR1tk1tFjTg76bvrY,5267
40
40
  cdk_factory/configurations/resources/monitoring.py,sha256=zsfDMa7yph33Ql8iP7lIqqLAyixh-Mesi0imtZJFdcE,2310
41
- cdk_factory/configurations/resources/rds.py,sha256=fYyS9qlsdHCdGQ5jS3f-edQUvbNYX30T96gxEwlz9tM,4828
41
+ cdk_factory/configurations/resources/rds.py,sha256=is_odfCoe3kyiz8DpDxDayt1aVICJoNWuhuaHZ98qQo,5197
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
@@ -101,7 +101,7 @@ cdk_factory/stack_library/load_balancer/load_balancer_stack.py,sha256=SBB-Cknon7
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
104
- cdk_factory/stack_library/rds/rds_stack.py,sha256=jvG3mcz5CQHv2NV-KwjGX8XgxtPiixRQTdBtaLb6sw4,12161
104
+ cdk_factory/stack_library/rds/rds_stack.py,sha256=otT4qCl_GExUgl4xHWrcGksnJeg2Ps6luZxbpCXQYcI,15048
105
105
  cdk_factory/stack_library/route53/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
106
106
  cdk_factory/stack_library/route53/route53_stack.py,sha256=R-6DW7gIjeg25uBT5ZMLNDiQUOSZMipc-Tw6f8POVvI,8081
107
107
  cdk_factory/stack_library/rum/__init__.py,sha256=gUrWQdzd4rZ2J0YzAQC8PsEGAS7QgyYjB2ZCUKWasy4,90
@@ -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.9.dist-info/METADATA,sha256=3kgTXVxsXzMHhVRR_MSHhTriF9lhRLywzqssUwiThP4,2451
133
- cdk_factory-0.15.9.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
134
- cdk_factory-0.15.9.dist-info/entry_points.txt,sha256=S1DPe0ORcdiwEALMN_WIo3UQrW_g4YdQCLEsc_b0Swg,53
135
- cdk_factory-0.15.9.dist-info/licenses/LICENSE,sha256=NOtdOeLwg2il_XBJdXUPFPX8JlV4dqTdDGAd2-khxT8,1066
136
- cdk_factory-0.15.9.dist-info/RECORD,,
132
+ cdk_factory-0.15.11.dist-info/METADATA,sha256=vTtRFsbZLXHxMN6sy2U_8V906n9u8k-RREbUOY_mefI,2452
133
+ cdk_factory-0.15.11.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
134
+ cdk_factory-0.15.11.dist-info/entry_points.txt,sha256=S1DPe0ORcdiwEALMN_WIo3UQrW_g4YdQCLEsc_b0Swg,53
135
+ cdk_factory-0.15.11.dist-info/licenses/LICENSE,sha256=NOtdOeLwg2il_XBJdXUPFPX8JlV4dqTdDGAd2-khxT8,1066
136
+ cdk_factory-0.15.11.dist-info/RECORD,,