@aws-cdk/aws-kinesisanalytics-flink-alpha 2.0.0-rc.23

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.
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Application = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const iam = require("aws-cdk-lib/aws-iam");
7
+ const aws_kinesisanalytics_1 = require("aws-cdk-lib/aws-kinesisanalytics");
8
+ const logs = require("aws-cdk-lib/aws-logs");
9
+ const core = require("aws-cdk-lib");
10
+ const environment_properties_1 = require("./private/environment-properties");
11
+ const flink_application_configuration_1 = require("./private/flink-application-configuration");
12
+ const validation_1 = require("./private/validation");
13
+ /**
14
+ * Implements the functionality shared between CDK created and imported
15
+ * IApplications.
16
+ */
17
+ class ApplicationBase extends core.Resource {
18
+ /**
19
+ * (experimental) Implement the convenience {@link IApplication.addToPrincipalPolicy} method.
20
+ *
21
+ * @experimental
22
+ */
23
+ addToRolePolicy(policyStatement) {
24
+ if (this.role) {
25
+ this.role.addToPrincipalPolicy(policyStatement);
26
+ return true;
27
+ }
28
+ return false;
29
+ }
30
+ }
31
+ /**
32
+ * An imported Flink application.
33
+ */
34
+ class Import extends ApplicationBase {
35
+ constructor(scope, id, attrs) {
36
+ super(scope, id);
37
+ // Imported applications have no associated role or grantPrincipal
38
+ this.grantPrincipal = new iam.UnknownPrincipal({ resource: this });
39
+ this.role = undefined;
40
+ this.applicationArn = attrs.applicationArn;
41
+ this.applicationName = attrs.applicationName;
42
+ }
43
+ }
44
+ /**
45
+ * (experimental) The L2 construct for Flink Kinesis Data Applications.
46
+ *
47
+ * @experimental
48
+ * @resource AWS::KinesisAnalyticsV2::Application
49
+ */
50
+ class Application extends ApplicationBase {
51
+ /**
52
+ * @experimental
53
+ */
54
+ constructor(scope, id, props) {
55
+ var _b, _c, _d;
56
+ super(scope, id, { physicalName: props.applicationName });
57
+ validation_1.validateFlinkApplicationProps(props);
58
+ this.role = (_b = props.role) !== null && _b !== void 0 ? _b : new iam.Role(this, 'Role', {
59
+ assumedBy: new iam.ServicePrincipal('kinesisanalytics.amazonaws.com'),
60
+ });
61
+ this.grantPrincipal = this.role;
62
+ // Permit metric publishing to CloudWatch
63
+ this.role.addToPrincipalPolicy(new iam.PolicyStatement({
64
+ actions: ['cloudwatch:PutMetricData'],
65
+ resources: ['*'],
66
+ }));
67
+ const code = props.code.bind(this);
68
+ code.bucket.grantRead(this);
69
+ const resource = new aws_kinesisanalytics_1.CfnApplicationV2(this, 'Resource', {
70
+ applicationName: props.applicationName,
71
+ runtimeEnvironment: props.runtime.value,
72
+ serviceExecutionRole: this.role.roleArn,
73
+ applicationConfiguration: {
74
+ ...code.applicationCodeConfigurationProperty,
75
+ environmentProperties: environment_properties_1.environmentProperties(props.propertyGroups),
76
+ flinkApplicationConfiguration: flink_application_configuration_1.flinkApplicationConfiguration({
77
+ checkpointingEnabled: props.checkpointingEnabled,
78
+ checkpointInterval: props.checkpointInterval,
79
+ minPauseBetweenCheckpoints: props.minPauseBetweenCheckpoints,
80
+ logLevel: props.logLevel,
81
+ metricsLevel: props.metricsLevel,
82
+ autoScalingEnabled: props.autoScalingEnabled,
83
+ parallelism: props.parallelism,
84
+ parallelismPerKpu: props.parallelismPerKpu,
85
+ }),
86
+ applicationSnapshotConfiguration: {
87
+ snapshotsEnabled: (_c = props.snapshotsEnabled) !== null && _c !== void 0 ? _c : true,
88
+ },
89
+ },
90
+ });
91
+ resource.node.addDependency(this.role);
92
+ const logGroup = (_d = props.logGroup) !== null && _d !== void 0 ? _d : new logs.LogGroup(this, 'LogGroup');
93
+ const logStream = new logs.LogStream(this, 'LogStream', { logGroup });
94
+ /* Permit logging */
95
+ this.role.addToPrincipalPolicy(new iam.PolicyStatement({
96
+ actions: ['logs:DescribeLogGroups'],
97
+ resources: [
98
+ core.Stack.of(this).formatArn({
99
+ service: 'logs',
100
+ resource: 'log-group',
101
+ sep: ':',
102
+ resourceName: '*',
103
+ }),
104
+ ],
105
+ }));
106
+ this.role.addToPrincipalPolicy(new iam.PolicyStatement({
107
+ actions: ['logs:DescribeLogStreams'],
108
+ resources: [logGroup.logGroupArn],
109
+ }));
110
+ const logStreamArn = `arn:${core.Aws.PARTITION}:logs:${core.Aws.REGION}:${core.Aws.ACCOUNT_ID}:log-group:${logGroup.logGroupName}:log-stream:${logStream.logStreamName}`;
111
+ this.role.addToPrincipalPolicy(new iam.PolicyStatement({
112
+ actions: ['logs:PutLogEvents'],
113
+ resources: [logStreamArn],
114
+ }));
115
+ new aws_kinesisanalytics_1.CfnApplicationCloudWatchLoggingOptionV2(this, 'LoggingOption', {
116
+ applicationName: resource.ref,
117
+ cloudWatchLoggingOption: {
118
+ logStreamArn,
119
+ },
120
+ });
121
+ this.applicationName = this.getResourceNameAttribute(resource.ref);
122
+ this.applicationArn = this.getResourceArnAttribute(core.Stack.of(this).formatArn(applicationArnComponents(resource.ref)), applicationArnComponents(this.physicalName));
123
+ resource.applyRemovalPolicy(props.removalPolicy, {
124
+ default: core.RemovalPolicy.DESTROY,
125
+ });
126
+ }
127
+ /**
128
+ * (experimental) Import an existing Flink application defined outside of CDK code by applicationName.
129
+ *
130
+ * @experimental
131
+ */
132
+ static fromApplicationName(scope, id, applicationName) {
133
+ const applicationArn = core.Stack.of(scope).formatArn(applicationArnComponents(applicationName));
134
+ return new Import(scope, id, { applicationArn, applicationName });
135
+ }
136
+ /**
137
+ * (experimental) Import an existing application defined outside of CDK code by applicationArn.
138
+ *
139
+ * @experimental
140
+ */
141
+ static fromApplicationArn(scope, id, applicationArn) {
142
+ const applicationName = core.Stack.of(scope).parseArn(applicationArn).resourceName;
143
+ if (!applicationName) {
144
+ throw new Error(`applicationArn for fromApplicationArn (${applicationArn}) must include resource name`);
145
+ }
146
+ return new Import(scope, id, { applicationArn, applicationName });
147
+ }
148
+ }
149
+ exports.Application = Application;
150
+ _a = JSII_RTTI_SYMBOL_1;
151
+ Application[_a] = { fqn: "@aws-cdk/aws-kinesisanalytics-flink-alpha.Application", version: "2.0.0-rc.23" };
152
+ function applicationArnComponents(resourceName) {
153
+ return {
154
+ service: 'kinesisanalytics',
155
+ resource: 'application',
156
+ resourceName,
157
+ };
158
+ }
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhcHBsaWNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDJDQUEyQztBQUMzQywyRUFBNkc7QUFDN0csNkNBQTZDO0FBQzdDLG9DQUFvQztBQUdwQyw2RUFBeUU7QUFDekUsK0ZBQTBGO0FBQzFGLHFEQUFpRztBQWtCakc7OztHQUdHO0FBQ0gsTUFBZSxlQUFnQixTQUFRLElBQUksQ0FBQyxRQUFROzs7Ozs7SUFTM0MsZUFBZSxDQUFDLGVBQW9DO1FBQ3pELElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDaEQsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGO0FBcUREOztHQUVHO0FBQ0gsTUFBTSxNQUFPLFNBQVEsZUFBZTtJQU1sQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTBEO1FBQ2xHLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsa0VBQWtFO1FBQ2xFLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQztRQUV0QixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUM7UUFDM0MsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFDO0lBQy9DLENBQUM7Q0FDRjs7Ozs7OztBQUdELE1BQWEsV0FBWSxTQUFRLGVBQWU7Ozs7SUEwQjlDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBdUI7O1FBQy9ELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsWUFB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QUFFLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTztTQUNwQyxDQUFDLENBQUM7SUFDTCxDQUFDOzs7Ozs7SUE5R00sTUFBTSxDQUFDLG1CQUFtQixDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLGVBQXVCO1FBQ3JGLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FBQyx3QkFBd0IsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO1FBRWpHLE9BQU8sSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7Ozs7OztJQUdNLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxjQUFzQjtRQUNuRixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUMsWUFBWSxDQUFDO1FBQ25GLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQywwQ0FBMEMsY0FBYyw4QkFBOEIsQ0FBQyxDQUFDO1NBQ3pHO1FBRUQsT0FBTyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7SUFDcEUsQ0FBQzs7QUFoQkgsa0NBaUhDOzs7QUFFRCxTQUFTLHdCQUF3QixDQUFDLFlBQW9CO0lBQ3BELE9BQU87UUFDTCxPQUFPLEVBQUUsa0JBQWtCO1FBQzNCLFFBQVEsRUFBRSxhQUFhO1FBQ3ZCLFlBQVk7S0FDYixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IENmbkFwcGxpY2F0aW9uQ2xvdWRXYXRjaExvZ2dpbmdPcHRpb25WMiwgQ2ZuQXBwbGljYXRpb25WMiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1raW5lc2lzYW5hbHl0aWNzJztcbmltcG9ydCAqIGFzIGxvZ3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0ICogYXMgY29yZSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uQ29kZSB9IGZyb20gJy4vYXBwbGljYXRpb24tY29kZSc7XG5pbXBvcnQgeyBlbnZpcm9ubWVudFByb3BlcnRpZXMgfSBmcm9tICcuL3ByaXZhdGUvZW52aXJvbm1lbnQtcHJvcGVydGllcyc7XG5pbXBvcnQgeyBmbGlua0FwcGxpY2F0aW9uQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vcHJpdmF0ZS9mbGluay1hcHBsaWNhdGlvbi1jb25maWd1cmF0aW9uJztcbmltcG9ydCB7IHZhbGlkYXRlRmxpbmtBcHBsaWNhdGlvblByb3BzIGFzIHZhbGlkYXRlQXBwbGljYXRpb25Qcm9wcyB9IGZyb20gJy4vcHJpdmF0ZS92YWxpZGF0aW9uJztcbmltcG9ydCB7IExvZ0xldmVsLCBNZXRyaWNzTGV2ZWwsIFByb3BlcnR5R3JvdXBzLCBSdW50aW1lIH0gZnJvbSAnLi90eXBlcyc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGludGVyZmFjZSBJQXBwbGljYXRpb24gZXh0ZW5kcyBjb3JlLklSZXNvdXJjZSwgaWFtLklHcmFudGFibGUge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBhcHBsaWNhdGlvbkFybjogc3RyaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgYXBwbGljYXRpb25OYW1lOiBzdHJpbmc7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSByb2xlPzogaWFtLklSb2xlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgYWRkVG9Sb2xlUG9saWN5KHBvbGljeVN0YXRlbWVudDogaWFtLlBvbGljeVN0YXRlbWVudCk6IGJvb2xlYW47XG59XG5cbi8qKlxuICogSW1wbGVtZW50cyB0aGUgZnVuY3Rpb25hbGl0eSBzaGFyZWQgYmV0d2VlbiBDREsgY3JlYXRlZCBhbmQgaW1wb3J0ZWRcbiAqIElBcHBsaWNhdGlvbnMuXG4gKi9cbmFic3RyYWN0IGNsYXNzIEFwcGxpY2F0aW9uQmFzZSBleHRlbmRzIGNvcmUuUmVzb3VyY2UgaW1wbGVtZW50cyBJQXBwbGljYXRpb24ge1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgYXBwbGljYXRpb25Bcm46IHN0cmluZztcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGFwcGxpY2F0aW9uTmFtZTogc3RyaW5nO1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgcm9sZT86IGlhbS5JUm9sZTtcblxuICAvLyBJbXBsZW1lbnQgaWFtLklHcmFudGFibGUgaW50ZXJmYWNlXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBncmFudFByaW5jaXBhbDogaWFtLklQcmluY2lwYWw7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgYWRkVG9Sb2xlUG9saWN5KHBvbGljeVN0YXRlbWVudDogaWFtLlBvbGljeVN0YXRlbWVudCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnJvbGUpIHtcbiAgICAgIHRoaXMucm9sZS5hZGRUb1ByaW5jaXBhbFBvbGljeShwb2xpY3lTdGF0ZW1lbnQpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbmV4cG9ydCBpbnRlcmZhY2UgQXBwbGljYXRpb25Qcm9wcyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgYXBwbGljYXRpb25OYW1lPzogc3RyaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgcnVudGltZTogUnVudGltZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGNvZGU6IEFwcGxpY2F0aW9uQ29kZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGNoZWNrcG9pbnRpbmdFbmFibGVkPzogYm9vbGVhbjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGNoZWNrcG9pbnRJbnRlcnZhbD86IGNvcmUuRHVyYXRpb247XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IG1pblBhdXNlQmV0d2VlbkNoZWNrcG9pbnRzPzogY29yZS5EdXJhdGlvbjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBsb2dMZXZlbD86IExvZ0xldmVsO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgbWV0cmljc0xldmVsPzogTWV0cmljc0xldmVsO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBhdXRvU2NhbGluZ0VuYWJsZWQ/OiBib29sZWFuO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgcGFyYWxsZWxpc20/OiBudW1iZXI7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBwYXJhbGxlbGlzbVBlcktwdT86IG51bWJlclxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBzbmFwc2hvdHNFbmFibGVkPzogYm9vbGVhbjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHByb3BlcnR5R3JvdXBzPzogUHJvcGVydHlHcm91cHM7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSByb2xlPzogaWFtLklSb2xlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHJlbW92YWxQb2xpY3k/OiBjb3JlLlJlbW92YWxQb2xpY3k7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBsb2dHcm91cD86IGxvZ3MuSUxvZ0dyb3VwO1xufVxuXG4vKipcbiAqIEFuIGltcG9ydGVkIEZsaW5rIGFwcGxpY2F0aW9uLlxuICovXG5jbGFzcyBJbXBvcnQgZXh0ZW5kcyBBcHBsaWNhdGlvbkJhc2Uge1xuICBwdWJsaWMgcmVhZG9ubHkgZ3JhbnRQcmluY2lwYWw6IGlhbS5JUHJpbmNpcGFsO1xuICBwdWJsaWMgcmVhZG9ubHkgcm9sZT86IGlhbS5JUm9sZTtcbiAgcHVibGljIHJlYWRvbmx5IGFwcGxpY2F0aW9uTmFtZTogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgYXBwbGljYXRpb25Bcm46IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBhdHRyczogeyBhcHBsaWNhdGlvbkFybjogc3RyaW5nLCBhcHBsaWNhdGlvbk5hbWU6IHN0cmluZyB9KSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIC8vIEltcG9ydGVkIGFwcGxpY2F0aW9ucyBoYXZlIG5vIGFzc29jaWF0ZWQgcm9sZSBvciBncmFudFByaW5jaXBhbFxuICAgIHRoaXMuZ3JhbnRQcmluY2lwYWwgPSBuZXcgaWFtLlVua25vd25QcmluY2lwYWwoeyByZXNvdXJjZTogdGhpcyB9KTtcbiAgICB0aGlzLnJvbGUgPSB1bmRlZmluZWQ7XG5cbiAgICB0aGlzLmFwcGxpY2F0aW9uQXJuID0gYXR0cnMuYXBwbGljYXRpb25Bcm47XG4gICAgdGhpcy5hcHBsaWNhdGlvbk5hbWUgPSBhdHRycy5hcHBsaWNhdGlvbk5hbWU7XG4gIH1cbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgY2xhc3MgQXBwbGljYXRpb24gZXh0ZW5kcyBBcHBsaWNhdGlvbkJhc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgc3RhdGljIGZyb21BcHBsaWNhdGlvbk5hbWUoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgYXBwbGljYXRpb25OYW1lOiBzdHJpbmcpOiBJQXBwbGljYXRpb24ge1xuICAgIGNvbnN0IGFwcGxpY2F0aW9uQXJuID0gY29yZS5TdGFjay5vZihzY29wZSkuZm9ybWF0QXJuKGFwcGxpY2F0aW9uQXJuQ29tcG9uZW50cyhhcHBsaWNhdGlvbk5hbWUpKTtcblxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCwgeyBhcHBsaWNhdGlvbkFybiwgYXBwbGljYXRpb25OYW1lIH0pO1xuICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgc3RhdGljIGZyb21BcHBsaWNhdGlvbkFybihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBhcHBsaWNhdGlvbkFybjogc3RyaW5nKTogSUFwcGxpY2F0aW9uIHtcbiAgICBjb25zdCBhcHBsaWNhdGlvbk5hbWUgPSBjb3JlLlN0YWNrLm9mKHNjb3BlKS5wYXJzZUFybihhcHBsaWNhdGlvbkFybikucmVzb3VyY2VOYW1lO1xuICAgIGlmICghYXBwbGljYXRpb25OYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGFwcGxpY2F0aW9uQXJuIGZvciBmcm9tQXBwbGljYXRpb25Bcm4gKCR7YXBwbGljYXRpb25Bcm59KSBtdXN0IGluY2x1ZGUgcmVzb3VyY2UgbmFtZWApO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCwgeyBhcHBsaWNhdGlvbkFybiwgYXBwbGljYXRpb25OYW1lIH0pO1xuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IGFwcGxpY2F0aW9uQXJuOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBhcHBsaWNhdGlvbk5hbWU6IHN0cmluZztcblxuICAvLyBSb2xlIG11c3QgYmUgb3B0aW9uYWwgZm9yIEpTSUkgY29tcGF0aWJpbGl0eVxuICBwdWJsaWMgcmVhZG9ubHkgcm9sZT86IGlhbS5JUm9sZTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZ3JhbnRQcmluY2lwYWw6IGlhbS5JUHJpbmNpcGFsO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBBcHBsaWNhdGlvblByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7IHBoeXNpY2FsTmFtZTogcHJvcHMuYXBwbGljYXRpb25OYW1lIH0pO1xuICAgIHZhbGlkYXRlQXBwbGljYXRpb25Qcm9wcyhwcm9wcyk7XG5cbiAgICB0aGlzLnJvbGUgPSBwcm9wcy5yb2xlID8/IG5ldyBpYW0uUm9sZSh0aGlzLCAnUm9sZScsIHtcbiAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdraW5lc2lzYW5hbHl0aWNzLmFtYXpvbmF3cy5jb20nKSxcbiAgICB9KTtcbiAgICB0aGlzLmdyYW50UHJpbmNpcGFsID0gdGhpcy5yb2xlO1xuXG4gICAgLy8gUGVybWl0IG1ldHJpYyBwdWJsaXNoaW5nIHRvIENsb3VkV2F0Y2hcbiAgICB0aGlzLnJvbGUuYWRkVG9QcmluY2lwYWxQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgYWN0aW9uczogWydjbG91ZHdhdGNoOlB1dE1ldHJpY0RhdGEnXSxcbiAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgfSkpO1xuXG4gICAgY29uc3QgY29kZSA9IHByb3BzLmNvZGUuYmluZCh0aGlzKTtcbiAgICBjb2RlLmJ1Y2tldC5ncmFudFJlYWQodGhpcyk7XG5cbiAgICBjb25zdCByZXNvdXJjZSA9IG5ldyBDZm5BcHBsaWNhdGlvblYyKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIGFwcGxpY2F0aW9uTmFtZTogcHJvcHMuYXBwbGljYXRpb25OYW1lLFxuICAgICAgcnVudGltZUVudmlyb25tZW50OiBwcm9wcy5ydW50aW1lLnZhbHVlLFxuICAgICAgc2VydmljZUV4ZWN1dGlvblJvbGU6IHRoaXMucm9sZS5yb2xlQXJuLFxuICAgICAgYXBwbGljYXRpb25Db25maWd1cmF0aW9uOiB7XG4gICAgICAgIC4uLmNvZGUuYXBwbGljYXRpb25Db2RlQ29uZmlndXJhdGlvblByb3BlcnR5LFxuICAgICAgICBlbnZpcm9ubWVudFByb3BlcnRpZXM6IGVudmlyb25tZW50UHJvcGVydGllcyhwcm9wcy5wcm9wZXJ0eUdyb3VwcyksXG4gICAgICAgIGZsaW5rQXBwbGljYXRpb25Db25maWd1cmF0aW9uOiBmbGlua0FwcGxpY2F0aW9uQ29uZmlndXJhdGlvbih7XG4gICAgICAgICAgY2hlY2twb2ludGluZ0VuYWJsZWQ6IHByb3BzLmNoZWNrcG9pbnRpbmdFbmFibGVkLFxuICAgICAgICAgIGNoZWNrcG9pbnRJbnRlcnZhbDogcHJvcHMuY2hlY2twb2ludEludGVydmFsLFxuICAgICAgICAgIG1pblBhdXNlQmV0d2VlbkNoZWNrcG9pbnRzOiBwcm9wcy5taW5QYXVzZUJldHdlZW5DaGVja3BvaW50cyxcbiAgICAgICAgICBsb2dMZXZlbDogcHJvcHMubG9nTGV2ZWwsXG4gICAgICAgICAgbWV0cmljc0xldmVsOiBwcm9wcy5tZXRyaWNzTGV2ZWwsXG4gICAgICAgICAgYXV0b1NjYWxpbmdFbmFibGVkOiBwcm9wcy5hdXRvU2NhbGluZ0VuYWJsZWQsXG4gICAgICAgICAgcGFyYWxsZWxpc206IHByb3BzLnBhcmFsbGVsaXNtLFxuICAgICAgICAgIHBhcmFsbGVsaXNtUGVyS3B1OiBwcm9wcy5wYXJhbGxlbGlzbVBlcktwdSxcbiAgICAgICAgfSksXG4gICAgICAgIGFwcGxpY2F0aW9uU25hcHNob3RDb25maWd1cmF0aW9uOiB7XG4gICAgICAgICAgc25hcHNob3RzRW5hYmxlZDogcHJvcHMuc25hcHNob3RzRW5hYmxlZCA/PyB0cnVlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgICByZXNvdXJjZS5ub2RlLmFkZERlcGVuZGVuY3kodGhpcy5yb2xlKTtcblxuICAgIGNvbnN0IGxvZ0dyb3VwID0gcHJvcHMubG9nR3JvdXAgPz8gbmV3IGxvZ3MuTG9nR3JvdXAodGhpcywgJ0xvZ0dyb3VwJyk7XG4gICAgY29uc3QgbG9nU3RyZWFtID0gbmV3IGxvZ3MuTG9nU3RyZWFtKHRoaXMsICdMb2dTdHJlYW0nLCB7IGxvZ0dyb3VwIH0pO1xuXG4gICAgLyogUGVybWl0IGxvZ2dpbmcgKi9cblxuICAgIHRoaXMucm9sZS5hZGRUb1ByaW5jaXBhbFBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBhY3Rpb25zOiBbJ2xvZ3M6RGVzY3JpYmVMb2dHcm91cHMnXSxcbiAgICAgIHJlc291cmNlczogW1xuICAgICAgICBjb3JlLlN0YWNrLm9mKHRoaXMpLmZvcm1hdEFybih7XG4gICAgICAgICAgc2VydmljZTogJ2xvZ3MnLFxuICAgICAgICAgIHJlc291cmNlOiAnbG9nLWdyb3VwJyxcbiAgICAgICAgICBzZXA6ICc6JyxcbiAgICAgICAgICByZXNvdXJjZU5hbWU6ICcqJyxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgIH0pKTtcblxuICAgIHRoaXMucm9sZS5hZGRUb1ByaW5jaXBhbFBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBhY3Rpb25zOiBbJ2xvZ3M6RGVzY3JpYmVMb2dTdHJlYW1zJ10sXG4gICAgICByZXNvdXJjZXM6IFtsb2dHcm91cC5sb2dHcm91cEFybl0sXG4gICAgfSkpO1xuXG4gICAgY29uc3QgbG9nU3RyZWFtQXJuID0gYGFybjoke2NvcmUuQXdzLlBBUlRJVElPTn06bG9nczoke2NvcmUuQXdzLlJFR0lPTn06JHtjb3JlLkF3cy5BQ0NPVU5UX0lEfTpsb2ctZ3JvdXA6JHtsb2dHcm91cC5sb2dHcm91cE5hbWV9OmxvZy1zdHJlYW06JHtsb2dTdHJlYW0ubG9nU3RyZWFtTmFtZX1gO1xuICAgIHRoaXMucm9sZS5hZGRUb1ByaW5jaXBhbFBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBhY3Rpb25zOiBbJ2xvZ3M6UHV0TG9nRXZlbnRzJ10sXG4gICAgICByZXNvdXJjZXM6IFtsb2dTdHJlYW1Bcm5dLFxuICAgIH0pKTtcblxuICAgIG5ldyBDZm5BcHBsaWNhdGlvbkNsb3VkV2F0Y2hMb2dnaW5nT3B0aW9uVjIodGhpcywgJ0xvZ2dpbmdPcHRpb24nLCB7XG4gICAgICBhcHBsaWNhdGlvbk5hbWU6IHJlc291cmNlLnJlZixcbiAgICAgIGNsb3VkV2F0Y2hMb2dnaW5nT3B0aW9uOiB7XG4gICAgICAgIGxvZ1N0cmVhbUFybixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLmFwcGxpY2F0aW9uTmFtZSA9IHRoaXMuZ2V0UmVzb3VyY2VOYW1lQXR0cmlidXRlKHJlc291cmNlLnJlZik7XG4gICAgdGhpcy5hcHBsaWNhdGlvbkFybiA9IHRoaXMuZ2V0UmVzb3VyY2VBcm5BdHRyaWJ1dGUoXG4gICAgICBjb3JlLlN0YWNrLm9mKHRoaXMpLmZvcm1hdEFybihhcHBsaWNhdGlvbkFybkNvbXBvbmVudHMocmVzb3VyY2UucmVmKSksXG4gICAgICBhcHBsaWNhdGlvbkFybkNvbXBvbmVudHModGhpcy5waHlzaWNhbE5hbWUpLFxuICAgICk7XG5cbiAgICByZXNvdXJjZS5hcHBseVJlbW92YWxQb2xpY3kocHJvcHMucmVtb3ZhbFBvbGljeSwge1xuICAgICAgZGVmYXVsdDogY29yZS5SZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gYXBwbGljYXRpb25Bcm5Db21wb25lbnRzKHJlc291cmNlTmFtZTogc3RyaW5nKTogY29yZS5Bcm5Db21wb25lbnRzIHtcbiAgcmV0dXJuIHtcbiAgICBzZXJ2aWNlOiAna2luZXNpc2FuYWx5dGljcycsXG4gICAgcmVzb3VyY2U6ICdhcHBsaWNhdGlvbicsXG4gICAgcmVzb3VyY2VOYW1lLFxuICB9O1xufVxuIl19
package/lib/index.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ export * from './application';
2
+ export * from './application-code';
3
+ export * from './types';
package/lib/index.js ADDED
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./application"), exports);
14
+ __exportStar(require("./application-code"), exports);
15
+ __exportStar(require("./types"), exports);
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxnREFBOEI7QUFDOUIscURBQW1DO0FBQ25DLDBDQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXBwbGljYXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9hcHBsaWNhdGlvbi1jb2RlJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuXG4iXX0=
@@ -0,0 +1,3 @@
1
+ import * as ka from 'aws-cdk-lib/aws-kinesisanalytics';
2
+ import { PropertyGroups } from '../types';
3
+ export declare function environmentProperties(propertyGroups?: PropertyGroups): ka.CfnApplicationV2.EnvironmentPropertiesProperty | undefined;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.environmentProperties = void 0;
4
+ function environmentProperties(propertyGroups) {
5
+ const entries = Object.entries(propertyGroups !== null && propertyGroups !== void 0 ? propertyGroups : {});
6
+ if (entries.length === 0) {
7
+ return;
8
+ }
9
+ return {
10
+ propertyGroups: entries.map(([id, map]) => ({
11
+ propertyGroupId: id,
12
+ propertyMap: map,
13
+ })),
14
+ };
15
+ }
16
+ exports.environmentProperties = environmentProperties;
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQtcHJvcGVydGllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImVudmlyb25tZW50LXByb3BlcnRpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBR0EsU0FBZ0IscUJBQXFCLENBQUMsY0FBK0I7SUFDbkUsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxjQUFjLGFBQWQsY0FBYyxjQUFkLGNBQWMsR0FBSSxFQUFFLENBQUMsQ0FBQztJQUNyRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ3hCLE9BQU87S0FDUjtJQUVELE9BQU87UUFDTCxjQUFjLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzFDLGVBQWUsRUFBRSxFQUFFO1lBQ25CLFdBQVcsRUFBRSxHQUFHO1NBQ2pCLENBQUMsQ0FBQztLQUNKLENBQUM7QUFDSixDQUFDO0FBWkQsc0RBWUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBrYSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta2luZXNpc2FuYWx5dGljcyc7XG5pbXBvcnQgeyBQcm9wZXJ0eUdyb3VwcyB9IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGVudmlyb25tZW50UHJvcGVydGllcyhwcm9wZXJ0eUdyb3Vwcz86IFByb3BlcnR5R3JvdXBzKToga2EuQ2ZuQXBwbGljYXRpb25WMi5FbnZpcm9ubWVudFByb3BlcnRpZXNQcm9wZXJ0eSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyhwcm9wZXJ0eUdyb3VwcyA/PyB7fSk7XG4gIGlmIChlbnRyaWVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgcHJvcGVydHlHcm91cHM6IGVudHJpZXMubWFwKChbaWQsIG1hcF0pID0+ICh7XG4gICAgICBwcm9wZXJ0eUdyb3VwSWQ6IGlkLFxuICAgICAgcHJvcGVydHlNYXA6IG1hcCxcbiAgICB9KSksXG4gIH07XG59XG4iXX0=
@@ -0,0 +1,38 @@
1
+ import * as core from 'aws-cdk-lib';
2
+ import { LogLevel, MetricsLevel } from '../types';
3
+ interface FlinkApplicationConfiguration extends CheckpointConfiguration, MonitoringConfiguration, ParallelismConfiguration {
4
+ }
5
+ interface CheckpointConfiguration {
6
+ checkpointingEnabled?: boolean;
7
+ checkpointInterval?: core.Duration;
8
+ minPauseBetweenCheckpoints?: core.Duration;
9
+ }
10
+ interface MonitoringConfiguration {
11
+ logLevel?: LogLevel;
12
+ metricsLevel?: MetricsLevel;
13
+ }
14
+ interface ParallelismConfiguration {
15
+ autoScalingEnabled?: boolean;
16
+ parallelism?: number;
17
+ parallelismPerKpu?: number;
18
+ }
19
+ /**
20
+ * Build the nested Cfn FlinkApplicationConfiguration object. This function
21
+ * doesn't return empty config objects, returning the minimal config needed to
22
+ * express the supplied properties.
23
+ *
24
+ * This function also handles the quirky configType: 'CUSTOM' setting required
25
+ * whenever config in one of the nested groupings.
26
+ */
27
+ export declare function flinkApplicationConfiguration(config: FlinkApplicationConfiguration): {
28
+ checkpointConfiguration: {
29
+ configurationType: string;
30
+ } | undefined;
31
+ monitoringConfiguration: {
32
+ configurationType: string;
33
+ } | undefined;
34
+ parallelismConfiguration: {
35
+ configurationType: string;
36
+ } | undefined;
37
+ } | undefined;
38
+ export {};
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.flinkApplicationConfiguration = void 0;
4
+ /**
5
+ * Build the nested Cfn FlinkApplicationConfiguration object. This function
6
+ * doesn't return empty config objects, returning the minimal config needed to
7
+ * express the supplied properties.
8
+ *
9
+ * This function also handles the quirky configType: 'CUSTOM' setting required
10
+ * whenever config in one of the nested groupings.
11
+ */
12
+ function flinkApplicationConfiguration(config) {
13
+ var _a, _b;
14
+ const checkpointConfiguration = configFor({
15
+ checkpointingEnabled: config.checkpointingEnabled,
16
+ checkpointInterval: (_a = config.checkpointInterval) === null || _a === void 0 ? void 0 : _a.toMilliseconds(),
17
+ minPauseBetweenCheckpoints: (_b = config.minPauseBetweenCheckpoints) === null || _b === void 0 ? void 0 : _b.toMilliseconds(),
18
+ });
19
+ const monitoringConfiguration = configFor({
20
+ logLevel: config.logLevel,
21
+ metricsLevel: config.metricsLevel,
22
+ });
23
+ const parallelismConfiguration = configFor({
24
+ autoScalingEnabled: config.autoScalingEnabled,
25
+ parallelism: config.parallelism,
26
+ parallelismPerKpu: config.parallelismPerKpu,
27
+ });
28
+ const applicationConfiguration = {
29
+ checkpointConfiguration,
30
+ monitoringConfiguration,
31
+ parallelismConfiguration,
32
+ };
33
+ if (isEmptyObj(applicationConfiguration)) {
34
+ return;
35
+ }
36
+ return applicationConfiguration;
37
+ }
38
+ exports.flinkApplicationConfiguration = flinkApplicationConfiguration;
39
+ function configFor(config) {
40
+ if (isEmptyObj(config)) {
41
+ return;
42
+ }
43
+ return {
44
+ ...config,
45
+ configurationType: 'CUSTOM',
46
+ };
47
+ }
48
+ function isEmptyObj(obj) {
49
+ return Object.values(obj).every(v => v === undefined);
50
+ }
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxpbmstYXBwbGljYXRpb24tY29uZmlndXJhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImZsaW5rLWFwcGxpY2F0aW9uLWNvbmZpZ3VyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBeUJBOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQiw2QkFBNkIsQ0FBQyxNQUFxQzs7SUFDakYsTUFBTSx1QkFBdUIsR0FBRyxTQUFTLENBQUM7UUFDeEMsb0JBQW9CLEVBQUUsTUFBTSxDQUFDLG9CQUFvQjtRQUNqRCxrQkFBa0IsUUFBRSxNQUFNLENBQUMsa0JBQWtCLDBDQUFFLGNBQWMsRUFBRTtRQUMvRCwwQkFBMEIsUUFBRSxNQUFNLENBQUMsMEJBQTBCLDBDQUFFLGNBQWMsRUFBRTtLQUNoRixDQUFDLENBQUM7SUFFSCxNQUFNLHVCQUF1QixHQUFHLFNBQVMsQ0FBQztRQUN4QyxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7UUFDekIsWUFBWSxFQUFFLE1BQU0sQ0FBQyxZQUFZO0tBQ2xDLENBQUMsQ0FBQztJQUVILE1BQU0sd0JBQXdCLEdBQUcsU0FBUyxDQUFDO1FBQ3pDLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxrQkFBa0I7UUFDN0MsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXO1FBQy9CLGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxpQkFBaUI7S0FDNUMsQ0FBQyxDQUFDO0lBRUgsTUFBTSx3QkFBd0IsR0FBRztRQUMvQix1QkFBdUI7UUFDdkIsdUJBQXVCO1FBQ3ZCLHdCQUF3QjtLQUN6QixDQUFDO0lBRUYsSUFBSSxVQUFVLENBQUMsd0JBQXdCLENBQUMsRUFBRTtRQUN4QyxPQUFPO0tBQ1I7SUFFRCxPQUFPLHdCQUF3QixDQUFDO0FBQ2xDLENBQUM7QUE3QkQsc0VBNkJDO0FBRUQsU0FBUyxTQUFTLENBQUMsTUFBZ0M7SUFDakQsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDdEIsT0FBTztLQUNSO0lBRUQsT0FBTztRQUNMLEdBQUcsTUFBTTtRQUNULGlCQUFpQixFQUFFLFFBQVE7S0FDNUIsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBQyxHQUE2QjtJQUMvQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxDQUFDO0FBQ3hELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjb3JlIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IExvZ0xldmVsLCBNZXRyaWNzTGV2ZWwgfSBmcm9tICcuLi90eXBlcyc7XG5cbmludGVyZmFjZSBGbGlua0FwcGxpY2F0aW9uQ29uZmlndXJhdGlvbiBleHRlbmRzXG4gIENoZWNrcG9pbnRDb25maWd1cmF0aW9uLFxuICBNb25pdG9yaW5nQ29uZmlndXJhdGlvbixcbiAgUGFyYWxsZWxpc21Db25maWd1cmF0aW9uIHt9XG5cbmludGVyZmFjZSBDaGVja3BvaW50Q29uZmlndXJhdGlvbiB7XG4gIGNoZWNrcG9pbnRpbmdFbmFibGVkPzogYm9vbGVhbjtcbiAgY2hlY2twb2ludEludGVydmFsPzogY29yZS5EdXJhdGlvbjtcbiAgbWluUGF1c2VCZXR3ZWVuQ2hlY2twb2ludHM/OiBjb3JlLkR1cmF0aW9uO1xufVxuXG5pbnRlcmZhY2UgTW9uaXRvcmluZ0NvbmZpZ3VyYXRpb24ge1xuICBsb2dMZXZlbD86IExvZ0xldmVsO1xuICBtZXRyaWNzTGV2ZWw/OiBNZXRyaWNzTGV2ZWw7XG59XG5cbmludGVyZmFjZSBQYXJhbGxlbGlzbUNvbmZpZ3VyYXRpb24ge1xuICBhdXRvU2NhbGluZ0VuYWJsZWQ/OiBib29sZWFuO1xuICBwYXJhbGxlbGlzbT86IG51bWJlcjtcbiAgcGFyYWxsZWxpc21QZXJLcHU/OiBudW1iZXI7XG59XG5cbi8qKlxuICogQnVpbGQgdGhlIG5lc3RlZCBDZm4gRmxpbmtBcHBsaWNhdGlvbkNvbmZpZ3VyYXRpb24gb2JqZWN0LiBUaGlzIGZ1bmN0aW9uXG4gKiBkb2Vzbid0IHJldHVybiBlbXB0eSBjb25maWcgb2JqZWN0cywgcmV0dXJuaW5nIHRoZSBtaW5pbWFsIGNvbmZpZyBuZWVkZWQgdG9cbiAqIGV4cHJlc3MgdGhlIHN1cHBsaWVkIHByb3BlcnRpZXMuXG4gKlxuICogVGhpcyBmdW5jdGlvbiBhbHNvIGhhbmRsZXMgdGhlIHF1aXJreSBjb25maWdUeXBlOiAnQ1VTVE9NJyBzZXR0aW5nIHJlcXVpcmVkXG4gKiB3aGVuZXZlciBjb25maWcgaW4gb25lIG9mIHRoZSBuZXN0ZWQgZ3JvdXBpbmdzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmxpbmtBcHBsaWNhdGlvbkNvbmZpZ3VyYXRpb24oY29uZmlnOiBGbGlua0FwcGxpY2F0aW9uQ29uZmlndXJhdGlvbikge1xuICBjb25zdCBjaGVja3BvaW50Q29uZmlndXJhdGlvbiA9IGNvbmZpZ0Zvcih7XG4gICAgY2hlY2twb2ludGluZ0VuYWJsZWQ6IGNvbmZpZy5jaGVja3BvaW50aW5nRW5hYmxlZCxcbiAgICBjaGVja3BvaW50SW50ZXJ2YWw6IGNvbmZpZy5jaGVja3BvaW50SW50ZXJ2YWw/LnRvTWlsbGlzZWNvbmRzKCksXG4gICAgbWluUGF1c2VCZXR3ZWVuQ2hlY2twb2ludHM6IGNvbmZpZy5taW5QYXVzZUJldHdlZW5DaGVja3BvaW50cz8udG9NaWxsaXNlY29uZHMoKSxcbiAgfSk7XG5cbiAgY29uc3QgbW9uaXRvcmluZ0NvbmZpZ3VyYXRpb24gPSBjb25maWdGb3Ioe1xuICAgIGxvZ0xldmVsOiBjb25maWcubG9nTGV2ZWwsXG4gICAgbWV0cmljc0xldmVsOiBjb25maWcubWV0cmljc0xldmVsLFxuICB9KTtcblxuICBjb25zdCBwYXJhbGxlbGlzbUNvbmZpZ3VyYXRpb24gPSBjb25maWdGb3Ioe1xuICAgIGF1dG9TY2FsaW5nRW5hYmxlZDogY29uZmlnLmF1dG9TY2FsaW5nRW5hYmxlZCxcbiAgICBwYXJhbGxlbGlzbTogY29uZmlnLnBhcmFsbGVsaXNtLFxuICAgIHBhcmFsbGVsaXNtUGVyS3B1OiBjb25maWcucGFyYWxsZWxpc21QZXJLcHUsXG4gIH0pO1xuXG4gIGNvbnN0IGFwcGxpY2F0aW9uQ29uZmlndXJhdGlvbiA9IHtcbiAgICBjaGVja3BvaW50Q29uZmlndXJhdGlvbixcbiAgICBtb25pdG9yaW5nQ29uZmlndXJhdGlvbixcbiAgICBwYXJhbGxlbGlzbUNvbmZpZ3VyYXRpb24sXG4gIH07XG5cbiAgaWYgKGlzRW1wdHlPYmooYXBwbGljYXRpb25Db25maWd1cmF0aW9uKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHJldHVybiBhcHBsaWNhdGlvbkNvbmZpZ3VyYXRpb247XG59XG5cbmZ1bmN0aW9uIGNvbmZpZ0Zvcihjb25maWc6IHtba2V5OiBzdHJpbmddOiB1bmtub3dufSkge1xuICBpZiAoaXNFbXB0eU9iaihjb25maWcpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5jb25maWcsXG4gICAgY29uZmlndXJhdGlvblR5cGU6ICdDVVNUT00nLFxuICB9O1xufVxuXG5mdW5jdGlvbiBpc0VtcHR5T2JqKG9iajoge1trZXk6IHN0cmluZ106IHVua25vd259KSB7XG4gIHJldHVybiBPYmplY3QudmFsdWVzKG9iaikuZXZlcnkodiA9PiB2ID09PSB1bmRlZmluZWQpO1xufVxuIl19
@@ -0,0 +1,10 @@
1
+ interface ValidatedProps {
2
+ applicationName?: string;
3
+ parallelism?: number;
4
+ parallelismPerKpu?: number;
5
+ }
6
+ /**
7
+ * Early validation for the props used to create FlinkApplications.
8
+ */
9
+ export declare function validateFlinkApplicationProps(props: ValidatedProps): void;
10
+ export {};
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateFlinkApplicationProps = void 0;
4
+ const core = require("aws-cdk-lib");
5
+ /**
6
+ * Early validation for the props used to create FlinkApplications.
7
+ */
8
+ function validateFlinkApplicationProps(props) {
9
+ validateApplicationName(props.applicationName);
10
+ validateParallelism(props.parallelism);
11
+ validateParallelismPerKpu(props.parallelismPerKpu);
12
+ }
13
+ exports.validateFlinkApplicationProps = validateFlinkApplicationProps;
14
+ function validateApplicationName(applicationName) {
15
+ if (applicationName === undefined || core.Token.isUnresolved(applicationName)) {
16
+ return;
17
+ }
18
+ if (applicationName.length === 0) {
19
+ throw new Error('applicationName cannot be empty. It must contain at least 1 character.');
20
+ }
21
+ if (!/^[a-zA-Z0-9_.-]+$/.test(applicationName)) {
22
+ throw new Error(`applicationName may only contain letters, numbers, underscores, hyphens, and periods. Name: ${applicationName}`);
23
+ }
24
+ if (applicationName.length > 128) {
25
+ throw new Error(`applicationName max length is 128. Name: ${applicationName} is ${applicationName.length} characters.`);
26
+ }
27
+ }
28
+ function validateParallelism(parallelism) {
29
+ if (parallelism === undefined || core.Token.isUnresolved(parallelism)) {
30
+ return;
31
+ }
32
+ if (parallelism < 1) {
33
+ throw new Error('parallelism must be at least 1');
34
+ }
35
+ }
36
+ function validateParallelismPerKpu(parallelismPerKpu) {
37
+ if (parallelismPerKpu === undefined || core.Token.isUnresolved(parallelismPerKpu)) {
38
+ return;
39
+ }
40
+ if (parallelismPerKpu < 1) {
41
+ throw new Error('parallelismPerKpu must be at least 1');
42
+ }
43
+ }
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInZhbGlkYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsb0NBQW9DO0FBUXBDOztHQUVHO0FBQ0gsU0FBZ0IsNkJBQTZCLENBQUMsS0FBcUI7SUFDakUsdUJBQXVCLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQy9DLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN2Qyx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUNyRCxDQUFDO0FBSkQsc0VBSUM7QUFFRCxTQUFTLHVCQUF1QixDQUFDLGVBQXdCO0lBQ3ZELElBQUksZUFBZSxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsRUFBRTtRQUM3RSxPQUFPO0tBQ1I7SUFFRCxJQUFJLGVBQWUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0VBQXdFLENBQUMsQ0FBQztLQUMzRjtJQUVELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUU7UUFDOUMsTUFBTSxJQUFJLEtBQUssQ0FBQywrRkFBK0YsZUFBZSxFQUFFLENBQUMsQ0FBQztLQUNuSTtJQUVELElBQUksZUFBZSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7UUFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsZUFBZSxPQUFPLGVBQWUsQ0FBQyxNQUFNLGNBQWMsQ0FBQyxDQUFDO0tBQ3pIO0FBQ0gsQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQUMsV0FBb0I7SUFDL0MsSUFBSSxXQUFXLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1FBQ3JFLE9BQU87S0FDUjtJQUVELElBQUksV0FBVyxHQUFHLENBQUMsRUFBRTtRQUNuQixNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7S0FDbkQ7QUFDSCxDQUFDO0FBRUQsU0FBUyx5QkFBeUIsQ0FBQyxpQkFBMEI7SUFDM0QsSUFBSSxpQkFBaUIsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsRUFBRTtRQUNqRixPQUFPO0tBQ1I7SUFFRCxJQUFJLGlCQUFpQixHQUFHLENBQUMsRUFBRTtRQUN6QixNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7S0FDekQ7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY29yZSBmcm9tICdhd3MtY2RrLWxpYic7XG5cbmludGVyZmFjZSBWYWxpZGF0ZWRQcm9wcyB7XG4gIGFwcGxpY2F0aW9uTmFtZT86IHN0cmluZztcbiAgcGFyYWxsZWxpc20/OiBudW1iZXI7XG4gIHBhcmFsbGVsaXNtUGVyS3B1PzogbnVtYmVyO1xufVxuXG4vKipcbiAqIEVhcmx5IHZhbGlkYXRpb24gZm9yIHRoZSBwcm9wcyB1c2VkIHRvIGNyZWF0ZSBGbGlua0FwcGxpY2F0aW9ucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlRmxpbmtBcHBsaWNhdGlvblByb3BzKHByb3BzOiBWYWxpZGF0ZWRQcm9wcykge1xuICB2YWxpZGF0ZUFwcGxpY2F0aW9uTmFtZShwcm9wcy5hcHBsaWNhdGlvbk5hbWUpO1xuICB2YWxpZGF0ZVBhcmFsbGVsaXNtKHByb3BzLnBhcmFsbGVsaXNtKTtcbiAgdmFsaWRhdGVQYXJhbGxlbGlzbVBlcktwdShwcm9wcy5wYXJhbGxlbGlzbVBlcktwdSk7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlQXBwbGljYXRpb25OYW1lKGFwcGxpY2F0aW9uTmFtZT86IHN0cmluZykge1xuICBpZiAoYXBwbGljYXRpb25OYW1lID09PSB1bmRlZmluZWQgfHwgY29yZS5Ub2tlbi5pc1VucmVzb2x2ZWQoYXBwbGljYXRpb25OYW1lKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChhcHBsaWNhdGlvbk5hbWUubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdhcHBsaWNhdGlvbk5hbWUgY2Fubm90IGJlIGVtcHR5LiBJdCBtdXN0IGNvbnRhaW4gYXQgbGVhc3QgMSBjaGFyYWN0ZXIuJyk7XG4gIH1cblxuICBpZiAoIS9eW2EtekEtWjAtOV8uLV0rJC8udGVzdChhcHBsaWNhdGlvbk5hbWUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBhcHBsaWNhdGlvbk5hbWUgbWF5IG9ubHkgY29udGFpbiBsZXR0ZXJzLCBudW1iZXJzLCB1bmRlcnNjb3JlcywgaHlwaGVucywgYW5kIHBlcmlvZHMuIE5hbWU6ICR7YXBwbGljYXRpb25OYW1lfWApO1xuICB9XG5cbiAgaWYgKGFwcGxpY2F0aW9uTmFtZS5sZW5ndGggPiAxMjgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGFwcGxpY2F0aW9uTmFtZSBtYXggbGVuZ3RoIGlzIDEyOC4gTmFtZTogJHthcHBsaWNhdGlvbk5hbWV9IGlzICR7YXBwbGljYXRpb25OYW1lLmxlbmd0aH0gY2hhcmFjdGVycy5gKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZVBhcmFsbGVsaXNtKHBhcmFsbGVsaXNtPzogbnVtYmVyKSB7XG4gIGlmIChwYXJhbGxlbGlzbSA9PT0gdW5kZWZpbmVkIHx8IGNvcmUuVG9rZW4uaXNVbnJlc29sdmVkKHBhcmFsbGVsaXNtKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChwYXJhbGxlbGlzbSA8IDEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3BhcmFsbGVsaXNtIG11c3QgYmUgYXQgbGVhc3QgMScpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlUGFyYWxsZWxpc21QZXJLcHUocGFyYWxsZWxpc21QZXJLcHU/OiBudW1iZXIpIHtcbiAgaWYgKHBhcmFsbGVsaXNtUGVyS3B1ID09PSB1bmRlZmluZWQgfHwgY29yZS5Ub2tlbi5pc1VucmVzb2x2ZWQocGFyYWxsZWxpc21QZXJLcHUpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHBhcmFsbGVsaXNtUGVyS3B1IDwgMSkge1xuICAgIHRocm93IG5ldyBFcnJvcigncGFyYWxsZWxpc21QZXJLcHUgbXVzdCBiZSBhdCBsZWFzdCAxJyk7XG4gIH1cbn1cbiJdfQ==
package/lib/types.d.ts ADDED
@@ -0,0 +1,110 @@
1
+ /**
2
+ * (experimental) Available log levels for Flink applications.
3
+ *
4
+ * @experimental
5
+ */
6
+ export declare enum LogLevel {
7
+ /**
8
+ * (experimental) Debug level logging.
9
+ *
10
+ * @experimental
11
+ */
12
+ DEBUG = "DEBUG",
13
+ /**
14
+ * (experimental) Info level logging.
15
+ *
16
+ * @experimental
17
+ */
18
+ INFO = "INFO",
19
+ /**
20
+ * (experimental) Warn level logging.
21
+ *
22
+ * @experimental
23
+ */
24
+ WARN = "WARN",
25
+ /**
26
+ * (experimental) Error level logging.
27
+ *
28
+ * @experimental
29
+ */
30
+ ERROR = "ERROR"
31
+ }
32
+ /**
33
+ * (experimental) Granularity of metrics sent to CloudWatch.
34
+ *
35
+ * @experimental
36
+ */
37
+ export declare enum MetricsLevel {
38
+ /**
39
+ * (experimental) Application sends the least metrics to CloudWatch.
40
+ *
41
+ * @experimental
42
+ */
43
+ APPLICATION = "APPLICATION",
44
+ /**
45
+ * (experimental) Task includes task-level metrics sent to CloudWatch.
46
+ *
47
+ * @experimental
48
+ */
49
+ TASK = "TASK",
50
+ /**
51
+ * (experimental) Operator includes task-level and operator-level metrics sent to CloudWatch.
52
+ *
53
+ * @experimental
54
+ */
55
+ OPERATOR = "OPERATOR",
56
+ /**
57
+ * (experimental) Send all metrics including metrics per task thread.
58
+ *
59
+ * @experimental
60
+ */
61
+ PARALLELISM = "PARALLELISM"
62
+ }
63
+ /**
64
+ * (experimental) Interface for building AWS::KinesisAnalyticsV2::Application PropertyGroup configuration.
65
+ *
66
+ * @experimental
67
+ */
68
+ export interface PropertyGroups {
69
+ readonly [propertyId: string]: {
70
+ [mapKey: string]: string;
71
+ };
72
+ }
73
+ /**
74
+ * (experimental) Available Flink runtimes for Kinesis Analytics.
75
+ *
76
+ * @experimental
77
+ */
78
+ export declare class Runtime {
79
+ /**
80
+ * (experimental) Flink Version 1.6.
81
+ *
82
+ * @experimental
83
+ */
84
+ static readonly FLINK_1_6: Runtime;
85
+ /**
86
+ * (experimental) Flink Version 1.8.
87
+ *
88
+ * @experimental
89
+ */
90
+ static readonly FLINK_1_8: Runtime;
91
+ /**
92
+ * (experimental) Flink Version 1.11.
93
+ *
94
+ * @experimental
95
+ */
96
+ static readonly FLINK_1_11: Runtime;
97
+ /**
98
+ * (experimental) Create a new Runtime with with an arbitrary Flink version string.
99
+ *
100
+ * @experimental
101
+ */
102
+ static of(value: string): Runtime;
103
+ /**
104
+ * (experimental) The Cfn string that represents a version of Flink.
105
+ *
106
+ * @experimental
107
+ */
108
+ readonly value: string;
109
+ private constructor();
110
+ }
package/lib/types.js ADDED
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Runtime = exports.MetricsLevel = exports.LogLevel = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ /**
7
+ * (experimental) Available log levels for Flink applications.
8
+ *
9
+ * @experimental
10
+ */
11
+ var LogLevel;
12
+ (function (LogLevel) {
13
+ LogLevel["DEBUG"] = "DEBUG";
14
+ LogLevel["INFO"] = "INFO";
15
+ LogLevel["WARN"] = "WARN";
16
+ LogLevel["ERROR"] = "ERROR";
17
+ })(LogLevel = exports.LogLevel || (exports.LogLevel = {}));
18
+ /**
19
+ * (experimental) Granularity of metrics sent to CloudWatch.
20
+ *
21
+ * @experimental
22
+ */
23
+ var MetricsLevel;
24
+ (function (MetricsLevel) {
25
+ MetricsLevel["APPLICATION"] = "APPLICATION";
26
+ MetricsLevel["TASK"] = "TASK";
27
+ MetricsLevel["OPERATOR"] = "OPERATOR";
28
+ MetricsLevel["PARALLELISM"] = "PARALLELISM";
29
+ })(MetricsLevel = exports.MetricsLevel || (exports.MetricsLevel = {}));
30
+ /**
31
+ * (experimental) Available Flink runtimes for Kinesis Analytics.
32
+ *
33
+ * @experimental
34
+ */
35
+ class Runtime {
36
+ constructor(value) {
37
+ this.value = value;
38
+ }
39
+ /**
40
+ * (experimental) Create a new Runtime with with an arbitrary Flink version string.
41
+ *
42
+ * @experimental
43
+ */
44
+ static of(value) {
45
+ return new Runtime(value);
46
+ }
47
+ }
48
+ exports.Runtime = Runtime;
49
+ _a = JSII_RTTI_SYMBOL_1;
50
+ Runtime[_a] = { fqn: "@aws-cdk/aws-kinesisanalytics-flink-alpha.Runtime", version: "2.0.0-rc.23" };
51
+ /**
52
+ * (experimental) Flink Version 1.6.
53
+ *
54
+ * @experimental
55
+ */
56
+ Runtime.FLINK_1_6 = Runtime.of('FLINK-1_6');
57
+ /**
58
+ * (experimental) Flink Version 1.8.
59
+ *
60
+ * @experimental
61
+ */
62
+ Runtime.FLINK_1_8 = Runtime.of('FLINK-1_8');
63
+ /**
64
+ * (experimental) Flink Version 1.11.
65
+ *
66
+ * @experimental
67
+ */
68
+ Runtime.FLINK_1_11 = Runtime.of('FLINK-1_11');
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQ0EsSUFBWSxRQVlYO0FBWkQsV0FBWSxRQUFRO0lBRWxCLDJCQUFlLENBQUE7SUFHZix5QkFBYSxDQUFBO0lBR2IseUJBQWEsQ0FBQTtJQUdiLDJCQUFlLENBQUE7QUFDakIsQ0FBQyxFQVpXLFFBQVEsR0FBUixnQkFBUSxLQUFSLGdCQUFRLFFBWW5COzs7Ozs7QUFHRCxJQUFZLFlBWVg7QUFaRCxXQUFZLFlBQVk7SUFFdEIsMkNBQTJCLENBQUE7SUFHM0IsNkJBQWEsQ0FBQTtJQUdiLHFDQUFxQixDQUFBO0lBR3JCLDJDQUEyQixDQUFBO0FBQzdCLENBQUMsRUFaVyxZQUFZLEdBQVosb0JBQVksS0FBWixvQkFBWSxRQVl2Qjs7Ozs7O0FBUUQsTUFBYSxPQUFPO0lBa0JsQixZQUFvQixLQUFhO1FBQy9CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7Ozs7OztJQVRNLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBYTtRQUM1QixPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7O0FBYkgsMEJBcUJDOzs7Ozs7OztBQW5Cd0IsaUJBQVMsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDOzs7Ozs7QUFHcEMsaUJBQVMsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDOzs7Ozs7QUFHcEMsa0JBQVUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuZXhwb3J0IGVudW0gTG9nTGV2ZWwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBERUJVRyA9ICdERUJVRycsXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBJTkZPID0gJ0lORk8nLFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgV0FSTiA9ICdXQVJOJyxcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBFUlJPUiA9ICdFUlJPUicsXG59XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgZW51bSBNZXRyaWNzTGV2ZWwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBBUFBMSUNBVElPTiA9ICdBUFBMSUNBVElPTicsXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBUQVNLID0gJ1RBU0snLFxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBPUEVSQVRPUiA9ICdPUEVSQVRPUicsXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIFBBUkFMTEVMSVNNID0gJ1BBUkFMTEVMSVNNJyxcbn1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgaW50ZXJmYWNlIFByb3BlcnR5R3JvdXBzIHtcbiAgcmVhZG9ubHkgW3Byb3BlcnR5SWQ6IHN0cmluZ106IHtbbWFwS2V5OiBzdHJpbmddOiBzdHJpbmd9O1xufVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG5leHBvcnQgY2xhc3MgUnVudGltZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEZMSU5LXzFfNiA9IFJ1bnRpbWUub2YoJ0ZMSU5LLTFfNicpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEZMSU5LXzFfOCA9IFJ1bnRpbWUub2YoJ0ZMSU5LLTFfOCcpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBGTElOS18xXzExID0gUnVudGltZS5vZignRkxJTkstMV8xMScpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHB1YmxpYyBzdGF0aWMgb2YodmFsdWU6IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgUnVudGltZSh2YWx1ZSk7XG4gIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IHN0cmluZztcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cbn1cbiJdfQ==