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