diff --git a/manifests/local/database-modules.yaml b/manifests/local/database-modules.yaml index d3e2843..915ca8f 100644 --- a/manifests/local/database-modules.yaml +++ b/manifests/local/database-modules.yaml @@ -15,6 +15,8 @@ parameters: key: PrivateSubnetIds - name: number-instances value: 1 + - name: parameter-group-family + value: "1.4" --- name: mysql path: modules/database/rds @@ -37,7 +39,7 @@ parameters: - name: engine value: mysql - name: engine-version - value: 8.0.35 + value: 8.0.44 - name: instance-type value: t3.small - name: admin-username @@ -68,7 +70,7 @@ parameters: - name: engine value: postgresql - name: engine-version - value: 16.1 + value: 16.11 - name: instance-type value: m6gd.large - name: admin-username diff --git a/modules/database/neptune/README.md b/modules/database/neptune/README.md index 5a49768..19cb85f 100644 --- a/modules/database/neptune/README.md +++ b/modules/database/neptune/README.md @@ -16,6 +16,7 @@ This module creates a Neptune cluster for use in IDF #### Optional - `number-instances`: The number of compute nodes, defaults to `2` +- `parameter-group-family`: The Neptune parameter group family version (e.g., `1.2`, `1.3`, `1.4`), defaults to `1.4` ### Module Metadata Outputs diff --git a/modules/database/neptune/app.py b/modules/database/neptune/app.py index 18a3d24..96d1a94 100644 --- a/modules/database/neptune/app.py +++ b/modules/database/neptune/app.py @@ -33,6 +33,7 @@ def _param(name: str) -> str: raise ValueError("missing input parameter private-subnet-ids") num_instances = int(os.getenv(_param("NUMBER_INSTANCES"), "1")) +parameter_group_family = os.getenv(_param("PARAMETER_GROUP_FAMILY"), "1.4") app = App() @@ -49,6 +50,7 @@ def _param(name: str) -> str: vpc_id=vpc_id, private_subnet_ids=private_subnet_ids, number_instances=num_instances, + parameter_group_family=parameter_group_family, ) CfnOutput( diff --git a/modules/database/neptune/deployspec.yaml b/modules/database/neptune/deployspec.yaml index 7c4b9bb..b2d17c1 100644 --- a/modules/database/neptune/deployspec.yaml +++ b/modules/database/neptune/deployspec.yaml @@ -3,7 +3,7 @@ deploy: phases: install: commands: - - npm install -g aws-cdk@2.147.3 + - npm install -g aws-cdk@latest - pip install -r requirements.txt build: commands: @@ -14,7 +14,7 @@ destroy: phases: install: commands: - - npm install -g aws-cdk@2.147.3 + - npm install -g aws-cdk@latest - pip install -r requirements.txt build: commands: diff --git a/modules/database/neptune/requirements.in b/modules/database/neptune/requirements.in index 44e01fd..124a938 100644 --- a/modules/database/neptune/requirements.in +++ b/modules/database/neptune/requirements.in @@ -1,5 +1,5 @@ -aws-cdk-lib==2.147.3 -aws-cdk.aws-neptune-alpha==2.147.3-alpha.0 -constructs==10.0.91 -cdk-nag==2.12.29 +aws-cdk-lib>=2.180.0,<3.0.0 +aws-cdk.aws-neptune-alpha>=2.180.0a0 +constructs>=10.0.91,<11.0.0 +cdk-nag>=2.12.29 boto3>=1.42.0,<2.0.0 \ No newline at end of file diff --git a/modules/database/neptune/requirements.txt b/modules/database/neptune/requirements.txt index aaa7ca3..6cebe3e 100644 --- a/modules/database/neptune/requirements.txt +++ b/modules/database/neptune/requirements.txt @@ -4,15 +4,15 @@ attrs==25.4.0 # via # cattrs # jsii -aws-cdk-asset-awscli-v1==2.2.264 - # via aws-cdk-lib -aws-cdk-asset-kubectl-v20==2.1.4 +aws-cdk-asset-awscli-v1==2.2.263 # via aws-cdk-lib aws-cdk-asset-node-proxy-agent-v6==2.1.0 # via aws-cdk-lib -aws-cdk-aws-neptune-alpha==2.147.3a0 +aws-cdk-aws-neptune-alpha==2.236.0a0 # via -r requirements.in -aws-cdk-lib==2.147.3 +aws-cdk-cloud-assembly-schema==48.20.0 + # via aws-cdk-lib +aws-cdk-lib==2.236.0 # via # -r requirements.in # aws-cdk-aws-neptune-alpha @@ -42,18 +42,18 @@ jmespath==1.1.0 jsii==1.126.0 # via # aws-cdk-asset-awscli-v1 - # aws-cdk-asset-kubectl-v20 # aws-cdk-asset-node-proxy-agent-v6 # aws-cdk-aws-neptune-alpha + # aws-cdk-cloud-assembly-schema # aws-cdk-lib # cdk-nag # constructs publication==0.0.3 # via # aws-cdk-asset-awscli-v1 - # aws-cdk-asset-kubectl-v20 # aws-cdk-asset-node-proxy-agent-v6 # aws-cdk-aws-neptune-alpha + # aws-cdk-cloud-assembly-schema # aws-cdk-lib # cdk-nag # constructs @@ -69,9 +69,9 @@ six==1.17.0 typeguard==2.13.3 # via # aws-cdk-asset-awscli-v1 - # aws-cdk-asset-kubectl-v20 # aws-cdk-asset-node-proxy-agent-v6 # aws-cdk-aws-neptune-alpha + # aws-cdk-cloud-assembly-schema # aws-cdk-lib # jsii typing-extensions==4.15.0 diff --git a/modules/database/neptune/stack.py b/modules/database/neptune/stack.py index 42323cb..343acc2 100755 --- a/modules/database/neptune/stack.py +++ b/modules/database/neptune/stack.py @@ -26,6 +26,7 @@ def __init__( vpc_id: str, private_subnet_ids: List[str], number_instances: int, + parameter_group_family: str = "1.4", **kwargs: Any, ) -> None: super().__init__(scope, id, description="This stack deploys Amazon Neptune Cluster resources", **kwargs) @@ -42,6 +43,18 @@ def __init__( # Tagging all resources Tags.of(scope=cast(IConstruct, self)).add(key="Deployment", value=full_dep_mod) + # Map parameter group family string to enum + family_map = { + "1.2": neptune.ParameterGroupFamily.NEPTUNE_1_2, + "1.3": neptune.ParameterGroupFamily.NEPTUNE_1_3, + "1.4": neptune.ParameterGroupFamily.NEPTUNE_1_4, + } + pg_family = family_map.get(parameter_group_family) + if pg_family is None: + raise ValueError( + f"Unsupported parameter-group-family: {parameter_group_family}. Supported values: 1.2, 1.3, 1.4" + ) + # Importing the VPC self.vpc = ec2.Vpc.from_lookup( self, @@ -74,7 +87,7 @@ def __init__( self, f"{dep_mod}ClusterParams", description="Cluster parameter group", - family=neptune.ParameterGroupFamily.NEPTUNE_1_3, + family=pg_family, parameters={"neptune_enable_audit_log": "1"}, ) @@ -82,7 +95,7 @@ def __init__( self, "DbParams", description="Db parameter group", - family=neptune.ParameterGroupFamily.NEPTUNE_1_3, + family=pg_family, parameters={"neptune_query_timeout": "120000"}, )