@aws/nx-plugin 1.0.0-rc.8 → 1.0.0-rc.9
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.
- package/LICENSE-THIRD-PARTY +0 -27
- package/README.md +8 -8
- package/package.json +1 -1
- package/src/connection/agent-serve-local.js +1 -1
- package/src/connection/agent-serve-local.js.map +1 -1
- package/src/infra/app/generator.js +6 -4
- package/src/infra/app/generator.js.map +1 -1
- package/src/mcp-server/tools/create-workspace-command.js +2 -2
- package/src/mcp-server/tools/create-workspace-command.js.map +1 -1
- package/src/py/agent/__snapshots__/generator.spec.ts.snap +2 -0
- package/src/py/agent/files/common/agent.py.template +2 -0
- package/src/py/agent/generator.js +3 -1
- package/src/py/agent/generator.js.map +1 -1
- package/src/py/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +4 -0
- package/src/py/fast-api/generator.js +11 -5
- package/src/py/fast-api/generator.js.map +1 -1
- package/src/py/fast-api/react/open-api.js +4 -1
- package/src/py/fast-api/react/open-api.js.map +1 -1
- package/src/py/mcp-server/generator.js +5 -15
- package/src/py/mcp-server/generator.js.map +1 -1
- package/src/py/project/generator.js +74 -62
- package/src/py/project/generator.js.map +1 -1
- package/src/smithy/project/__snapshots__/generator.spec.ts.snap +16 -16
- package/src/smithy/project/generator.js +25 -23
- package/src/smithy/project/generator.js.map +1 -1
- package/src/smithy/ts/api/generator.js +8 -0
- package/src/smithy/ts/api/generator.js.map +1 -1
- package/src/terraform/project/generator.js +7 -2
- package/src/terraform/project/generator.js.map +1 -1
- package/src/trpc/backend/generator.js +1 -0
- package/src/trpc/backend/generator.js.map +1 -1
- package/src/ts/agent/__snapshots__/generator.spec.ts.snap +6 -2
- package/src/ts/agent/files/common/agent.ts.template +6 -2
- package/src/ts/agent/generator.js +8 -3
- package/src/ts/agent/generator.js.map +1 -1
- package/src/ts/agent/mcp-connection/__snapshots__/generator.spec.ts.snap +1 -0
- package/src/ts/astro-docs/__snapshots__/generator.spec.ts.snap +6 -6
- package/src/ts/astro-docs/generator.js +10 -7
- package/src/ts/astro-docs/generator.js.map +1 -1
- package/src/ts/lib/__snapshots__/generator.spec.ts.snap +9 -9
- package/src/ts/lib/biome.js +5 -2
- package/src/ts/lib/biome.js.map +1 -1
- package/src/ts/lib/generator.js +21 -17
- package/src/ts/lib/generator.js.map +1 -1
- package/src/ts/lib/ts-project-utils.d.ts +10 -0
- package/src/ts/lib/ts-project-utils.js +22 -8
- package/src/ts/lib/ts-project-utils.js.map +1 -1
- package/src/ts/mcp-server/generator.js +8 -3
- package/src/ts/mcp-server/generator.js.map +1 -1
- package/src/ts/nx-generator/generator.js +16 -11
- package/src/ts/nx-generator/generator.js.map +1 -1
- package/src/ts/nx-plugin/generator.js +7 -6
- package/src/ts/nx-plugin/generator.js.map +1 -1
- package/src/ts/nx-plugin/utils.js +9 -3
- package/src/ts/nx-plugin/utils.js.map +1 -1
- package/src/ts/rdb/__snapshots__/generator.spec.ts.snap +36 -18
- package/src/ts/rdb/generator.js +19 -14
- package/src/ts/rdb/generator.js.map +1 -1
- package/src/ts/react-website/app/__snapshots__/generator.spec.ts.snap +38 -38
- package/src/ts/react-website/app/generator.js +8 -4
- package/src/ts/react-website/app/generator.js.map +1 -1
- package/src/ts/react-website/cognito-auth/__snapshots__/generator.spec.ts.snap +0 -2
- package/src/ts/react-website/cognito-auth/__snapshots__/generator.ux-provider.spec.ts.snap +0 -20
- package/src/ts/react-website/cognito-auth/generator.js +0 -3
- package/src/ts/react-website/cognito-auth/generator.js.map +1 -1
- package/src/ts/react-website/cognito-auth/grit/cloudscape-auth-menu.grit +3 -1
- package/src/ts/react-website/cognito-auth/grit/none-auth-menu.grit +1 -0
- package/src/ts/react-website/cognito-auth/grit/shadcn-auth-menu.grit +3 -1
- package/src/ts/react-website/cognito-auth/grit/shadcn-state-declarations.grit +3 -1
- package/src/utils/agent-connection/agent-connection.js +8 -2
- package/src/utils/agent-connection/agent-connection.js.map +1 -1
- package/src/utils/agent-connection/files/core-runtime-config/model-errors.ts.template +36 -0
- package/src/utils/agent-connection/files/py-core-runtime-config/model_errors.py.template +40 -0
- package/src/utils/agent-core-constructs/agent-core-constructs.js +2 -10
- package/src/utils/agent-core-constructs/agent-core-constructs.js.map +1 -1
- package/src/utils/ast/website.js +1 -1
- package/src/utils/ast.d.ts +4 -0
- package/src/utils/ast.js +24 -1
- package/src/utils/ast.js.map +1 -1
- package/src/utils/dynamodb-constructs/dynamodb-constructs.js +2 -10
- package/src/utils/dynamodb-constructs/dynamodb-constructs.js.map +1 -1
- package/src/utils/metrics.d.ts +7 -1
- package/src/utils/metrics.js +58 -28
- package/src/utils/metrics.js.map +1 -1
- package/src/utils/nx.d.ts +5 -0
- package/src/utils/nx.js +44 -12
- package/src/utils/nx.js.map +1 -1
- package/src/utils/port.d.ts +25 -4
- package/src/utils/port.js +56 -9
- package/src/utils/port.js.map +1 -1
- package/src/utils/py.js +12 -5
- package/src/utils/py.js.map +1 -1
- package/src/utils/rdb-constructs/files/terraform/core/rdb/aurora/aurora.tf.template +18 -9
- package/src/utils/rdb-constructs/rdb-constructs.js +2 -10
- package/src/utils/rdb-constructs/rdb-constructs.js.map +1 -1
package/src/utils/port.js
CHANGED
|
@@ -6,30 +6,77 @@ exports.assignPort = exports.assignSharedPort = void 0;
|
|
|
6
6
|
* SPDX-License-Identifier: Apache-2.0
|
|
7
7
|
*/
|
|
8
8
|
const devkit_1 = require("@nx/devkit");
|
|
9
|
+
/**
|
|
10
|
+
* Return the first port already registered in a project's own metadata, if any.
|
|
11
|
+
* Supports both the metadata.ports array and the legacy metadata.port.
|
|
12
|
+
*/
|
|
13
|
+
const getExistingProjectPort = (project) => {
|
|
14
|
+
const metadata = project.metadata;
|
|
15
|
+
if (Array.isArray(metadata?.ports) && typeof metadata.ports[0] === 'number') {
|
|
16
|
+
return metadata.ports[0];
|
|
17
|
+
}
|
|
18
|
+
if (typeof metadata?.port === 'number') {
|
|
19
|
+
return metadata.port;
|
|
20
|
+
}
|
|
21
|
+
return undefined;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Return the port previously assigned to a particular component within a
|
|
25
|
+
* project, if any. Projects which host multiple components (e.g. one agent or
|
|
26
|
+
* MCP server per component) record a port per component in metadata.components.
|
|
27
|
+
*/
|
|
28
|
+
const getExistingComponentPort = (project, component) => {
|
|
29
|
+
const components = project.metadata?.components ?? [];
|
|
30
|
+
const match = components.find((c) => c.generator === component.info.id && c.name === component.name);
|
|
31
|
+
return typeof match?.port === 'number' ? match.port : undefined;
|
|
32
|
+
};
|
|
9
33
|
/**
|
|
10
34
|
* Assign a port shared across all projects created by the same generator.
|
|
11
|
-
* If
|
|
12
|
-
*
|
|
35
|
+
* If this project already has a port, or a sibling project created by the same
|
|
36
|
+
* generator has one, reuse it; otherwise assign a fresh one. Mutates the
|
|
37
|
+
* project to register the port in its metadata.ports.
|
|
13
38
|
*/
|
|
14
39
|
const assignSharedPort = (tree, project, generatorId, startPort) => {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
40
|
+
// Reuse this project's own port if it already has one (idempotent on re-run)
|
|
41
|
+
const ownPort = getExistingProjectPort(project);
|
|
42
|
+
if (ownPort !== undefined) {
|
|
43
|
+
return ownPort;
|
|
44
|
+
}
|
|
45
|
+
// Otherwise reuse a sibling project's shared port if one exists
|
|
46
|
+
const siblingPort = [...(0, devkit_1.getProjects)(tree).values()]
|
|
47
|
+
.filter((p) => p.name !== project.name)
|
|
48
|
+
.map((p) => ({
|
|
49
|
+
generator: p.metadata?.generator,
|
|
50
|
+
port: getExistingProjectPort(p),
|
|
51
|
+
}))
|
|
52
|
+
.find((p) => p.generator === generatorId && p.port !== undefined)?.port;
|
|
53
|
+
if (siblingPort !== undefined) {
|
|
18
54
|
project.metadata ??= {};
|
|
19
55
|
project.metadata.ports = [
|
|
20
56
|
...(project.metadata.ports ?? []),
|
|
21
|
-
|
|
57
|
+
siblingPort,
|
|
22
58
|
];
|
|
23
|
-
return
|
|
59
|
+
return siblingPort;
|
|
24
60
|
}
|
|
25
61
|
return (0, exports.assignPort)(tree, project, startPort);
|
|
26
62
|
};
|
|
27
63
|
exports.assignSharedPort = assignSharedPort;
|
|
28
64
|
/**
|
|
29
65
|
* Assign a port for a particular target within a project.
|
|
30
|
-
* Mutates the project to add/update its metadata.ports with the newly assigned port
|
|
66
|
+
* Mutates the project to add/update its metadata.ports with the newly assigned port.
|
|
67
|
+
*
|
|
68
|
+
* Re-runs are idempotent: a port previously assigned to this project (or, when
|
|
69
|
+
* `options.component` is provided, to this component) is returned as-is without
|
|
70
|
+
* registering a duplicate.
|
|
31
71
|
*/
|
|
32
|
-
const assignPort = (tree, project, startPort) => {
|
|
72
|
+
const assignPort = (tree, project, startPort, options) => {
|
|
73
|
+
// Reuse a port already assigned to this project/component on re-run
|
|
74
|
+
const existingPort = options?.component
|
|
75
|
+
? getExistingComponentPort(project, options.component)
|
|
76
|
+
: getExistingProjectPort(project);
|
|
77
|
+
if (existingPort !== undefined) {
|
|
78
|
+
return existingPort;
|
|
79
|
+
}
|
|
33
80
|
// Find all existing ports
|
|
34
81
|
const allPorts = new Set([...(0, devkit_1.getProjects)(tree).values()].flatMap((p) => {
|
|
35
82
|
const metadata = p.metadata;
|
package/src/utils/port.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"port.js","sourceRoot":"","sources":["../../../../../packages/nx-plugin/src/utils/port.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,uCAA+E;AAE/E;;;;GAIG;AACI,MAAM,gBAAgB,GAAG,CAC9B,IAAU,EACV,OAA6B,EAC7B,WAAmB,EACnB,SAAiB,EACT,EAAE;IACV,MAAM,
|
|
1
|
+
{"version":3,"file":"port.js","sourceRoot":"","sources":["../../../../../packages/nx-plugin/src/utils/port.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,uCAA+E;AAE/E;;;GAGG;AACH,MAAM,sBAAsB,GAAG,CAC7B,OAA6B,EACT,EAAE;IACtB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAe,CAAC;IACzC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC5E,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IACD,IAAI,OAAO,QAAQ,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;QACvC,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,wBAAwB,GAAG,CAC/B,OAA6B,EAC7B,SAAkD,EAC9B,EAAE;IACtB,MAAM,UAAU,GAAI,OAAO,CAAC,QAAgB,EAAE,UAAU,IAAI,EAAE,CAAC;IAC/D,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAC3B,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAC3E,CAAC;IACF,OAAO,OAAO,KAAK,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AAClE,CAAC,CAAC;AAcF;;;;;GAKG;AACI,MAAM,gBAAgB,GAAG,CAC9B,IAAU,EACV,OAA6B,EAC7B,WAAmB,EACnB,SAAiB,EACT,EAAE;IACV,6EAA6E;IAC7E,MAAM,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAChD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,gEAAgE;IAChE,MAAM,WAAW,GAAG,CAAC,GAAG,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;SAChD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC;SACtC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,SAAS,EAAG,CAAC,CAAC,QAAgB,EAAE,SAAS;QACzC,IAAI,EAAE,sBAAsB,CAAC,CAAC,CAAC;KAChC,CAAC,CAAC;SACF,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,IAAI,CAAC;IAE1E,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,CAAC,QAAQ,KAAK,EAAE,CAAC;QACvB,OAAO,CAAC,QAAgB,CAAC,KAAK,GAAG;YAChC,GAAG,CAAE,OAAO,CAAC,QAAgB,CAAC,KAAK,IAAI,EAAE,CAAC;YAC1C,WAAW;SACZ,CAAC;QACF,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,OAAO,IAAA,kBAAU,EAAC,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;AAC9C,CAAC,CAAC;AA/BW,QAAA,gBAAgB,oBA+B3B;AAEF;;;;;;;GAOG;AACI,MAAM,UAAU,GAAG,CACxB,IAAU,EACV,OAA6B,EAC7B,SAAiB,EACjB,OAA2B,EAC3B,EAAE;IACF,oEAAoE;IACpE,MAAM,YAAY,GAAG,OAAO,EAAE,SAAS;QACrC,CAAC,CAAC,wBAAwB,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC;QACtD,CAAC,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACpC,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,0BAA0B;IAC1B,MAAM,QAAQ,GAAG,IAAI,GAAG,CACtB,CAAC,GAAG,IAAA,oBAAW,EAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QAC5C,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAe,CAAC;QACnC,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,0EAA0E;QAC1E,IAAI,QAAQ,EAAE,IAAI,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACxD,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;QACD,IACE,QAAQ,EAAE,KAAK;YACf,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ;YAClC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAC7B,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CACH,CAAC;IAEF,0DAA0D;IAC1D,IAAI,aAAa,GAAG,SAAS,CAAC;IAC9B,OAAO,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;QACnC,aAAa,EAAE,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,QAAQ,KAAK,EAAE,CAAC;IACvB,OAAO,CAAC,QAAgB,CAAC,KAAK,KAAK,EAAE,CAAC;IACtC,OAAO,CAAC,QAAgB,CAAC,KAAK,GAAG;QAChC,GAAI,OAAO,CAAC,QAAgB,CAAC,KAAK;QAClC,aAAa;KACd,CAAC;IAEF,OAAO,aAAa,CAAC;AACvB,CAAC,CAAC;AAhDW,QAAA,UAAU,cAgDrB"}
|
package/src/utils/py.js
CHANGED
|
@@ -22,11 +22,18 @@ const depKey = (dep) => {
|
|
|
22
22
|
return extras ? `${parsed.name}[${extras}]` : parsed.name;
|
|
23
23
|
};
|
|
24
24
|
const mergeDeps = (existing, deps) => {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
];
|
|
25
|
+
// Update deps in place by key so re-running does not reorder the list:
|
|
26
|
+
// existing deps keep their position (with their version refreshed), and only
|
|
27
|
+
// genuinely-new deps are appended.
|
|
28
|
+
const incoming = new Map((0, versions_1.withPyVersions)(deps).map((d) => [depKey(d), d]));
|
|
29
|
+
const merged = (existing ?? []).map((dep) => incoming.get(depKey(dep)) ?? dep);
|
|
30
|
+
const existingKeys = new Set((existing ?? []).map(depKey));
|
|
31
|
+
for (const [key, dep] of incoming) {
|
|
32
|
+
if (!existingKeys.has(key)) {
|
|
33
|
+
merged.push(dep);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return merged;
|
|
30
37
|
};
|
|
31
38
|
/**
|
|
32
39
|
* Add dependencies to a pyproject.toml file
|
package/src/utils/py.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"py.js","sourceRoot":"","sources":["../../../../../packages/nx-plugin/src/utils/py.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,sCAA+C;AAC/C,uCAA0D;AAC1D,6DAA+D;AAE/D,iCAAoC;AACpC,yCAAgE;AAEhE,wEAAwE;AACxE,yEAAyE;AACzE,wCAAwC;AACxC,MAAM,MAAM,GAAG,CAAC,GAAW,EAAU,EAAE;IACrC,MAAM,MAAM,GAAG,IAAA,8CAAwB,EAAC,GAAG,CAAC,CAAC;IAC7C,IAAI,MAAM,EAAE,IAAI,KAAK,aAAa,EAAE,CAAC;QACnC,OAAO,GAAG,CAAC;IACb,CAAC;IACD,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3D,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;AAC5D,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAChB,QAAuC,EACvC,IAAqB,EACX,EAAE;IACZ,MAAM,
|
|
1
|
+
{"version":3,"file":"py.js","sourceRoot":"","sources":["../../../../../packages/nx-plugin/src/utils/py.ts"],"names":[],"mappings":"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"}
|
|
@@ -159,10 +159,19 @@ variable "tags" {
|
|
|
159
159
|
default = {}
|
|
160
160
|
}
|
|
161
161
|
|
|
162
|
+
# Suffix appended to physical resource names so that multiple deployments
|
|
163
|
+
# (e.g. separate environments in the same account and region) don't collide.
|
|
164
|
+
resource "random_string" "suffix" {
|
|
165
|
+
length = 8
|
|
166
|
+
special = false
|
|
167
|
+
upper = false
|
|
168
|
+
}
|
|
169
|
+
|
|
162
170
|
locals {
|
|
163
171
|
default_port = var.engine == "aurora-mysql" ? 3306 : 5432
|
|
164
172
|
default_engine_version = var.engine == "aurora-mysql" ? "8.0.mysql_aurora.3.12.0" : "17.7"
|
|
165
173
|
parameter_group_family = var.engine == "aurora-mysql" ? "aurora-mysql8.0" : "aurora-postgresql${split(".", coalesce(var.engine_version, local.default_engine_version))[0]}"
|
|
174
|
+
cluster_name = "${var.name}-aurora-${random_string.suffix.result}"
|
|
166
175
|
}
|
|
167
176
|
|
|
168
177
|
resource "aws_rds_cluster_parameter_group" "database" {
|
|
@@ -260,7 +269,7 @@ resource "aws_security_group" "database" {
|
|
|
260
269
|
}
|
|
261
270
|
|
|
262
271
|
resource "aws_db_subnet_group" "database" {
|
|
263
|
-
name =
|
|
272
|
+
name = local.cluster_name
|
|
264
273
|
subnet_ids = var.subnet_ids
|
|
265
274
|
|
|
266
275
|
tags = merge(var.tags, {
|
|
@@ -300,7 +309,7 @@ resource "aws_secretsmanager_secret_version" "credentials" {
|
|
|
300
309
|
resource "aws_rds_cluster" "database" {
|
|
301
310
|
#checkov:skip=CKV2_AWS_27:Query logging can be enabled with enable_cloudwatch_logs; this module defaults to CDK-equivalent behavior unless logging is requested
|
|
302
311
|
#checkov:skip=CKV_AWS_139:Deletion protection is enabled but checkov is unable to detect it correctly
|
|
303
|
-
cluster_identifier =
|
|
312
|
+
cluster_identifier = local.cluster_name
|
|
304
313
|
engine = var.engine
|
|
305
314
|
engine_version = coalesce(var.engine_version, local.default_engine_version)
|
|
306
315
|
database_name = var.database_name
|
|
@@ -314,7 +323,7 @@ resource "aws_rds_cluster" "database" {
|
|
|
314
323
|
kms_key_id = aws_kms_key.database.arn
|
|
315
324
|
deletion_protection = var.deletion_protection
|
|
316
325
|
skip_final_snapshot = var.skip_final_snapshot
|
|
317
|
-
final_snapshot_identifier = var.skip_final_snapshot ? null : "${
|
|
326
|
+
final_snapshot_identifier = var.skip_final_snapshot ? null : "${local.cluster_name}-final-snapshot"
|
|
318
327
|
iam_database_authentication_enabled = true
|
|
319
328
|
monitoring_interval = 5
|
|
320
329
|
monitoring_role_arn = aws_iam_role.enhanced_monitoring.arn
|
|
@@ -334,7 +343,7 @@ resource "aws_rds_cluster" "database" {
|
|
|
334
343
|
resource "aws_rds_cluster_instance" "database" {
|
|
335
344
|
count = var.instance_count
|
|
336
345
|
|
|
337
|
-
identifier = "${
|
|
346
|
+
identifier = "${local.cluster_name}-${count.index + 1}"
|
|
338
347
|
cluster_identifier = aws_rds_cluster.database.id
|
|
339
348
|
instance_class = "db.serverless"
|
|
340
349
|
engine = aws_rds_cluster.database.engine
|
|
@@ -388,7 +397,7 @@ resource "aws_vpc_security_group_ingress_rule" "rotation_to_database" {
|
|
|
388
397
|
resource "aws_cloudformation_stack" "credentials_rotation" {
|
|
389
398
|
#checkov:skip=CKV_AWS_124:SNS event notifications are not required for the credentials rotation stack
|
|
390
399
|
count = var.enable_credential_rotation ? 1 : 0
|
|
391
|
-
name = "${
|
|
400
|
+
name = "${local.cluster_name}-credentials-rotation"
|
|
392
401
|
|
|
393
402
|
capabilities = ["CAPABILITY_IAM", "CAPABILITY_AUTO_EXPAND"]
|
|
394
403
|
|
|
@@ -402,7 +411,7 @@ resource "aws_cloudformation_stack" "credentials_rotation" {
|
|
|
402
411
|
SecretId = aws_secretsmanager_secret.credentials.arn
|
|
403
412
|
HostedRotationLambda = {
|
|
404
413
|
RotationType = var.engine == "aurora-mysql" ? "MySQLSingleUser" : "PostgreSQLSingleUser"
|
|
405
|
-
RotationLambdaName = "${
|
|
414
|
+
RotationLambdaName = "${local.cluster_name}-credentials-rotation"
|
|
406
415
|
VpcSecurityGroupIds = aws_security_group.rotation[0].id
|
|
407
416
|
VpcSubnetIds = join(",", var.lambda_subnet_ids)
|
|
408
417
|
}
|
|
@@ -482,7 +491,7 @@ resource "aws_security_group" "proxy" {
|
|
|
482
491
|
resource "aws_db_proxy" "aurora" {
|
|
483
492
|
count = var.enable_rds_proxy ? 1 : 0
|
|
484
493
|
|
|
485
|
-
name = "${var.name}-proxy"
|
|
494
|
+
name = "${var.name}-proxy-${random_string.suffix.result}"
|
|
486
495
|
default_auth_scheme = "IAM_AUTH"
|
|
487
496
|
engine_family = var.engine == "aurora-mysql" ? "MYSQL" : "POSTGRESQL"
|
|
488
497
|
role_arn = aws_iam_role.proxy[0].arn
|
|
@@ -628,7 +637,7 @@ resource "aws_iam_role_policy_attachment" "backup" {
|
|
|
628
637
|
resource "aws_backup_vault" "database" {
|
|
629
638
|
count = var.enable_backup ? 1 : 0
|
|
630
639
|
|
|
631
|
-
name = "${
|
|
640
|
+
name = "${local.cluster_name}-backup"
|
|
632
641
|
kms_key_arn = aws_kms_key.database.arn
|
|
633
642
|
tags = var.tags
|
|
634
643
|
}
|
|
@@ -636,7 +645,7 @@ resource "aws_backup_vault" "database" {
|
|
|
636
645
|
resource "aws_backup_plan" "database" {
|
|
637
646
|
count = var.enable_backup ? 1 : 0
|
|
638
647
|
|
|
639
|
-
name = "${
|
|
648
|
+
name = "${local.cluster_name}-backup"
|
|
640
649
|
|
|
641
650
|
rule {
|
|
642
651
|
rule_name = "daily-backup"
|
|
@@ -7,6 +7,7 @@ exports.addRdbTerraformModules = exports.addRdbCdkConstructs = exports.addRdbInf
|
|
|
7
7
|
*/
|
|
8
8
|
const devkit_1 = require("@nx/devkit");
|
|
9
9
|
const ast_1 = require("../ast");
|
|
10
|
+
const nx_1 = require("../nx");
|
|
10
11
|
const shared_constructs_constants_1 = require("../shared-constructs-constants");
|
|
11
12
|
const addRdbInfra = async (tree, options) => {
|
|
12
13
|
if (options.iac === 'cdk') {
|
|
@@ -19,16 +20,7 @@ const addRdbInfra = async (tree, options) => {
|
|
|
19
20
|
throw new Error(`Unsupported iac ${options.iac}`);
|
|
20
21
|
}
|
|
21
22
|
(0, devkit_1.updateJson)(tree, (0, devkit_1.joinPathFragments)(shared_constructs_constants_1.PACKAGES_DIR, options.iac === 'cdk' ? shared_constructs_constants_1.SHARED_CONSTRUCTS_DIR : shared_constructs_constants_1.SHARED_TERRAFORM_DIR, 'project.json'), (config) => {
|
|
22
|
-
|
|
23
|
-
config.targets = {};
|
|
24
|
-
}
|
|
25
|
-
if (!config.targets.build) {
|
|
26
|
-
config.targets.build = {};
|
|
27
|
-
}
|
|
28
|
-
config.targets.build.dependsOn = [
|
|
29
|
-
...(config.targets.build.dependsOn ?? []),
|
|
30
|
-
`${options.projectName}:build`,
|
|
31
|
-
];
|
|
23
|
+
(0, nx_1.addDependencyToTargetIfNotPresent)(config, 'build', `${options.projectName}:build`);
|
|
32
24
|
return config;
|
|
33
25
|
});
|
|
34
26
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rdb-constructs.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/utils/rdb-constructs/rdb-constructs.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,uCAOoB;AACpB,gCAAuC;AAGvC,gFAIwC;AAgBjC,MAAM,WAAW,GAAG,KAAK,EAC9B,IAAU,EACV,OAA8C,EAC9C,EAAE;IACF,IAAI,OAAO,CAAC,GAAG,KAAK,KAAK,EAAE,CAAC;QAC1B,MAAM,IAAA,2BAAmB,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;SAAM,IAAI,OAAO,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;QACvC,IAAA,8BAAsB,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,mBAAmB,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,IAAA,mBAAU,EACR,IAAI,EACJ,IAAA,0BAAiB,EACf,0CAAY,EACZ,OAAO,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,mDAAqB,CAAC,CAAC,CAAC,kDAAoB,EACpE,cAAc,CACf,EACD,CAAC,MAA4B,EAAE,EAAE;QAC/B,
|
|
1
|
+
{"version":3,"file":"rdb-constructs.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/utils/rdb-constructs/rdb-constructs.ts"],"names":[],"mappings":"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"}
|