@fjall/components-infrastructure 0.1.43 → 0.1.45
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/lib/app.d.ts +72 -1
- package/dist/lib/app.js +119 -4
- package/dist/lib/patterns/aws/compute.d.ts +42 -0
- package/dist/lib/patterns/aws/compute.js +54 -0
- package/dist/lib/patterns/aws/database.d.ts +3 -0
- package/dist/lib/patterns/aws/database.js +4 -1
- package/dist/lib/patterns/aws/index.d.ts +2 -0
- package/dist/lib/patterns/aws/index.js +4 -1
- package/dist/lib/patterns/aws/managedOrganisation.d.ts +9 -3
- package/dist/lib/patterns/aws/managedOrganisation.js +34 -14
- package/dist/lib/patterns/aws/storage.d.ts +32 -0
- package/dist/lib/patterns/aws/storage.js +72 -0
- package/dist/lib/resources/aws/base/awsStack.d.ts +1 -0
- package/dist/lib/resources/aws/base/awsStack.js +5 -1
- package/dist/lib/resources/aws/compute/ecs.d.ts +14 -3
- package/dist/lib/resources/aws/compute/ecs.js +22 -1
- package/dist/lib/resources/aws/database/rdsAurora.d.ts +7 -0
- package/dist/lib/resources/aws/database/rdsAurora.js +17 -7
- package/dist/lib/resources/aws/database/rdsFreeTier.d.ts +4 -0
- package/dist/lib/resources/aws/database/rdsFreeTier.js +10 -1
- package/dist/lib/resources/aws/database/rdsInstance.d.ts +5 -0
- package/dist/lib/resources/aws/database/rdsInstance.js +16 -1
- package/dist/lib/resources/aws/networking/vpc.d.ts +4 -0
- package/dist/lib/resources/aws/networking/vpc.js +16 -2
- package/dist/lib/resources/aws/secrets/secret.d.ts +16 -0
- package/dist/lib/resources/aws/secrets/secret.js +9 -1
- package/dist/lib/resources/aws/storage/ecr.d.ts +4 -0
- package/dist/lib/resources/aws/storage/ecr.js +14 -2
- package/package.json +3 -3
package/dist/lib/app.d.ts
CHANGED
|
@@ -1,7 +1,78 @@
|
|
|
1
1
|
import { App as CdkApp } from "aws-cdk-lib";
|
|
2
|
+
import { Construct } from "constructs";
|
|
3
|
+
import { AwsStack } from "./resources";
|
|
4
|
+
import { Vpc } from "./resources/aws/networking/vpc";
|
|
5
|
+
import { Ecr } from "./resources/aws/storage/ecr";
|
|
6
|
+
import { Storage } from "./patterns/aws/storage";
|
|
7
|
+
/**
|
|
8
|
+
* The basic corner-stone of all Fjall-hosted applications.
|
|
9
|
+
* This class is a singleton and should be used to create and manage
|
|
10
|
+
* all resources in a Fjall application.
|
|
11
|
+
*/
|
|
2
12
|
export declare class App extends CdkApp {
|
|
3
13
|
private static instance;
|
|
14
|
+
private name;
|
|
15
|
+
private stacks;
|
|
16
|
+
private defaultVpc;
|
|
17
|
+
private defaultEcr;
|
|
4
18
|
private constructor();
|
|
5
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Get/Create a basic Fjall Application
|
|
21
|
+
* @param name
|
|
22
|
+
* @returns {App}
|
|
23
|
+
*/
|
|
24
|
+
static getApp(name?: string): App;
|
|
25
|
+
/**
|
|
26
|
+
* Get/Create the singleton instance of the App
|
|
27
|
+
* @param name
|
|
28
|
+
* @returns {App}
|
|
29
|
+
*/
|
|
30
|
+
static getInstance(name?: string): App;
|
|
31
|
+
/**
|
|
32
|
+
* Retrieve a stack by key. If the stack does not exist, it will be created.
|
|
33
|
+
* Dependencies are only applied the first time a stack is created.
|
|
34
|
+
*
|
|
35
|
+
* @param key - The key of the stack
|
|
36
|
+
* @param dependencies - The stack(s) that this stack depends on
|
|
37
|
+
* @returns {AwsStack}
|
|
38
|
+
*/
|
|
39
|
+
getStack(key: string, dependencies?: AwsStack | AwsStack[]): AwsStack;
|
|
40
|
+
/**
|
|
41
|
+
* Retrieve default compute stack - named as `${this.name}Compute`
|
|
42
|
+
* @returns {AwsStack}
|
|
43
|
+
*/
|
|
44
|
+
getDefaultComputeStack(): AwsStack;
|
|
45
|
+
/**
|
|
46
|
+
* Retrieve default network stack - named as `${this.name}Network`
|
|
47
|
+
* @returns {AwsStack}
|
|
48
|
+
*/
|
|
49
|
+
getDefaultNetworkStack(): AwsStack;
|
|
50
|
+
getDefaultStorageStack(): AwsStack;
|
|
51
|
+
/**
|
|
52
|
+
* Retrieve default vpc. If the VPC does not exist it will be created.
|
|
53
|
+
* @returns {Vpc}
|
|
54
|
+
*/
|
|
55
|
+
getDefaultVpc(): Vpc;
|
|
56
|
+
/**
|
|
57
|
+
* Retreive the default application container registry. If the registry does not exist
|
|
58
|
+
* it will be created.
|
|
59
|
+
*/
|
|
60
|
+
getDefaultContainerRegistry(): Ecr;
|
|
61
|
+
/**
|
|
62
|
+
* Add a compute resource to the default compute stack using the factory pattern.
|
|
63
|
+
*/
|
|
64
|
+
addCompute(fn: (app: App, scope: Construct) => Construct): void;
|
|
65
|
+
/**
|
|
66
|
+
* Manually add a resource to the default compute stack.
|
|
67
|
+
*/
|
|
68
|
+
addComputeResource(resource: Construct): void;
|
|
69
|
+
/**
|
|
70
|
+
* Add a storage resource to the default storage stack using the factory pattern.
|
|
71
|
+
*/
|
|
72
|
+
addStorage(fn: (app: App, scope: Construct) => Construct): Storage;
|
|
73
|
+
/**
|
|
74
|
+
* Manually add a resource to the default storage stack.
|
|
75
|
+
*/
|
|
76
|
+
addStorageResource(resource: Construct): void;
|
|
6
77
|
}
|
|
7
78
|
export default App;
|
package/dist/lib/app.js
CHANGED
|
@@ -2,20 +2,135 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.App = void 0;
|
|
4
4
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
+
const resources_1 = require("./resources");
|
|
6
|
+
const vpc_1 = require("./resources/aws/networking/vpc");
|
|
7
|
+
const ecr_1 = require("./resources/aws/storage/ecr");
|
|
8
|
+
/**
|
|
9
|
+
* The basic corner-stone of all Fjall-hosted applications.
|
|
10
|
+
* This class is a singleton and should be used to create and manage
|
|
11
|
+
* all resources in a Fjall application.
|
|
12
|
+
*/
|
|
5
13
|
class App extends aws_cdk_lib_1.App {
|
|
6
|
-
constructor() {
|
|
14
|
+
constructor(name) {
|
|
7
15
|
super();
|
|
16
|
+
this.stacks = {};
|
|
17
|
+
if (name)
|
|
18
|
+
this.name = name;
|
|
19
|
+
else
|
|
20
|
+
this.name = "FjallApp";
|
|
8
21
|
}
|
|
9
|
-
|
|
22
|
+
/**
|
|
23
|
+
* Get/Create a basic Fjall Application
|
|
24
|
+
* @param name
|
|
25
|
+
* @returns {App}
|
|
26
|
+
*/
|
|
27
|
+
static getApp(name) {
|
|
28
|
+
return App.getInstance(name);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Get/Create the singleton instance of the App
|
|
32
|
+
* @param name
|
|
33
|
+
* @returns {App}
|
|
34
|
+
*/
|
|
35
|
+
static getInstance(name) {
|
|
10
36
|
// Despite supporting multiple stacks you can still only ever
|
|
11
37
|
// have a single Application per CDK deployment
|
|
12
38
|
if (!App.instance) {
|
|
13
|
-
App.instance = new App();
|
|
39
|
+
App.instance = new App(name);
|
|
14
40
|
}
|
|
15
41
|
return App.instance;
|
|
16
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* Retrieve a stack by key. If the stack does not exist, it will be created.
|
|
45
|
+
* Dependencies are only applied the first time a stack is created.
|
|
46
|
+
*
|
|
47
|
+
* @param key - The key of the stack
|
|
48
|
+
* @param dependencies - The stack(s) that this stack depends on
|
|
49
|
+
* @returns {AwsStack}
|
|
50
|
+
*/
|
|
51
|
+
getStack(key, dependencies) {
|
|
52
|
+
if (!this.stacks[key]) {
|
|
53
|
+
this.stacks[key] = new resources_1.AwsStack(key, dependencies);
|
|
54
|
+
}
|
|
55
|
+
return this.stacks[key];
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Retrieve default compute stack - named as `${this.name}Compute`
|
|
59
|
+
* @returns {AwsStack}
|
|
60
|
+
*/
|
|
61
|
+
getDefaultComputeStack() {
|
|
62
|
+
return this.getStack(`${this.name}Compute`, [
|
|
63
|
+
this.getDefaultNetworkStack(),
|
|
64
|
+
this.getDefaultStorageStack()
|
|
65
|
+
]);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Retrieve default network stack - named as `${this.name}Network`
|
|
69
|
+
* @returns {AwsStack}
|
|
70
|
+
*/
|
|
71
|
+
getDefaultNetworkStack() {
|
|
72
|
+
return this.getStack(`${this.name}Network`);
|
|
73
|
+
}
|
|
74
|
+
getDefaultStorageStack() {
|
|
75
|
+
return this.getStack(`${this.name}Storage`, this.getDefaultNetworkStack());
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Retrieve default vpc. If the VPC does not exist it will be created.
|
|
79
|
+
* @returns {Vpc}
|
|
80
|
+
*/
|
|
81
|
+
getDefaultVpc() {
|
|
82
|
+
var networkStack = this.getDefaultNetworkStack();
|
|
83
|
+
if (!this.defaultVpc) {
|
|
84
|
+
this.defaultVpc = vpc_1.VpcFactory.build(`${this.name}DefaultVpc`, {
|
|
85
|
+
tags: {}
|
|
86
|
+
})(this, networkStack.getStack());
|
|
87
|
+
}
|
|
88
|
+
return this.defaultVpc;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Retreive the default application container registry. If the registry does not exist
|
|
92
|
+
* it will be created.
|
|
93
|
+
*/
|
|
94
|
+
getDefaultContainerRegistry() {
|
|
95
|
+
if (!this.defaultEcr) {
|
|
96
|
+
var networkStack = this.getDefaultNetworkStack();
|
|
97
|
+
this.defaultEcr = ecr_1.EcrFactory.build(`${this.name}Ecr`)(this, networkStack.getStack());
|
|
98
|
+
}
|
|
99
|
+
console.log("GET DEFAULT ECR:", this.defaultEcr);
|
|
100
|
+
return this.defaultEcr;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Add a compute resource to the default compute stack using the factory pattern.
|
|
104
|
+
*/
|
|
105
|
+
addCompute(fn) {
|
|
106
|
+
const computeStack = this.getDefaultComputeStack();
|
|
107
|
+
computeStack.addConstruct(fn(this, computeStack.getStack()));
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Manually add a resource to the default compute stack.
|
|
111
|
+
*/
|
|
112
|
+
addComputeResource(resource) {
|
|
113
|
+
const computeStack = this.getDefaultComputeStack();
|
|
114
|
+
computeStack.addConstruct(resource);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Add a storage resource to the default storage stack using the factory pattern.
|
|
118
|
+
*/
|
|
119
|
+
addStorage(fn) {
|
|
120
|
+
const storageStack = this.getDefaultStorageStack();
|
|
121
|
+
const storageConstruct = fn(this, storageStack.getStack());
|
|
122
|
+
storageStack.addConstruct(storageConstruct);
|
|
123
|
+
return storageConstruct;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Manually add a resource to the default storage stack.
|
|
127
|
+
*/
|
|
128
|
+
addStorageResource(resource) {
|
|
129
|
+
const storageStack = this.getDefaultStorageStack();
|
|
130
|
+
storageStack.addConstruct(resource);
|
|
131
|
+
}
|
|
17
132
|
}
|
|
18
133
|
exports.App = App;
|
|
19
134
|
App.instance = null;
|
|
20
135
|
exports.default = App;
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
136
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBNEM7QUFHNUMsMkNBQXVDO0FBQ3ZDLHdEQUFpRTtBQUNqRSxxREFBOEQ7QUFJOUQ7Ozs7R0FJRztBQUNILE1BQWEsR0FBSSxTQUFRLGlCQUFNO0lBUzdCLFlBQW9CLElBQWE7UUFDL0IsS0FBSyxFQUFFLENBQUM7UUFORixXQUFNLEdBQWdDLEVBQUUsQ0FBQztRQVEvQyxJQUFJLElBQUk7WUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQzs7WUFDdEIsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQWE7UUFDaEMsT0FBTyxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFhO1FBQ3JDLDZEQUE2RDtRQUM3RCwrQ0FBK0M7UUFDL0MsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixHQUFHLENBQUMsUUFBUSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLENBQUM7UUFFRCxPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxRQUFRLENBQUMsR0FBVyxFQUFFLFlBQW9DO1FBQy9ELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLG9CQUFRLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3JELENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMs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N0Msa0JBQWUsR0FBRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwIGFzIENka0FwcCB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuaW1wb3J0IHsgQXdzU3RhY2sgfSBmcm9tIFwiLi9yZXNvdXJjZXNcIjtcbmltcG9ydCB7IFZwYywgVnBjRmFjdG9yeSB9IGZyb20gXCIuL3Jlc291cmNlcy9hd3MvbmV0d29ya2luZy92cGNcIjtcbmltcG9ydCB7IEVjciwgRWNyRmFjdG9yeSB9IGZyb20gXCIuL3Jlc291cmNlcy9hd3Mvc3RvcmFnZS9lY3JcIjtcblxuaW1wb3J0IHsgU3RvcmFnZSB9IGZyb20gXCIuL3BhdHRlcm5zL2F3cy9zdG9yYWdlXCI7XG5cbi8qKlxuICogVGhlIGJhc2ljIGNvcm5lci1zdG9uZSBvZiBhbGwgRmphbGwtaG9zdGVkIGFwcGxpY2F0aW9ucy5cbiAqICBUaGlzIGNsYXNzIGlzIGEgc2luZ2xldG9uIGFuZCBzaG91bGQgYmUgdXNlZCB0byBjcmVhdGUgYW5kIG1hbmFnZVxuICogICBhbGwgcmVzb3VyY2VzIGluIGEgRmphbGwgYXBwbGljYXRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBBcHAgZXh0ZW5kcyBDZGtBcHAge1xuICBwcml2YXRlIHN0YXRpYyBpbnN0YW5jZTogQXBwIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBuYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgc3RhY2tzOiB7IFtrZXk6IHN0cmluZ106IEF3c1N0YWNrIH0gPSB7fTtcblxuICBwcml2YXRlIGRlZmF1bHRWcGM6IFZwYztcbiAgcHJpdmF0ZSBkZWZhdWx0RWNyOiBFY3I7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihuYW1lPzogc3RyaW5nKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIGlmIChuYW1lKSB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIGVsc2UgdGhpcy5uYW1lID0gXCJGamFsbEFwcFwiO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldC9DcmVhdGUgYSBiYXNpYyBGamFsbCBBcHBsaWNhdGlvblxuICAgKiBAcGFyYW0gbmFtZVxuICAgKiBAcmV0dXJucyB7QXBwfVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXRBcHAobmFtZT86IHN0cmluZyk6IEFwcCB7XG4gICAgcmV0dXJuIEFwcC5nZXRJbnN0YW5jZShuYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQvQ3JlYXRlIHRoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIEFwcFxuICAgKiBAcGFyYW0gbmFtZVxuICAgKiBAcmV0dXJucyB7QXBwfVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXRJbnN0YW5jZShuYW1lPzogc3RyaW5nKTogQXBwIHtcbiAgICAvLyBEZXNwaXRlIHN1cHBvcnRpbmcgbXVsdGlwbGUgc3RhY2tzIHlvdSBjYW4gc3RpbGwgb25seSBldmVyXG4gICAgLy8gaGF2ZSBhIHNpbmdsZSBBcHBsaWNhdGlvbiBwZXIgQ0RLIGRlcGxveW1lbnRcbiAgICBpZiAoIUFwcC5pbnN0YW5jZSkge1xuICAgICAgQXBwLmluc3RhbmNlID0gbmV3IEFwcChuYW1lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gQXBwLmluc3RhbmNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIGEgc3RhY2sgYnkga2V5LiBJZiB0aGUgc3RhY2sgZG9lcyBub3QgZXhpc3QsIGl0IHdpbGwgYmUgY3JlYXRlZC5cbiAgICogIERlcGVuZGVuY2llcyBhcmUgb25seSBhcHBsaWVkIHRoZSBmaXJzdCB0aW1lIGEgc3RhY2sgaXMgY3JlYXRlZC5cbiAgICpcbiAgICogQHBhcmFtIGtleSAtIFRoZSBrZXkgb2YgdGhlIHN0YWNrXG4gICAqIEBwYXJhbSBkZXBlbmRlbmNpZXMgLSBUaGUgc3RhY2socykgdGhhdCB0aGlzIHN0YWNrIGRlcGVuZHMgb25cbiAgICogQHJldHVybnMge0F3c1N0YWNrfVxuICAgKi9cbiAgcHVibGljIGdldFN0YWNrKGtleTogc3RyaW5nLCBkZXBlbmRlbmNpZXM/OiBBd3NTdGFjayB8IEF3c1N0YWNrW10pOiBBd3NTdGFjayB7XG4gICAgaWYgKCF0aGlzLnN0YWNrc1trZXldKSB7XG4gICAgICB0aGlzLnN0YWNrc1trZXldID0gbmV3IEF3c1N0YWNrKGtleSwgZGVwZW5kZW5jaWVzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zdGFja3Nba2V5XTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSBkZWZhdWx0IGNvbXB1dGUgc3RhY2sgLSBuYW1lZCBhcyBgJHt0aGlzLm5hbWV9Q29tcHV0ZWBcbiAgICogQHJldHVybnMge0F3c1N0YWNrfVxuICAgKi9cbiAgcHVibGljIGdldERlZmF1bHRDb21wdXRlU3RhY2soKTogQXdzU3RhY2sge1xuICAgIHJldHVybiB0aGlzLmdldFN0YWNrKGAke3RoaXMubmFtZX1Db21wdXRlYCwgW1xuICAgICAgdGhpcy5nZXREZWZhdWx0TmV0d29ya1N0YWNrKCksXG4gICAgICB0aGlzLmdldERlZmF1bHRTdG9yYWdlU3RhY2soKVxuICAgIF0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIGRlZmF1bHQgbmV0d29yayBzdGFjayAtIG5hbWVkIGFzIGAke3RoaXMubmFtZX1OZXR3b3JrYFxuICAgKiBAcmV0dXJucyB7QXdzU3RhY2t9XG4gICAqL1xuICBwdWJsaWMgZ2V0RGVmYXVsdE5ldHdvcmtTdGFjaygpOiBBd3NTdGFjayB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RhY2soYCR7dGhpcy5uYW1lfU5ldHdvcmtgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXREZWZhdWx0U3RvcmFnZVN0YWNrKCk6IEF3c1N0YWNrIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdGFjayhgJHt0aGlzLm5hbWV9U3RvcmFnZWAsIHRoaXMuZ2V0RGVmYXVsdE5ldHdvcmtTdGFjaygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZSBkZWZhdWx0IHZwYy4gSWYgdGhlIFZQQyBkb2VzIG5vdCBleGlzdCBpdCB3aWxsIGJlIGNyZWF0ZWQuXG4gICAqIEByZXR1cm5zIHtWcGN9XG4gICAqL1xuICBwdWJsaWMgZ2V0RGVmYXVsdFZwYygpOiBWcGMge1xuICAgIHZhciBuZXR3b3JrU3RhY2sgPSB0aGlzLmdldERlZmF1bHROZXR3b3JrU3RhY2soKTtcblxuICAgIGlmICghdGhpcy5kZWZhdWx0VnBjKSB7XG4gICAgICB0aGlzLmRlZmF1bHRWcGMgPSBWcGNGYWN0b3J5LmJ1aWxkKGAke3RoaXMubmFtZX1EZWZhdWx0VnBjYCwge1xuICAgICAgICB0YWdzOiB7fVxuICAgICAgfSkodGhpcywgbmV0d29ya1N0YWNrLmdldFN0YWNrKCkpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmRlZmF1bHRWcGM7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmVpdmUgdGhlIGRlZmF1bHQgYXBwbGljYXRpb24gY29udGFpbmVyIHJlZ2lzdHJ5LiBJZiB0aGUgcmVnaXN0cnkgZG9lcyBub3QgZXhpc3RcbiAgICogIGl0IHdpbGwgYmUgY3JlYXRlZC5cbiAgICovXG4gIHB1YmxpYyBnZXREZWZhdWx0Q29udGFpbmVyUmVnaXN0cnkoKTogRWNyIHtcbiAgICBpZiAoIXRoaXMuZGVmYXVsdEVjcikge1xuICAgICAgdmFyIG5ldHdvcmtTdGFjayA9IHRoaXMuZ2V0RGVmYXVsdE5ldHdvcmtTdGFjaygpO1xuXG4gICAgICB0aGlzLmRlZmF1bHRFY3IgPSBFY3JGYWN0b3J5LmJ1aWxkKGAke3RoaXMubmFtZX1FY3JgKShcbiAgICAgICAgdGhpcyxcbiAgICAgICAgbmV0d29ya1N0YWNrLmdldFN0YWNrKClcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coXCJHRVQgREVGQVVMVCBFQ1I6XCIsIHRoaXMuZGVmYXVsdEVjcik7XG5cbiAgICByZXR1cm4gdGhpcy5kZWZhdWx0RWNyO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIGNvbXB1dGUgcmVzb3VyY2UgdG8gdGhlIGRlZmF1bHQgY29tcHV0ZSBzdGFjayB1c2luZyB0aGUgZmFjdG9yeSBwYXR0ZXJuLlxuICAgKi9cbiAgcHVibGljIGFkZENvbXB1dGUoZm46IChhcHA6IEFwcCwgc2NvcGU6IENvbnN0cnVjdCkgPT4gQ29uc3RydWN0KTogdm9pZCB7XG4gICAgY29uc3QgY29tcHV0ZVN0YWNrID0gdGhpcy5nZXREZWZhdWx0Q29tcHV0ZVN0YWNrKCk7XG4gICAgY29tcHV0ZVN0YWNrLmFkZENvbnN0cnVjdChmbih0aGlzLCBjb21wdXRlU3RhY2suZ2V0U3RhY2soKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hbnVhbGx5IGFkZCBhIHJlc291cmNlIHRvIHRoZSBkZWZhdWx0IGNvbXB1dGUgc3RhY2suXG4gICAqL1xuICBwdWJsaWMgYWRkQ29tcHV0ZVJlc291cmNlKHJlc291cmNlOiBDb25zdHJ1Y3QpOiB2b2lkIHtcbiAgICBjb25zdCBjb21wdXRlU3RhY2sgPSB0aGlzLmdldERlZmF1bHRDb21wdXRlU3RhY2soKTtcbiAgICBjb21wdXRlU3RhY2suYWRkQ29uc3RydWN0KHJlc291cmNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQWRkIGEgc3RvcmFnZSByZXNvdXJjZSB0byB0aGUgZGVmYXVsdCBzdG9yYWdlIHN0YWNrIHVzaW5nIHRoZSBmYWN0b3J5IHBhdHRlcm4uXG4gICAqL1xuICBwdWJsaWMgYWRkU3RvcmFnZShmbjogKGFwcDogQXBwLCBzY29wZTogQ29uc3RydWN0KSA9PiBDb25zdHJ1Y3QpOiBTdG9yYWdlIHtcbiAgICBjb25zdCBzdG9yYWdlU3RhY2sgPSB0aGlzLmdldERlZmF1bHRTdG9yYWdlU3RhY2soKTtcbiAgICBjb25zdCBzdG9yYWdlQ29uc3RydWN0ID0gZm4odGhpcywgc3RvcmFnZVN0YWNrLmdldFN0YWNrKCkpO1xuICAgIHN0b3JhZ2VTdGFjay5hZGRDb25zdHJ1Y3Qoc3RvcmFnZUNvbnN0cnVjdCk7XG5cbiAgICByZXR1cm4gc3RvcmFnZUNvbnN0cnVjdCBhcyB1bmtub3duIGFzIFN0b3JhZ2U7XG4gIH1cblxuICAvKipcbiAgICogTWFudWFsbHkgYWRkIGEgcmVzb3VyY2UgdG8gdGhlIGRlZmF1bHQgc3RvcmFnZSBzdGFjay5cbiAgICovXG4gIHB1YmxpYyBhZGRTdG9yYWdlUmVzb3VyY2UocmVzb3VyY2U6IENvbnN0cnVjdCk6IHZvaWQge1xuICAgIGNvbnN0IHN0b3JhZ2VTdGFjayA9IHRoaXMuZ2V0RGVmYXVsdFN0b3JhZ2VTdGFjaygpO1xuICAgIHN0b3JhZ2VTdGFjay5hZGRDb25zdHJ1Y3QocmVzb3VyY2UpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEFwcDtcbiJdfQ==
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { RepositoryImage } from "aws-cdk-lib/aws-ecs";
|
|
2
|
+
import { Repository } from "aws-cdk-lib/aws-ecr";
|
|
3
|
+
import { Connections, IConnectable, IVpc } from "aws-cdk-lib/aws-ec2";
|
|
4
|
+
import { Construct } from "constructs";
|
|
5
|
+
import App from "../../app";
|
|
6
|
+
import { SecretImport } from "../../resources/aws/secrets";
|
|
7
|
+
interface IComputeProps {
|
|
8
|
+
vpc?: IVpc;
|
|
9
|
+
ecrRepository?: Repository | RepositoryImage;
|
|
10
|
+
parentDomain?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Port the container listens on (default: 80)
|
|
13
|
+
*/
|
|
14
|
+
containerPort?: number;
|
|
15
|
+
/**
|
|
16
|
+
* Environmnet variables to pass to the container
|
|
17
|
+
*/
|
|
18
|
+
containerEnvironment?: {
|
|
19
|
+
[key: string]: string;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Safely import secrets from another resource,
|
|
23
|
+
* object key is used as name when passing to container
|
|
24
|
+
*/
|
|
25
|
+
containerSecretsImport?: {
|
|
26
|
+
[key: string]: SecretImport;
|
|
27
|
+
};
|
|
28
|
+
connections?: IConnectable[];
|
|
29
|
+
}
|
|
30
|
+
export declare class ComputeFactory {
|
|
31
|
+
static build(id: string, props: IComputeProps): (app: App, scope: Construct) => Compute;
|
|
32
|
+
}
|
|
33
|
+
export declare class Compute extends Construct implements IConnectable {
|
|
34
|
+
id: string;
|
|
35
|
+
scope: Construct;
|
|
36
|
+
vpc: IVpc;
|
|
37
|
+
connections: Connections;
|
|
38
|
+
private compute;
|
|
39
|
+
constructor(scope: Construct, id: string, props: IComputeProps);
|
|
40
|
+
addCompute(props: IComputeProps): void;
|
|
41
|
+
}
|
|
42
|
+
export {};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Compute = exports.ComputeFactory = void 0;
|
|
4
|
+
const aws_ec2_1 = require("aws-cdk-lib/aws-ec2");
|
|
5
|
+
const constructs_1 = require("constructs");
|
|
6
|
+
const ecs_1 = require("../../resources/aws/compute/ecs");
|
|
7
|
+
class ComputeFactory {
|
|
8
|
+
static build(id, props) {
|
|
9
|
+
return (app, scope) => {
|
|
10
|
+
const computeProps = {
|
|
11
|
+
...{
|
|
12
|
+
vpc: app.getDefaultVpc(),
|
|
13
|
+
ecrRepository: app.getDefaultContainerRegistry()
|
|
14
|
+
},
|
|
15
|
+
...props
|
|
16
|
+
};
|
|
17
|
+
return new Compute(scope, id, computeProps);
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.ComputeFactory = ComputeFactory;
|
|
22
|
+
class Compute extends constructs_1.Construct {
|
|
23
|
+
constructor(scope, id, props) {
|
|
24
|
+
super(scope, id);
|
|
25
|
+
this.id = id;
|
|
26
|
+
this.scope = scope;
|
|
27
|
+
this.addCompute(props);
|
|
28
|
+
}
|
|
29
|
+
addCompute(props) {
|
|
30
|
+
const fargateProps = {
|
|
31
|
+
...props,
|
|
32
|
+
...{
|
|
33
|
+
tags: {}
|
|
34
|
+
},
|
|
35
|
+
...{
|
|
36
|
+
scalingType: ecs_1.ScalingType.CPU,
|
|
37
|
+
// tood: add parentDomain back
|
|
38
|
+
protocol: props.parentDomain ? ecs_1.Protocol.HTTPS : ecs_1.Protocol.HTTP,
|
|
39
|
+
containerPort: props.containerPort || 80,
|
|
40
|
+
serviceName: `${this.id}Service`,
|
|
41
|
+
clusterName: `${this.id}Cluster`
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
this.compute = new ecs_1.default(this.scope, `${this.id}Fargate`, fargateProps);
|
|
45
|
+
if (props.connections) {
|
|
46
|
+
for (var conn of props.connections) {
|
|
47
|
+
this.compute.connections.allowTo(conn, aws_ec2_1.Port.allTcp());
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
this.connections = this.compute.connections;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
exports.Compute = Compute;
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcHV0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9wYXR0ZXJucy9hd3MvY29tcHV0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxpREFNNkI7QUFFN0IsMkNBQXVDO0FBSXZDLHlEQUt5QztBQW1DekMsTUFBYSxjQUFjO0lBQ3pCLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBVSxFQUFFLEtBQW9CO1FBQzNDLE9BQU8sQ0FBQyxHQUFRLEVBQUUsS0FBZ0IsRUFBRSxFQUFFO1lBQ3BDLE1BQU0sWUFBWSxHQUFHO2dCQUNuQixHQUFHO29CQUNELEdBQUcsRUFBRSxHQUFHLENBQUMsYUFBYSxFQUFFO29CQUN4QixhQUFhLEVBQUUsR0FBRyxDQUFDLDJCQUEyQixFQUFFO2lCQUNqRDtnQkFDRCxHQUFHLEtBQUs7YUFDVCxDQUFDO1lBRUYsT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzlDLENBQUMsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQWRELHdDQWNDO0FBRUQsTUFBYSxPQUFRLFNBQVEsc0JBQVM7SUFTcEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFvQjtRQUM1RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQW9CO1FBQzdCLE1BQU0sWUFBWSxHQUFHO1lBQ25CLEdBQUcsS0FBSztZQUNSLEdBQUc7Z0JBQ0QsSUFBSSxFQUFFLEVBQUU7YUFDVDtZQUNELEdBQUc7Z0JBQ0QsV0FBVyxFQUFFLGlCQUFXLENBQUMsR0FBRztnQkFDNUIsOEJBQThCO2dCQUM5QixRQUFRLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsY0FBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsY0FBUSxDQUFDLElBQUk7Z0JBQzdELGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYSxJQUFJLEVBQUU7Z0JBQ3hDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLFNBQVM7Z0JBQ2hDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLFNBQVM7YUFDakM7U0FDcUIsQ0FBQztRQUV6QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksYUFBYyxDQUMvQixJQUFJLENBQUMsS0FBSyxFQUNWLEdBQUcsSUFBSSxDQUFDLEVBQUUsU0FBUyxFQUNuQixZQUFZLENBQ2IsQ0FBQztRQUVGLElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RCLEtBQUssSUFBSSxJQUFJLElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNuQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLGNBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQ3hELENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztJQUM5QyxDQUFDO0NBQ0Y7QUEvQ0QsMEJBK0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVwb3NpdG9yeUltYWdlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lY3NcIjtcbmltcG9ydCB7IFJlcG9zaXRvcnkgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjclwiO1xuaW1wb3J0IHtcbiAgQ29ubmVjdGlvbnMsXG4gIElDb25uZWN0YWJsZSxcbiAgSVZwYyxcbiAgUG9ydCxcbiAgU3VibmV0VHlwZVxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG5pbXBvcnQgQXBwIGZyb20gXCIuLi8uLi9hcHBcIjtcblxuaW1wb3J0IEZhcmdhdGVDbHVzdGVyLCB7XG4gIENvbnRhaW5lclNlY3JldCxcbiAgRmFyZ2F0ZUNsdXN0ZXJQcm9wcyxcbiAgUHJvdG9jb2wsXG4gIFNjYWxpbmdUeXBlXG59IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL2NvbXB1dGUvZWNzXCI7XG5pbXBvcnQgeyBLZXlWYWx1ZSB9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuaW1wb3J0IHsgU2VjcmV0SW1wb3J0IH0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3Mvc2VjcmV0c1wiO1xuXG5pbnRlcmZhY2UgSUNvbXB1dGVQcm9wcyB7XG4gIHZwYz86IElWcGM7XG4gIGVjclJlcG9zaXRvcnk/OiBSZXBvc2l0b3J5IHwgUmVwb3NpdG9yeUltYWdlO1xuXG4gIC8vIE92ZXJyaWRhYmxlIHByb3BlcnRpZXMgdG8gY29uZmlndXJlIHRoZSBjcmVhdGVkIGNvbXB1dGUgcmVzb3VyY2VcblxuICBwYXJlbnREb21haW4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBvcnQgdGhlIGNvbnRhaW5lciBsaXN0ZW5zIG9uIChkZWZhdWx0OiA4MClcbiAgICovXG4gIGNvbnRhaW5lclBvcnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEVudmlyb25tbmV0IHZhcmlhYmxlcyB0byBwYXNzIHRvIHRoZSBjb250YWluZXJcbiAgICovXG4gIGNvbnRhaW5lckVudmlyb25tZW50Pzoge1xuICAgIFtrZXk6IHN0cmluZ106IHN0cmluZztcbiAgfTtcblxuICAvKipcbiAgICogU2FmZWx5IGltcG9ydCBzZWNyZXRzIGZyb20gYW5vdGhlciByZXNvdXJjZSxcbiAgICogIG9iamVjdCBrZXkgaXMgdXNlZCBhcyBuYW1lIHdoZW4gcGFzc2luZyB0byBjb250YWluZXJcbiAgICovXG4gIGNvbnRhaW5lclNlY3JldHNJbXBvcnQ/OiB7XG4gICAgW2tleTogc3RyaW5nXTogU2VjcmV0SW1wb3J0O1xuICB9O1xuXG4gIGNvbm5lY3Rpb25zPzogSUNvbm5lY3RhYmxlW107XG59XG5cbmV4cG9ydCBjbGFzcyBDb21wdXRlRmFjdG9yeSB7XG4gIHN0YXRpYyBidWlsZChpZDogc3RyaW5nLCBwcm9wczogSUNvbXB1dGVQcm9wcykge1xuICAgIHJldHVybiAoYXBwOiBBcHAsIHNjb3BlOiBDb25zdHJ1Y3QpID0+IHtcbiAgICAgIGNvbnN0IGNvbXB1dGVQcm9wcyA9IHtcbiAgICAgICAgLi4ue1xuICAgICAgICAgIHZwYzogYXBwLmdldERlZmF1bHRWcGMoKSxcbiAgICAgICAgICBlY3JSZXBvc2l0b3J5OiBhcHAuZ2V0RGVmYXVsdENvbnRhaW5lclJlZ2lzdHJ5KClcbiAgICAgICAgfSxcbiAgICAgICAgLi4ucHJvcHNcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBuZXcgQ29tcHV0ZShzY29wZSwgaWQsIGNvbXB1dGVQcm9wcyk7XG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29tcHV0ZSBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIElDb25uZWN0YWJsZSB7XG4gIHB1YmxpYyBpZDogc3RyaW5nO1xuICBwdWJsaWMgc2NvcGU6IENvbnN0cnVjdDtcbiAgcHVibGljIHZwYzogSVZwYztcblxuICBwdWJsaWMgY29ubmVjdGlvbnM6IENvbm5lY3Rpb25zO1xuXG4gIHByaXZhdGUgY29tcHV0ZTogRmFyZ2F0ZUNsdXN0ZXI7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IElDb21wdXRlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIHRoaXMuaWQgPSBpZDtcbiAgICB0aGlzLnNjb3BlID0gc2NvcGU7XG5cbiAgICB0aGlzLmFkZENvbXB1dGUocHJvcHMpO1xuICB9XG5cbiAgYWRkQ29tcHV0ZShwcm9wczogSUNvbXB1dGVQcm9wcykge1xuICAgIGNvbnN0IGZhcmdhdGVQcm9wcyA9IHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgLi4ue1xuICAgICAgICB0YWdzOiB7fVxuICAgICAgfSxcbiAgICAgIC4uLntcbiAgICAgICAgc2NhbGluZ1R5cGU6IFNjYWxpbmdUeXBlLkNQVSxcbiAgICAgICAgLy8gdG9vZDogYWRkIHBhcmVudERvbWFpbiBiYWNrXG4gICAgICAgIHByb3RvY29sOiBwcm9wcy5wYXJlbnREb21haW4gPyBQcm90b2NvbC5IVFRQUyA6IFByb3RvY29sLkhUVFAsXG4gICAgICAgIGNvbnRhaW5lclBvcnQ6IHByb3BzLmNvbnRhaW5lclBvcnQgfHwgODAsXG4gICAgICAgIHNlcnZpY2VOYW1lOiBgJHt0aGlzLmlkfVNlcnZpY2VgLFxuICAgICAgICBjbHVzdGVyTmFtZTogYCR7dGhpcy5pZH1DbHVzdGVyYFxuICAgICAgfVxuICAgIH0gYXMgRmFyZ2F0ZUNsdXN0ZXJQcm9wcztcblxuICAgIHRoaXMuY29tcHV0ZSA9IG5ldyBGYXJnYXRlQ2x1c3RlcihcbiAgICAgIHRoaXMuc2NvcGUsXG4gICAgICBgJHt0aGlzLmlkfUZhcmdhdGVgLFxuICAgICAgZmFyZ2F0ZVByb3BzXG4gICAgKTtcblxuICAgIGlmIChwcm9wcy5jb25uZWN0aW9ucykge1xuICAgICAgZm9yICh2YXIgY29ubiBvZiBwcm9wcy5jb25uZWN0aW9ucykge1xuICAgICAgICB0aGlzLmNvbXB1dGUuY29ubmVjdGlvbnMuYWxsb3dUbyhjb25uLCBQb3J0LmFsbFRjcCgpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5jb21wdXRlLmNvbm5lY3Rpb25zO1xuICB9XG59XG4iXX0=
|
|
@@ -4,6 +4,9 @@ exports.Database = void 0;
|
|
|
4
4
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
5
|
const database_1 = require("../../resources/aws/database");
|
|
6
6
|
const vpc_1 = require("../../resources/aws/networking/vpc");
|
|
7
|
+
/**
|
|
8
|
+
* @deprecated Use Storage instead
|
|
9
|
+
*/
|
|
7
10
|
class Database extends aws_cdk_lib_1.Stack {
|
|
8
11
|
constructor(scope, id, props) {
|
|
9
12
|
super(scope, id);
|
|
@@ -54,4 +57,4 @@ class Database extends aws_cdk_lib_1.Stack {
|
|
|
54
57
|
}
|
|
55
58
|
}
|
|
56
59
|
exports.Database = Database;
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvcGF0dGVybnMvYXdzL2RhdGFiYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFvQztBQUVwQywyREFJc0M7QUFDdEMsNERBQXlEO0FBNkJ6RDs7R0FFRztBQUNILE1BQWEsUUFBUyxTQUFRLG1CQUFLO0lBTWpDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBb0I7UUFDNUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFvQjtRQUN6QixJQUFJLE9BQU8sSUFBSSxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDekIsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLEdBQXdCLENBQUM7WUFDakQsSUFBSSxDQUFDLEdBQUcsR0FBRyxTQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQyxZQUFZLEtBQUssRUFBRTtnQkFDMUQsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLO2FBQ3ZCLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLEdBQW1CLENBQUM7WUFDNUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLFNBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUMsWUFBWSxFQUFFLEVBQUU7Z0JBQ2hELFNBQVMsRUFBRSxTQUFTLENBQUMsU0FBUztnQkFDOUIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO2FBQ2pCLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQW9CO1FBQzlCLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksb0JBQVMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUMsWUFBWSxLQUFLLEVBQUU7Z0JBQzlELEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztnQkFDYixZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVk7Z0JBQ2hDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUU7YUFDdkIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQzthQUFNLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksc0JBQVcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUMsWUFBWSxLQUFLLEVBQUU7Z0JBQ2hFLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztnQkFDYixZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVk7Z0JBQ2hDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUU7YUFDdkIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQzthQUFNLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksc0JBQVcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUMsWUFBWSxLQUFLLEVBQUU7Z0JBQ2hFLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztnQkFDYixZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVk7Z0JBQ2hDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxJQUFJLEVBQUU7YUFDdkIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUVELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7SUFDL0MsQ0FBQztDQUNGO0FBckRELDRCQXFEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtcbiAgUmRzQXVyb3JhLFxuICBSZHNGcmVlVGllcixcbiAgUmRzSW5zdGFuY2Vcbn0gZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3MvZGF0YWJhc2VcIjtcbmltcG9ydCB7IFZwYyB9IGZyb20gXCIuLi8uLi9yZXNvdXJjZXMvYXdzL25ldHdvcmtpbmcvdnBjXCI7XG5pbXBvcnQge1xuICBDb25uZWN0aW9ucyxcbiAgSUNvbm5lY3RhYmxlLFxuICBJVnBjLFxuICBTdWJuZXRUeXBlXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWMyXCI7XG5cbmludGVyZmFjZSBFeGlzdGluZ1ZwY0NvbmZpZyB7XG4gIHZwY0lkPzogc3RyaW5nO1xuICBzdWJuZXRUeXBlPzogU3VibmV0VHlwZTtcbn1cblxuaW50ZXJmYWNlIE5ld1ZwY0NvbmZpZyB7XG4gIHN1Ym5ldFR5cGU/OiBTdWJuZXRUeXBlO1xuICBhY2NvdW50SWQ6IHN0cmluZztcbn1cblxudHlwZSBWcGNQcm9wcyA9IEV4aXN0aW5nVnBjQ29uZmlnIHwgTmV3VnBjQ29uZmlnO1xuXG50eXBlIERhdGFiYXNlVHlwZSA9IFwiQXVyb3JhXCIgfCBcIkluc3RhbmNlXCIgfCBcIkZyZWVUaWVyXCI7XG5cbmludGVyZmFjZSBEYXRhYmFzZVByb3BzIHtcbiAgdHlwZTogRGF0YWJhc2VUeXBlO1xuICBkYXRhYmFzZU5hbWU6IHN0cmluZztcbiAgdnBjOiBWcGNQcm9wcztcbiAgdGFnczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgU3RvcmFnZSBpbnN0ZWFkXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRhYmFzZSBleHRlbmRzIFN0YWNrIGltcGxlbWVudHMgSUNvbm5lY3RhYmxlIHtcbiAgcHVibGljIGNvbm5lY3Rpb25zOiBDb25uZWN0aW9ucztcbiAgcHVibGljIHZwYzogSVZwYztcblxuICBwcml2YXRlIGRhdGFiYXNlOiBSZHNBdXJvcmEgfCBSZHNJbnN0YW5jZSB8IFJkc0ZyZWVUaWVyO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEYXRhYmFzZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMuYWRkVnBjKHByb3BzKTtcbiAgICB0aGlzLmFkZERhdGFiYXNlKHByb3BzKTtcbiAgfVxuXG4gIGFkZFZwYyhwcm9wczogRGF0YWJhc2VQcm9wcykge1xuICAgIGlmIChcInZwY0lkXCIgaW4gcHJvcHMudnBjKSB7XG4gICAgICBjb25zdCB2cGNDb25maWcgPSBwcm9wcy52cGMgYXMgRXhpc3RpbmdWcGNDb25maWc7XG4gICAgICB0aGlzLnZwYyA9IFZwYy5mcm9tTG9va3VwKHRoaXMsIGAke3Byb3BzLmRhdGFiYXNlTmFtZX1WcGNgLCB7XG4gICAgICAgIHZwY0lkOiB2cGNDb25maWcudnBjSWRcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB2cGNDb25maWcgPSBwcm9wcy52cGMgYXMgTmV3VnBjQ29uZmlnO1xuICAgICAgdGhpcy52cGMgPSBuZXcgVnBjKHRoaXMsIGAke3Byb3BzLmRhdGFiYXNlTmFtZX1gLCB7XG4gICAgICAgIGFjY291bnRJZDogdnBjQ29uZmlnLmFjY291bnRJZCxcbiAgICAgICAgdGFnczogcHJvcHMudGFnc1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgYWRkRGF0YWJhc2UocHJvcHM6IERhdGFiYXNlUHJvcHMpIHtcbiAgICBpZiAocHJvcHMudHlwZSA9PT0gXCJBdXJvcmFcIikge1xuICAgICAgdGhpcy5kYXRhYmFzZSA9IG5ldyBSZHNBdXJvcmEodGhpcywgYCR7cHJvcHMuZGF0YWJhc2VOYW1lfVJkc2AsIHtcbiAgICAgICAgdnBjOiB0aGlzLnZwYyxcbiAgICAgICAgZGF0YWJhc2VOYW1lOiBwcm9wcy5kYXRhYmFzZU5hbWUsXG4gICAgICAgIHRhZ3M6IHByb3BzLnRhZ3MgfHwge31cbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAocHJvcHMudHlwZSA9PT0gXCJJbnN0YW5jZVwiKSB7XG4gICAgICB0aGlzLmRhdGFiYXNlID0gbmV3IFJkc0luc3RhbmNlKHRoaXMsIGAke3Byb3BzLmRhdGFiYXNlTmFtZX1SZHNgLCB7XG4gICAgICAgIHZwYzogdGhpcy52cGMsXG4gICAgICAgIGRhdGFiYXNlTmFtZTogcHJvcHMuZGF0YWJhc2VOYW1lLFxuICAgICAgICB0YWdzOiBwcm9wcy50YWdzIHx8IHt9XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHByb3BzLnR5cGUgPT09IFwiRnJlZVRpZXJcIikge1xuICAgICAgdGhpcy5kYXRhYmFzZSA9IG5ldyBSZHNGcmVlVGllcih0aGlzLCBgJHtwcm9wcy5kYXRhYmFzZU5hbWV9UmRzYCwge1xuICAgICAgICB2cGM6IHRoaXMudnBjLFxuICAgICAgICBkYXRhYmFzZU5hbWU6IHByb3BzLmRhdGFiYXNlTmFtZSxcbiAgICAgICAgdGFnczogcHJvcHMudGFncyB8fCB7fVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgZGF0YWJhc2UgdHlwZVwiKTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbm5lY3Rpb25zID0gdGhpcy5kYXRhYmFzZS5jb25uZWN0aW9ucztcbiAgfVxufVxuIl19
|
|
@@ -22,4 +22,7 @@ __exportStar(require("./buildkite"), exports);
|
|
|
22
22
|
__exportStar(require("../../resources/aws/compute/ec2"), exports);
|
|
23
23
|
__exportStar(require("./fivetranProxy"), exports);
|
|
24
24
|
__exportStar(require("./database"), exports);
|
|
25
|
-
|
|
25
|
+
// Patterns
|
|
26
|
+
__exportStar(require("./compute"), exports);
|
|
27
|
+
__exportStar(require("./storage"), exports);
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvcGF0dGVybnMvYXdzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx3REFBc0M7QUFDdEMsb0RBQWtDO0FBQ2xDLG1EQUFpQztBQUNqQyw2Q0FBMkI7QUFDM0IsOENBQTRCO0FBQzVCLGtFQUFnRDtBQUNoRCxrREFBZ0M7QUFDaEMsNkNBQTJCO0FBRTNCLFdBQVc7QUFDWCw0Q0FBMEI7QUFDMUIsNENBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vbWFuYWdlZE9yZ2FuaXNhdGlvblwiO1xuZXhwb3J0ICogZnJvbSBcIi4vbWFuYWdlZFBsYXRmb3JtXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9tYW5hZ2VkQWNjb3VudFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vYmFzaWNBcHBcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2J1aWxka2l0ZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4uLy4uL3Jlc291cmNlcy9hd3MvY29tcHV0ZS9lYzJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2ZpdmV0cmFuUHJveHlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RhdGFiYXNlXCI7XG5cbi8vIFBhdHRlcm5zXG5leHBvcnQgKiBmcm9tIFwiLi9jb21wdXRlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zdG9yYWdlXCI7XG4iXX0=
|
|
@@ -9,12 +9,18 @@ interface ManagedOrganisationProps extends ExtendedStackProps {
|
|
|
9
9
|
platformAccount: string;
|
|
10
10
|
orgEmail: string;
|
|
11
11
|
existingAccounts?: Account[];
|
|
12
|
+
identityCenter?: boolean;
|
|
12
13
|
}
|
|
13
|
-
/**
|
|
14
|
-
* A stack for creating multi environment organisations with a production, staging and development account.
|
|
15
|
-
*/
|
|
16
14
|
export declare class ManagedOrganisation extends Stack {
|
|
17
15
|
private organisation;
|
|
18
16
|
constructor(id: string, props: ManagedOrganisationProps);
|
|
17
|
+
private validatePlatformAccount;
|
|
18
|
+
private createOrganisation;
|
|
19
|
+
private setupOrganisationFeatures;
|
|
20
|
+
private setupIpamDelegation;
|
|
21
|
+
private enableRamSharing;
|
|
22
|
+
private enableTrustedAccess;
|
|
23
|
+
private enableCostAllocationTags;
|
|
24
|
+
private setupIdentityCenter;
|
|
19
25
|
}
|
|
20
26
|
export {};
|
|
@@ -9,16 +9,22 @@ const ramSharing_1 = require("../../config/aws/ramSharing");
|
|
|
9
9
|
const costAllocationTags_1 = require("../../config/aws/costAllocationTags");
|
|
10
10
|
const organisation_1 = require("../../config/aws/organisation");
|
|
11
11
|
const organisationsAccess_1 = require("../../config/aws/organisationsAccess");
|
|
12
|
-
/**
|
|
13
|
-
* A stack for creating multi environment organisations with a production, staging and development account.
|
|
14
|
-
*/
|
|
15
12
|
class ManagedOrganisation extends aws_cdk_lib_1.Stack {
|
|
16
13
|
constructor(id, props) {
|
|
17
14
|
super(app_1.default.getInstance(), id, props);
|
|
18
|
-
|
|
15
|
+
this.validatePlatformAccount(props);
|
|
16
|
+
this.createOrganisation(id, props);
|
|
17
|
+
this.setupOrganisationFeatures({
|
|
18
|
+
...props,
|
|
19
|
+
identityCenter: props.identityCenter ?? true
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
validatePlatformAccount(props) {
|
|
19
23
|
if (!props.orgAccounts.includes(props.platformAccount)) {
|
|
20
|
-
throw new Error(`Platform account "${props.platformAccount}" is not listed in account names
|
|
24
|
+
throw new Error(`Platform account "${props.platformAccount}" is not listed in account names. Valid accounts are: ${props.orgAccounts.join(", ")}`);
|
|
21
25
|
}
|
|
26
|
+
}
|
|
27
|
+
createOrganisation(id, props) {
|
|
22
28
|
this.organisation = new organisation_1.default(this, id, {
|
|
23
29
|
organisationName: props.organisationName,
|
|
24
30
|
orgAccounts: props.orgAccounts,
|
|
@@ -27,25 +33,39 @@ class ManagedOrganisation extends aws_cdk_lib_1.Stack {
|
|
|
27
33
|
env: props.env,
|
|
28
34
|
existingAccounts: props.existingAccounts
|
|
29
35
|
});
|
|
36
|
+
}
|
|
37
|
+
setupOrganisationFeatures(props) {
|
|
30
38
|
const orgAccounts = this.organisation.getAccounts();
|
|
31
|
-
|
|
39
|
+
this.setupIpamDelegation(orgAccounts, props);
|
|
40
|
+
this.enableRamSharing();
|
|
41
|
+
this.enableTrustedAccess(props);
|
|
42
|
+
this.enableCostAllocationTags();
|
|
43
|
+
this.setupIdentityCenter(orgAccounts, props);
|
|
44
|
+
}
|
|
45
|
+
setupIpamDelegation(orgAccounts, props) {
|
|
32
46
|
new ipamDelegateAdmin_1.IpamDelegateAdmin(this, "IpamDelegateAdmin", {
|
|
33
47
|
accountId: orgAccounts[props.platformAccount]
|
|
34
48
|
});
|
|
35
|
-
|
|
49
|
+
}
|
|
50
|
+
enableRamSharing() {
|
|
36
51
|
new ramSharing_1.RamSharing(this, "RamSharing");
|
|
37
|
-
|
|
52
|
+
}
|
|
53
|
+
enableTrustedAccess(props) {
|
|
38
54
|
new organisationsAccess_1.ActivateOrganisationsAccess(this, "ActivateOrganisationsAccess", {
|
|
39
55
|
account: props.env.account,
|
|
40
56
|
region: props.env.region
|
|
41
57
|
});
|
|
42
|
-
|
|
58
|
+
}
|
|
59
|
+
enableCostAllocationTags() {
|
|
43
60
|
new costAllocationTags_1.CostAllocationTags(this, "CostAllocationTags");
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
61
|
+
}
|
|
62
|
+
setupIdentityCenter(orgAccounts, props) {
|
|
63
|
+
if (props.identityCenter) {
|
|
64
|
+
new identityCenter_1.IdentityCenter(this, "IdentityCenter", {
|
|
65
|
+
accounts: orgAccounts
|
|
66
|
+
});
|
|
67
|
+
}
|
|
48
68
|
}
|
|
49
69
|
}
|
|
50
70
|
exports.ManagedOrganisation = ManagedOrganisation;
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlZE9yZ2FuaXNhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9wYXR0ZXJucy9hd3MvbWFuYWdlZE9yZ2FuaXNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBNkQ7QUFFN0QsbUNBQTRCO0FBRTVCLG9FQUFpRTtBQUNqRSwwRUFBdUU7QUFDdkUsNERBQXlEO0FBQ3pELDRFQUF5RTtBQUN6RSxnRUFBeUQ7QUFFekQsOEVBQW1GO0FBZ0JuRixNQUFhLG1CQUFvQixTQUFRLG1CQUFLO0lBRzVDLFlBQVksRUFBVSxFQUFFLEtBQStCO1FBQ3JELEtBQUssQ0FBQyxhQUFHLENBQUMsV0FBVyxFQUFFLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyx5QkFBeUIsQ0FBQztZQUM3QixHQUFHLEtBQUs7WUFDUixjQUFjLEVBQUUsS0FBSyxDQUFDLGNBQWMsSUFBSSxJQUFJO1NBQzdDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxLQUErQjtRQUM3RCxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7WUFDdkQsTUFBTSxJQUFJLEtBQUssQ0FDYixxQkFDRSxLQUFLLENBQUMsZUFDUix5REFBeUQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQzdFLElBQUksQ0FDTCxFQUFFLENBQ0osQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRU8sa0JBQWtCLENBQUMsRUFBVSxFQUFFLEtBQStCO1FBQ3BFLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxzQkFBWSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUU7WUFDN0MsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGdCQUFnQjtZQUN4QyxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7WUFDOUIsZUFBZSxFQUFFLEtBQUssQ0FBQyxlQUFlO1lBQ3RDLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUN4QixHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUc7WUFDZCxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsZ0JBQWdCO1NBQ3pDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyx5QkFBeUIsQ0FBQyxLQUErQjtRQUMvRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRXBELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVPLG1CQUFtQixDQUN6QixXQUFtQyxFQUNuQyxLQUErQjtRQUUvQixJQUFJLHFDQUFpQixDQUFDLElBQUksRUFBRSxtQkFBbUIsRUFBRTtZQUMvQyxTQUFTLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUM7U0FDOUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixJQUFJLHVCQUFVLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxLQUErQjtRQUN6RCxJQUFJLGlEQUEyQixDQUFDLElBQUksRUFBRSw2QkFBNkIsRUFBRTtZQUNuRSxPQUFPLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPO1lBQzFCLE1BQU0sRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU07U0FDekIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLHdCQUF3QjtRQUM5QixJQUFJLHVDQUFrQixDQUFDLElBQUksRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFTyxtQkFBbUIsQ0FDekIsV0FBbUMsRUFDbkMsS0FBK0I7UUFFL0IsSUFBSSxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDekIsSUFBSSwrQkFBYyxDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtnQkFDekMsUUFBUSxFQUFFLFdBQVc7YUFDdEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7Q0FDRjtBQWhGRCxrREFnRkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnZpcm9ubWVudCwgU3RhY2ssIFN0YWNrUHJvcHMgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcblxuaW1wb3J0IEFwcCBmcm9tIFwiLi4vLi4vYXBwXCI7XG5cbmltcG9ydCB7IElkZW50aXR5Q2VudGVyIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9hd3MvaWRlbnRpdHlDZW50ZXJcIjtcbmltcG9ydCB7IElwYW1EZWxlZ2F0ZUFkbWluIH0gZnJvbSBcIi4uLy4uL2NvbmZpZy9hd3MvaXBhbURlbGVnYXRlQWRtaW5cIjtcbmltcG9ydCB7IFJhbVNoYXJpbmcgfSBmcm9tIFwiLi4vLi4vY29uZmlnL2F3cy9yYW1TaGFyaW5nXCI7XG5pbXBvcnQgeyBDb3N0QWxsb2NhdGlvblRhZ3MgfSBmcm9tIFwiLi4vLi4vY29uZmlnL2F3cy9jb3N0QWxsb2NhdGlvblRhZ3NcIjtcbmltcG9ydCBPcmdhbmlzYXRpb24gZnJvbSBcIi4uLy4uL2NvbmZpZy9hd3Mvb3JnYW5pc2F0aW9uXCI7XG5pbXBvcnQgeyBBY2NvdW50IH0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1vcmdhbml6YXRpb25zXCI7XG5pbXBvcnQgeyBBY3RpdmF0ZU9yZ2FuaXNhdGlvbnNBY2Nlc3MgfSBmcm9tIFwiLi4vLi4vY29uZmlnL2F3cy9vcmdhbmlzYXRpb25zQWNjZXNzXCI7XG5cbnR5cGUgRXh0ZW5kZWRTdGFja1Byb3BzID0gT21pdDxTdGFja1Byb3BzLCBcImVudlwiPiAmIHtcbiAgZW52OiBSZXF1aXJlZDxQaWNrPEVudmlyb25tZW50LCBcInJlZ2lvblwiIHwgXCJhY2NvdW50XCI+PiAmXG4gICAgUGFydGlhbDxPbWl0PEVudmlyb25tZW50LCBcInJlZ2lvblwiIHwgXCJhY2NvdW50XCI+Pjtcbn07XG5cbmludGVyZmFjZSBNYW5hZ2VkT3JnYW5pc2F0aW9uUHJvcHMgZXh0ZW5kcyBFeHRlbmRlZFN0YWNrUHJvcHMge1xuICBvcmdhbmlzYXRpb25OYW1lOiBzdHJpbmc7XG4gIG9yZ0FjY291bnRzOiBzdHJpbmdbXTtcbiAgcGxhdGZvcm1BY2NvdW50OiBzdHJpbmc7XG4gIG9yZ0VtYWlsOiBzdHJpbmc7XG4gIGV4aXN0aW5nQWNjb3VudHM/OiBBY2NvdW50W107XG4gIGlkZW50aXR5Q2VudGVyPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIE1hbmFnZWRPcmdhbmlzYXRpb24gZXh0ZW5kcyBTdGFjayB7XG4gIHByaXZhdGUgb3JnYW5pc2F0aW9uOiBPcmdhbmlzYXRpb247XG5cbiAgY29uc3RydWN0b3IoaWQ6IHN0cmluZywgcHJvcHM6IE1hbmFnZWRPcmdhbmlzYXRpb25Qcm9wcykge1xuICAgIHN1cGVyKEFwcC5nZXRJbnN0YW5jZSgpLCBpZCwgcHJvcHMpO1xuICAgIHRoaXMudmFsaWRhdGVQbGF0Zm9ybUFjY291bnQocHJvcHMpO1xuICAgIHRoaXMuY3JlYXRlT3JnYW5pc2F0aW9uKGlkLCBwcm9wcyk7XG4gICAgdGhpcy5zZXR1cE9yZ2FuaXNhdGlvbkZlYXR1cmVzKHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgaWRlbnRpdHlDZW50ZXI6IHByb3BzLmlkZW50aXR5Q2VudGVyID8/IHRydWVcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVQbGF0Zm9ybUFjY291bnQocHJvcHM6IE1hbmFnZWRPcmdhbmlzYXRpb25Qcm9wcykge1xuICAgIGlmICghcHJvcHMub3JnQWNjb3VudHMuaW5jbHVkZXMocHJvcHMucGxhdGZvcm1BY2NvdW50KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgUGxhdGZvcm0gYWNjb3VudCBcIiR7XG4gICAgICAgICAgcHJvcHMucGxhdGZvcm1BY2NvdW50XG4gICAgICAgIH1cIiBpcyBub3QgbGlzdGVkIGluIGFjY291bnQgbmFtZXMuIFZhbGlkIGFjY291bnRzIGFyZTogJHtwcm9wcy5vcmdBY2NvdW50cy5qb2luKFxuICAgICAgICAgIFwiLCBcIlxuICAgICAgICApfWBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVPcmdhbmlzYXRpb24oaWQ6IHN0cmluZywgcHJvcHM6IE1hbmFnZWRPcmdhbmlzYXRpb25Qcm9wcykge1xuICAgIHRoaXMub3JnYW5pc2F0aW9uID0gbmV3IE9yZ2FuaXNhdGlvbih0aGlzLCBpZCwge1xuICAgICAgb3JnYW5pc2F0aW9uTmFtZTogcHJvcHMub3JnYW5pc2F0aW9uTmFtZSxcbiAgICAgIG9yZ0FjY291bnRzOiBwcm9wcy5vcmdBY2NvdW50cyxcbiAgICAgIHBsYXRmb3JtQWNjb3VudDogcHJvcHMucGxhdGZvcm1BY2NvdW50LFxuICAgICAgb3JnRW1haWw6IHByb3BzLm9yZ0VtYWlsLFxuICAgICAgZW52OiBwcm9wcy5lbnYsXG4gICAgICBleGlzdGluZ0FjY291bnRzOiBwcm9wcy5leGlzdGluZ0FjY291bnRzXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwT3JnYW5pc2F0aW9uRmVhdHVyZXMocHJvcHM6IE1hbmFnZWRPcmdhbmlzYXRpb25Qcm9wcykge1xuICAgIGNvbnN0IG9yZ0FjY291bnRzID0gdGhpcy5vcmdhbmlzYXRpb24uZ2V0QWNjb3VudHMoKTtcblxuICAgIHRoaXMuc2V0dXBJcGFtRGVsZWdhdGlvbihvcmdBY2NvdW50cywgcHJvcHMpO1xuICAgIHRoaXMuZW5hYmxlUmFtU2hhcmluZygpO1xuICAgIHRoaXMuZW5hYmxlVHJ1c3RlZEFjY2Vzcyhwcm9wcyk7XG4gICAgdGhpcy5lbmFibGVDb3N0QWxsb2NhdGlvblRhZ3MoKTtcbiAgICB0aGlzLnNldHVwSWRlbnRpdHlDZW50ZXIob3JnQWNjb3VudHMsIHByb3BzKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBJcGFtRGVsZWdhdGlvbihcbiAgICBvcmdBY2NvdW50czogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgICBwcm9wczogTWFuYWdlZE9yZ2FuaXNhdGlvblByb3BzXG4gICkge1xuICAgIG5ldyBJcGFtRGVsZWdhdGVBZG1pbih0aGlzLCBcIklwYW1EZWxlZ2F0ZUFkbWluXCIsIHtcbiAgICAgIGFjY291bnRJZDogb3JnQWNjb3VudHNbcHJvcHMucGxhdGZvcm1BY2NvdW50XVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBlbmFibGVSYW1TaGFyaW5nKCkge1xuICAgIG5ldyBSYW1TaGFyaW5nKHRoaXMsIFwiUmFtU2hhcmluZ1wiKTtcbiAgfVxuXG4gIHByaXZhdGUgZW5hYmxlVHJ1c3RlZEFjY2Vzcyhwcm9wczogTWFuYWdlZE9yZ2FuaXNhdGlvblByb3BzKSB7XG4gICAgbmV3IEFjdGl2YXRlT3JnYW5pc2F0aW9uc0FjY2Vzcyh0aGlzLCBcIkFjdGl2YXRlT3JnYW5pc2F0aW9uc0FjY2Vzc1wiLCB7XG4gICAgICBhY2NvdW50OiBwcm9wcy5lbnYuYWNjb3VudCxcbiAgICAgIHJlZ2lvbjogcHJvcHMuZW52LnJlZ2lvblxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBlbmFibGVDb3N0QWxsb2NhdGlvblRhZ3MoKSB7XG4gICAgbmV3IENvc3RBbGxvY2F0aW9uVGFncyh0aGlzLCBcIkNvc3RBbGxvY2F0aW9uVGFnc1wiKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBJZGVudGl0eUNlbnRlcihcbiAgICBvcmdBY2NvdW50czogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgICBwcm9wczogTWFuYWdlZE9yZ2FuaXNhdGlvblByb3BzXG4gICkge1xuICAgIGlmIChwcm9wcy5pZGVudGl0eUNlbnRlcikge1xuICAgICAgbmV3IElkZW50aXR5Q2VudGVyKHRoaXMsIFwiSWRlbnRpdHlDZW50ZXJcIiwge1xuICAgICAgICBhY2NvdW50czogb3JnQWNjb3VudHNcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import App from "../../app";
|
|
3
|
+
import { Secret } from "../../resources/aws/secrets";
|
|
4
|
+
import { Vpc } from "../../resources/aws/networking/vpc";
|
|
5
|
+
import { Connections, IConnectable, IVpc } from "aws-cdk-lib/aws-ec2";
|
|
6
|
+
type StorageType = "Aurora" | "Instance" | "FreeTier";
|
|
7
|
+
export interface IStorageProps {
|
|
8
|
+
type: StorageType;
|
|
9
|
+
databaseName: string;
|
|
10
|
+
vpc?: Vpc;
|
|
11
|
+
tags?: {
|
|
12
|
+
[key: string]: string;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export declare class StorageFactory {
|
|
16
|
+
static build(id: string, props: IStorageProps): (app: App, scope: Construct) => Storage;
|
|
17
|
+
}
|
|
18
|
+
export declare class Storage extends Construct implements IConnectable {
|
|
19
|
+
id: string;
|
|
20
|
+
scope: Construct;
|
|
21
|
+
vpc: IVpc;
|
|
22
|
+
connections: Connections;
|
|
23
|
+
private databaseName;
|
|
24
|
+
private database;
|
|
25
|
+
constructor(scope: Construct, id: string, props: IStorageProps);
|
|
26
|
+
addStorage(props: IStorageProps): void;
|
|
27
|
+
getCredentials(): Secret;
|
|
28
|
+
getHostEndpoint(): string;
|
|
29
|
+
getHostPort(): string | number;
|
|
30
|
+
getDatabaseName(): string;
|
|
31
|
+
}
|
|
32
|
+
export {};
|