@sylvesterllc/aws-constructs 1.1.33 → 1.1.35
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/constructs/DynamoDbSingleTable.js +2 -4
- package/dist/resources/dynamodb/CreateDynamoSingleTableDesign.d.ts +1 -2
- package/dist/resources/dynamodb/CreateDynamoSingleTableDesign.js +24 -26
- package/package.json +1 -1
- package/src/constructs/DynamoDbSingleTable.ts +5 -8
- package/src/resources/dynamodb/CreateDynamoSingleTableDesign.ts +104 -104
|
@@ -6,10 +6,8 @@ const CreateDynamoSingleTableDesign_1 = require("../resources/dynamodb/CreateDyn
|
|
|
6
6
|
class DynamoDbSingleTable extends constructs_1.Construct {
|
|
7
7
|
constructor(scope, id, tableName) {
|
|
8
8
|
super(scope, id);
|
|
9
|
-
|
|
10
|
-
new CreateDynamoSingleTableDesign_1.CreateDynamoSingleTableDesign(this, tableName);
|
|
11
|
-
}
|
|
9
|
+
new CreateDynamoSingleTableDesign_1.CreateDynamoSingleTableDesign(this, tableName);
|
|
12
10
|
}
|
|
13
11
|
}
|
|
14
12
|
exports.DynamoDbSingleTable = DynamoDbSingleTable;
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRHluYW1vRGJTaW5nbGVUYWJsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25zdHJ1Y3RzL0R5bmFtb0RiU2luZ2xlVGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQXVDO0FBQ3ZDLHVHQUFvRztBQUVwRyxNQUFhLG1CQUFvQixTQUFRLHNCQUFTO0lBQ2hELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsU0FBaUI7UUFDekQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLDZEQUE2QixDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNyRCxDQUFDO0NBQ0Y7QUFORCxrREFNQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBDcmVhdGVEeW5hbW9TaW5nbGVUYWJsZURlc2lnbiB9IGZyb20gXCIuLi9yZXNvdXJjZXMvZHluYW1vZGIvQ3JlYXRlRHluYW1vU2luZ2xlVGFibGVEZXNpZ25cIjtcblxuZXhwb3J0IGNsYXNzIER5bmFtb0RiU2luZ2xlVGFibGUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCB0YWJsZU5hbWU6IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBuZXcgQ3JlYXRlRHluYW1vU2luZ2xlVGFibGVEZXNpZ24odGhpcywgdGFibGVOYW1lKTtcbiAgfVxufVxuIl19
|
|
@@ -2,8 +2,7 @@ import { Table } from "aws-cdk-lib/aws-dynamodb";
|
|
|
2
2
|
import { Construct } from "constructs";
|
|
3
3
|
import { TsgBaseResource } from "../base/tsgBaseResource";
|
|
4
4
|
export declare class CreateDynamoSingleTableDesign extends TsgBaseResource<Table, string> {
|
|
5
|
-
|
|
6
|
-
protected tableName: string;
|
|
5
|
+
private tableName;
|
|
7
6
|
static ReadWriteActions: string[];
|
|
8
7
|
get CreatedTable(): Table | null;
|
|
9
8
|
constructor(scope: Construct, tableName: string);
|
|
@@ -5,7 +5,6 @@ const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
|
5
5
|
const aws_dynamodb_1 = require("aws-cdk-lib/aws-dynamodb");
|
|
6
6
|
const tsgBaseResource_1 = require("../base/tsgBaseResource");
|
|
7
7
|
class CreateDynamoSingleTableDesign extends tsgBaseResource_1.TsgBaseResource {
|
|
8
|
-
scope;
|
|
9
8
|
tableName;
|
|
10
9
|
static ReadWriteActions = [
|
|
11
10
|
"dynamodb:BatchGetItem",
|
|
@@ -26,59 +25,58 @@ class CreateDynamoSingleTableDesign extends tsgBaseResource_1.TsgBaseResource {
|
|
|
26
25
|
}
|
|
27
26
|
constructor(scope, tableName) {
|
|
28
27
|
super(scope, tableName);
|
|
29
|
-
this.scope = scope;
|
|
30
28
|
this.tableName = tableName;
|
|
31
29
|
}
|
|
32
30
|
createResource(scope) {
|
|
33
|
-
const dbTable = new aws_dynamodb_1.Table(scope,
|
|
31
|
+
const dbTable = new aws_dynamodb_1.Table(scope, `db-table-${this.tableName}`, {
|
|
34
32
|
tableName: this.tableName,
|
|
35
33
|
removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY,
|
|
36
34
|
partitionKey: {
|
|
37
|
-
name:
|
|
35
|
+
name: "pk",
|
|
38
36
|
type: aws_dynamodb_1.AttributeType.STRING,
|
|
39
37
|
},
|
|
40
38
|
sortKey: {
|
|
41
|
-
name:
|
|
39
|
+
name: "sk",
|
|
42
40
|
type: aws_dynamodb_1.AttributeType.STRING,
|
|
43
41
|
},
|
|
44
42
|
billingMode: aws_dynamodb_1.BillingMode.PAY_PER_REQUEST,
|
|
45
43
|
});
|
|
46
44
|
const gsiIndexes = [
|
|
47
45
|
{
|
|
48
|
-
indexName:
|
|
46
|
+
indexName: "gsi1Index",
|
|
49
47
|
partitionKey: {
|
|
50
|
-
name:
|
|
51
|
-
type: aws_dynamodb_1.AttributeType.STRING
|
|
48
|
+
name: "gsi1pk",
|
|
49
|
+
type: aws_dynamodb_1.AttributeType.STRING,
|
|
52
50
|
},
|
|
53
51
|
sortKey: {
|
|
54
|
-
name:
|
|
55
|
-
type: aws_dynamodb_1.AttributeType.STRING
|
|
52
|
+
name: "gsi1sk",
|
|
53
|
+
type: aws_dynamodb_1.AttributeType.STRING,
|
|
56
54
|
},
|
|
57
|
-
projectionType: aws_dynamodb_1.ProjectionType.ALL
|
|
55
|
+
projectionType: aws_dynamodb_1.ProjectionType.ALL,
|
|
58
56
|
},
|
|
59
57
|
{
|
|
60
|
-
indexName:
|
|
58
|
+
indexName: "gsi2Index",
|
|
61
59
|
partitionKey: {
|
|
62
|
-
name:
|
|
63
|
-
type: aws_dynamodb_1.AttributeType.STRING
|
|
60
|
+
name: "gsi2pk",
|
|
61
|
+
type: aws_dynamodb_1.AttributeType.STRING,
|
|
64
62
|
},
|
|
65
63
|
sortKey: {
|
|
66
|
-
name:
|
|
67
|
-
type: aws_dynamodb_1.AttributeType.STRING
|
|
64
|
+
name: "gsi2sk",
|
|
65
|
+
type: aws_dynamodb_1.AttributeType.STRING,
|
|
68
66
|
},
|
|
69
|
-
projectionType: aws_dynamodb_1.ProjectionType.ALL
|
|
67
|
+
projectionType: aws_dynamodb_1.ProjectionType.ALL,
|
|
70
68
|
},
|
|
71
69
|
{
|
|
72
|
-
indexName:
|
|
70
|
+
indexName: "gsi3Index",
|
|
73
71
|
partitionKey: {
|
|
74
|
-
name:
|
|
75
|
-
type: aws_dynamodb_1.AttributeType.STRING
|
|
72
|
+
name: "gsi3pk",
|
|
73
|
+
type: aws_dynamodb_1.AttributeType.STRING,
|
|
76
74
|
},
|
|
77
75
|
sortKey: {
|
|
78
|
-
name:
|
|
79
|
-
type: aws_dynamodb_1.AttributeType.STRING
|
|
76
|
+
name: "gsi3sk",
|
|
77
|
+
type: aws_dynamodb_1.AttributeType.STRING,
|
|
80
78
|
},
|
|
81
|
-
projectionType: aws_dynamodb_1.ProjectionType.ALL
|
|
79
|
+
projectionType: aws_dynamodb_1.ProjectionType.ALL,
|
|
82
80
|
},
|
|
83
81
|
];
|
|
84
82
|
gsiIndexes.map((gsi) => {
|
|
@@ -86,7 +84,7 @@ class CreateDynamoSingleTableDesign extends tsgBaseResource_1.TsgBaseResource {
|
|
|
86
84
|
indexName: gsi.indexName,
|
|
87
85
|
partitionKey: gsi.partitionKey,
|
|
88
86
|
sortKey: gsi.sortKey,
|
|
89
|
-
projectionType: gsi.projectionType
|
|
87
|
+
projectionType: gsi.projectionType,
|
|
90
88
|
};
|
|
91
89
|
dbTable.addGlobalSecondaryIndex(gsiProps);
|
|
92
90
|
});
|
|
@@ -94,9 +92,9 @@ class CreateDynamoSingleTableDesign extends tsgBaseResource_1.TsgBaseResource {
|
|
|
94
92
|
}
|
|
95
93
|
createOutput(scope) {
|
|
96
94
|
new aws_cdk_lib_1.CfnOutput(scope, `dynamoTable-${this.tableName}`, {
|
|
97
|
-
value: `Table Name: ${this.tableName}
|
|
95
|
+
value: `Table Name: ${this.tableName}`,
|
|
98
96
|
});
|
|
99
97
|
}
|
|
100
98
|
}
|
|
101
99
|
exports.CreateDynamoSingleTableDesign = CreateDynamoSingleTableDesign;
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3JlYXRlRHluYW1vU2luZ2xlVGFibGVEZXNpZ24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmVzb3VyY2VzL2R5bmFtb2RiL0NyZWF0ZUR5bmFtb1NpbmdsZVRhYmxlRGVzaWduLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUF1RDtBQUN2RCwyREFPa0M7QUFFbEMsNkRBQTBEO0FBRTFELE1BQWEsNkJBQThCLFNBQVEsaUNBQThCO0lBcUJ6QztJQW5CcEMsTUFBTSxDQUFDLGdCQUFnQixHQUFhO1FBQ3BDLHVCQUF1QjtRQUN2Qix5QkFBeUI7UUFDekIsNkJBQTZCO1FBQzdCLHFCQUFxQjtRQUNyQix3QkFBd0I7UUFDeEIsa0JBQWtCO1FBQ2xCLHFCQUFxQjtRQUNyQiwyQkFBMkI7UUFDM0Isa0JBQWtCO1FBQ2xCLGdCQUFnQjtRQUNoQixlQUFlO1FBQ2YscUJBQXFCO0tBQ3RCLENBQUM7SUFFRixJQUFJLFlBQVk7UUFDZCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUVELFlBQVksS0FBZ0IsRUFBVSxTQUFpQjtRQUNyRCxLQUFLLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRFksY0FBUyxHQUFULFNBQVMsQ0FBUTtJQUV2RCxDQUFDO0lBRVMsY0FBYyxDQUFDLEtBQWdCO1FBQ3ZDLE1BQU0sT0FBTyxHQUFHLElBQUksb0JBQUssQ0FBQyxLQUFLLEVBQUUsWUFBWSxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDN0QsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLGFBQWEsRUFBRSwyQkFBYSxDQUFDLE9BQU87WUFFcEMsWUFBWSxFQUFFO2dCQUNaLElBQUksRUFBRSxJQUFJO2dCQUNWLElBQUksRUFBRSw0QkFBYSxDQUFDLE1BQU07YUFDM0I7WUFDRCxPQUFPLEVBQUU7Z0JBQ1AsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsSUFBSSxFQUFFLDRCQUFhLENBQUMsTUFBTTthQUMzQjtZQUNELFdBQVcsRUFBRSwwQkFBVyxDQUFDLGVBQWU7U0FDekMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxVQUFVLEdBQUc7WUFDakI7Z0JBQ0UsU0FBUyxFQUFFLFdBQVc7Z0JBQ3RCLFlBQVksRUFBRTtvQkFDWixJQUFJLEVBQUUsUUFBUTtvQkFDZCxJQUFJLEVBQUUsNEJBQWEsQ0FBQyxNQUFNO2lCQUMzQjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsSUFBSSxFQUFFLDRCQUFhLENBQUMsTUFBTTtpQkFDM0I7Z0JBQ0QsY0FBYyxFQUFFLDZCQUFjLENBQUMsR0FBRzthQUNuQztZQUNEO2dCQUNFLFNBQVMsRUFBRSxXQUFXO2dCQUN0QixZQUFZLEVBQUU7b0JBQ1osSUFBSSxFQUFFLFFBQVE7b0JBQ2QsSUFBSSxFQUFFLDRCQUFhLENBQUMsTUFBTTtpQkFDM0I7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLElBQUksRUFBRSxRQUFRO29CQUNkLElBQUksRUFBRSw0QkFBYSxDQUFDLE1BQU07aUJBQzNCO2dCQUNELGNBQWMsRUFBRSw2QkFBYyxDQUFDLEdBQUc7YUFDbkM7WUFDRDtnQkFDRSxTQUFTLEVBQUUsV0FBVztnQkFDdEIsWUFBWSxFQUFFO29CQUNaLElBQUksRUFBRSxRQUFRO29CQUNkLElBQUksRUFBRSw0QkFBYSxDQUFDLE1BQU07aUJBQzNCO2dCQUNELE9BQU8sRUFBRTtvQkFDUCxJQUFJLEVBQUUsUUFBUTtvQkFDZCxJQUFJLEVBQUUsNEJBQWEsQ0FBQyxNQUFNO2lCQUMzQjtnQkFDRCxjQUFjLEVBQUUsNkJBQWMsQ0FBQyxHQUFHO2FBQ25DO1NBQ0YsQ0FBQztRQUVGLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNyQixNQUFNLFFBQVEsR0FBOEI7Z0JBQzFDLFNBQVMsRUFBRSxHQUFHLENBQUMsU0FBUztnQkFDeEIsWUFBWSxFQUFFLEdBQUcsQ0FBQyxZQUFZO2dCQUM5QixPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU87Z0JBQ3BCLGNBQWMsRUFBRSxHQUFHLENBQUMsY0FBYzthQUNuQyxDQUFDO1lBRUYsT0FBTyxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVTLFlBQVksQ0FBSSxLQUFnQjtRQUN4QyxJQUFJLHVCQUFTLENBQUMsS0FBSyxFQUFFLGVBQWUsSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFO1lBQ3BELEtBQUssRUFBRSxlQUFlLElBQUksQ0FBQyxTQUFTLEVBQUU7U0FDdkMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUFsR0gsc0VBbUdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2ZuT3V0cHV0LCBSZW1vdmFsUG9saWN5IH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQge1xuICBBdHRyaWJ1dGVUeXBlLFxuICBCaWxsaW5nTW9kZSxcbiAgR2xvYmFsU2Vjb25kYXJ5SW5kZXhQcm9wcyxcbiAgUHJvamVjdGlvblR5cGUsXG4gIFRhYmxlLFxuICBUYWJsZVByb3BzLFxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWR5bmFtb2RiXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgVHNnQmFzZVJlc291cmNlIH0gZnJvbSBcIi4uL2Jhc2UvdHNnQmFzZVJlc291cmNlXCI7XG5cbmV4cG9ydCBjbGFzcyBDcmVhdGVEeW5hbW9TaW5nbGVUYWJsZURlc2lnbiBleHRlbmRzIFRzZ0Jhc2VSZXNvdXJjZTxUYWJsZSwgc3RyaW5nPiB7XG4gIFxuICAgIHN0YXRpYyBSZWFkV3JpdGVBY3Rpb25zOiBzdHJpbmdbXSA9IFtcbiAgICBcImR5bmFtb2RiOkJhdGNoR2V0SXRlbVwiLFxuICAgIFwiZHluYW1vZGI6QmF0Y2hXcml0ZUl0ZW1cIixcbiAgICBcImR5bmFtb2RiOkNvbmRpdGlvbkNoZWNrSXRlbVwiLFxuICAgIFwiZHluYW1vZGI6RGVsZXRlSXRlbVwiLFxuICAgIFwiZHluYW1vZGI6RGVzY3JpYmVUYWJsZVwiLFxuICAgIFwiZHluYW1vZGI6R2V0SXRlbVwiLFxuICAgIFwiZHluYW1vZGI6R2V0UmVjb3Jkc1wiLFxuICAgIFwiZHluYW1vZGI6R2V0U2hhcmRJdGVyYXRvclwiLFxuICAgIFwiZHluYW1vZGI6UHV0SXRlbVwiLFxuICAgIFwiZHluYW1vZGI6UXVlcnlcIixcbiAgICBcImR5bmFtb2RiOlNjYW5cIixcbiAgICBcImR5bmFtb2RiOlVwZGF0ZUl0ZW1cIixcbiAgXTtcblxuICBnZXQgQ3JlYXRlZFRhYmxlKCkge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZWRSZXNvdXJjZTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIHByaXZhdGUgdGFibGVOYW1lOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzY29wZSwgdGFibGVOYW1lKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjcmVhdGVSZXNvdXJjZShzY29wZTogQ29uc3RydWN0KTogVGFibGUge1xuICAgIGNvbnN0IGRiVGFibGUgPSBuZXcgVGFibGUoc2NvcGUsIGBkYi10YWJsZS0ke3RoaXMudGFibGVOYW1lfWAsIHtcbiAgICAgIHRhYmxlTmFtZTogdGhpcy50YWJsZU5hbWUsXG4gICAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LkRFU1RST1ksXG5cbiAgICAgIHBhcnRpdGlvbktleToge1xuICAgICAgICBuYW1lOiBcInBrXCIsXG4gICAgICAgIHR5cGU6IEF0dHJpYnV0ZVR5cGUuU1RSSU5HLFxuICAgICAgfSxcbiAgICAgIHNvcnRLZXk6IHtcbiAgICAgICAgbmFtZTogXCJza1wiLFxuICAgICAgICB0eXBlOiBBdHRyaWJ1dGVUeXBlLlNUUklORyxcbiAgICAgIH0sXG4gICAgICBiaWxsaW5nTW9kZTogQmlsbGluZ01vZGUuUEFZX1BFUl9SRVFVRVNULFxuICAgIH0pO1xuXG4gICAgY29uc3QgZ3NpSW5kZXhlcyA9IFtcbiAgICAgIHtcbiAgICAgICAgaW5kZXhOYW1lOiBcImdzaTFJbmRleFwiLFxuICAgICAgICBwYXJ0aXRpb25LZXk6IHtcbiAgICAgICAgICBuYW1lOiBcImdzaTFwa1wiLFxuICAgICAgICAgIHR5cGU6IEF0dHJpYnV0ZVR5cGUuU1RSSU5HLFxuICAgICAgICB9LFxuICAgICAgICBzb3J0S2V5OiB7XG4gICAgICAgICAgbmFtZTogXCJnc2kxc2tcIixcbiAgICAgICAgICB0eXBlOiBBdHRyaWJ1dGVUeXBlLlNUUklORyxcbiAgICAgICAgfSxcbiAgICAgICAgcHJvamVjdGlvblR5cGU6IFByb2plY3Rpb25UeXBlLkFMTCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGluZGV4TmFtZTogXCJnc2kySW5kZXhcIixcbiAgICAgICAgcGFydGl0aW9uS2V5OiB7XG4gICAgICAgICAgbmFtZTogXCJnc2kycGtcIixcbiAgICAgICAgICB0eXBlOiBBdHRyaWJ1dGVUeXBlLlNUUklORyxcbiAgICAgICAgfSxcbiAgICAgICAgc29ydEtleToge1xuICAgICAgICAgIG5hbWU6IFwiZ3NpMnNrXCIsXG4gICAgICAgICAgdHlwZTogQXR0cmlidXRlVHlwZS5TVFJJTkcsXG4gICAgICAgIH0sXG4gICAgICAgIHByb2plY3Rpb25UeXBlOiBQcm9qZWN0aW9uVHlwZS5BTEwsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpbmRleE5hbWU6IFwiZ3NpM0luZGV4XCIsXG4gICAgICAgIHBhcnRpdGlvbktleToge1xuICAgICAgICAgIG5hbWU6IFwiZ3NpM3BrXCIsXG4gICAgICAgICAgdHlwZTogQXR0cmlidXRlVHlwZS5TVFJJTkcsXG4gICAgICAgIH0sXG4gICAgICAgIHNvcnRLZXk6IHtcbiAgICAgICAgICBuYW1lOiBcImdzaTNza1wiLFxuICAgICAgICAgIHR5cGU6IEF0dHJpYnV0ZVR5cGUuU1RSSU5HLFxuICAgICAgICB9LFxuICAgICAgICBwcm9qZWN0aW9uVHlwZTogUHJvamVjdGlvblR5cGUuQUxMLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgZ3NpSW5kZXhlcy5tYXAoKGdzaSkgPT4ge1xuICAgICAgY29uc3QgZ3NpUHJvcHM6IEdsb2JhbFNlY29uZGFyeUluZGV4UHJvcHMgPSB7XG4gICAgICAgIGluZGV4TmFtZTogZ3NpLmluZGV4TmFtZSxcbiAgICAgICAgcGFydGl0aW9uS2V5OiBnc2kucGFydGl0aW9uS2V5LFxuICAgICAgICBzb3J0S2V5OiBnc2kuc29ydEtleSxcbiAgICAgICAgcHJvamVjdGlvblR5cGU6IGdzaS5wcm9qZWN0aW9uVHlwZSxcbiAgICAgIH07XG5cbiAgICAgIGRiVGFibGUuYWRkR2xvYmFsU2Vjb25kYXJ5SW5kZXgoZ3NpUHJvcHMpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRiVGFibGU7XG4gIH1cblxuICBwcm90ZWN0ZWQgY3JlYXRlT3V0cHV0PFQ+KHNjb3BlOiBDb25zdHJ1Y3QpOiB2b2lkIHtcbiAgICBuZXcgQ2ZuT3V0cHV0KHNjb3BlLCBgZHluYW1vVGFibGUtJHt0aGlzLnRhYmxlTmFtZX1gLCB7XG4gICAgICB2YWx1ZTogYFRhYmxlIE5hbWU6ICR7dGhpcy50YWJsZU5hbWV9YCxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
package/package.json
CHANGED
|
@@ -2,12 +2,9 @@ import { Construct } from "constructs";
|
|
|
2
2
|
import { CreateDynamoSingleTableDesign } from "../resources/dynamodb/CreateDynamoSingleTableDesign";
|
|
3
3
|
|
|
4
4
|
export class DynamoDbSingleTable extends Construct {
|
|
5
|
+
constructor(scope: Construct, id: string, tableName: string) {
|
|
6
|
+
super(scope, id);
|
|
5
7
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
new CreateDynamoSingleTableDesign(this, tableName);
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
}
|
|
8
|
+
new CreateDynamoSingleTableDesign(this, tableName);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
@@ -1,112 +1,112 @@
|
|
|
1
1
|
import { CfnOutput, RemovalPolicy } from "aws-cdk-lib";
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
AttributeType,
|
|
4
|
+
BillingMode,
|
|
5
|
+
GlobalSecondaryIndexProps,
|
|
6
|
+
ProjectionType,
|
|
7
|
+
Table,
|
|
8
|
+
TableProps,
|
|
9
|
+
} from "aws-cdk-lib/aws-dynamodb";
|
|
3
10
|
import { Construct } from "constructs";
|
|
4
11
|
import { TsgBaseResource } from "../base/tsgBaseResource";
|
|
5
12
|
|
|
6
|
-
|
|
7
13
|
export class CreateDynamoSingleTableDesign extends TsgBaseResource<Table, string> {
|
|
8
|
-
|
|
14
|
+
|
|
9
15
|
static ReadWriteActions: string[] = [
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
16
|
+
"dynamodb:BatchGetItem",
|
|
17
|
+
"dynamodb:BatchWriteItem",
|
|
18
|
+
"dynamodb:ConditionCheckItem",
|
|
19
|
+
"dynamodb:DeleteItem",
|
|
20
|
+
"dynamodb:DescribeTable",
|
|
21
|
+
"dynamodb:GetItem",
|
|
22
|
+
"dynamodb:GetRecords",
|
|
23
|
+
"dynamodb:GetShardIterator",
|
|
24
|
+
"dynamodb:PutItem",
|
|
25
|
+
"dynamodb:Query",
|
|
26
|
+
"dynamodb:Scan",
|
|
27
|
+
"dynamodb:UpdateItem",
|
|
28
|
+
];
|
|
29
|
+
|
|
30
|
+
get CreatedTable() {
|
|
31
|
+
return this.createdResource;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
constructor(scope: Construct, private tableName: string) {
|
|
35
|
+
super(scope, tableName);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
protected createResource(scope: Construct): Table {
|
|
39
|
+
const dbTable = new Table(scope, `db-table-${this.tableName}`, {
|
|
40
|
+
tableName: this.tableName,
|
|
41
|
+
removalPolicy: RemovalPolicy.DESTROY,
|
|
42
|
+
|
|
43
|
+
partitionKey: {
|
|
44
|
+
name: "pk",
|
|
45
|
+
type: AttributeType.STRING,
|
|
46
|
+
},
|
|
47
|
+
sortKey: {
|
|
48
|
+
name: "sk",
|
|
49
|
+
type: AttributeType.STRING,
|
|
50
|
+
},
|
|
51
|
+
billingMode: BillingMode.PAY_PER_REQUEST,
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
const gsiIndexes = [
|
|
55
|
+
{
|
|
56
|
+
indexName: "gsi1Index",
|
|
57
|
+
partitionKey: {
|
|
58
|
+
name: "gsi1pk",
|
|
59
|
+
type: AttributeType.STRING,
|
|
60
|
+
},
|
|
61
|
+
sortKey: {
|
|
62
|
+
name: "gsi1sk",
|
|
63
|
+
type: AttributeType.STRING,
|
|
64
|
+
},
|
|
65
|
+
projectionType: ProjectionType.ALL,
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
indexName: "gsi2Index",
|
|
69
|
+
partitionKey: {
|
|
70
|
+
name: "gsi2pk",
|
|
71
|
+
type: AttributeType.STRING,
|
|
72
|
+
},
|
|
73
|
+
sortKey: {
|
|
74
|
+
name: "gsi2sk",
|
|
75
|
+
type: AttributeType.STRING,
|
|
76
|
+
},
|
|
77
|
+
projectionType: ProjectionType.ALL,
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
indexName: "gsi3Index",
|
|
81
|
+
partitionKey: {
|
|
82
|
+
name: "gsi3pk",
|
|
83
|
+
type: AttributeType.STRING,
|
|
84
|
+
},
|
|
85
|
+
sortKey: {
|
|
86
|
+
name: "gsi3sk",
|
|
87
|
+
type: AttributeType.STRING,
|
|
88
|
+
},
|
|
89
|
+
projectionType: ProjectionType.ALL,
|
|
90
|
+
},
|
|
22
91
|
];
|
|
23
92
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
type: AttributeType.STRING,
|
|
45
|
-
},
|
|
46
|
-
billingMode: BillingMode.PAY_PER_REQUEST,
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
const gsiIndexes = [
|
|
50
|
-
{
|
|
51
|
-
indexName: 'gsi1Index',
|
|
52
|
-
partitionKey: {
|
|
53
|
-
name: 'gsi1pk',
|
|
54
|
-
type: AttributeType.STRING
|
|
55
|
-
},
|
|
56
|
-
sortKey: {
|
|
57
|
-
name: 'gsi1sk',
|
|
58
|
-
type: AttributeType.STRING
|
|
59
|
-
},
|
|
60
|
-
projectionType: ProjectionType.ALL
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
indexName: 'gsi2Index',
|
|
64
|
-
partitionKey: {
|
|
65
|
-
name: 'gsi2pk',
|
|
66
|
-
type: AttributeType.STRING
|
|
67
|
-
},
|
|
68
|
-
sortKey: {
|
|
69
|
-
name: 'gsi2sk',
|
|
70
|
-
type: AttributeType.STRING
|
|
71
|
-
},
|
|
72
|
-
projectionType: ProjectionType.ALL
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
indexName: 'gsi3Index',
|
|
76
|
-
partitionKey: {
|
|
77
|
-
name: 'gsi3pk',
|
|
78
|
-
type: AttributeType.STRING
|
|
79
|
-
},
|
|
80
|
-
sortKey: {
|
|
81
|
-
name: 'gsi3sk',
|
|
82
|
-
type: AttributeType.STRING
|
|
83
|
-
},
|
|
84
|
-
projectionType: ProjectionType.ALL
|
|
85
|
-
},
|
|
86
|
-
];
|
|
87
|
-
|
|
88
|
-
gsiIndexes.map((gsi) => {
|
|
89
|
-
|
|
90
|
-
const gsiProps: GlobalSecondaryIndexProps = {
|
|
91
|
-
indexName: gsi.indexName,
|
|
92
|
-
partitionKey: gsi.partitionKey,
|
|
93
|
-
sortKey: gsi.sortKey,
|
|
94
|
-
projectionType: gsi.projectionType
|
|
95
|
-
|
|
96
|
-
};
|
|
97
|
-
|
|
98
|
-
dbTable.addGlobalSecondaryIndex(gsiProps);
|
|
99
|
-
});
|
|
100
|
-
|
|
101
|
-
return dbTable;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
protected createOutput<T>(scope: Construct): void {
|
|
106
|
-
|
|
107
|
-
new CfnOutput(scope, `dynamoTable-${this.tableName}`, {
|
|
108
|
-
value: `Table Name: ${this.tableName}`
|
|
109
|
-
});
|
|
110
|
-
|
|
111
|
-
}
|
|
112
|
-
}
|
|
93
|
+
gsiIndexes.map((gsi) => {
|
|
94
|
+
const gsiProps: GlobalSecondaryIndexProps = {
|
|
95
|
+
indexName: gsi.indexName,
|
|
96
|
+
partitionKey: gsi.partitionKey,
|
|
97
|
+
sortKey: gsi.sortKey,
|
|
98
|
+
projectionType: gsi.projectionType,
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
dbTable.addGlobalSecondaryIndex(gsiProps);
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
return dbTable;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
protected createOutput<T>(scope: Construct): void {
|
|
108
|
+
new CfnOutput(scope, `dynamoTable-${this.tableName}`, {
|
|
109
|
+
value: `Table Name: ${this.tableName}`,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
}
|