@btc-embedded/cdk-extensions 0.14.12 → 0.14.14
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/.jsii +466 -21
- package/API.md +399 -6
- package/CHANGELOG.md +19 -0
- package/README.md +32 -1
- package/lib/constructs/EventPipe.js +1 -1
- package/lib/constructs/S3Bucket.js +1 -1
- package/lib/constructs/SecureRestApi.js +1 -1
- package/lib/constructs/SecureRestApiV2.js +1 -1
- package/lib/extensions/ApiGatewayExtension.js +1 -1
- package/lib/extensions/ApplicationLoadBalancerExtension.js +1 -1
- package/lib/extensions/ApplicationLoadBalancerExtensionV2.js +1 -1
- package/lib/extensions/CloudMapExtension.js +1 -1
- package/lib/extensions/DeactivatableServiceExtension.js +1 -1
- package/lib/extensions/DocumentDbAccessExtension.js +1 -1
- package/lib/extensions/DomainEventMessagingExtension.js +1 -1
- package/lib/extensions/EfsMountExtension.d.ts +3 -21
- package/lib/extensions/EfsMountExtension.js +8 -41
- package/lib/extensions/ExtraContainerExtension.js +1 -1
- package/lib/extensions/HTTPApiExtension.js +1 -1
- package/lib/extensions/LogExtension.js +1 -1
- package/lib/extensions/ModifyContainerDefinitionExtension.js +1 -1
- package/lib/extensions/ModifyTaskDefinitionExtension.js +1 -1
- package/lib/extensions/OpenTelemetryExtension.js +1 -1
- package/lib/extensions/PostgresDbAccessExtension.js +1 -1
- package/lib/extensions/SharedVolumeExtension.js +1 -1
- package/lib/extensions/TcpKeepAliveExtension.js +1 -1
- package/lib/platform/ApiGateway.js +1 -1
- package/lib/platform/ApiGatewayV2.js +2 -2
- package/lib/platform/ApplicationLoadBalancer.js +1 -1
- package/lib/platform/ApplicationLoadBalancerV2.js +2 -2
- package/lib/platform/BTCLogGroup.js +1 -1
- package/lib/platform/CognitoUserPool.js +2 -2
- package/lib/platform/DefaultUserPoolClients.js +1 -1
- package/lib/platform/DocumentDB.js +2 -2
- package/lib/platform/EfsFileSystem.d.ts +105 -0
- package/lib/platform/EfsFileSystem.js +146 -0
- package/lib/platform/PrivateDnsNamespace.js +1 -1
- package/lib/platform/ResourceServer.js +1 -1
- package/lib/platform/Vpc.js +1 -1
- package/lib/platform/index.d.ts +4 -3
- package/lib/platform/index.js +5 -4
- package/lib/utils/StackParameter.js +1 -1
- package/package.json +2 -2
- package/.backstage/catalog-info.yaml +0 -19
- package/.gitlab-ci.yml +0 -65
- package/docs/RFC001-api-gateway.md +0 -77
- package/docs/RFC002-developer-stacks.md +0 -268
- package/docs/RFC003-referencing-platform-components.md +0 -125
- package/docs/adrs/0001-use-adrs.md +0 -36
- package/docs/index.md +0 -20
- package/mkdocs.yml +0 -8
|
@@ -35,7 +35,7 @@ class BTCLogGroup extends aws_logs_1.LogGroup {
|
|
|
35
35
|
}
|
|
36
36
|
exports.BTCLogGroup = BTCLogGroup;
|
|
37
37
|
_a = JSII_RTTI_SYMBOL_1;
|
|
38
|
-
BTCLogGroup[_a] = { fqn: "@btc-embedded/cdk-extensions.BTCLogGroup", version: "0.14.
|
|
38
|
+
BTCLogGroup[_a] = { fqn: "@btc-embedded/cdk-extensions.BTCLogGroup", version: "0.14.14" };
|
|
39
39
|
BTCLogGroup.logGroupParameter = new utils_1.StackParameter({
|
|
40
40
|
name: "Log Group Name",
|
|
41
41
|
key: "log-group-name",
|
|
@@ -23,7 +23,7 @@ class CognitoUserPoolBase extends constructs_1.Construct {
|
|
|
23
23
|
}
|
|
24
24
|
exports.CognitoUserPoolBase = CognitoUserPoolBase;
|
|
25
25
|
_a = JSII_RTTI_SYMBOL_1;
|
|
26
|
-
CognitoUserPoolBase[_a] = { fqn: "@btc-embedded/cdk-extensions.CognitoUserPoolBase", version: "0.14.
|
|
26
|
+
CognitoUserPoolBase[_a] = { fqn: "@btc-embedded/cdk-extensions.CognitoUserPoolBase", version: "0.14.14" };
|
|
27
27
|
class CognitoUserPool extends CognitoUserPoolBase {
|
|
28
28
|
static fromBasePlatform(scope, id, basePlatform) {
|
|
29
29
|
class Import extends CognitoUserPoolBase {
|
|
@@ -97,7 +97,7 @@ class CognitoUserPool extends CognitoUserPoolBase {
|
|
|
97
97
|
}
|
|
98
98
|
exports.CognitoUserPool = CognitoUserPool;
|
|
99
99
|
_b = JSII_RTTI_SYMBOL_1;
|
|
100
|
-
CognitoUserPool[_b] = { fqn: "@btc-embedded/cdk-extensions.CognitoUserPool", version: "0.14.
|
|
100
|
+
CognitoUserPool[_b] = { fqn: "@btc-embedded/cdk-extensions.CognitoUserPool", version: "0.14.14" };
|
|
101
101
|
CognitoUserPool.userPoolIdParameter = new utils_1.StackParameter({
|
|
102
102
|
name: "Cognito User Pool Id",
|
|
103
103
|
key: "user-pool-id",
|
|
@@ -82,5 +82,5 @@ class DefaultUserPoolClients extends constructs_1.Construct {
|
|
|
82
82
|
}
|
|
83
83
|
exports.DefaultUserPoolClients = DefaultUserPoolClients;
|
|
84
84
|
_a = JSII_RTTI_SYMBOL_1;
|
|
85
|
-
DefaultUserPoolClients[_a] = { fqn: "@btc-embedded/cdk-extensions.DefaultUserPoolClients", version: "0.14.
|
|
85
|
+
DefaultUserPoolClients[_a] = { fqn: "@btc-embedded/cdk-extensions.DefaultUserPoolClients", version: "0.14.14" };
|
|
86
86
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVmYXVsdFVzZXJQb29sQ2xpZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wbGF0Zm9ybS9EZWZhdWx0VXNlclBvb2xDbGllbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEseURBUWlDO0FBQ2pDLDJDQUF1QztBQUN2QyxvQ0FBMEM7QUFpRDFDOzs7R0FHRztBQUNILE1BQWEsc0JBQXVCLFNBQVEsc0JBQVM7SUFJbkQsWUFDRSxLQUFnQixFQUNoQixFQUFVLEVBQ1YsS0FBa0M7UUFFbEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLGNBQWMsR0FBRyxJQUFJLGlDQUFtQixDQUFDO1lBQzdDLFNBQVMsRUFBRSxZQUFZO1lBQ3ZCLGdCQUFnQixFQUFFLDRCQUE0QjtTQUMvQyxDQUFDLENBQUM7UUFFSCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLHVCQUF1QixFQUFFO1lBQ3ZFLFVBQVUsRUFBRSxHQUFHLEVBQUUsU0FBUztZQUMxQixNQUFNLEVBQUUsQ0FBQyxjQUFjLENBQUM7U0FDekIsQ0FBQyxDQUFDO1FBRUgsTUFBTSxhQUFhLEdBQ2pCLEtBQUssQ0FBQyxrQ0FBa0MsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUNyRCw0Q0FBOEIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQzVDLElBQUksRUFBRSxDQUFDO1FBRVYsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUM7UUFFOUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLDRCQUFjLENBQUMsSUFBSSxFQUFFLHVCQUF1QixFQUFFO1lBQ2pFLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUN4QixjQUFjLEVBQUUsSUFBSTtZQUNwQixLQUFLLEVBQUU7Z0JBQ0wsS0FBSyxFQUFFO29CQUNMLGlCQUFpQixFQUFFLElBQUk7aUJBQ3hCO2dCQUNELE1BQU0sRUFBRSxDQUFDLHdCQUFVLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQzthQUM1RDtZQUNELDBCQUEwQixFQUFFO2dCQUMxQiw0Q0FBOEIsQ0FBQyxPQUFPO2dCQUN0QyxHQUFHLGFBQWE7YUFDakI7WUFDRCxHQUFHLEtBQUssQ0FBQyxnQkFBZ0I7U0FDMUIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLDRCQUFjLENBQUMsSUFBSSxFQUFFLHdCQUF3QixFQUFFO1lBQ3ZFLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUV4QixxREFBcUQ7WUFDckQsY0FBYyxFQUFFLElBQUk7WUFDcEIsU0FBUyxFQUFFO2dCQUNULFlBQVksRUFBRSxJQUFJO2FBQ25CO1lBRUQsS0FBSyxFQUFFO2dCQUNMLEtBQUssRUFBRTtvQkFDTCxzQkFBc0IsRUFBRSxJQUFJO2lCQUM3QjtnQkFDRCxNQUFNLEVBQUU7b0JBQ04sd0JBQVUsQ0FBQyxNQUFNO29CQUNqQix3QkFBVSxDQUFDLE9BQU87b0JBQ2xCLEdBQUcsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLElBQUksRUFBRSxDQUFDO2lCQUNyQztnQkFDRCxZQUFZLEVBQUU7b0JBQ1osMkJBQTJCO29CQUMzQixXQUFXLEtBQUssQ0FBQyxJQUFJLHFCQUFxQjtvQkFDMUMsR0FBRyxZQUFZO2lCQUNoQjtnQkFDRCxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7YUFDN0I7WUFDRCwwQkFBMEIsRUFBRTtnQkFDMUIsNENBQThCLENBQUMsT0FBTztnQkFDdEMsR0FBRyxhQUFhO2FBQ2pCO1lBQ0QsR0FBRyxLQUFLLENBQUMscUJBQXFCO1NBQy9CLENBQUMsQ0FBQztRQUVILE1BQU0sV0FBVyxHQUFHLElBQUEsc0JBQWMsRUFBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFcEQsV0FBVyxDQUFDO1lBQ1YsSUFBSSxFQUFFLCtCQUErQjtZQUNyQyxHQUFHLEVBQUUsdUJBQXVCO1lBQzVCLEtBQUssRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQjtTQUN2QyxDQUFDLENBQUM7UUFFSCxXQUFXLENBQUM7WUFDVixJQUFJLEVBQUUsNkJBQTZCO1lBQ25DLEdBQUcsRUFBRSxxQkFBcUI7WUFDMUIsS0FBSyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCO1NBQzVDLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBekZILHdEQTBGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIElVc2VyUG9vbCxcbiAgSVVzZXJQb29sQ2xpZW50LFxuICBPQXV0aFNjb3BlLFxuICBSZXNvdXJjZVNlcnZlclNjb3BlLFxuICBVc2VyUG9vbENsaWVudCxcbiAgVXNlclBvb2xDbGllbnRJZGVudGl0eVByb3ZpZGVyLFxuICBVc2VyUG9vbENsaWVudE9wdGlvbnMsXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY29nbml0b1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IGNyZWF0ZUV4cG9ydGVyIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVmYXVsdFVzZXJQb29sQ2xpZW50c1Byb3BzIHtcbiAgLyoqXG4gICAqIFRoZSB1c2VyIHBvb2wgd2hpY2ggc2hvdWxkIGJlIGF0dGFjaGVkIHRvIHRoZSBjbGllbnRzLlxuICAgKi9cbiAgcmVhZG9ubHkgdXNlclBvb2w6IElVc2VyUG9vbDtcblxuICAvKipcbiAgICogVGhlIGZ1bGx5IHF1YWxpZmllZCBkb21haW4gbmFtZSB3aGljaCB0aGUgQUxCIHdpbGwgbGlzdGVuIHRvLlxuICAgKlxuICAgKiBUaGlzIHNldHRpbmcgaXMgdXNlZCB0byBjb25maWd1cmUgdGhlIGNvcnJlY3QgY2FsbGJhY2sgVVJMIGZvciB1c2VyIHBvb2xcbiAgICogY2xpZW50IHN1Y2ggdGhhdCB0aGUgQUxCIGNhbiBwZXJmb3JtIGF1dGhlbnRpY2F0aW9uLlxuICAgKlxuICAgKi9cbiAgcmVhZG9ubHkgZnFkbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHZhbGlkIGxvZ291dCBVUkxzIHdoaWNoIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgZnJvbnRlbmQgdXNlciBwb29sIGNsaWVudC5cbiAgICovXG4gIHJlYWRvbmx5IGxvZ291dFVybHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogU3BlY2lmeSBhZGRpdGlvbmFsIGNhbGxiYWNrIFVSTHMgd2hpY2ggdGhlIGZyb250ZW5kIHVzZXMgZm9yIE9JREMgYXV0aGVudGljYXRpb24uXG4gICAqXG4gICAqL1xuICByZWFkb25seSBjYWxsYmFja1VybHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogU3BlY2lmeSBhZGRpdGlvbmFsIHVzZXIgcG9vbCBpZGVudGl0eSBwcm92aWRlcnMgdG8gZW5hYmxlIGZlZGVyYXRlZCBsb2dpbi5cbiAgICovXG4gIHJlYWRvbmx5IGFkZGl0b25hbFVzZXJQb29sSWRlbnRpdHlQcm92aWRlcnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQ2xpZW50IG9wdGlvbnMgZm9yIHRoZSBBUEkgY2xpZW50LCBleHRlbmRpbmcgYW5kIG92ZXJ3cml0aW5nIHRoZSBkZWZhdWx0cy5cbiAgICovXG4gIHJlYWRvbmx5IGFwaUNsaWVudE9wdGlvbnM/OiBVc2VyUG9vbENsaWVudE9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIENsaWVudCBvcHRpb25zIGZvciB0aGUgZnJvbnRlbmQgY2xpZW50LCBleHRlbmRpbmcgYW5kIG92ZXJ3cml0aW5nIHRoZSBkZWZhdWx0cy5cbiAgICovXG4gIHJlYWRvbmx5IGZyb250ZW5kQ2xpZW50T3B0aW9ucz86IFVzZXJQb29sQ2xpZW50T3B0aW9ucztcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBPQXV0aCBzY29wZXMgZm9yIHRoZSBmcm9udGVuZC5cbiAgICovXG4gIHJlYWRvbmx5IGZyb250ZW5kT0F1dGhTY29wZXM/OiBPQXV0aFNjb3BlW107XG59XG5cbi8qKlxuICogQ3JlYXRlIGRlZmF1bHQgdXNlciBwb29sIGNsaWVudHMgZm9yIHRoZSBmcm9udGVuZCBhbmQgQVBJIGFjY2Vzcy5cbiAqIEBkZXByZWNhdGVkIFVzZSB7QGxpbmsgQ29nbml0b1VzZXJQb29sfSAgaW5zdGVhZFxuICovXG5leHBvcnQgY2xhc3MgRGVmYXVsdFVzZXJQb29sQ2xpZW50cyBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyBmcm9udGVuZENsaWVudDogSVVzZXJQb29sQ2xpZW50O1xuICBwdWJsaWMgYXBpQ2xpZW50OiBJVXNlclBvb2xDbGllbnQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBEZWZhdWx0VXNlclBvb2xDbGllbnRzUHJvcHMsXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBhcGlBY2Nlc3NTY29wZSA9IG5ldyBSZXNvdXJjZVNlcnZlclNjb3BlKHtcbiAgICAgIHNjb3BlTmFtZTogXCJhcGlfYWNjZXNzXCIsXG4gICAgICBzY29wZURlc2NyaXB0aW9uOiBcIlJFU1QgQVBJIGZ1bGwgYWNjZXNzIHNjb3BlXCIsXG4gICAgfSk7XG5cbiAgICBjb25zdCBzZXJ2ZXIgPSBwcm9wcy51c2VyUG9vbC5hZGRSZXNvdXJjZVNlcnZlcihcIlJFU1RBUElSZXNvdXJjZVNlcnZlclwiLCB7XG4gICAgICBpZGVudGlmaWVyOiBgJHtpZH1SRVNUQVBJYCxcbiAgICAgIHNjb3BlczogW2FwaUFjY2Vzc1Njb3BlXSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHByb3ZpZGVyTmFtZXMgPVxuICAgICAgcHJvcHMuYWRkaXRvbmFsVXNlclBvb2xJZGVudGl0eVByb3ZpZGVycz8ubWFwKChuYW1lKSA9PlxuICAgICAgICBVc2VyUG9vbENsaWVudElkZW50aXR5UHJvdmlkZXIuY3VzdG9tKG5hbWUpLFxuICAgICAgKSA/PyBbXTtcblxuICAgIGNvbnN0IGNhbGxiYWNrVXJscyA9IHByb3BzLmNhbGxiYWNrVXJscyA/PyBbXTtcblxuICAgIHRoaXMuYXBpQ2xpZW50ID0gbmV3IFVzZXJQb29sQ2xpZW50KHRoaXMsIFwiUkVTVEFQSVVzZXJQb29sQ2xpZW50XCIsIHtcbiAgICAgIHVzZXJQb29sOiBwcm9wcy51c2VyUG9vbCxcbiAgICAgIGdlbmVyYXRlU2VjcmV0OiB0cnVlLFxuICAgICAgb0F1dGg6IHtcbiAgICAgICAgZmxvd3M6IHtcbiAgICAgICAgICBjbGllbnRDcmVkZW50aWFsczogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgc2NvcGVzOiBbT0F1dGhTY29wZS5yZXNvdXJjZVNlcnZlcihzZXJ2ZXIsIGFwaUFjY2Vzc1Njb3BlKV0sXG4gICAgICB9LFxuICAgICAgc3VwcG9ydGVkSWRlbnRpdHlQcm92aWRlcnM6IFtcbiAgICAgICAgVXNlclBvb2xDbGllbnRJZGVudGl0eVByb3ZpZGVyLkNPR05JVE8sXG4gICAgICAgIC4uLnByb3ZpZGVyTmFtZXMsXG4gICAgICBdLFxuICAgICAgLi4ucHJvcHMuYXBpQ2xpZW50T3B0aW9ucyxcbiAgICB9KTtcblxuICAgIHRoaXMuZnJvbnRlbmRDbGllbnQgPSBuZXcgVXNlclBvb2xDbGllbnQodGhpcywgXCJGcm9udGVuZFVzZXJQb29sQ2xpZW50XCIsIHtcbiAgICAgIHVzZXJQb29sOiBwcm9wcy51c2VyUG9vbCxcblxuICAgICAgLy8gUmVxdWlyZWQgbWluaW1hbCBjb25maWd1cmF0aW9uIGZvciB1c2Ugd2l0aCBhbiBFTEJcbiAgICAgIGdlbmVyYXRlU2VjcmV0OiB0cnVlLFxuICAgICAgYXV0aEZsb3dzOiB7XG4gICAgICAgIHVzZXJQYXNzd29yZDogdHJ1ZSxcbiAgICAgIH0sXG5cbiAgICAgIG9BdXRoOiB7XG4gICAgICAgIGZsb3dzOiB7XG4gICAgICAgICAgYXV0aG9yaXphdGlvbkNvZGVHcmFudDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgc2NvcGVzOiBbXG4gICAgICAgICAgT0F1dGhTY29wZS5PUEVOSUQsXG4gICAgICAgICAgT0F1dGhTY29wZS5QUk9GSUxFLFxuICAgICAgICAgIC4uLihwcm9wcy5mcm9udGVuZE9BdXRoU2NvcGVzID8/IFtdKSxcbiAgICAgICAgXSxcbiAgICAgICAgY2FsbGJhY2tVcmxzOiBbXG4gICAgICAgICAgLy8gYWRkIGNhbGxiYWNrIFVSTCBmb3IgQUxCXG4gICAgICAgICAgYGh0dHBzOi8vJHtwcm9wcy5mcWRufS9vYXV0aDIvaWRwcmVzcG9uc2VgLFxuICAgICAgICAgIC4uLmNhbGxiYWNrVXJscyxcbiAgICAgICAgXSxcbiAgICAgICAgbG9nb3V0VXJsczogcHJvcHMubG9nb3V0VXJscyxcbiAgICAgIH0sXG4gICAgICBzdXBwb3J0ZWRJZGVudGl0eVByb3ZpZGVyczogW1xuICAgICAgICBVc2VyUG9vbENsaWVudElkZW50aXR5UHJvdmlkZXIuQ09HTklUTyxcbiAgICAgICAgLi4ucHJvdmlkZXJOYW1lcyxcbiAgICAgIF0sXG4gICAgICAuLi5wcm9wcy5mcm9udGVuZENsaWVudE9wdGlvbnMsXG4gICAgfSk7XG5cbiAgICBjb25zdCBleHBvcnRWYWx1ZSA9IGNyZWF0ZUV4cG9ydGVyKHRoaXMsIFwiY29nbml0b1wiKTtcblxuICAgIGV4cG9ydFZhbHVlKHtcbiAgICAgIG5hbWU6IFwiQ29nbml0byBGdWxsIEFjY2VzcyBDbGllbnQgSWRcIixcbiAgICAgIGtleTogXCJmdWxsLWFjY2Vzcy1jbGllbnQtaWRcIixcbiAgICAgIHZhbHVlOiB0aGlzLmFwaUNsaWVudC51c2VyUG9vbENsaWVudElkLFxuICAgIH0pO1xuXG4gICAgZXhwb3J0VmFsdWUoe1xuICAgICAgbmFtZTogXCJDb2duaXRvIFVzZXIgUG9vbCBDbGllbnQgSWRcIixcbiAgICAgIGtleTogXCJ1c2VyLXBvb2wtY2xpZW50LWlkXCIsXG4gICAgICB2YWx1ZTogdGhpcy5mcm9udGVuZENsaWVudC51c2VyUG9vbENsaWVudElkLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -16,7 +16,7 @@ class DocumentDBBase extends constructs_1.Construct {
|
|
|
16
16
|
}
|
|
17
17
|
exports.DocumentDBBase = DocumentDBBase;
|
|
18
18
|
_a = JSII_RTTI_SYMBOL_1;
|
|
19
|
-
DocumentDBBase[_a] = { fqn: "@btc-embedded/cdk-extensions.DocumentDBBase", version: "0.14.
|
|
19
|
+
DocumentDBBase[_a] = { fqn: "@btc-embedded/cdk-extensions.DocumentDBBase", version: "0.14.14" };
|
|
20
20
|
class DocumentDB extends constructs_1.Construct {
|
|
21
21
|
static fromBasePlatform(scope, id, name) {
|
|
22
22
|
class Import extends DocumentDBBase {
|
|
@@ -52,7 +52,7 @@ class DocumentDB extends constructs_1.Construct {
|
|
|
52
52
|
}
|
|
53
53
|
exports.DocumentDB = DocumentDB;
|
|
54
54
|
_b = JSII_RTTI_SYMBOL_1;
|
|
55
|
-
DocumentDB[_b] = { fqn: "@btc-embedded/cdk-extensions.DocumentDB", version: "0.14.
|
|
55
|
+
DocumentDB[_b] = { fqn: "@btc-embedded/cdk-extensions.DocumentDB", version: "0.14.14" };
|
|
56
56
|
DocumentDB.securityGroupIdParameter = new utils_1.StackParameter({
|
|
57
57
|
prefix: "document-db",
|
|
58
58
|
name: "DocumentDB Security Group Id",
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { RemovalPolicy } from "aws-cdk-lib";
|
|
2
|
+
import { IConnectable, ISecurityGroup, IVpc } from "aws-cdk-lib/aws-ec2";
|
|
3
|
+
import { IFileSystem } from "aws-cdk-lib/aws-efs";
|
|
4
|
+
import { IRole } from "aws-cdk-lib/aws-iam";
|
|
5
|
+
import { Construct } from "constructs";
|
|
6
|
+
export interface EfsFileSystemProps {
|
|
7
|
+
/**
|
|
8
|
+
* The VPC to be used.
|
|
9
|
+
*/
|
|
10
|
+
readonly vpc: IVpc;
|
|
11
|
+
/**
|
|
12
|
+
* The name to be used for the filesystem. Has to be unique in the stack.
|
|
13
|
+
* Is also used for importing the filesystem from another stack.
|
|
14
|
+
*/
|
|
15
|
+
readonly name: string;
|
|
16
|
+
/**
|
|
17
|
+
* Enable automatic backups. Default: `false`.
|
|
18
|
+
*/
|
|
19
|
+
readonly automaticBackups?: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Removal policy. Default: {@link RemovalPolicy.DESTROY}.
|
|
22
|
+
*/
|
|
23
|
+
readonly removalPolicy?: RemovalPolicy;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Access modes for the Efs.
|
|
27
|
+
*/
|
|
28
|
+
export declare enum EfsAccessMode {
|
|
29
|
+
/**
|
|
30
|
+
* Access is read-only.
|
|
31
|
+
*/
|
|
32
|
+
READ_ONLY = 0,
|
|
33
|
+
/**
|
|
34
|
+
* Read-write access.
|
|
35
|
+
*/
|
|
36
|
+
READ_WRITE = 1,
|
|
37
|
+
/**
|
|
38
|
+
* Root access is granted (includes read-write access).
|
|
39
|
+
*/
|
|
40
|
+
ROOT_ACCESS = 2
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Implementation fo the base functions for the {@link EfsFileSystem}.
|
|
44
|
+
*/
|
|
45
|
+
declare abstract class EfsFileSystemBase extends Construct {
|
|
46
|
+
protected filesystem: IFileSystem;
|
|
47
|
+
protected securityGroup: ISecurityGroup;
|
|
48
|
+
grantAccess(grantee: IRole, accessMode: EfsAccessMode): void;
|
|
49
|
+
fileSystemId(): string;
|
|
50
|
+
fileSystem(): IFileSystem;
|
|
51
|
+
allowConnection(grantee: IConnectable): void;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Lookup options for importing a filesystem from the base stack.
|
|
55
|
+
*/
|
|
56
|
+
export interface EfsFileSystemLookupOptions {
|
|
57
|
+
/**
|
|
58
|
+
* The name of the base platform.
|
|
59
|
+
*/
|
|
60
|
+
readonly basePlatformName: string;
|
|
61
|
+
/**
|
|
62
|
+
* The name of the filesystem to be imported.
|
|
63
|
+
*/
|
|
64
|
+
readonly filesystemName: string;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Interface for the {@link EfsFileSystem}.
|
|
68
|
+
*/
|
|
69
|
+
export interface IEfsFileSystem {
|
|
70
|
+
/**
|
|
71
|
+
* Grant access to a role for the filesystem.
|
|
72
|
+
* @param grantee The role to grant access for.
|
|
73
|
+
* @param accessMode The access mode for the grantee.
|
|
74
|
+
*/
|
|
75
|
+
grantAccess(grantee: IRole, accessMode: EfsAccessMode): void;
|
|
76
|
+
/**
|
|
77
|
+
* Allow connection to the filesystem.
|
|
78
|
+
* @param grantee The component to allow connections for.
|
|
79
|
+
*/
|
|
80
|
+
allowConnection(grantee: IConnectable): void;
|
|
81
|
+
/**
|
|
82
|
+
* Get the ID of the underlying EFS filesystem.
|
|
83
|
+
*/
|
|
84
|
+
fileSystemId(): string;
|
|
85
|
+
/**
|
|
86
|
+
* Get the underlying EFS filesystem.
|
|
87
|
+
*/
|
|
88
|
+
fileSystem(): IFileSystem;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* An EFS filesystem implementation that wraps the filesystem and the security group
|
|
92
|
+
* and allows to import an EFS from a different stack.
|
|
93
|
+
*/
|
|
94
|
+
export declare class EfsFileSystem extends EfsFileSystemBase implements IEfsFileSystem {
|
|
95
|
+
/**
|
|
96
|
+
* Import an existing filesystem from the base platform stack.
|
|
97
|
+
* @param scope The scope of the element.
|
|
98
|
+
* @param id The id of the imported component.
|
|
99
|
+
* @param basePlatformLookup Lookup parameters to find the filesystem.
|
|
100
|
+
* @returns An instance of the {@link IEfsFileSystem}.
|
|
101
|
+
*/
|
|
102
|
+
static fromBasePlatform(scope: Construct, id: string, basePlatformLookup: EfsFileSystemLookupOptions): IEfsFileSystem;
|
|
103
|
+
constructor(scope: Construct, id: string, props: EfsFileSystemProps);
|
|
104
|
+
}
|
|
105
|
+
export {};
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.EfsFileSystem = exports.EfsAccessMode = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
7
|
+
const aws_ec2_1 = require("aws-cdk-lib/aws-ec2");
|
|
8
|
+
const aws_efs_1 = require("aws-cdk-lib/aws-efs");
|
|
9
|
+
const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
10
|
+
const constructs_1 = require("constructs");
|
|
11
|
+
const utils_1 = require("../utils");
|
|
12
|
+
const common_1 = require("../utils/common");
|
|
13
|
+
/**
|
|
14
|
+
* Access modes for the Efs.
|
|
15
|
+
*/
|
|
16
|
+
var EfsAccessMode;
|
|
17
|
+
(function (EfsAccessMode) {
|
|
18
|
+
/**
|
|
19
|
+
* Access is read-only.
|
|
20
|
+
*/
|
|
21
|
+
EfsAccessMode[EfsAccessMode["READ_ONLY"] = 0] = "READ_ONLY";
|
|
22
|
+
/**
|
|
23
|
+
* Read-write access.
|
|
24
|
+
*/
|
|
25
|
+
EfsAccessMode[EfsAccessMode["READ_WRITE"] = 1] = "READ_WRITE";
|
|
26
|
+
/**
|
|
27
|
+
* Root access is granted (includes read-write access).
|
|
28
|
+
*/
|
|
29
|
+
EfsAccessMode[EfsAccessMode["ROOT_ACCESS"] = 2] = "ROOT_ACCESS";
|
|
30
|
+
})(EfsAccessMode || (exports.EfsAccessMode = EfsAccessMode = {}));
|
|
31
|
+
/**
|
|
32
|
+
* Implementation fo the base functions for the {@link EfsFileSystem}.
|
|
33
|
+
*/
|
|
34
|
+
class EfsFileSystemBase extends constructs_1.Construct {
|
|
35
|
+
grantAccess(grantee, accessMode) {
|
|
36
|
+
const actions = ["elasticfilesystem:ClientMount"];
|
|
37
|
+
switch (accessMode) {
|
|
38
|
+
case EfsAccessMode.READ_ONLY:
|
|
39
|
+
this.filesystem.grantRead(grantee);
|
|
40
|
+
break;
|
|
41
|
+
case EfsAccessMode.READ_WRITE:
|
|
42
|
+
this.filesystem.grantReadWrite(grantee);
|
|
43
|
+
actions.push("elasticfilesystem:ClientWrite");
|
|
44
|
+
break;
|
|
45
|
+
case EfsAccessMode.ROOT_ACCESS:
|
|
46
|
+
this.filesystem.grantRootAccess(grantee);
|
|
47
|
+
actions.push("elasticfilesystem:ClientWrite");
|
|
48
|
+
actions.push("elasticfilesystem:ClientRootAccess");
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
this.filesystem.addToResourcePolicy(new aws_iam_1.PolicyStatement({
|
|
52
|
+
effect: aws_iam_1.Effect.ALLOW,
|
|
53
|
+
actions: actions,
|
|
54
|
+
principals: [new aws_iam_1.ArnPrincipal(grantee.roleArn)],
|
|
55
|
+
conditions: {
|
|
56
|
+
Bool: {
|
|
57
|
+
"elasticfilesystem:AccessedViaMountTarget": "true",
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
}));
|
|
61
|
+
}
|
|
62
|
+
fileSystemId() {
|
|
63
|
+
return this.filesystem.fileSystemId;
|
|
64
|
+
}
|
|
65
|
+
fileSystem() {
|
|
66
|
+
return this.filesystem;
|
|
67
|
+
}
|
|
68
|
+
allowConnection(grantee) {
|
|
69
|
+
this.filesystem.connections.allowDefaultPortFrom(grantee);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* An EFS filesystem implementation that wraps the filesystem and the security group
|
|
74
|
+
* and allows to import an EFS from a different stack.
|
|
75
|
+
*/
|
|
76
|
+
class EfsFileSystem extends EfsFileSystemBase {
|
|
77
|
+
/**
|
|
78
|
+
* Import an existing filesystem from the base platform stack.
|
|
79
|
+
* @param scope The scope of the element.
|
|
80
|
+
* @param id The id of the imported component.
|
|
81
|
+
* @param basePlatformLookup Lookup parameters to find the filesystem.
|
|
82
|
+
* @returns An instance of the {@link IEfsFileSystem}.
|
|
83
|
+
*/
|
|
84
|
+
static fromBasePlatform(scope, id, basePlatformLookup) {
|
|
85
|
+
const stackPrefix = `efs-filesystem-${(0, common_1.kebabCase)(basePlatformLookup.filesystemName)}`;
|
|
86
|
+
const filesystemFsId = new utils_1.StackParameter({
|
|
87
|
+
prefix: stackPrefix,
|
|
88
|
+
key: "filesystem",
|
|
89
|
+
name: "EFS FileSystem",
|
|
90
|
+
}).import(basePlatformLookup.basePlatformName);
|
|
91
|
+
const filesystemSgId = new utils_1.StackParameter({
|
|
92
|
+
prefix: stackPrefix,
|
|
93
|
+
key: "security-group",
|
|
94
|
+
name: "EFS Security Group",
|
|
95
|
+
}).import(basePlatformLookup.basePlatformName);
|
|
96
|
+
const securityGroup = aws_ec2_1.SecurityGroup.fromSecurityGroupId(scope, `${id}SecurityGroup`, filesystemSgId);
|
|
97
|
+
const filesystem = aws_efs_1.FileSystem.fromFileSystemAttributes(scope, `${id}FileSystem`, {
|
|
98
|
+
securityGroup: securityGroup,
|
|
99
|
+
fileSystemId: filesystemFsId,
|
|
100
|
+
});
|
|
101
|
+
class Import extends EfsFileSystemBase {
|
|
102
|
+
constructor(parentScope, constructId) {
|
|
103
|
+
super(parentScope, constructId);
|
|
104
|
+
this.securityGroup = securityGroup;
|
|
105
|
+
this.filesystem = filesystem;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return new Import(scope, id);
|
|
109
|
+
}
|
|
110
|
+
constructor(scope, id, props) {
|
|
111
|
+
super(scope, id);
|
|
112
|
+
this.securityGroup = new aws_ec2_1.SecurityGroup(this, "ResourceEfsSg", {
|
|
113
|
+
vpc: props.vpc,
|
|
114
|
+
});
|
|
115
|
+
/*
|
|
116
|
+
* The security group is mandatory, if we want to import the filesystem from a
|
|
117
|
+
* different stack. We allow all incoming NFS connections, the access will be
|
|
118
|
+
* managed via {@link allowConnection}.
|
|
119
|
+
*/
|
|
120
|
+
this.securityGroup.addIngressRule(aws_ec2_1.Peer.anyIpv4(), aws_ec2_1.Port.NFS, "Allow NFS Access");
|
|
121
|
+
this.filesystem = new aws_efs_1.FileSystem(this, "ResourceEfs", {
|
|
122
|
+
vpc: props.vpc,
|
|
123
|
+
enableAutomaticBackups: props.automaticBackups ?? false,
|
|
124
|
+
removalPolicy: props.removalPolicy ?? aws_cdk_lib_1.RemovalPolicy.DESTROY,
|
|
125
|
+
encrypted: true,
|
|
126
|
+
fileSystemName: props.name,
|
|
127
|
+
securityGroup: this.securityGroup,
|
|
128
|
+
fileSystemPolicy: new aws_iam_1.PolicyDocument(),
|
|
129
|
+
});
|
|
130
|
+
const stackPrefix = `efs-filesystem-${(0, common_1.kebabCase)(props.name)}`;
|
|
131
|
+
new utils_1.StackParameter({
|
|
132
|
+
prefix: stackPrefix,
|
|
133
|
+
key: "filesystem",
|
|
134
|
+
name: "EFS FileSystem",
|
|
135
|
+
}).export(this, this.filesystem.fileSystemId);
|
|
136
|
+
new utils_1.StackParameter({
|
|
137
|
+
prefix: stackPrefix,
|
|
138
|
+
key: "security-group",
|
|
139
|
+
name: "EFS Security Group",
|
|
140
|
+
}).export(this, this.securityGroup.securityGroupId);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
exports.EfsFileSystem = EfsFileSystem;
|
|
144
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
145
|
+
EfsFileSystem[_a] = { fqn: "@btc-embedded/cdk-extensions.EfsFileSystem", version: "0.14.14" };
|
|
146
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWZzRmlsZVN5c3RlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wbGF0Zm9ybS9FZnNGaWxlU3lzdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkNBQTRDO0FBQzVDLGlEQU82QjtBQUM3QixpREFBOEQ7QUFDOUQsaURBTTZCO0FBQzdCLDJDQUF1QztBQUN2QyxvQ0FBMEM7QUFDMUMsNENBQTRDO0FBc0I1Qzs7R0FFRztBQUNILElBQVksYUFhWDtBQWJELFdBQVksYUFBYTtJQUN2Qjs7T0FFRztJQUNILDJEQUFTLENBQUE7SUFDVDs7T0FFRztJQUNILDZEQUFVLENBQUE7SUFDVjs7T0FFRztJQUNILCtEQUFXLENBQUE7QUFDYixDQUFDLEVBYlcsYUFBYSw2QkFBYixhQUFhLFFBYXhCO0FBRUQ7O0dBRUc7QUFDSCxNQUFlLGlCQUFrQixTQUFRLHNCQUFTO0lBSXpDLFdBQVcsQ0FBQyxPQUFjLEVBQUUsVUFBeUI7UUFDMUQsTUFBTSxPQUFPLEdBQUcsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQ2xELFFBQVEsVUFBVSxFQUFFLENBQUM7WUFDbkIsS0FBSyxhQUFhLENBQUMsU0FBUztnQkFDMUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ25DLE1BQU07WUFDUixLQUFLLGFBQWEsQ0FBQyxVQUFVO2dCQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDeEMsT0FBTyxDQUFDLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO2dCQUM5QyxNQUFNO1lBQ1IsS0FBSyxhQUFhLENBQUMsV0FBVztnQkFDNUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3pDLE9BQU8sQ0FBQyxJQUFJLENBQUMsK0JBQStCLENBQUMsQ0FBQztnQkFDOUMsT0FBTyxDQUFDLElBQUksQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO2dCQUNuRCxNQUFNO1FBQ1YsQ0FBQztRQUNELElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLENBQ2pDLElBQUkseUJBQWUsQ0FBQztZQUNsQixNQUFNLEVBQUUsZ0JBQU0sQ0FBQyxLQUFLO1lBQ3BCLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLFVBQVUsRUFBRSxDQUFDLElBQUksc0JBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDL0MsVUFBVSxFQUFFO2dCQUNWLElBQUksRUFBRTtvQkFDSiwwQ0FBMEMsRUFBRSxNQUFNO2lCQUNuRDthQUNGO1NBQ0YsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRU0sWUFBWTtRQUNqQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDO0lBQ3RDLENBQUM7SUFFTSxVQUFVO1FBQ2YsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxlQUFlLENBQUMsT0FBcUI7UUFDMUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDNUQsQ0FBQztDQUNGO0FBNkNEOzs7R0FHRztBQUNILE1BQWEsYUFBYyxTQUFRLGlCQUFpQjtJQUNsRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsZ0JBQWdCLENBQzVCLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixrQkFBOEM7UUFFOUMsTUFBTSxXQUFXLEdBQUcsa0JBQWtCLElBQUEsa0JBQVMsRUFBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1FBRXJGLE1BQU0sY0FBYyxHQUFHLElBQUksc0JBQWMsQ0FBQztZQUN4QyxNQUFNLEVBQUUsV0FBVztZQUNuQixHQUFHLEVBQUUsWUFBWTtZQUNqQixJQUFJLEVBQUUsZ0JBQWdCO1NBQ3ZCLENBQUMsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUUvQyxNQUFNLGNBQWMsR0FBRyxJQUFJLHNCQUFjLENBQUM7WUFDeEMsTUFBTSxFQUFFLFdBQVc7WUFDbkIsR0FBRyxFQUFFLGdCQUFnQjtZQUNyQixJQUFJLEVBQUUsb0JBQW9CO1NBQzNCLENBQUMsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUUvQyxNQUFNLGFBQWEsR0FBRyx1QkFBYSxDQUFDLG1CQUFtQixDQUNyRCxLQUFLLEVBQ0wsR0FBRyxFQUFFLGVBQWUsRUFDcEIsY0FBYyxDQUNmLENBQUM7UUFDRixNQUFNLFVBQVUsR0FBRyxvQkFBVSxDQUFDLHdCQUF3QixDQUNwRCxLQUFLLEVBQ0wsR0FBRyxFQUFFLFlBQVksRUFDakI7WUFDRSxhQUFhLEVBQUUsYUFBYTtZQUM1QixZQUFZLEVBQUUsY0FBYztTQUM3QixDQUNGLENBQUM7UUFFRixNQUFNLE1BQU8sU0FBUSxpQkFBaUI7WUFDcEMsWUFBWSxXQUFzQixFQUFFLFdBQW1CO2dCQUNyRCxLQUFLLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDO2dCQUVoQyxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7WUFDL0IsQ0FBQztTQUNGO1FBRUQsT0FBTyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBeUI7UUFDakUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksdUJBQWEsQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFO1lBQzVELEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRztTQUNmLENBQUMsQ0FBQztRQUVIOzs7O1dBSUc7UUFDSCxJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FDL0IsY0FBSSxDQUFDLE9BQU8sRUFBRSxFQUNkLGNBQUksQ0FBQyxHQUFHLEVBQ1Isa0JBQWtCLENBQ25CLENBQUM7UUFFRixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksb0JBQVUsQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFO1lBQ3BELEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRztZQUNkLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0IsSUFBSSxLQUFLO1lBQ3ZELGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYSxJQUFJLDJCQUFhLENBQUMsT0FBTztZQUMzRCxTQUFTLEVBQUUsSUFBSTtZQUNmLGNBQWMsRUFBRSxLQUFLLENBQUMsSUFBSTtZQUMxQixhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWE7WUFDakMsZ0JBQWdCLEVBQUUsSUFBSSx3QkFBYyxFQUFFO1NBQ3ZDLENBQUMsQ0FBQztRQUVILE1BQU0sV0FBVyxHQUFHLGtCQUFrQixJQUFBLGtCQUFTLEVBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFFOUQsSUFBSSxzQkFBYyxDQUFDO1lBQ2pCLE1BQU0sRUFBRSxXQUFXO1lBQ25CLEdBQUcsRUFBRSxZQUFZO1lBQ2pCLElBQUksRUFBRSxnQkFBZ0I7U0FDdkIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUU5QyxJQUFJLHNCQUFjLENBQUM7WUFDakIsTUFBTSxFQUFFLFdBQVc7WUFDbkIsR0FBRyxFQUFFLGdCQUFnQjtZQUNyQixJQUFJLEVBQUUsb0JBQW9CO1NBQzNCLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDdEQsQ0FBQzs7QUE5Rkgsc0NBK0ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVtb3ZhbFBvbGljeSB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHtcbiAgSUNvbm5lY3RhYmxlLFxuICBJU2VjdXJpdHlHcm91cCxcbiAgSVZwYyxcbiAgUGVlcixcbiAgUG9ydCxcbiAgU2VjdXJpdHlHcm91cCxcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIjtcbmltcG9ydCB7IEZpbGVTeXN0ZW0sIElGaWxlU3lzdGVtIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lZnNcIjtcbmltcG9ydCB7XG4gIEFyblByaW5jaXBhbCxcbiAgRWZmZWN0LFxuICBJUm9sZSxcbiAgUG9saWN5RG9jdW1lbnQsXG4gIFBvbGljeVN0YXRlbWVudCxcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBTdGFja1BhcmFtZXRlciB9IGZyb20gXCIuLi91dGlsc1wiO1xuaW1wb3J0IHsga2ViYWJDYXNlIH0gZnJvbSBcIi4uL3V0aWxzL2NvbW1vblwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVmc0ZpbGVTeXN0ZW1Qcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgVlBDIHRvIGJlIHVzZWQuXG4gICAqL1xuICByZWFkb25seSB2cGM6IElWcGM7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSB0byBiZSB1c2VkIGZvciB0aGUgZmlsZXN5c3RlbS4gSGFzIHRvIGJlIHVuaXF1ZSBpbiB0aGUgc3RhY2suXG4gICAqIElzIGFsc28gdXNlZCBmb3IgaW1wb3J0aW5nIHRoZSBmaWxlc3lzdGVtIGZyb20gYW5vdGhlciBzdGFjay5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIEVuYWJsZSBhdXRvbWF0aWMgYmFja3Vwcy4gRGVmYXVsdDogYGZhbHNlYC5cbiAgICovXG4gIHJlYWRvbmx5IGF1dG9tYXRpY0JhY2t1cHM/OiBib29sZWFuO1xuICAvKipcbiAgICogUmVtb3ZhbCBwb2xpY3kuIERlZmF1bHQ6IHtAbGluayBSZW1vdmFsUG9saWN5LkRFU1RST1l9LlxuICAgKi9cbiAgcmVhZG9ubHkgcmVtb3ZhbFBvbGljeT86IFJlbW92YWxQb2xpY3k7XG59XG5cbi8qKlxuICogQWNjZXNzIG1vZGVzIGZvciB0aGUgRWZzLlxuICovXG5leHBvcnQgZW51bSBFZnNBY2Nlc3NNb2RlIHtcbiAgLyoqXG4gICAqIEFjY2VzcyBpcyByZWFkLW9ubHkuXG4gICAqL1xuICBSRUFEX09OTFksXG4gIC8qKlxuICAgKiBSZWFkLXdyaXRlIGFjY2Vzcy5cbiAgICovXG4gIFJFQURfV1JJVEUsXG4gIC8qKlxuICAgKiBSb290IGFjY2VzcyBpcyBncmFudGVkIChpbmNsdWRlcyByZWFkLXdyaXRlIGFjY2VzcykuXG4gICAqL1xuICBST09UX0FDQ0VTUyxcbn1cblxuLyoqXG4gKiBJbXBsZW1lbnRhdGlvbiBmbyB0aGUgYmFzZSBmdW5jdGlvbnMgZm9yIHRoZSB7QGxpbmsgRWZzRmlsZVN5c3RlbX0uXG4gKi9cbmFic3RyYWN0IGNsYXNzIEVmc0ZpbGVTeXN0ZW1CYXNlIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHJvdGVjdGVkIGZpbGVzeXN0ZW0hOiBJRmlsZVN5c3RlbTtcbiAgcHJvdGVjdGVkIHNlY3VyaXR5R3JvdXAhOiBJU2VjdXJpdHlHcm91cDtcblxuICBwdWJsaWMgZ3JhbnRBY2Nlc3MoZ3JhbnRlZTogSVJvbGUsIGFjY2Vzc01vZGU6IEVmc0FjY2Vzc01vZGUpOiB2b2lkIHtcbiAgICBjb25zdCBhY3Rpb25zID0gW1wiZWxhc3RpY2ZpbGVzeXN0ZW06Q2xpZW50TW91bnRcIl07XG4gICAgc3dpdGNoIChhY2Nlc3NNb2RlKSB7XG4gICAgICBjYXNlIEVmc0FjY2Vzc01vZGUuUkVBRF9PTkxZOlxuICAgICAgICB0aGlzLmZpbGVzeXN0ZW0uZ3JhbnRSZWFkKGdyYW50ZWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRWZzQWNjZXNzTW9kZS5SRUFEX1dSSVRFOlxuICAgICAgICB0aGlzLmZpbGVzeXN0ZW0uZ3JhbnRSZWFkV3JpdGUoZ3JhbnRlZSk7XG4gICAgICAgIGFjdGlvbnMucHVzaChcImVsYXN0aWNmaWxlc3lzdGVtOkNsaWVudFdyaXRlXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRWZzQWNjZXNzTW9kZS5ST09UX0FDQ0VTUzpcbiAgICAgICAgdGhpcy5maWxlc3lzdGVtLmdyYW50Um9vdEFjY2VzcyhncmFudGVlKTtcbiAgICAgICAgYWN0aW9ucy5wdXNoKFwiZWxhc3RpY2ZpbGVzeXN0ZW06Q2xpZW50V3JpdGVcIik7XG4gICAgICAgIGFjdGlvbnMucHVzaChcImVsYXN0aWNmaWxlc3lzdGVtOkNsaWVudFJvb3RBY2Nlc3NcIik7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICB0aGlzLmZpbGVzeXN0ZW0uYWRkVG9SZXNvdXJjZVBvbGljeShcbiAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgYWN0aW9uczogYWN0aW9ucyxcbiAgICAgICAgcHJpbmNpcGFsczogW25ldyBBcm5QcmluY2lwYWwoZ3JhbnRlZS5yb2xlQXJuKV0sXG4gICAgICAgIGNvbmRpdGlvbnM6IHtcbiAgICAgICAgICBCb29sOiB7XG4gICAgICAgICAgICBcImVsYXN0aWNmaWxlc3lzdGVtOkFjY2Vzc2VkVmlhTW91bnRUYXJnZXRcIjogXCJ0cnVlXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZmlsZVN5c3RlbUlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZmlsZXN5c3RlbS5maWxlU3lzdGVtSWQ7XG4gIH1cblxuICBwdWJsaWMgZmlsZVN5c3RlbSgpOiBJRmlsZVN5c3RlbSB7XG4gICAgcmV0dXJuIHRoaXMuZmlsZXN5c3RlbTtcbiAgfVxuXG4gIHB1YmxpYyBhbGxvd0Nvbm5lY3Rpb24oZ3JhbnRlZTogSUNvbm5lY3RhYmxlKTogdm9pZCB7XG4gICAgdGhpcy5maWxlc3lzdGVtLmNvbm5lY3Rpb25zLmFsbG93RGVmYXVsdFBvcnRGcm9tKGdyYW50ZWUpO1xuICB9XG59XG5cbi8qKlxuICogTG9va3VwIG9wdGlvbnMgZm9yIGltcG9ydGluZyBhIGZpbGVzeXN0ZW0gZnJvbSB0aGUgYmFzZSBzdGFjay5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFZnNGaWxlU3lzdGVtTG9va3VwT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgYmFzZSBwbGF0Zm9ybS5cbiAgICovXG4gIHJlYWRvbmx5IGJhc2VQbGF0Zm9ybU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGZpbGVzeXN0ZW0gdG8gYmUgaW1wb3J0ZWQuXG4gICAqL1xuICByZWFkb25seSBmaWxlc3lzdGVtTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEludGVyZmFjZSBmb3IgdGhlIHtAbGluayBFZnNGaWxlU3lzdGVtfS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJRWZzRmlsZVN5c3RlbSB7XG4gIC8qKlxuICAgKiBHcmFudCBhY2Nlc3MgdG8gYSByb2xlIGZvciB0aGUgZmlsZXN5c3RlbS5cbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHJvbGUgdG8gZ3JhbnQgYWNjZXNzIGZvci5cbiAgICogQHBhcmFtIGFjY2Vzc01vZGUgVGhlIGFjY2VzcyBtb2RlIGZvciB0aGUgZ3JhbnRlZS5cbiAgICovXG4gIGdyYW50QWNjZXNzKGdyYW50ZWU6IElSb2xlLCBhY2Nlc3NNb2RlOiBFZnNBY2Nlc3NNb2RlKTogdm9pZDtcblxuICAvKipcbiAgICogQWxsb3cgY29ubmVjdGlvbiB0byB0aGUgZmlsZXN5c3RlbS5cbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIGNvbXBvbmVudCB0byBhbGxvdyBjb25uZWN0aW9ucyBmb3IuXG4gICAqL1xuICBhbGxvd0Nvbm5lY3Rpb24oZ3JhbnRlZTogSUNvbm5lY3RhYmxlKTogdm9pZDtcblxuICAvKipcbiAgICogR2V0IHRoZSBJRCBvZiB0aGUgdW5kZXJseWluZyBFRlMgZmlsZXN5c3RlbS5cbiAgICovXG4gIGZpbGVTeXN0ZW1JZCgpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgdW5kZXJseWluZyBFRlMgZmlsZXN5c3RlbS5cbiAgICovXG4gIGZpbGVTeXN0ZW0oKTogSUZpbGVTeXN0ZW07XG59XG5cbi8qKlxuICogQW4gRUZTIGZpbGVzeXN0ZW0gaW1wbGVtZW50YXRpb24gdGhhdCB3cmFwcyB0aGUgZmlsZXN5c3RlbSBhbmQgdGhlIHNlY3VyaXR5IGdyb3VwXG4gKiBhbmQgYWxsb3dzIHRvIGltcG9ydCBhbiBFRlMgZnJvbSBhIGRpZmZlcmVudCBzdGFjay5cbiAqL1xuZXhwb3J0IGNsYXNzIEVmc0ZpbGVTeXN0ZW0gZXh0ZW5kcyBFZnNGaWxlU3lzdGVtQmFzZSBpbXBsZW1lbnRzIElFZnNGaWxlU3lzdGVtIHtcbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBmaWxlc3lzdGVtIGZyb20gdGhlIGJhc2UgcGxhdGZvcm0gc3RhY2suXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgc2NvcGUgb2YgdGhlIGVsZW1lbnQuXG4gICAqIEBwYXJhbSBpZCBUaGUgaWQgb2YgdGhlIGltcG9ydGVkIGNvbXBvbmVudC5cbiAgICogQHBhcmFtIGJhc2VQbGF0Zm9ybUxvb2t1cCBMb29rdXAgcGFyYW1ldGVycyB0byBmaW5kIHRoZSBmaWxlc3lzdGVtLlxuICAgKiBAcmV0dXJucyBBbiBpbnN0YW5jZSBvZiB0aGUge0BsaW5rIElFZnNGaWxlU3lzdGVtfS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUJhc2VQbGF0Zm9ybShcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgYmFzZVBsYXRmb3JtTG9va3VwOiBFZnNGaWxlU3lzdGVtTG9va3VwT3B0aW9ucyxcbiAgKTogSUVmc0ZpbGVTeXN0ZW0ge1xuICAgIGNvbnN0IHN0YWNrUHJlZml4ID0gYGVmcy1maWxlc3lzdGVtLSR7a2ViYWJDYXNlKGJhc2VQbGF0Zm9ybUxvb2t1cC5maWxlc3lzdGVtTmFtZSl9YDtcblxuICAgIGNvbnN0IGZpbGVzeXN0ZW1Gc0lkID0gbmV3IFN0YWNrUGFyYW1ldGVyKHtcbiAgICAgIHByZWZpeDogc3RhY2tQcmVmaXgsXG4gICAgICBrZXk6IFwiZmlsZXN5c3RlbVwiLFxuICAgICAgbmFtZTogXCJFRlMgRmlsZVN5c3RlbVwiLFxuICAgIH0pLmltcG9ydChiYXNlUGxhdGZvcm1Mb29rdXAuYmFzZVBsYXRmb3JtTmFtZSk7XG5cbiAgICBjb25zdCBmaWxlc3lzdGVtU2dJZCA9IG5ldyBTdGFja1BhcmFtZXRlcih7XG4gICAgICBwcmVmaXg6IHN0YWNrUHJlZml4LFxuICAgICAga2V5OiBcInNlY3VyaXR5LWdyb3VwXCIsXG4gICAgICBuYW1lOiBcIkVGUyBTZWN1cml0eSBHcm91cFwiLFxuICAgIH0pLmltcG9ydChiYXNlUGxhdGZvcm1Mb29rdXAuYmFzZVBsYXRmb3JtTmFtZSk7XG5cbiAgICBjb25zdCBzZWN1cml0eUdyb3VwID0gU2VjdXJpdHlHcm91cC5mcm9tU2VjdXJpdHlHcm91cElkKFxuICAgICAgc2NvcGUsXG4gICAgICBgJHtpZH1TZWN1cml0eUdyb3VwYCxcbiAgICAgIGZpbGVzeXN0ZW1TZ0lkLFxuICAgICk7XG4gICAgY29uc3QgZmlsZXN5c3RlbSA9IEZpbGVTeXN0ZW0uZnJvbUZpbGVTeXN0ZW1BdHRyaWJ1dGVzKFxuICAgICAgc2NvcGUsXG4gICAgICBgJHtpZH1GaWxlU3lzdGVtYCxcbiAgICAgIHtcbiAgICAgICAgc2VjdXJpdHlHcm91cDogc2VjdXJpdHlHcm91cCxcbiAgICAgICAgZmlsZVN5c3RlbUlkOiBmaWxlc3lzdGVtRnNJZCxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIEVmc0ZpbGVTeXN0ZW1CYXNlIGltcGxlbWVudHMgSUVmc0ZpbGVTeXN0ZW0ge1xuICAgICAgY29uc3RydWN0b3IocGFyZW50U2NvcGU6IENvbnN0cnVjdCwgY29uc3RydWN0SWQ6IHN0cmluZykge1xuICAgICAgICBzdXBlcihwYXJlbnRTY29wZSwgY29uc3RydWN0SWQpO1xuXG4gICAgICAgIHRoaXMuc2VjdXJpdHlHcm91cCA9IHNlY3VyaXR5R3JvdXA7XG4gICAgICAgIHRoaXMuZmlsZXN5c3RlbSA9IGZpbGVzeXN0ZW07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBFZnNGaWxlU3lzdGVtUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5zZWN1cml0eUdyb3VwID0gbmV3IFNlY3VyaXR5R3JvdXAodGhpcywgXCJSZXNvdXJjZUVmc1NnXCIsIHtcbiAgICAgIHZwYzogcHJvcHMudnBjLFxuICAgIH0pO1xuXG4gICAgLypcbiAgICAgKiBUaGUgc2VjdXJpdHkgZ3JvdXAgaXMgbWFuZGF0b3J5LCBpZiB3ZSB3YW50IHRvIGltcG9ydCB0aGUgZmlsZXN5c3RlbSBmcm9tIGFcbiAgICAgKiBkaWZmZXJlbnQgc3RhY2suIFdlIGFsbG93IGFsbCBpbmNvbWluZyBORlMgY29ubmVjdGlvbnMsIHRoZSBhY2Nlc3Mgd2lsbCBiZVxuICAgICAqIG1hbmFnZWQgdmlhIHtAbGluayBhbGxvd0Nvbm5lY3Rpb259LlxuICAgICAqL1xuICAgIHRoaXMuc2VjdXJpdHlHcm91cC5hZGRJbmdyZXNzUnVsZShcbiAgICAgIFBlZXIuYW55SXB2NCgpLFxuICAgICAgUG9ydC5ORlMsXG4gICAgICBcIkFsbG93IE5GUyBBY2Nlc3NcIixcbiAgICApO1xuXG4gICAgdGhpcy5maWxlc3lzdGVtID0gbmV3IEZpbGVTeXN0ZW0odGhpcywgXCJSZXNvdXJjZUVmc1wiLCB7XG4gICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICAgIGVuYWJsZUF1dG9tYXRpY0JhY2t1cHM6IHByb3BzLmF1dG9tYXRpY0JhY2t1cHMgPz8gZmFsc2UsXG4gICAgICByZW1vdmFsUG9saWN5OiBwcm9wcy5yZW1vdmFsUG9saWN5ID8/IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgIGVuY3J5cHRlZDogdHJ1ZSxcbiAgICAgIGZpbGVTeXN0ZW1OYW1lOiBwcm9wcy5uYW1lLFxuICAgICAgc2VjdXJpdHlHcm91cDogdGhpcy5zZWN1cml0eUdyb3VwLFxuICAgICAgZmlsZVN5c3RlbVBvbGljeTogbmV3IFBvbGljeURvY3VtZW50KCksXG4gICAgfSk7XG5cbiAgICBjb25zdCBzdGFja1ByZWZpeCA9IGBlZnMtZmlsZXN5c3RlbS0ke2tlYmFiQ2FzZShwcm9wcy5uYW1lKX1gO1xuXG4gICAgbmV3IFN0YWNrUGFyYW1ldGVyKHtcbiAgICAgIHByZWZpeDogc3RhY2tQcmVmaXgsXG4gICAgICBrZXk6IFwiZmlsZXN5c3RlbVwiLFxuICAgICAgbmFtZTogXCJFRlMgRmlsZVN5c3RlbVwiLFxuICAgIH0pLmV4cG9ydCh0aGlzLCB0aGlzLmZpbGVzeXN0ZW0uZmlsZVN5c3RlbUlkKTtcblxuICAgIG5ldyBTdGFja1BhcmFtZXRlcih7XG4gICAgICBwcmVmaXg6IHN0YWNrUHJlZml4LFxuICAgICAga2V5OiBcInNlY3VyaXR5LWdyb3VwXCIsXG4gICAgICBuYW1lOiBcIkVGUyBTZWN1cml0eSBHcm91cFwiLFxuICAgIH0pLmV4cG9ydCh0aGlzLCB0aGlzLnNlY3VyaXR5R3JvdXAuc2VjdXJpdHlHcm91cElkKTtcbiAgfVxufVxuIl19
|
|
@@ -46,7 +46,7 @@ class PrivateDnsNamespace extends constructs_1.Construct {
|
|
|
46
46
|
}
|
|
47
47
|
exports.PrivateDnsNamespace = PrivateDnsNamespace;
|
|
48
48
|
_a = JSII_RTTI_SYMBOL_1;
|
|
49
|
-
PrivateDnsNamespace[_a] = { fqn: "@btc-embedded/cdk-extensions.PrivateDnsNamespace", version: "0.14.
|
|
49
|
+
PrivateDnsNamespace[_a] = { fqn: "@btc-embedded/cdk-extensions.PrivateDnsNamespace", version: "0.14.14" };
|
|
50
50
|
PrivateDnsNamespace.nsArnParameter = new utils_1.StackParameter({
|
|
51
51
|
prefix: "namespace",
|
|
52
52
|
name: "Namespace ARN",
|
|
@@ -39,5 +39,5 @@ class ResourceServer extends constructs_1.Construct {
|
|
|
39
39
|
}
|
|
40
40
|
exports.ResourceServer = ResourceServer;
|
|
41
41
|
_a = JSII_RTTI_SYMBOL_1;
|
|
42
|
-
ResourceServer[_a] = { fqn: "@btc-embedded/cdk-extensions.ResourceServer", version: "0.14.
|
|
42
|
+
ResourceServer[_a] = { fqn: "@btc-embedded/cdk-extensions.ResourceServer", version: "0.14.14" };
|
|
43
43
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVzb3VyY2VTZXJ2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGxhdGZvcm0vUmVzb3VyY2VTZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx5REFLaUM7QUFDakMsMkNBQXVDO0FBc0J2Qzs7Ozs7Ozs7R0FRRztBQUNILE1BQWEsY0FBZSxTQUFRLHNCQUFTO0lBRzNDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBMEI7UUFDbEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLElBQUk7WUFDNUIsSUFBSSxpQ0FBbUIsQ0FBQztnQkFDdEIsU0FBUyxFQUFFLFVBQVU7Z0JBQ3JCLGdCQUFnQixFQUFFLDRCQUE0QjthQUMvQyxDQUFDO1lBQ0YsSUFBSSxpQ0FBbUIsQ0FBQztnQkFDdEIsU0FBUyxFQUFFLFdBQVc7Z0JBQ3RCLGdCQUFnQixFQUFFLDZCQUE2QjthQUNoRCxDQUFDO1NBQ0gsQ0FBQztRQUVGLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUM1RCx1QkFBdUIsRUFDdkI7WUFDRSwwQkFBMEIsRUFBRSxHQUFHLEVBQUUsa0JBQWtCO1lBQ25ELFVBQVUsRUFBRSxlQUFlLEtBQUssQ0FBQyxJQUFJLEVBQUU7WUFDdkMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1NBQ3BCLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTSxpQkFBaUI7UUFDdEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQy9CLHdCQUFVLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxLQUFLLENBQUMsQ0FDOUQsQ0FBQztJQUNKLENBQUM7O0FBOUJILHdDQStCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIElVc2VyUG9vbCxcbiAgSVVzZXJQb29sUmVzb3VyY2VTZXJ2ZXIsXG4gIE9BdXRoU2NvcGUsXG4gIFJlc291cmNlU2VydmVyU2NvcGUsXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY29nbml0b1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZVNlcnZlclByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBDb2duaXRvIFVzZXIgUG9vbCB0byB3aGljaCB0aGUgcmVzb3VyY2Ugc2VydmVyIHdpbGwgYmUgYWRkZWQuXG4gICAqL1xuICByZWFkb25seSB1c2VyUG9vbDogSVVzZXJQb29sO1xuXG4gIC8qKlxuICAgKiBUaGUgZnVsbHkgcXVhbGlmaWVkIGRvbWFpbiBuYW1lIChGUUROKSB1c2VkIGFzIHRoZSBpZGVudGlmaWVyIGZvciB0aGUgcmVzb3VyY2Ugc2VydmVyLlxuICAgKi9cbiAgcmVhZG9ubHkgZnFkbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCBjdXN0b20gc2NvcGVzIHRvIGRlZmluZSBmb3IgdGhlIHJlc291cmNlIHNlcnZlci5cbiAgICogSWYgbm90IHByb3ZpZGVkLCBkZWZhdWx0IHNjb3BlcyBmb3IgXCJyZWFkX2FwaVwiIGFuZCBcIndyaXRlX2FwaVwiIHdpbGwgYmUgY3JlYXRlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBEZWZhdWx0IHNjb3BlcyBmb3IgXCJyZWFkX2FwaVwiIGFuZCBcIndyaXRlX2FwaVwiIGFyZSB1c2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgc2NvcGVzPzogQXJyYXk8UmVzb3VyY2VTZXJ2ZXJTY29wZT47XG59XG5cbi8qKlxuICogQSBjb25zdHJ1Y3QgdGhhdCBjcmVhdGVzIGEgQ29nbml0byBSZXNvdXJjZSBTZXJ2ZXIgZm9yIG1hbmFnaW5nIE9BdXRoIHNjb3Blcy5cbiAqXG4gKiBUaGlzIGNvbnN0cnVjdDpcbiAqIC0gQWRkcyBhIHJlc291cmNlIHNlcnZlciB0byB0aGUgc3BlY2lmaWVkIENvZ25pdG8gVXNlciBQb29sLlxuICogLSBEZWZpbmVzIE9BdXRoIHNjb3BlcyBmb3IgdGhlIHJlc291cmNlIHNlcnZlciwgZWl0aGVyIHVzaW5nIHByb3ZpZGVkIGN1c3RvbSBzY29wZXNcbiAqICAgb3IgZGVmYXVsdGluZyB0byBcInJlYWRfYXBpXCIgYW5kIFwid3JpdGVfYXBpXCIgc2NvcGVzLlxuICogLSBQcm92aWRlcyBhIG1ldGhvZCB0byBnZW5lcmF0ZSBPQXV0aFNjb3BlIG9iamVjdHMgZm9yIHVzZSBpbiBBUEkgR2F0ZXdheS5cbiAqL1xuZXhwb3J0IGNsYXNzIFJlc291cmNlU2VydmVyIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIHJlc291cmNlU2VydmVySW5zdGFuY2U6IElVc2VyUG9vbFJlc291cmNlU2VydmVyO1xuICBwcml2YXRlIHNjb3BlczogQXJyYXk8UmVzb3VyY2VTZXJ2ZXJTY29wZT47XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBSZXNvdXJjZVNlcnZlclByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICB0aGlzLnNjb3BlcyA9IHByb3BzLnNjb3BlcyA/PyBbXG4gICAgICBuZXcgUmVzb3VyY2VTZXJ2ZXJTY29wZSh7XG4gICAgICAgIHNjb3BlTmFtZTogXCJyZWFkX2FwaVwiLFxuICAgICAgICBzY29wZURlc2NyaXB0aW9uOiBcIlJFU1QgQVBJIHJlYWQgYWNjZXNzIHNjb3BlXCIsXG4gICAgICB9KSxcbiAgICAgIG5ldyBSZXNvdXJjZVNlcnZlclNjb3BlKHtcbiAgICAgICAgc2NvcGVOYW1lOiBcIndyaXRlX2FwaVwiLFxuICAgICAgICBzY29wZURlc2NyaXB0aW9uOiBcIlJFU1QgQVBJIHdyaXRlIGFjY2VzcyBzY29wZVwiLFxuICAgICAgfSksXG4gICAgXTtcblxuICAgIHRoaXMucmVzb3VyY2VTZXJ2ZXJJbnN0YW5jZSA9IHByb3BzLnVzZXJQb29sLmFkZFJlc291cmNlU2VydmVyKFxuICAgICAgXCJSRVNUQVBJUmVzb3VyY2VTZXJ2ZXJcIixcbiAgICAgIHtcbiAgICAgICAgdXNlclBvb2xSZXNvdXJjZVNlcnZlck5hbWU6IGAke2lkfS1yZXNvdXJjZS1zZXJ2ZXJgLFxuICAgICAgICBpZGVudGlmaWVyOiBgaHR0cHM6Ly9hcGkuJHtwcm9wcy5mcWRufWAsXG4gICAgICAgIHNjb3BlczogdGhpcy5zY29wZXMsXG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlT0F1dGhTY29wZXMoKTogT0F1dGhTY29wZVtdIHtcbiAgICByZXR1cm4gdGhpcy5zY29wZXMubWFwKChzY29wZSkgPT5cbiAgICAgIE9BdXRoU2NvcGUucmVzb3VyY2VTZXJ2ZXIodGhpcy5yZXNvdXJjZVNlcnZlckluc3RhbmNlLCBzY29wZSksXG4gICAgKTtcbiAgfVxufVxuIl19
|
package/lib/platform/Vpc.js
CHANGED
|
@@ -71,7 +71,7 @@ class Vpc extends constructs_1.Construct {
|
|
|
71
71
|
}
|
|
72
72
|
exports.Vpc = Vpc;
|
|
73
73
|
_a = JSII_RTTI_SYMBOL_1;
|
|
74
|
-
Vpc[_a] = { fqn: "@btc-embedded/cdk-extensions.Vpc", version: "0.14.
|
|
74
|
+
Vpc[_a] = { fqn: "@btc-embedded/cdk-extensions.Vpc", version: "0.14.14" };
|
|
75
75
|
Vpc.clusterVpcIdParameter = new utils_1.StackParameter({
|
|
76
76
|
prefix: "cluster",
|
|
77
77
|
name: "Cluster VPC ID",
|
package/lib/platform/index.d.ts
CHANGED
|
@@ -2,10 +2,11 @@ export * from "./ApiGateway";
|
|
|
2
2
|
export * from "./ApiGatewayV2";
|
|
3
3
|
export * from "./ApplicationLoadBalancer";
|
|
4
4
|
export * from "./ApplicationLoadBalancerV2";
|
|
5
|
+
export * from "./BTCLogGroup";
|
|
6
|
+
export * from "./CognitoUserPool";
|
|
5
7
|
export * from "./DefaultUserPoolClients";
|
|
6
|
-
export * from "./ResourceServer";
|
|
7
8
|
export * from "./DocumentDB";
|
|
9
|
+
export * from "./EfsFileSystem";
|
|
8
10
|
export * from "./PrivateDnsNamespace";
|
|
11
|
+
export * from "./ResourceServer";
|
|
9
12
|
export * from "./Vpc";
|
|
10
|
-
export * from "./CognitoUserPool";
|
|
11
|
-
export * from "./BTCLogGroup";
|
package/lib/platform/index.js
CHANGED
|
@@ -18,11 +18,12 @@ __exportStar(require("./ApiGateway"), exports);
|
|
|
18
18
|
__exportStar(require("./ApiGatewayV2"), exports);
|
|
19
19
|
__exportStar(require("./ApplicationLoadBalancer"), exports);
|
|
20
20
|
__exportStar(require("./ApplicationLoadBalancerV2"), exports);
|
|
21
|
+
__exportStar(require("./BTCLogGroup"), exports);
|
|
22
|
+
__exportStar(require("./CognitoUserPool"), exports);
|
|
21
23
|
__exportStar(require("./DefaultUserPoolClients"), exports);
|
|
22
|
-
__exportStar(require("./ResourceServer"), exports);
|
|
23
24
|
__exportStar(require("./DocumentDB"), exports);
|
|
25
|
+
__exportStar(require("./EfsFileSystem"), exports);
|
|
24
26
|
__exportStar(require("./PrivateDnsNamespace"), exports);
|
|
27
|
+
__exportStar(require("./ResourceServer"), exports);
|
|
25
28
|
__exportStar(require("./Vpc"), exports);
|
|
26
|
-
|
|
27
|
-
__exportStar(require("./BTCLogGroup"), exports);
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGxhdGZvcm0vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUE2QjtBQUM3QixpREFBK0I7QUFDL0IsNERBQTBDO0FBQzFDLDhEQUE0QztBQUM1QywyREFBeUM7QUFDekMsbURBQWlDO0FBQ2pDLCtDQUE2QjtBQUM3Qix3REFBc0M7QUFDdEMsd0NBQXNCO0FBQ3RCLG9EQUFrQztBQUNsQyxnREFBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9BcGlHYXRld2F5XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9BcGlHYXRld2F5VjJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0FwcGxpY2F0aW9uTG9hZEJhbGFuY2VyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9BcHBsaWNhdGlvbkxvYWRCYWxhbmNlclYyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9EZWZhdWx0VXNlclBvb2xDbGllbnRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9SZXNvdXJjZVNlcnZlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vRG9jdW1lbnREQlwiO1xuZXhwb3J0ICogZnJvbSBcIi4vUHJpdmF0ZURuc05hbWVzcGFjZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vVnBjXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9Db2duaXRvVXNlclBvb2xcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0JUQ0xvZ0dyb3VwXCI7XG4iXX0=
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGxhdGZvcm0vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUE2QjtBQUM3QixpREFBK0I7QUFDL0IsNERBQTBDO0FBQzFDLDhEQUE0QztBQUM1QyxnREFBOEI7QUFDOUIsb0RBQWtDO0FBQ2xDLDJEQUF5QztBQUN6QywrQ0FBNkI7QUFDN0Isa0RBQWdDO0FBQ2hDLHdEQUFzQztBQUN0QyxtREFBaUM7QUFDakMsd0NBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vQXBpR2F0ZXdheVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vQXBpR2F0ZXdheVYyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9BcHBsaWNhdGlvbkxvYWRCYWxhbmNlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJWMlwiO1xuZXhwb3J0ICogZnJvbSBcIi4vQlRDTG9nR3JvdXBcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0NvZ25pdG9Vc2VyUG9vbFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vRGVmYXVsdFVzZXJQb29sQ2xpZW50c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vRG9jdW1lbnREQlwiO1xuZXhwb3J0ICogZnJvbSBcIi4vRWZzRmlsZVN5c3RlbVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vUHJpdmF0ZURuc05hbWVzcGFjZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vUmVzb3VyY2VTZXJ2ZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1ZwY1wiO1xuIl19
|
|
@@ -64,5 +64,5 @@ class StackParameter {
|
|
|
64
64
|
}
|
|
65
65
|
exports.StackParameter = StackParameter;
|
|
66
66
|
_a = JSII_RTTI_SYMBOL_1;
|
|
67
|
-
StackParameter[_a] = { fqn: "@btc-embedded/cdk-extensions.StackParameter", version: "0.14.
|
|
67
|
+
StackParameter[_a] = { fqn: "@btc-embedded/cdk-extensions.StackParameter", version: "0.14.14" };
|
|
68
68
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RhY2tQYXJhbWV0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvU3RhY2tQYXJhbWV0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FBbUQ7QUFFbkQscUNBQThDO0FBRTlDLFNBQVMsbUJBQW1CLENBQzFCLE9BQTJCLEVBQzNCLEdBQUcsUUFBa0I7SUFFckIsTUFBTSxpQkFBaUIsR0FBRyxRQUFRO1NBQy9CLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7U0FDM0IsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFO1FBQ2QsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLElBQUEsa0JBQVMsRUFBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNsQyxNQUFNLElBQUksS0FBSyxDQUNiLFdBQVcsQ0FBQywrQkFBK0IsSUFBQSxrQkFBUyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQzVELENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDLENBQUMsQ0FBQztJQUVMLElBQUksaUJBQWlCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMsbURBQW1ELENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsK0VBQStFO0lBQy9FLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUN2QyxPQUFPLElBQUksT0FBTyxHQUFHLENBQUMsSUFBSSxHQUFHLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVyRSxPQUFPLFFBQVE7U0FDWixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDakUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ2YsQ0FBQztBQXNDRDs7O0dBR0c7QUFDSCxNQUFhLGNBQWM7SUFJekI7Ozs7T0FJRztJQUNILFlBQVksT0FBOEI7UUFDeEMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFDaEMsTUFBTSxDQUFDLEdBQUcsSUFBQSxnQkFBTyxFQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRTVCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLFNBQWlCO1FBQzdCLE9BQU8sZ0JBQUUsQ0FBQyxXQUFXLENBQ25CLG1CQUFtQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FDdkUsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLEtBQWdCLEVBQUUsS0FBYTtRQUMzQyxNQUFNLFVBQVUsR0FBRyxtQkFBbUIsQ0FDcEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQ3BCLG1CQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsRUFDekIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUNqQixDQUFDO1FBRUYsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksR0FBRyxVQUFVLFFBQVEsQ0FBQztRQUU3RCxPQUFPLElBQUksdUJBQVMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFO1lBQ3JDLFVBQVU7WUFDVixLQUFLO1lBQ0wsV0FBVyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVztTQUN0QyxDQUFDLENBQUM7SUFDTCxDQUFDOztBQS9DSCx3Q0FnREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZm5PdXRwdXQsIEZuLCBTdGFjayB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IGlzQXJyYXksIGtlYmFiQ2FzZSB9IGZyb20gXCIuL2NvbW1vblwiO1xuXG5mdW5jdGlvbiBjcmVhdGVLZXlJZGVudGlmaWVyKFxuICB2ZXJzaW9uOiBudW1iZXIgfCB1bmRlZmluZWQsXG4gIC4uLnByZWZpeGVzOiBzdHJpbmdbXVxuKSB7XG4gIGNvbnN0IHZhbGlkYXRlZFByZWZpeGVzID0gcHJlZml4ZXNcbiAgICAuZmlsdGVyKChwKSA9PiBwLmxlbmd0aCA+IDApXG4gICAgLm1hcCgocCwgaWR4KSA9PiB7XG4gICAgICBpZiAoaWR4ID4gMCAmJiBrZWJhYkNhc2UocCkgIT09IHApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBwcmVmaXggJyR7cH0nIG11c3QgYmUga2ViYWItY2FzZSAobGlrZSAnJHtrZWJhYkNhc2UocCl9JylgLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHA7XG4gICAgfSk7XG5cbiAgaWYgKHZhbGlkYXRlZFByZWZpeGVzLmxlbmd0aCA8IDEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGtleSBtdXN0IGNvbnNpc3Qgb2YgYXQgbGVhc3Qgb25lIG5vbi1lbXB0eSBwcmVmaXhgKTtcbiAgfVxuXG4gIC8vIHRoZSB2ZXJzaW9uIHN1ZmZpeCBzaG91bGQgYmUgZWl0aGVyIGF0IGZpcnN0IG9yIDJuZCBwcmVmaXggYW5kIG9ubHkgaWYgdiA+IDFcbiAgY29uc3Qgc2hvdWxkR2V0VmVyc2lvbiA9IChpZHg6IG51bWJlcikgPT5cbiAgICB2ZXJzaW9uICYmIHZlcnNpb24gPiAxICYmIGlkeCA9PT0gTWF0aC5taW4ocHJlZml4ZXMubGVuZ3RoLCAyKSAtIDE7XG5cbiAgcmV0dXJuIHByZWZpeGVzXG4gICAgLm1hcCgocCwgaWR4KSA9PiAoc2hvdWxkR2V0VmVyc2lvbihpZHgpID8gYCR7cH0tdiR7dmVyc2lvbn1gIDogcCkpXG4gICAgLmpvaW4oXCI6XCIpO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGNyZWF0aW5nIGEgU3RhY2tQYXJhbWV0ZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RhY2tQYXJhbWV0ZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBwcmVmaXgoZXMpIGZvciB0aGUgc3RhY2sgcGFyYW1ldGVyLlxuICAgKlxuICAgKiBQcmVmaXhlcyBtdXN0IGJlIGtlYmFiLWNhc2UgKGxvd2VyY2FzZSBsZXR0ZXJzLCBudW1iZXJzLCBhbmQgaHlwaGVucykuIElmXG4gICAqIG11bHRpcGxlIHByZWZpeGVzIGFyZSBwcm92aWRlZCwgdGhleSB3aWxsIGJlIGpvaW5lZCB3aXRoIGNvbG9ucy5cbiAgICovXG4gIHJlYWRvbmx5IHByZWZpeDogc3RyaW5nIHwgc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBrZXkgZm9yIHRoZSBzdGFjayBwYXJhbWV0ZXIuXG4gICAqL1xuICByZWFkb25seSBrZXk6IHN0cmluZztcblxuICAvKipcbiAgICogTmFtZSB1c2VkIGZvciB0aGUgZXhwb3J0IGNvbnN0cnVjdCBsb2dpY2FsIElELlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVmVyc2lvbiBmb3IgdGhlIHN0YWNrIHBhcmFtZXRlci5cbiAgICpcbiAgICogSWYgcHJvdmlkZWQgYW5kIGdyZWF0ZXIgdGhhbiAxLCB0aGUgdmVyc2lvbiB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZVxuICAgKiBwYXJhbWV0ZXIgbmFtZSBkdXJpbmcgZXhwb3J0IGFuZCBpbXBvcnQgYXMgYC12e3ZlcnNpb259YC5cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb24/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIERlc2NyaXB0aW9uIGZvciB0aGUgZXhwb3J0ZWQgcGFyYW1ldGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvdmlkZXMgbWVhbnMgdG8gZXhwb3J0IGFuZCBpbXBvcnQgc3RhY2sgcGFyYW1ldGVycy5cbiAqXG4gKi9cbmV4cG9ydCBjbGFzcyBTdGFja1BhcmFtZXRlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogU3RhY2tQYXJhbWV0ZXJPcHRpb25zO1xuICBwcml2YXRlIHJlYWRvbmx5IHByZWZpeGVzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQ29uc3RydWN0IGEgc3RhY2sgcGFyYW1ldGVyLlxuICAgKlxuICAgKiBUaGUgc3RhY2sgcGFyYW1ldGVyIGlzIGNoYXJhY3Rlcml6ZWQgYnkgYSBwcmVmaXgsIGEga2V5LCBhIGRlc2NyaXB0aXZlIG5hbWUsIGFuZCBhbiBvcHRpb25hbCB2ZXJzaW9uLlxuICAgKi9cbiAgY29uc3RydWN0b3Iob3B0aW9uczogU3RhY2tQYXJhbWV0ZXJPcHRpb25zKSB7XG4gICAgY29uc3QgeyBwcmVmaXgsIGtleSB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBwID0gaXNBcnJheShwcmVmaXgpID8gcHJlZml4IDogW3ByZWZpeF07XG4gICAgdGhpcy5wcmVmaXhlcyA9IFsuLi5wLCBrZXldO1xuXG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnQgdGhlIHBhcmFtZXRlciBhcyB7c3RhY2tOYW1lfTp7cHJlZml4fS12e3ZlcnNpb259OntrZXl9LlxuICAgKlxuICAgKiAtdnt2ZXJzaW9ufSBpcyBvbmx5IGVtaXR0ZWQgd2hlbiB0aGUgdmVyc2lvbiBpcyBncmVhdGVyIHRoYW4gMS5cbiAgICovXG4gIHB1YmxpYyBpbXBvcnQoc3RhY2tOYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gRm4uaW1wb3J0VmFsdWUoXG4gICAgICBjcmVhdGVLZXlJZGVudGlmaWVyKHRoaXMub3B0aW9ucy52ZXJzaW9uLCBzdGFja05hbWUsIC4uLnRoaXMucHJlZml4ZXMpLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogRXhwb3J0IHRoZSBwYXJhbWV0ZXIgYXMge3N0YWNrTmFtZX06e3ByZWZpeH0tdnt2ZXJzaW9ufTp7a2V5fS5cbiAgICpcbiAgICogLXZ7dmVyc2lvbn0gaXMgb25seSBlbWl0dGVkIHdoZW4gdGhlIHZlcnNpb24gaXMgZ3JlYXRlciB0aGFuIDEuXG4gICAqL1xuICBwdWJsaWMgZXhwb3J0KHNjb3BlOiBDb25zdHJ1Y3QsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBleHBvcnROYW1lID0gY3JlYXRlS2V5SWRlbnRpZmllcihcbiAgICAgIHRoaXMub3B0aW9ucy52ZXJzaW9uLFxuICAgICAgU3RhY2sub2Yoc2NvcGUpLnN0YWNrTmFtZSxcbiAgICAgIC4uLnRoaXMucHJlZml4ZXMsXG4gICAgKTtcblxuICAgIGNvbnN0IGxvZ2ljYWxJZCA9IHRoaXMub3B0aW9ucy5uYW1lID8/IGAke2V4cG9ydE5hbWV9T3V0cHV0YDtcblxuICAgIHJldHVybiBuZXcgQ2ZuT3V0cHV0KHNjb3BlLCBsb2dpY2FsSWQsIHtcbiAgICAgIGV4cG9ydE5hbWUsXG4gICAgICB2YWx1ZSxcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLm9wdGlvbnMuZGVzY3JpcHRpb24sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
package/package.json
CHANGED
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
},
|
|
34
34
|
"author": {
|
|
35
35
|
"name": "BTC Embedded Systems AG",
|
|
36
|
-
"url": "https://btc-embedded.com",
|
|
36
|
+
"url": "https://www.btc-embedded.com",
|
|
37
37
|
"organization": true
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
],
|
|
84
84
|
"main": "lib/index.js",
|
|
85
85
|
"license": "Apache-2.0",
|
|
86
|
-
"version": "0.14.
|
|
86
|
+
"version": "0.14.14",
|
|
87
87
|
"jest": {
|
|
88
88
|
"coverageProvider": "v8",
|
|
89
89
|
"maxWorkers": 4,
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
apiVersion: backstage.io/v1alpha1
|
|
2
|
-
kind: Component
|
|
3
|
-
metadata:
|
|
4
|
-
name: "cdk-extensions"
|
|
5
|
-
title: "cdk-extensions"
|
|
6
|
-
description: |
|
|
7
|
-
The CDK extensions are a collection of reusable higher-level AWS CDK constructs and utilities designed to accelerate AWS development.
|
|
8
|
-
They introduce patterns, and integrations that simplify defining, composing, and maintaining cloud architectures.
|
|
9
|
-
Ideal for teams standardizing best practices across multiple stacks and applications provided by the internal CAT team.
|
|
10
|
-
tags:
|
|
11
|
-
- aws
|
|
12
|
-
- cdk
|
|
13
|
-
annotations:
|
|
14
|
-
backstage.io/adr-location: /docs/adrs
|
|
15
|
-
backstage.io/techdocs-ref: dir:../
|
|
16
|
-
spec:
|
|
17
|
-
type: service
|
|
18
|
-
owner: group:default/cloud_architecture_technologies
|
|
19
|
-
lifecycle: production
|
package/.gitlab-ci.yml
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
stages:
|
|
2
|
-
- build
|
|
3
|
-
- release
|
|
4
|
-
- publish
|
|
5
|
-
|
|
6
|
-
.rule-merge-result:
|
|
7
|
-
rules:
|
|
8
|
-
- if: $CI_MERGE_REQUEST_EVENT_TYPE =="merged_result" && $CI_MERGE_REQUEST_TARGET_BRANCH_PROTECTED == "true"
|
|
9
|
-
|
|
10
|
-
.rule-merge-event:
|
|
11
|
-
rules:
|
|
12
|
-
- if: $CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_PROTECTED == "true"
|
|
13
|
-
|
|
14
|
-
default:
|
|
15
|
-
image: harbor.btc-es.local/base-images/build-agent:1.20-node-22.9.0-java-21
|
|
16
|
-
before_script:
|
|
17
|
-
- yarn install
|
|
18
|
-
cache:
|
|
19
|
-
key: extdep_${CI_COMMIT_REF_SLUG}
|
|
20
|
-
paths:
|
|
21
|
-
- node_modules/
|
|
22
|
-
|
|
23
|
-
build:
|
|
24
|
-
stage: build
|
|
25
|
-
tags: [large]
|
|
26
|
-
extends:
|
|
27
|
-
- .rule-merge-result
|
|
28
|
-
- .rule-merge-event
|
|
29
|
-
script:
|
|
30
|
-
- yarn install
|
|
31
|
-
- yarn run build
|
|
32
|
-
- git diff --ignore-space-at-eol --exit-code
|
|
33
|
-
|
|
34
|
-
release:
|
|
35
|
-
stage: release
|
|
36
|
-
tags: [large]
|
|
37
|
-
variables:
|
|
38
|
-
GIT_STRATEGY: none
|
|
39
|
-
before_script:
|
|
40
|
-
- temp_checkout_dir="$(mktemp -d)"
|
|
41
|
-
- git clone https://gitlab-bot:$GITLAB_BOT_TOKEN@gitlab.btc-es.local/central/cat/cdk-extensions.git $temp_checkout_dir
|
|
42
|
-
- cd $temp_checkout_dir
|
|
43
|
-
- git config user.name "Gitlab Bot"
|
|
44
|
-
- git config user.email "gitlab-bot@$CI_SERVER_FQDN"
|
|
45
|
-
script:
|
|
46
|
-
- git checkout $CI_COMMIT_BRANCH
|
|
47
|
-
- yarn install
|
|
48
|
-
- npx projen release
|
|
49
|
-
- mv $temp_checkout_dir/dist $CI_PROJECT_DIR/dist
|
|
50
|
-
rules:
|
|
51
|
-
- if: $CI_COMMIT_MESSAGE !~ /^chore\(release\):.*/ && $CI_COMMIT_REF_PROTECTED == "true"
|
|
52
|
-
|
|
53
|
-
artifacts:
|
|
54
|
-
paths:
|
|
55
|
-
- dist/
|
|
56
|
-
|
|
57
|
-
publish:
|
|
58
|
-
stage: publish
|
|
59
|
-
script:
|
|
60
|
-
- echo "//registry.npmjs.org/:_authToken=${NPM_BTC_ES_TOKEN}" > .npmrc
|
|
61
|
-
- npm whoami
|
|
62
|
-
- npm publish dist/js/cdk-extensions@*.jsii.tgz
|
|
63
|
-
rules:
|
|
64
|
-
- if: $CI_COMMIT_MESSAGE !~ /^chore\(release\):.*/ && $CI_COMMIT_REF_PROTECTED == "true"
|
|
65
|
-
resource_group: projen_release
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
# Support for OAuth2.0 Authentication in ALB/API Gateway HTTP and REST APIs
|
|
2
|
-
|
|
3
|
-
This document describes the overall design and implementation of the available components for deploying protected APIs via API Gateway and frontends via ALB based on Cognito User Pools with OAuth2.0 and OIDC protocols.
|
|
4
|
-
|
|
5
|
-
## General Requirements
|
|
6
|
-
|
|
7
|
-
- Attach to existing Cognito user pool
|
|
8
|
-
- Provide means to deploy REST and HTTP APIs with authorization via access tokens
|
|
9
|
-
- Support exposing a frontend application hosted on ECS with an ALB performing authentication
|
|
10
|
-
- Ensure the frontend client is able to access the API(s) deployed within the application
|
|
11
|
-
- Provide a unified solution for the different authorization mechanisms necessary for both HTTP and REST APIs
|
|
12
|
-
- Allow to use multiple subdomains to expose APIs of the application
|
|
13
|
-
|
|
14
|
-
## Problem Statement
|
|
15
|
-
|
|
16
|
-
- API GW REST APIs and HTTP APIs have different authorization mechanisms
|
|
17
|
-
- `COGNITO_USER_POOLS` authorizer (REST API) can validate ODIC tokens (ID token or access token)
|
|
18
|
-
- scopes MUST be added to a route because otherwise the authorizer assumes an ID token instead of an access token
|
|
19
|
-
- JWT Authorizer (HTTP API) implements access token validation
|
|
20
|
-
- checks that all scopes attached to a route are listed in the token
|
|
21
|
-
- checks that "aud" claim matches one of the configured user pool app clients
|
|
22
|
-
- Lambda Authorizers (REST API + HTTP API) allow custom auth scheme
|
|
23
|
-
- Requires custom implementation
|
|
24
|
-
|
|
25
|
-
We don't want to implement custom auth checks. In order to use the built-in authorizers (`COGNITO_USER_POOLS` and JWT Authorizer), we therefore must add scopes to the API endpoints.
|
|
26
|
-
|
|
27
|
-
Currently there is no use-case regarding scopes in any application that uses our CDK extensions. We therefore must decide how to introduce scopes to the CDK constructs library in order to enable REST API usage while still being able to let the users adjust the scope usage in the future.
|
|
28
|
-
|
|
29
|
-
## Proposed Solution
|
|
30
|
-
|
|
31
|
-
The CDK library has separate components for the base platform and applications. The functionality is split accordingly to allow instantiating application-global constructs once in the base platfom and per-application/microservice constructs in the applications. The default solution offers scopes to perform a basic distinction between read/write operations.
|
|
32
|
-
|
|
33
|
-
### Base Platform Constructs
|
|
34
|
-
|
|
35
|
-
- `CognitoUserPool` construct
|
|
36
|
-
- Exports the cognito user pool id such that it can be imported by the application CDK
|
|
37
|
-
- For now, this construct requires a user pool id as argument, in the future this can be extended to roll out the cognito user pool resource
|
|
38
|
-
- `ResourceServer` construct
|
|
39
|
-
- identifier (will be used as scope prefix): `https://api.<FQDN>/`
|
|
40
|
-
- scopes: `read_api` and `write_api`
|
|
41
|
-
- `AoiUserPoolClient` construct
|
|
42
|
-
- User pool client for machine access to (REST) APIs
|
|
43
|
-
- adds the scopes from `ResourceServer`
|
|
44
|
-
- `ApplicationUserPoolClient` construct
|
|
45
|
-
- User pool client for the web application/frontend
|
|
46
|
-
- adds the scopes from `ResourceServer`
|
|
47
|
-
- can be configured with additional callback URLs
|
|
48
|
-
- `ApplicationLoadBalancerV2` construct
|
|
49
|
-
- creates the A record and Certificate for the FQDN
|
|
50
|
-
- instantiates the (internet-facing) ALB, sets up the listener rule
|
|
51
|
-
- adds a target group with empty list of targets; the target group ID is exposed as output parameter
|
|
52
|
-
- `ApiGatewayV2`
|
|
53
|
-
- creates a VPC Link and sets up the Security Group for API GW access to the VPC
|
|
54
|
-
|
|
55
|
-
### Application-level constructs
|
|
56
|
-
|
|
57
|
-
- `ApplicationLoadBalancerExtensionV2`
|
|
58
|
-
- adds the service as target to the ALB target group exported by the base platform ALB construct
|
|
59
|
-
- `SecureRestApiV2` Construct
|
|
60
|
-
- sets up the custom domain for the API
|
|
61
|
-
- creates a `COGNITO_USER_POOLS` authorizer construct
|
|
62
|
-
- use the existing cognito user pool
|
|
63
|
-
- token source: `Authorization`
|
|
64
|
-
- wraps RESTApi `addMethod()` method to ensure scopes are added for calls to root.addMethod()
|
|
65
|
-
- uses default scopes if not provided
|
|
66
|
-
- for each REST method, add the `COGNITO_USER_POOLS` authorizer
|
|
67
|
-
- for `POST`, `PUT`, `DELETE`, `PATCH`, add scope `https://api.<FQDN>/write_api`
|
|
68
|
-
- for `GET`, `HEAD`, `OPTIONS` add scope names `https://api.<FQDN>/read_api` and `https://api.<FQDN>/write_api`
|
|
69
|
-
- `HTTPApiExtension` (previously: `ApiGatewayExtension`)
|
|
70
|
-
- sets up subdomain for API
|
|
71
|
-
- allocates HTTP API
|
|
72
|
-
- sets up HTTP authorizer for HTTP API
|
|
73
|
-
- adds read+write scopes to `HttpRoute` (use default scopes if not provided)
|
|
74
|
-
- uses an HTTP service discovery integration to attach a service to the HTTP API
|
|
75
|
-
- adjusts security group to allow traffic to service
|
|
76
|
-
|
|
77
|
-
The JWT Authorizer must refer to all user pool clients which should have access to the HTTP API. The `COGNITO_USER_POOLS` authorizer instead only refers to the user pool and performs authorization checks based on the scopes. The JWT Authrorizer must be constructed in the context of an HTTP API. Therefore we must create the authorizer in the application-level construct and cannot provide it in the base platform components.
|