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.
- cdk_factory/configurations/resources/rds.py +8 -0
- cdk_factory/stack_library/rds/rds_stack.py +63 -1
- cdk_factory/version.py +1 -1
- {cdk_factory-0.15.9.dist-info → cdk_factory-0.15.11.dist-info}/METADATA +1 -1
- {cdk_factory-0.15.9.dist-info → cdk_factory-0.15.11.dist-info}/RECORD +8 -8
- {cdk_factory-0.15.9.dist-info → cdk_factory-0.15.11.dist-info}/WHEEL +0 -0
- {cdk_factory-0.15.9.dist-info → cdk_factory-0.15.11.dist-info}/entry_points.txt +0 -0
- {cdk_factory-0.15.9.dist-info → cdk_factory-0.15.11.dist-info}/licenses/LICENSE +0 -0
|
@@ -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
|
-
|
|
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.
|
|
1
|
+
__version__ = "0.15.11"
|
|
@@ -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=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=
|
|
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=
|
|
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.
|
|
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.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,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|