@goldstack/template-dynamodb-cli 0.6.57 → 0.6.59
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/dist/src/gsiMigrationUtils.d.ts +19 -0
- package/dist/src/gsiMigrationUtils.d.ts.map +1 -0
- package/dist/src/gsiMigrationUtils.js +138 -0
- package/dist/src/gsiMigrationUtils.js.map +1 -0
- package/dist/src/templateDynamoDBCli.d.ts +1 -0
- package/dist/src/templateDynamoDBCli.d.ts.map +1 -1
- package/dist/src/templateDynamoDBCli.js +18 -1
- package/dist/src/templateDynamoDBCli.js.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { AttributeDefinition } from '@aws-sdk/client-dynamodb';
|
|
2
|
+
import type { DynamoDBContext } from '@goldstack/template-dynamodb';
|
|
3
|
+
/**
|
|
4
|
+
* Creates a single GSI and waits for it to become active
|
|
5
|
+
*/
|
|
6
|
+
export declare function createGsi(context: DynamoDBContext, indexName: string, existingAttributes: AttributeDefinition[]): Promise<void>;
|
|
7
|
+
/**
|
|
8
|
+
* Deletes a single GSI and waits for the table to become active
|
|
9
|
+
*/
|
|
10
|
+
export declare function deleteGsi(context: DynamoDBContext, indexName: string): Promise<void>;
|
|
11
|
+
/**
|
|
12
|
+
* Checks if a GSI exists on the table
|
|
13
|
+
*/
|
|
14
|
+
export declare function gsiExists(context: DynamoDBContext, indexName: string): Promise<boolean>;
|
|
15
|
+
/**
|
|
16
|
+
* Gets existing attribute definitions from the table
|
|
17
|
+
*/
|
|
18
|
+
export declare function getExistingAttributes(context: DynamoDBContext): Promise<AttributeDefinition[]>;
|
|
19
|
+
//# sourceMappingURL=gsiMigrationUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gsiMigrationUtils.d.ts","sourceRoot":"","sources":["../../src/gsiMigrationUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EAKpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAGpE;;GAEG;AACH,wBAAsB,SAAS,CAC7B,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,MAAM,EACjB,kBAAkB,EAAE,mBAAmB,EAAE,GACxC,OAAO,CAAC,IAAI,CAAC,CAqFf;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgD1F;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAY7F;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAQhC"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createGsi = createGsi;
|
|
4
|
+
exports.deleteGsi = deleteGsi;
|
|
5
|
+
exports.gsiExists = gsiExists;
|
|
6
|
+
exports.getExistingAttributes = getExistingAttributes;
|
|
7
|
+
const client_dynamodb_1 = require("@aws-sdk/client-dynamodb");
|
|
8
|
+
const utils_log_1 = require("@goldstack/utils-log");
|
|
9
|
+
/**
|
|
10
|
+
* Creates a single GSI and waits for it to become active
|
|
11
|
+
*/
|
|
12
|
+
async function createGsi(context, indexName, existingAttributes) {
|
|
13
|
+
var _a, _b;
|
|
14
|
+
(0, utils_log_1.info)(`Starting GSI creation: ${indexName}`);
|
|
15
|
+
// Prepare attribute definitions for this GSI
|
|
16
|
+
const gsiAttributes = [
|
|
17
|
+
{
|
|
18
|
+
AttributeName: `${indexName}_pk`,
|
|
19
|
+
AttributeType: 'S',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
AttributeName: `${indexName}_sk`,
|
|
23
|
+
AttributeType: 'S',
|
|
24
|
+
},
|
|
25
|
+
];
|
|
26
|
+
// Filter to only attributes not already defined
|
|
27
|
+
const existingAttributeNames = new Set(existingAttributes.map((attr) => attr.AttributeName).filter(Boolean));
|
|
28
|
+
const attributesToAdd = gsiAttributes.filter((attr) => !existingAttributeNames.has(attr.AttributeName));
|
|
29
|
+
const newAttributes = [...existingAttributes, ...attributesToAdd];
|
|
30
|
+
(0, utils_log_1.info)(`Creating GSI ${indexName} with ${attributesToAdd.length} new attributes`);
|
|
31
|
+
await context.client.send(new client_dynamodb_1.UpdateTableCommand({
|
|
32
|
+
TableName: context.tableName,
|
|
33
|
+
AttributeDefinitions: newAttributes,
|
|
34
|
+
GlobalSecondaryIndexUpdates: [
|
|
35
|
+
{
|
|
36
|
+
Create: {
|
|
37
|
+
IndexName: indexName,
|
|
38
|
+
KeySchema: [
|
|
39
|
+
{
|
|
40
|
+
AttributeName: `${indexName}_pk`,
|
|
41
|
+
KeyType: client_dynamodb_1.KeyType.HASH,
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
AttributeName: `${indexName}_sk`,
|
|
45
|
+
KeyType: client_dynamodb_1.KeyType.RANGE,
|
|
46
|
+
},
|
|
47
|
+
],
|
|
48
|
+
Projection: {
|
|
49
|
+
ProjectionType: client_dynamodb_1.ProjectionType.ALL,
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
],
|
|
54
|
+
}));
|
|
55
|
+
(0, utils_log_1.info)(`GSI ${indexName} creation initiated, waiting for activation...`);
|
|
56
|
+
// Wait for GSI to become active (30 minute timeout with 520 retries, progressive delay)
|
|
57
|
+
let active = false;
|
|
58
|
+
let retriesLeft = 520;
|
|
59
|
+
let delayIndex = 0;
|
|
60
|
+
while (!active && retriesLeft > 0) {
|
|
61
|
+
const describe = await context.client.send(new client_dynamodb_1.DescribeTableCommand({ TableName: context.tableName }));
|
|
62
|
+
const gsi = (_b = (_a = describe.Table) === null || _a === void 0 ? void 0 : _a.GlobalSecondaryIndexes) === null || _b === void 0 ? void 0 : _b.find((idx) => idx.IndexName === indexName);
|
|
63
|
+
(0, utils_log_1.info)(`GSI ${indexName} status: ${gsi === null || gsi === void 0 ? void 0 : gsi.IndexStatus} (${retriesLeft} retries remaining)`);
|
|
64
|
+
active = (gsi === null || gsi === void 0 ? void 0 : gsi.IndexStatus) === 'ACTIVE';
|
|
65
|
+
if (!active) {
|
|
66
|
+
// Progressive delay: starts at 1s, increases by 10ms each retry
|
|
67
|
+
const delayMs = 1000 + delayIndex * 10;
|
|
68
|
+
(0, utils_log_1.info)(`Waiting ${delayMs}ms before next check (delay index: ${delayIndex})`);
|
|
69
|
+
await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
70
|
+
delayIndex++;
|
|
71
|
+
}
|
|
72
|
+
retriesLeft--;
|
|
73
|
+
}
|
|
74
|
+
if (!active) {
|
|
75
|
+
throw new Error(`GSI ${indexName} failed to become active within 30 minutes`);
|
|
76
|
+
}
|
|
77
|
+
(0, utils_log_1.info)(`GSI ${indexName} is now active`);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Deletes a single GSI and waits for the table to become active
|
|
81
|
+
*/
|
|
82
|
+
async function deleteGsi(context, indexName) {
|
|
83
|
+
var _a, _b;
|
|
84
|
+
(0, utils_log_1.info)(`Starting GSI deletion: ${indexName}`);
|
|
85
|
+
await context.client.send(new client_dynamodb_1.UpdateTableCommand({
|
|
86
|
+
TableName: context.tableName,
|
|
87
|
+
GlobalSecondaryIndexUpdates: [
|
|
88
|
+
{
|
|
89
|
+
Delete: {
|
|
90
|
+
IndexName: indexName,
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
],
|
|
94
|
+
}));
|
|
95
|
+
(0, utils_log_1.info)(`GSI ${indexName} deletion initiated, waiting for table to be active...`);
|
|
96
|
+
// Wait for table to be active after GSI deletion (30 minute timeout with 520 retries, progressive delay)
|
|
97
|
+
let tableActive = false;
|
|
98
|
+
let retriesLeft = 520;
|
|
99
|
+
let delayIndex = 0;
|
|
100
|
+
while (!tableActive && retriesLeft > 0) {
|
|
101
|
+
const describe = await context.client.send(new client_dynamodb_1.DescribeTableCommand({ TableName: context.tableName }));
|
|
102
|
+
tableActive = ((_a = describe.Table) === null || _a === void 0 ? void 0 : _a.TableStatus) === 'ACTIVE';
|
|
103
|
+
(0, utils_log_1.info)(`Table status after deleting ${indexName}: ${(_b = describe.Table) === null || _b === void 0 ? void 0 : _b.TableStatus} (${retriesLeft} retries remaining)`);
|
|
104
|
+
if (!tableActive) {
|
|
105
|
+
// Progressive delay: starts at 1s, increases by 10ms each retry
|
|
106
|
+
const delayMs = 1000 + delayIndex * 10;
|
|
107
|
+
(0, utils_log_1.info)(`Waiting ${delayMs}ms before next check (delay index: ${delayIndex})`);
|
|
108
|
+
await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
109
|
+
delayIndex++;
|
|
110
|
+
}
|
|
111
|
+
retriesLeft--;
|
|
112
|
+
}
|
|
113
|
+
if (!tableActive) {
|
|
114
|
+
throw new Error(`Table failed to become active after deleting GSI ${indexName} within 30 minutes`);
|
|
115
|
+
}
|
|
116
|
+
(0, utils_log_1.info)(`Table is now active after deleting GSI ${indexName}`);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Checks if a GSI exists on the table
|
|
120
|
+
*/
|
|
121
|
+
async function gsiExists(context, indexName) {
|
|
122
|
+
var _a, _b, _c;
|
|
123
|
+
const tableDescription = await context.client.send(new client_dynamodb_1.DescribeTableCommand({
|
|
124
|
+
TableName: context.tableName,
|
|
125
|
+
}));
|
|
126
|
+
return ((_c = (_b = (_a = tableDescription.Table) === null || _a === void 0 ? void 0 : _a.GlobalSecondaryIndexes) === null || _b === void 0 ? void 0 : _b.some((index) => index.IndexName === indexName)) !== null && _c !== void 0 ? _c : false);
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Gets existing attribute definitions from the table
|
|
130
|
+
*/
|
|
131
|
+
async function getExistingAttributes(context) {
|
|
132
|
+
var _a;
|
|
133
|
+
const tableDescription = await context.client.send(new client_dynamodb_1.DescribeTableCommand({
|
|
134
|
+
TableName: context.tableName,
|
|
135
|
+
}));
|
|
136
|
+
return ((_a = tableDescription.Table) === null || _a === void 0 ? void 0 : _a.AttributeDefinitions) || [];
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=gsiMigrationUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gsiMigrationUtils.js","sourceRoot":"","sources":["../../src/gsiMigrationUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { DynamoDBContext } from '@goldstack/template-dynamodb';
|
|
2
2
|
import type { InputMigrations } from 'umzug/lib/types';
|
|
3
|
+
export * from './gsiMigrationUtils';
|
|
3
4
|
export declare const run: ({ args, migrations, }: {
|
|
4
5
|
args: string[];
|
|
5
6
|
migrations: InputMigrations<DynamoDBContext>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templateDynamoDBCli.d.ts","sourceRoot":"","sources":["../../src/templateDynamoDBCli.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EAGhB,MAAM,8BAA8B,CAAC;AAQtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAIvD,eAAO,MAAM,GAAG,GAAU,uBAGvB;IACD,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,EAAE,eAAe,CAAC,eAAe,CAAC,CAAC;CAC9C,KAAG,OAAO,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"templateDynamoDBCli.d.ts","sourceRoot":"","sources":["../../src/templateDynamoDBCli.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EAGhB,MAAM,8BAA8B,CAAC;AAQtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAIvD,cAAc,qBAAqB,CAAC;AAEpC,eAAO,MAAM,GAAG,GAAU,uBAGvB;IACD,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,EAAE,eAAe,CAAC,eAAe,CAAC,CAAC;CAC9C,KAAG,OAAO,CAAC,IAAI,CAiHf,CAAC"}
|
|
@@ -1,4 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
2
16
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
17
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
18
|
};
|
|
@@ -13,6 +27,7 @@ const utils_terraform_aws_1 = require("@goldstack/utils-terraform-aws");
|
|
|
13
27
|
const assert_1 = __importDefault(require("assert"));
|
|
14
28
|
const yargs_1 = __importDefault(require("yargs"));
|
|
15
29
|
const dynamoDBTableCli_1 = require("./dynamoDBTableCli");
|
|
30
|
+
__exportStar(require("./gsiMigrationUtils"), exports);
|
|
16
31
|
const run = async ({ args, migrations, }) => {
|
|
17
32
|
await (0, utils_cli_1.wrapCli)(async () => {
|
|
18
33
|
const deploymentPositional = (yargs) => {
|
|
@@ -58,8 +73,10 @@ const run = async ({ args, migrations, }) => {
|
|
|
58
73
|
throw new Error(`Cannot find configuration for deployment '${deploymentName}'`);
|
|
59
74
|
}
|
|
60
75
|
}
|
|
61
|
-
await (0, dynamoDBTableCli_1.dynamoDBCli)(migrations, ['init', deploymentName]);
|
|
62
76
|
const infraOperation = argv._[1];
|
|
77
|
+
if (infraOperation !== 'destroy') {
|
|
78
|
+
await (0, dynamoDBTableCli_1.dynamoDBCli)(migrations, ['init', deploymentName]);
|
|
79
|
+
}
|
|
63
80
|
let targetVersion;
|
|
64
81
|
let confirm;
|
|
65
82
|
let commandArgs;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templateDynamoDBCli.js","sourceRoot":"","sources":["../../src/templateDynamoDBCli.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"templateDynamoDBCli.js","sourceRoot":"","sources":["../../src/templateDynamoDBCli.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@goldstack/template-dynamodb-cli",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.59",
|
|
4
4
|
"description": "Utilities for building modules for DynamoDB access.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"goldstack",
|
|
@@ -42,6 +42,7 @@
|
|
|
42
42
|
"version:apply:force": "yarn version $@ && yarn version apply"
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
+
"@aws-sdk/client-dynamodb": "^3.0.0",
|
|
45
46
|
"@goldstack/template-dynamodb": "0.3.55",
|
|
46
47
|
"@goldstack/utils-cli": "0.3.24",
|
|
47
48
|
"@goldstack/utils-log": "0.3.26",
|