@aws-cdk/aws-glue-alpha 2.95.1-alpha.0 → 2.96.0-alpha.0
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 +982 -374
- package/.jsii.tabl.json.gz +0 -0
- package/.warnings.jsii.js +104 -4
- package/README.md +36 -14
- package/lib/code.js +3 -3
- package/lib/connection.js +2 -2
- package/lib/data-format.js +5 -5
- package/lib/data-quality-ruleset.js +2 -2
- package/lib/database.js +1 -1
- package/lib/external-table.d.ts +62 -0
- package/lib/external-table.js +132 -0
- package/lib/index.d.ts +4 -1
- package/lib/index.js +5 -2
- package/lib/job-executable.js +4 -4
- package/lib/job.js +2 -2
- package/lib/s3-table.d.ts +122 -0
- package/lib/s3-table.js +224 -0
- package/lib/schema.js +1 -1
- package/lib/security-configuration.js +1 -1
- package/lib/storage-parameter.js +1 -1
- package/lib/{table.d.ts → table-base.d.ts} +11 -112
- package/lib/table-base.js +188 -0
- package/lib/table-deprecated.d.ts +10 -0
- package/lib/table-deprecated.js +17 -0
- package/package.json +8 -8
- package/lib/table.js +0 -384
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.ExternalTable = void 0;
|
|
5
|
+
const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
|
|
6
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
7
|
+
const aws_glue_1 = require("aws-cdk-lib/aws-glue");
|
|
8
|
+
const table_base_1 = require("./table-base");
|
|
9
|
+
/**
|
|
10
|
+
* A Glue table that targets an external data location (e.g. A table in a Redshift Cluster).
|
|
11
|
+
*/
|
|
12
|
+
class ExternalTable extends table_base_1.TableBase {
|
|
13
|
+
constructor(scope, id, props) {
|
|
14
|
+
super(scope, id, props);
|
|
15
|
+
try {
|
|
16
|
+
jsiiDeprecationWarnings._aws_cdk_aws_glue_alpha_ExternalTableProps(props);
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
|
|
20
|
+
Error.captureStackTrace(error, ExternalTable);
|
|
21
|
+
}
|
|
22
|
+
throw error;
|
|
23
|
+
}
|
|
24
|
+
this.connection = props.connection;
|
|
25
|
+
this.tableResource = new aws_glue_1.CfnTable(this, 'Table', {
|
|
26
|
+
catalogId: props.database.catalogId,
|
|
27
|
+
databaseName: props.database.databaseName,
|
|
28
|
+
tableInput: {
|
|
29
|
+
name: this.physicalName,
|
|
30
|
+
description: props.description || `${this.physicalName} generated by CDK`,
|
|
31
|
+
partitionKeys: renderColumns(props.partitionKeys),
|
|
32
|
+
parameters: {
|
|
33
|
+
'classification': props.dataFormat.classificationString?.value,
|
|
34
|
+
'has_encrypted_data': true,
|
|
35
|
+
'partition_filtering.enabled': props.enablePartitionFiltering,
|
|
36
|
+
'connectionName': props.connection.connectionName,
|
|
37
|
+
},
|
|
38
|
+
storageDescriptor: {
|
|
39
|
+
location: props.externalDataLocation,
|
|
40
|
+
compressed: this.compressed,
|
|
41
|
+
storedAsSubDirectories: props.storedAsSubDirectories ?? false,
|
|
42
|
+
columns: renderColumns(props.columns),
|
|
43
|
+
inputFormat: props.dataFormat.inputFormat.className,
|
|
44
|
+
outputFormat: props.dataFormat.outputFormat.className,
|
|
45
|
+
serdeInfo: {
|
|
46
|
+
serializationLibrary: props.dataFormat.serializationLibrary.className,
|
|
47
|
+
},
|
|
48
|
+
parameters: props.storageParameters ? props.storageParameters.reduce((acc, param) => {
|
|
49
|
+
if (param.key in acc) {
|
|
50
|
+
throw new Error(`Duplicate storage parameter key: ${param.key}`);
|
|
51
|
+
}
|
|
52
|
+
const key = param.key;
|
|
53
|
+
acc[key] = param.value;
|
|
54
|
+
return acc;
|
|
55
|
+
}, {}) : undefined,
|
|
56
|
+
},
|
|
57
|
+
tableType: 'EXTERNAL_TABLE',
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
this.tableName = this.getResourceNameAttribute(this.tableResource.ref);
|
|
61
|
+
this.tableArn = this.stack.formatArn({
|
|
62
|
+
service: 'glue',
|
|
63
|
+
resource: 'table',
|
|
64
|
+
resourceName: `${this.database.databaseName}/${this.tableName}`,
|
|
65
|
+
});
|
|
66
|
+
this.node.defaultChild = this.tableResource;
|
|
67
|
+
// Partition index creation relies on created table.
|
|
68
|
+
if (props.partitionIndexes) {
|
|
69
|
+
this.partitionIndexes = props.partitionIndexes;
|
|
70
|
+
this.partitionIndexes.forEach((index) => this.addPartitionIndex(index));
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Grant read permissions to the table
|
|
75
|
+
*
|
|
76
|
+
* @param grantee the principal
|
|
77
|
+
*/
|
|
78
|
+
grantRead(grantee) {
|
|
79
|
+
const ret = this.grant(grantee, readPermissions);
|
|
80
|
+
return ret;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Grant write permissions to the table
|
|
84
|
+
*
|
|
85
|
+
* @param grantee the principal
|
|
86
|
+
*/
|
|
87
|
+
grantWrite(grantee) {
|
|
88
|
+
const ret = this.grant(grantee, writePermissions);
|
|
89
|
+
return ret;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Grant read and write permissions to the table
|
|
93
|
+
*
|
|
94
|
+
* @param grantee the principal
|
|
95
|
+
*/
|
|
96
|
+
grantReadWrite(grantee) {
|
|
97
|
+
const ret = this.grant(grantee, [...readPermissions, ...writePermissions]);
|
|
98
|
+
return ret;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
exports.ExternalTable = ExternalTable;
|
|
102
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
103
|
+
ExternalTable[_a] = { fqn: "@aws-cdk/aws-glue-alpha.ExternalTable", version: "2.96.0-alpha.0" };
|
|
104
|
+
const readPermissions = [
|
|
105
|
+
'glue:BatchGetPartition',
|
|
106
|
+
'glue:GetPartition',
|
|
107
|
+
'glue:GetPartitions',
|
|
108
|
+
'glue:GetTable',
|
|
109
|
+
'glue:GetTables',
|
|
110
|
+
'glue:GetTableVersion',
|
|
111
|
+
'glue:GetTableVersions',
|
|
112
|
+
];
|
|
113
|
+
const writePermissions = [
|
|
114
|
+
'glue:BatchCreatePartition',
|
|
115
|
+
'glue:BatchDeletePartition',
|
|
116
|
+
'glue:CreatePartition',
|
|
117
|
+
'glue:DeletePartition',
|
|
118
|
+
'glue:UpdatePartition',
|
|
119
|
+
];
|
|
120
|
+
function renderColumns(columns) {
|
|
121
|
+
if (columns === undefined) {
|
|
122
|
+
return undefined;
|
|
123
|
+
}
|
|
124
|
+
return columns.map(column => {
|
|
125
|
+
return {
|
|
126
|
+
name: column.name,
|
|
127
|
+
type: column.type.inputString,
|
|
128
|
+
comment: column.comment,
|
|
129
|
+
};
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZXJuYWwtdGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJleHRlcm5hbC10YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtREFBZ0Q7QUFLaEQsNkNBQXlFO0FBb0J6RTs7R0FFRztBQUNILE1BQWEsYUFBYyxTQUFRLHNCQUFTO0lBdUIxQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXlCO1FBQ2pFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDOzs7Ozs7K0NBeEJmLGFBQWE7Ozs7UUF5QnRCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQztRQUNuQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksbUJBQVEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFO1lBQy9DLFNBQVMsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVM7WUFFbkMsWUFBWSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWTtZQUV6QyxVQUFVLEVBQUU7Z0JBQ1YsSUFBSSxFQUFFLElBQUksQ0FBQyxZQUFZO2dCQUN2QixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsSUFBSSxHQUFHLElBQUksQ0FBQyxZQUFZLG1CQUFtQjtnQkFFekUsYUFBYSxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDO2dCQUVqRCxVQUFVLEVBQUU7b0JBQ1YsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsRUFBRSxLQUFLO29CQUM5RCxvQkFBb0IsRUFBRSxJQUFJO29CQUMxQiw2QkFBNkIsRUFBRSxLQUFLLENBQUMsd0JBQXdCO29CQUM3RCxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLGNBQWM7aUJBQ2xEO2dCQUNELGlCQUFpQixFQUFFO29CQUNqQixRQUFRLEVBQUUsS0FBSyxDQUFDLG9CQUFvQjtvQkFDcEMsVUFBVSxFQUFFLElBQUksQ0FB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QUVGLE1BQU0sZ0JBQWdCLEdBQUc7SUFDdkIsMkJBQTJCO0lBQzNCLDJCQUEyQjtJQUMzQixzQkFBc0I7SUFDdEIsc0JBQXNCO0lBQ3RCLHNCQUFzQjtDQUN2QixDQUFDO0FBRUYsU0FBUyxhQUFhLENBQUMsT0FBZ0M7SUFDckQsSUFBSSxPQUFPLEtBQUssU0FBUyxFQUFFO1FBQ3pCLE9BQU8sU0FBUyxDQUFDO0tBQ2xCO0lBQ0QsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQzFCLE9BQU87WUFDTCxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7WUFDakIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVztZQUM3QixPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU87U0FDeEIsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENmblRhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWdsdWUnO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBJQ29ubmVjdGlvbiB9IGZyb20gJy4vY29ubmVjdGlvbic7XG5pbXBvcnQgeyBDb2x1bW4gfSBmcm9tICcuL3NjaGVtYSc7XG5pbXBvcnQgeyBQYXJ0aXRpb25JbmRleCwgVGFibGVCYXNlLCBUYWJsZUJhc2VQcm9wcyB9IGZyb20gJy4vdGFibGUtYmFzZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXh0ZXJuYWxUYWJsZVByb3BzIGV4dGVuZHMgVGFibGVCYXNlUHJvcHMge1xuICAvKipcbiAgICogVGhlIGNvbm5lY3Rpb24gdGhlIHRhYmxlIHdpbGwgdXNlIHdoZW4gcGVyZm9ybWluZyByZWFkcyBhbmQgd3JpdGVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGNvbm5lY3Rpb25cbiAgICovXG4gIHJlYWRvbmx5IGNvbm5lY3Rpb246IElDb25uZWN0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgZGF0YSBzb3VyY2UgbG9jYXRpb24gb2YgdGhlIGdsdWUgdGFibGUsIChlLmcuIGBkZWZhdWx0X2RiX3B1YmxpY19leGFtcGxlYCBmb3IgUmVkc2hpZnQpLlxuICAgKlxuICAgKiBJZiB0aGlzIHByb3BlcnR5IGlzIHNldCwgaXQgd2lsbCBvdmVycmlkZSBib3RoIGBidWNrZXRgIGFuZCBgczNQcmVmaXhgLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIG91dHNvdXJjZWQgZGF0YSBzb3VyY2UgbG9jYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGV4dGVybmFsRGF0YUxvY2F0aW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBHbHVlIHRhYmxlIHRoYXQgdGFyZ2V0cyBhbiBleHRlcm5hbCBkYXRhIGxvY2F0aW9uIChlLmcuIEEgdGFibGUgaW4gYSBSZWRzaGlmdCBDbHVzdGVyKS5cbiAqL1xuZXhwb3J0IGNsYXNzIEV4dGVybmFsVGFibGUgZXh0ZW5kcyBUYWJsZUJhc2Uge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGlzIHRhYmxlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRhYmxlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBUk4gb2YgdGhpcyB0YWJsZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0YWJsZUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgY29ubmVjdGlvbiBhc3NvY2lhdGVkIHRvIHRoaXMgdGFibGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjb25uZWN0aW9uOiBJQ29ubmVjdGlvbjtcblxuICAvKipcbiAgICogVGhpcyB0YWJsZSdzIHBhcnRpdGlvbiBpbmRleGVzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHBhcnRpdGlvbkluZGV4ZXM/OiBQYXJ0aXRpb25JbmRleFtdO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSB0YWJsZVJlc291cmNlOiBDZm5UYWJsZTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRXh0ZXJuYWxUYWJsZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG4gICAgdGhpcy5jb25uZWN0aW9uID0gcHJvcHMuY29ubmVjdGlvbjtcbiAgICB0aGlzLnRhYmxlUmVzb3VyY2UgPSBuZXcgQ2ZuVGFibGUodGhpcywgJ1RhYmxlJywge1xuICAgICAgY2F0YWxvZ0lkOiBwcm9wcy5kYXRhYmFzZS5jYXRhbG9nSWQsXG5cbiAgICAgIGRhdGFiYXNlTmFtZTogcHJvcHMuZGF0YWJhc2UuZGF0YWJhc2VOYW1lLFxuXG4gICAgICB0YWJsZUlucHV0OiB7XG4gICAgICAgIG5hbWU6IHRoaXMucGh5c2ljYWxOYW1lLFxuICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24gfHwgYCR7dGhpcy5waHlzaWNhbE5hbWV9IGdlbmVyYXRlZCBieSBDREtgLFxuXG4gICAgICAgIHBhcnRpdGlvbktleXM6IHJlbmRlckNvbHVtbnMocHJvcHMucGFydGl0aW9uS2V5cyksXG5cbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICdjbGFzc2lmaWNhdGlvbic6IHByb3BzLmRhdGFGb3JtYXQuY2xhc3NpZmljYXRpb25TdHJpbmc/LnZhbHVlLFxuICAgICAgICAgICdoYXNfZW5jcnlwdGVkX2RhdGEnOiB0cnVlLFxuICAgICAgICAgICdwYXJ0aXRpb25fZmlsdGVyaW5nLmVuYWJsZWQnOiBwcm9wcy5lbmFibGVQYXJ0aXRpb25GaWx0ZXJpbmcsXG4gICAgICAgICAgJ2Nvbm5lY3Rpb25OYW1lJzogcHJvcHMuY29ubmVjdGlvbi5jb25uZWN0aW9uTmFtZSxcbiAgICAgICAgfSxcbiAgICAgICAgc3RvcmFnZURlc2NyaXB0b3I6IHtcbiAgICAgICAgICBsb2NhdGlvbjogcHJvcHMuZXh0ZXJuYWxEYXRhTG9jYXRpb24sXG4gICAgICAgICAgY29tcHJlc3NlZDogdGhpcy5jb21wcmVzc2VkLFxuICAgICAgICAgIHN0b3JlZEFzU3ViRGlyZWN0b3JpZXM6IHByb3BzLnN0b3JlZEFzU3ViRGlyZWN0b3JpZXMgPz8gZmFsc2UsXG4gICAgICAgICAgY29sdW1uczogcmVuZGVyQ29sdW1ucyhwcm9wcy5jb2x1bW5zKSxcbiAgICAgICAgICBpbnB1dEZvcm1hdDogcHJvcHMuZGF0YUZvcm1hdC5pbnB1dEZvcm1hdC5jbGFzc05hbWUsXG4gICAgICAgICAgb3V0cHV0Rm9ybWF0OiBwcm9wcy5kYXRhRm9ybWF0Lm91dHB1dEZvcm1hdC5jbGFzc05hbWUsXG4gICAgICAgICAgc2VyZGVJbmZvOiB7XG4gICAgICAgICAgICBzZXJpYWxpemF0aW9uTGlicmFyeTogcHJvcHMuZGF0YUZvcm1hdC5zZXJpYWxpemF0aW9uTGlicmFyeS5jbGFzc05hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwYXJhbWV0ZXJzOiBwcm9wcy5zdG9yYWdlUGFyYW1ldGVycyA/IHByb3BzLnN0b3JhZ2VQYXJhbWV0ZXJzLnJlZHVjZSgoYWNjLCBwYXJhbSkgPT4ge1xuICAgICAgICAgICAgaWYgKHBhcmFtLmtleSBpbiBhY2MpIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBEdXBsaWNhdGUgc3RvcmFnZSBwYXJhbWV0ZXIga2V5OiAke3BhcmFtLmtleX1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGtleSA9IHBhcmFtLmtleTtcbiAgICAgICAgICAgIGFjY1trZXldID0gcGFyYW0udmFsdWU7XG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgIH0sIHt9IGFzIHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0pIDogdW5kZWZpbmVkLFxuICAgICAgICB9LFxuXG4gICAgICAgIHRhYmxlVHlwZTogJ0VYVEVSTkFMX1RBQkxFJyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLnRhYmxlTmFtZSA9IHRoaXMuZ2V0UmVzb3VyY2VOYW1lQXR0cmlidXRlKHRoaXMudGFibGVSZXNvdXJjZS5yZWYpO1xuICAgIHRoaXMudGFibGVBcm4gPSB0aGlzLnN0YWNrLmZvcm1hdEFybih7XG4gICAgICBzZXJ2aWNlOiAnZ2x1ZScsXG4gICAgICByZXNvdXJjZTogJ3RhYmxlJyxcbiAgICAgIHJlc291cmNlTmFtZTogYCR7dGhpcy5kYXRhYmFzZS5kYXRhYmFzZU5hbWV9LyR7dGhpcy50YWJsZU5hbWV9YCxcbiAgICB9KTtcbiAgICB0aGlzLm5vZGUuZGVmYXVsdENoaWxkID0gdGhpcy50YWJsZVJlc291cmNlO1xuXG4gICAgLy8gUGFydGl0aW9uIGluZGV4IGNyZWF0aW9uIHJlbGllcyBvbiBjcmVhdGVkIHRhYmxlLlxuICAgIGlmIChwcm9wcy5wYXJ0aXRpb25JbmRleGVzKSB7XG4gICAgICB0aGlzLnBhcnRpdGlvbkluZGV4ZXMgPSBwcm9wcy5wYXJ0aXRpb25JbmRleGVzO1xuICAgICAgdGhpcy5wYXJ0aXRpb25JbmRleGVzLmZvckVhY2goKGluZGV4KSA9PiB0aGlzLmFkZFBhcnRpdGlvbkluZGV4KGluZGV4KSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgcGVybWlzc2lvbnMgdG8gdGhlIHRhYmxlXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIHRoZSBwcmluY2lwYWxcbiAgICovXG4gIHB1YmxpYyBncmFudFJlYWQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIGNvbnN0IHJldCA9IHRoaXMuZ3JhbnQoZ3JhbnRlZSwgcmVhZFBlcm1pc3Npb25zKTtcbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHdyaXRlIHBlcm1pc3Npb25zIHRvIHRoZSB0YWJsZVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSB0aGUgcHJpbmNpcGFsXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRXcml0ZShncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgY29uc3QgcmV0ID0gdGhpcy5ncmFudChncmFudGVlLCB3cml0ZVBlcm1pc3Npb25zKTtcbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgYW5kIHdyaXRlIHBlcm1pc3Npb25zIHRvIHRoZSB0YWJsZVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSB0aGUgcHJpbmNpcGFsXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRSZWFkV3JpdGUoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIGNvbnN0IHJldCA9IHRoaXMuZ3JhbnQoZ3JhbnRlZSwgWy4uLnJlYWRQZXJtaXNzaW9ucywgLi4ud3JpdGVQZXJtaXNzaW9uc10pO1xuICAgIHJldHVybiByZXQ7XG4gIH1cbn1cblxuY29uc3QgcmVhZFBlcm1pc3Npb25zID0gW1xuICAnZ2x1ZTpCYXRjaEdldFBhcnRpdGlvbicsXG4gICdnbHVlOkdldFBhcnRpdGlvbicsXG4gICdnbHVlOkdldFBhcnRpdGlvbnMnLFxuICAnZ2x1ZTpHZXRUYWJsZScsXG4gICdnbHVlOkdldFRhYmxlcycsXG4gICdnbHVlOkdldFRhYmxlVmVyc2lvbicsXG4gICdnbHVlOkdldFRhYmxlVmVyc2lvbnMnLFxuXTtcblxuY29uc3Qgd3JpdGVQZXJtaXNzaW9ucyA9IFtcbiAgJ2dsdWU6QmF0Y2hDcmVhdGVQYXJ0aXRpb24nLFxuICAnZ2x1ZTpCYXRjaERlbGV0ZVBhcnRpdGlvbicsXG4gICdnbHVlOkNyZWF0ZVBhcnRpdGlvbicsXG4gICdnbHVlOkRlbGV0ZVBhcnRpdGlvbicsXG4gICdnbHVlOlVwZGF0ZVBhcnRpdGlvbicsXG5dO1xuXG5mdW5jdGlvbiByZW5kZXJDb2x1bW5zKGNvbHVtbnM/OiBBcnJheTxDb2x1bW4gfCBDb2x1bW4+KSB7XG4gIGlmIChjb2x1bW5zID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIHJldHVybiBjb2x1bW5zLm1hcChjb2x1bW4gPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiBjb2x1bW4ubmFtZSxcbiAgICAgIHR5cGU6IGNvbHVtbi50eXBlLmlucHV0U3RyaW5nLFxuICAgICAgY29tbWVudDogY29sdW1uLmNvbW1lbnQsXG4gICAgfTtcbiAgfSk7XG59XG4iXX0=
|
package/lib/index.d.ts
CHANGED
|
@@ -3,9 +3,12 @@ export * from './connection';
|
|
|
3
3
|
export * from './data-format';
|
|
4
4
|
export * from './data-quality-ruleset';
|
|
5
5
|
export * from './database';
|
|
6
|
+
export * from './external-table';
|
|
6
7
|
export * from './job';
|
|
7
8
|
export * from './job-executable';
|
|
9
|
+
export * from './s3-table';
|
|
8
10
|
export * from './schema';
|
|
9
11
|
export * from './security-configuration';
|
|
10
12
|
export * from './storage-parameter';
|
|
11
|
-
export * from './table';
|
|
13
|
+
export * from './table-base';
|
|
14
|
+
export * from './table-deprecated';
|
package/lib/index.js
CHANGED
|
@@ -20,10 +20,13 @@ __exportStar(require("./connection"), exports);
|
|
|
20
20
|
__exportStar(require("./data-format"), exports);
|
|
21
21
|
__exportStar(require("./data-quality-ruleset"), exports);
|
|
22
22
|
__exportStar(require("./database"), exports);
|
|
23
|
+
__exportStar(require("./external-table"), exports);
|
|
23
24
|
__exportStar(require("./job"), exports);
|
|
24
25
|
__exportStar(require("./job-executable"), exports);
|
|
26
|
+
__exportStar(require("./s3-table"), exports);
|
|
25
27
|
__exportStar(require("./schema"), exports);
|
|
26
28
|
__exportStar(require("./security-configuration"), exports);
|
|
27
29
|
__exportStar(require("./storage-parameter"), exports);
|
|
28
|
-
__exportStar(require("./table"), exports);
|
|
29
|
-
|
|
30
|
+
__exportStar(require("./table-base"), exports);
|
|
31
|
+
__exportStar(require("./table-deprecated"), exports);
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsc0NBQXNDOzs7Ozs7Ozs7Ozs7Ozs7O0FBRXRDLHlDQUF1QjtBQUN2QiwrQ0FBNkI7QUFDN0IsZ0RBQThCO0FBQzlCLHlEQUF1QztBQUN2Qyw2Q0FBMkI7QUFDM0IsbURBQWlDO0FBQ2pDLHdDQUFzQjtBQUN0QixtREFBaUM7QUFDakMsNkNBQTJCO0FBQzNCLDJDQUF5QjtBQUN6QiwyREFBeUM7QUFDekMsc0RBQW9DO0FBQ3BDLCtDQUE2QjtBQUM3QixxREFBbUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBV1M6OkdsdWUgQ2xvdWRGb3JtYXRpb24gUmVzb3VyY2VzOlxuXG5leHBvcnQgKiBmcm9tICcuL2NvZGUnO1xuZXhwb3J0ICogZnJvbSAnLi9jb25uZWN0aW9uJztcbmV4cG9ydCAqIGZyb20gJy4vZGF0YS1mb3JtYXQnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhLXF1YWxpdHktcnVsZXNldCc7XG5leHBvcnQgKiBmcm9tICcuL2RhdGFiYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vZXh0ZXJuYWwtdGFibGUnO1xuZXhwb3J0ICogZnJvbSAnLi9qb2InO1xuZXhwb3J0ICogZnJvbSAnLi9qb2ItZXhlY3V0YWJsZSc7XG5leHBvcnQgKiBmcm9tICcuL3MzLXRhYmxlJztcbmV4cG9ydCAqIGZyb20gJy4vc2NoZW1hJztcbmV4cG9ydCAqIGZyb20gJy4vc2VjdXJpdHktY29uZmlndXJhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL3N0b3JhZ2UtcGFyYW1ldGVyJztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGUtYmFzZSc7XG5leHBvcnQgKiBmcm9tICcuL3RhYmxlLWRlcHJlY2F0ZWQnO1xuIl19
|
package/lib/job-executable.js
CHANGED
|
@@ -26,7 +26,7 @@ class GlueVersion {
|
|
|
26
26
|
}
|
|
27
27
|
exports.GlueVersion = GlueVersion;
|
|
28
28
|
_a = JSII_RTTI_SYMBOL_1;
|
|
29
|
-
GlueVersion[_a] = { fqn: "@aws-cdk/aws-glue-alpha.GlueVersion", version: "2.
|
|
29
|
+
GlueVersion[_a] = { fqn: "@aws-cdk/aws-glue-alpha.GlueVersion", version: "2.96.0-alpha.0" };
|
|
30
30
|
/**
|
|
31
31
|
* Glue version using Spark 2.2.1 and Python 2.7
|
|
32
32
|
*/
|
|
@@ -97,7 +97,7 @@ class Runtime {
|
|
|
97
97
|
}
|
|
98
98
|
exports.Runtime = Runtime;
|
|
99
99
|
_b = JSII_RTTI_SYMBOL_1;
|
|
100
|
-
Runtime[_b] = { fqn: "@aws-cdk/aws-glue-alpha.Runtime", version: "2.
|
|
100
|
+
Runtime[_b] = { fqn: "@aws-cdk/aws-glue-alpha.Runtime", version: "2.96.0-alpha.0" };
|
|
101
101
|
/**
|
|
102
102
|
* Runtime for a Glue for Ray 2.4.
|
|
103
103
|
*/
|
|
@@ -122,7 +122,7 @@ class JobType {
|
|
|
122
122
|
}
|
|
123
123
|
exports.JobType = JobType;
|
|
124
124
|
_c = JSII_RTTI_SYMBOL_1;
|
|
125
|
-
JobType[_c] = { fqn: "@aws-cdk/aws-glue-alpha.JobType", version: "2.
|
|
125
|
+
JobType[_c] = { fqn: "@aws-cdk/aws-glue-alpha.JobType", version: "2.96.0-alpha.0" };
|
|
126
126
|
/**
|
|
127
127
|
* Command for running a Glue Spark job.
|
|
128
128
|
*/
|
|
@@ -334,5 +334,5 @@ class JobExecutable {
|
|
|
334
334
|
}
|
|
335
335
|
exports.JobExecutable = JobExecutable;
|
|
336
336
|
_d = JSII_RTTI_SYMBOL_1;
|
|
337
|
-
JobExecutable[_d] = { fqn: "@aws-cdk/aws-glue-alpha.JobExecutable", version: "2.
|
|
337
|
+
JobExecutable[_d] = { fqn: "@aws-cdk/aws-glue-alpha.JobExecutable", version: "2.96.0-alpha.0" };
|
|
338
338
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLWV4ZWN1dGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJqb2ItZXhlY3V0YWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFFQTs7Ozs7OztHQU9HO0FBQ0gsTUFBYSxXQUFXO0lBMEJ0Qjs7O09BR0c7SUFDSSxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQWU7UUFDOUIsT0FBTyxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUNqQztJQU9ELFlBQW9CLElBQVk7UUFDOUIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7S0FDbEI7O0FBekNILGtDQTBDQzs7O0FBekNDOztHQUVHO0FBQ29CLGdCQUFJLEdBQUcsSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7QUFFckQ7O0dBRUc7QUFDb0IsZ0JBQUksR0FBRyxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUVyRDs7R0FFRztBQUNvQixnQkFBSSxHQUFHLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBRXJEOztHQUVHO0FBQ29CLGdCQUFJLEdBQUcsSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7QUFFckQ7O0dBRUc7QUFDb0IsZ0JBQUksR0FBRyxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQW9CdkQ7O0dBRUc7QUFDSCxJQUFZLFdBVVg7QUFWRCxXQUFZLFdBQVc7SUFDckI7O09BRUc7SUFDSCw4QkFBZSxDQUFBO0lBRWY7O09BRUc7SUFDSCxnQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBVlcsV0FBVywyQkFBWCxXQUFXLFFBVXRCO0FBRUQ7O0dBRUc7QUFDSCxJQUFZLGFBZVg7QUFmRCxXQUFZLGFBQWE7SUFDdkI7O09BRUc7SUFDSCwwQkFBUyxDQUFBO0lBRVQ7O09BRUc7SUFDSCw0QkFBVyxDQUFBO0lBRVg7O09BRUc7SUFDSCxtQ0FBa0IsQ0FBQTtBQUNwQixDQUFDLEVBZlcsYUFBYSw2QkFBYixhQUFh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SUFBSSxLQUFLLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFO1lBQzdELE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQztTQUN0RDtRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0tBQ3RCO0lBRUQ7O09BRUc7SUFDSSxJQUFJO1FBQ1QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0tBQ3BCOztBQXhJSCxzQ0F5SUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb2RlIH0gZnJvbSAnLi9jb2RlJztcblxuLyoqXG4gKiBBV1MgR2x1ZSB2ZXJzaW9uIGRldGVybWluZXMgdGhlIHZlcnNpb25zIG9mIEFwYWNoZSBTcGFyayBhbmQgUHl0aG9uIHRoYXQgYXJlIGF2YWlsYWJsZSB0byB0aGUgam9iLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2dsdWUvbGF0ZXN0L2RnL2FkZC1qb2IuaHRtbC5cbiAqXG4gKiBJZiB5b3UgbmVlZCB0byB1c2UgYSBHbHVlVmVyc2lvbiB0aGF0IGRvZXNuJ3QgZXhpc3QgYXMgYSBzdGF0aWMgbWVtYmVyLCB5b3VcbiAqIGNhbiBpbnN0YW50aWF0ZSBhIGBHbHVlVmVyc2lvbmAgb2JqZWN0LCBlLmc6IGBHbHVlVmVyc2lvbi5vZignMS41JylgLlxuICovXG5leHBvcnQgY2xhc3MgR2x1ZVZlcnNpb24ge1xuICAvKipcbiAgICogR2x1ZSB2ZXJzaW9uIHVzaW5nIFNwYXJrIDIuMi4xIGFuZCBQeXRob24gMi43XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFYwXzkgPSBuZXcgR2x1ZVZlcnNpb24oJzAuOScpO1xuXG4gIC8qKlxuICAgKiBHbHVlIHZlcnNpb24gdXNpbmcgU3BhcmsgMi40LjMsIFB5dGhvbiAyLjcgYW5kIFB5dGhvbiAzLjZcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVjFfMCA9IG5ldyBHbHVlVmVyc2lvbignMS4wJyk7XG5cbiAgLyoqXG4gICAqIEdsdWUgdmVyc2lvbiB1c2luZyBTcGFyayAyLjQuMyBhbmQgUHl0aG9uIDMuN1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBWMl8wID0gbmV3IEdsdWVWZXJzaW9uKCcyLjAnKTtcblxuICAvKipcbiAgICogR2x1ZSB2ZXJzaW9uIHVzaW5nIFNwYXJrIDMuMS4xIGFuZCBQeXRob24gMy43XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFYzXzAgPSBuZXcgR2x1ZVZlcnNpb24oJzMuMCcpO1xuXG4gIC8qKlxuICAgKiBHbHVlIHZlcnNpb24gdXNpbmcgU3BhcmsgMy4zLjAgYW5kIFB5dGhvbiAzLjEwXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFY0XzAgPSBuZXcgR2x1ZVZlcnNpb24oJzQuMCcpO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gR2x1ZSB2ZXJzaW9uXG4gICAqIEBwYXJhbSB2ZXJzaW9uIGN1c3RvbSB2ZXJzaW9uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG9mKHZlcnNpb246IHN0cmluZyk6IEdsdWVWZXJzaW9uIHtcbiAgICByZXR1cm4gbmV3IEdsdWVWZXJzaW9uKHZlcnNpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoaXMgR2x1ZVZlcnNpb24sIGFzIGV4cGVjdGVkIGJ5IEpvYiByZXNvdXJjZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICB9XG59XG5cbi8qKlxuICogUnVudGltZSBsYW5ndWFnZSBvZiB0aGUgR2x1ZSBqb2JcbiAqL1xuZXhwb3J0IGVudW0gSm9iTGFuZ3VhZ2Uge1xuICAvKipcbiAgICogU2NhbGFcbiAgICovXG4gIFNDQUxBID0gJ3NjYWxhJyxcblxuICAvKipcbiAgICogUHl0aG9uXG4gICAqL1xuICBQWVRIT04gPSAncHl0aG9uJyxcbn1cblxuLyoqXG4gKiBQeXRob24gdmVyc2lvblxuICovXG5leHBvcnQgZW51bSBQeXRob25WZXJzaW9uIHtcbiAgLyoqXG4gICAqIFB5dGhvbiAyICh0aGUgZXhhY3QgdmVyc2lvbiBkZXBlbmRzIG9uIEdsdWVWZXJzaW9uIGFuZCBKb2JDb21tYW5kIHVzZWQpXG4gICAqL1xuICBUV08gPSAnMicsXG5cbiAgLyoqXG4gICAqIFB5dGhvbiAzICh0aGUgZXhhY3QgdmVyc2lvbiBkZXBlbmRzIG9uIEdsdWVWZXJzaW9uIGFuZCBKb2JDb21tYW5kIHVzZWQpXG4gICAqL1xuICBUSFJFRSA9ICczJyxcblxuICAvKipcbiAgICogUHl0aG9uIDMuOSAodGhlIGV4YWN0IHZlcnNpb24gZGVwZW5kcyBvbiBHbHVlVmVyc2lvbiBhbmQgSm9iQ29tbWFuZCB1c2VkKVxuICAgKi9cbiAgVEhSRUVfTklORSA9ICczLjknLFxufVxuXG4vKipcbiAqIEFXUyBHbHVlIHJ1bnRpbWUgZGV0ZXJtaW5lcyB0aGUgcnVudGltZSBlbmdpbmUgb2YgdGhlIGpvYi5cbiAqXG4gKi9cbmV4cG9ydCBjbGFzcyBSdW50aW1lIHtcbiAgLyoqXG4gICAqIFJ1bnRpbWUgZm9yIGEgR2x1ZSBmb3IgUmF5IDIuNC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUkFZX1RXT19GT1VSID0gbmV3IFJ1bnRpbWUoJ1JheTIuNCcpO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gcnVudGltZVxuICAgKiBAcGFyYW0gcnVudGltZSBjdXN0b20gcnVudGltZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBvZihydW50aW1lOiBzdHJpbmcpOiBSdW50aW1lIHtcbiAgICByZXR1cm4gbmV3IFJ1bnRpbWUocnVudGltZSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhpcyBSdW50aW1lLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZykge1xuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgam9iIHR5cGUuXG4gKlxuICogSWYgeW91IG5lZWQgdG8gdXNlIGEgSm9iVHlwZSB0aGF0IGRvZXNuJ3QgZXhpc3QgYXMgYSBzdGF0aWMgbWVtYmVyLCB5b3VcbiAqIGNhbiBpbnN0YW50aWF0ZSBhIGBKb2JUeXBlYCBvYmplY3QsIGUuZzogYEpvYlR5cGUub2YoJ290aGVyIG5hbWUnKWAuXG4gKi9cbmV4cG9ydCBjbGFzcyBKb2JUeXBlIHtcbiAgLyoqXG4gICAqIENvbW1hbmQgZm9yIHJ1bm5pbmcgYSBHbHVlIFNwYXJrIGpvYi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRVRMID0gbmV3IEpvYlR5cGUoJ2dsdWVldGwnKTtcblxuICAvKipcbiAgICogQ29tbWFuZCBmb3IgcnVubmluZyBhIEdsdWUgU3Bhcmsgc3RyZWFtaW5nIGpvYi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU1RSRUFNSU5HID0gbmV3IEpvYlR5cGUoJ2dsdWVzdHJlYW1pbmcnKTtcblxuICAvKipcbiAgICogQ29tbWFuZCBmb3IgcnVubmluZyBhIEdsdWUgcHl0aG9uIHNoZWxsIGpvYi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFlUSE9OX1NIRUxMID0gbmV3IEpvYlR5cGUoJ3B5dGhvbnNoZWxsJyk7XG5cbiAgLyoqXG4gICAqIENvbW1hbmQgZm9yIHJ1bm5pbmcgYSBHbHVlIFJheSBqb2IuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFJBWSA9IG5ldyBKb2JUeXBlKCdnbHVlcmF5Jyk7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSB0eXBlIG5hbWVcbiAgICogQHBhcmFtIG5hbWUgdHlwZSBuYW1lXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG9mKG5hbWU6IHN0cmluZyk6IEpvYlR5cGUge1xuICAgIHJldHVybiBuZXcgSm9iVHlwZShuYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGlzIEpvYlR5cGUsIGFzIGV4cGVjdGVkIGJ5IEpvYiByZXNvdXJjZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICB9XG59XG5cbmludGVyZmFjZSBQeXRob25FeGVjdXRhYmxlUHJvcHMge1xuICAvKipcbiAgICogVGhlIFB5dGhvbiB2ZXJzaW9uIHRvIHVzZS5cbiAgICovXG4gIHJlYWRvbmx5IHB5dGhvblZlcnNpb246IFB5dGhvblZlcnNpb247XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgUHl0aG9uIGZpbGVzIHRoYXQgQVdTIEdsdWUgYWRkcyB0byB0aGUgUHl0aG9uIHBhdGggYmVmb3JlIGV4ZWN1dGluZyB5b3VyIHNjcmlwdC5cbiAgICogT25seSBpbmRpdmlkdWFsIGZpbGVzIGFyZSBzdXBwb3J0ZWQsIGRpcmVjdG9yaWVzIGFyZSBub3Qgc3VwcG9ydGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGV4dHJhIHB5dGhvbiBmaWxlcyBhbmQgYXJndW1lbnQgaXMgbm90IHNldFxuICAgKlxuICAgKiBAc2VlIGAtLWV4dHJhLXB5LWZpbGVzYCBpbiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZ2x1ZS9sYXRlc3QvZGcvYXdzLWdsdWUtcHJvZ3JhbW1pbmctZXRsLWdsdWUtYXJndW1lbnRzLmh0bWxcbiAgICovXG4gIHJlYWRvbmx5IGV4dHJhUHl0aG9uRmlsZXM/OiBDb2RlW107XG59XG5cbmludGVyZmFjZSBTaGFyZWRKb2JFeGVjdXRhYmxlUHJvcHMge1xuICAvKipcbiAgICogUnVudGltZS4gSXQgaXMgcmVxdWlyZWQgZm9yIFJheSBqb2JzLlxuICAgKlxuICAgKi9cbiAgcmVhZG9ubHkgcnVudGltZT86IFJ1bnRpbWU7XG5cbiAgLyoqXG4gICAqIEdsdWUgdmVyc2lvbi5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZ2x1ZS9sYXRlc3QvZGcvcmVsZWFzZS1ub3Rlcy5odG1sXG4gICAqL1xuICByZWFkb25seSBnbHVlVmVyc2lvbjogR2x1ZVZlcnNpb247XG5cbiAgLyoqXG4gICAqIFRoZSBzY3JpcHQgdGhhdCBleGVjdXRlcyBhIGpvYi5cbiAgICovXG4gIHJlYWRvbmx5IHNjcmlwdDogQ29kZTtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBmaWxlcywgc3VjaCBhcyBjb25maWd1cmF0aW9uIGZpbGVzIHRoYXQgQVdTIEdsdWUgY29waWVzIHRvIHRoZSB3b3JraW5nIGRpcmVjdG9yeSBvZiB5b3VyIHNjcmlwdCBiZWZvcmUgZXhlY3V0aW5nIGl0LlxuICAgKiBPbmx5IGluZGl2aWR1YWwgZmlsZXMgYXJlIHN1cHBvcnRlZCwgZGlyZWN0b3JpZXMgYXJlIG5vdCBzdXBwb3J0ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IFtdIC0gbm8gZXh0cmEgZmlsZXMgYXJlIGNvcGllZCB0byB0aGUgd29ya2luZyBkaXJlY3RvcnlcbiAgICpcbiAgICogQHNlZSBgLS1leHRyYS1maWxlc2AgaW4gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2dsdWUvbGF0ZXN0L2RnL2F3cy1nbHVlLXByb2dyYW1taW5nLWV0bC1nbHVlLWFyZ3VtZW50cy5odG1sXG4gICAqL1xuICByZWFkb25seSBleHRyYUZpbGVzPzogQ29kZVtdO1xufVxuXG5pbnRlcmZhY2UgU2hhcmVkU3BhcmtKb2JFeGVjdXRhYmxlUHJvcHMgZXh0ZW5kcyBTaGFyZWRKb2JFeGVjdXRhYmxlUHJvcHMge1xuICAvKipcbiAgICogQWRkaXRpb25hbCBKYXZhIC5qYXIgZmlsZXMgdGhhdCBBV1MgR2x1ZSBhZGRzIHRvIHRoZSBKYXZhIGNsYXNzcGF0aCBiZWZvcmUgZXhlY3V0aW5nIHlvdXIgc2NyaXB0LlxuICAgKiBPbmx5IGluZGl2aWR1YWwgZmlsZXMgYXJlIHN1cHBvcnRlZCwgZGlyZWN0b3JpZXMgYXJlIG5vdCBzdXBwb3J0ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IFtdIC0gbm8gZXh0cmEgamFycyBhcmUgYWRkZWQgdG8gdGhlIGNsYXNzcGF0aFxuICAgKlxuICAgKiBAc2VlIGAtLWV4dHJhLWphcnNgIGluIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9nbHVlL2xhdGVzdC9kZy9hd3MtZ2x1ZS1wcm9ncmFtbWluZy1ldGwtZ2x1ZS1hcmd1bWVudHMuaHRtbFxuICAgKi9cbiAgcmVhZG9ubHkgZXh0cmFKYXJzPzogQ29kZVtdO1xuXG4gIC8qKlxuICAgKiBTZXR0aW5nIHRoaXMgdmFsdWUgdG8gdHJ1ZSBwcmlvcml0aXplcyB0aGUgY3VzdG9tZXIncyBleHRyYSBKQVIgZmlsZXMgaW4gdGhlIGNsYXNzcGF0aC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2UgLSBwcmlvcml0eSBpcyBub3QgZ2l2ZW4gdG8gdXNlci1wcm92aWRlZCBqYXJzXG4gICAqXG4gICAqIEBzZWUgYC0tdXNlci1qYXJzLWZpcnN0YCBpbiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZ2x1ZS9sYXRlc3QvZGcvYXdzLWdsdWUtcHJvZ3JhbW1pbmctZXRsLWdsdWUtYXJndW1lbnRzLmh0bWxcbiAgICovXG4gIHJlYWRvbmx5IGV4dHJhSmFyc0ZpcnN0PzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQcm9wcyBmb3IgY3JlYXRpbmcgYSBTY2FsYSBTcGFyayAoRVRMIG9yIFN0cmVhbWluZykgam9iIGV4ZWN1dGFibGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTY2FsYUpvYkV4ZWN1dGFibGVQcm9wcyBleHRlbmRzIFNoYXJlZFNwYXJrSm9iRXhlY3V0YWJsZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBmdWxseSBxdWFsaWZpZWQgU2NhbGEgY2xhc3MgbmFtZSB0aGF0IHNlcnZlcyBhcyB0aGUgZW50cnkgcG9pbnQgZm9yIHRoZSBqb2IuXG4gICAqXG4gICAqIEBzZWUgYC0tY2xhc3NgIGluIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9nbHVlL2xhdGVzdC9kZy9hd3MtZ2x1ZS1wcm9ncmFtbWluZy1ldGwtZ2x1ZS1hcmd1bWVudHMuaHRtbFxuICAgKi9cbiAgcmVhZG9ubHkgY2xhc3NOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcHMgZm9yIGNyZWF0aW5nIGEgUHl0aG9uIFNwYXJrIChFVEwgb3IgU3RyZWFtaW5nKSBqb2IgZXhlY3V0YWJsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFB5dGhvblNwYXJrSm9iRXhlY3V0YWJsZVByb3BzIGV4dGVuZHMgU2hhcmVkU3BhcmtKb2JFeGVjdXRhYmxlUHJvcHMsIFB5dGhvbkV4ZWN1dGFibGVQcm9wcyB7fVxuXG4vKipcbiAqIFByb3BzIGZvciBjcmVhdGluZyBhIFB5dGhvbiBzaGVsbCBqb2IgZXhlY3V0YWJsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFB5dGhvblNoZWxsRXhlY3V0YWJsZVByb3BzIGV4dGVuZHMgU2hhcmVkSm9iRXhlY3V0YWJsZVByb3BzLCBQeXRob25FeGVjdXRhYmxlUHJvcHMge31cblxuLyoqXG4gKiBQcm9wcyBmb3IgY3JlYXRpbmcgYSBQeXRob24gUmF5IGpvYiBleGVjdXRhYmxlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHl0aG9uUmF5RXhlY3V0YWJsZVByb3BzIGV4dGVuZHMgU2hhcmVkSm9iRXhlY3V0YWJsZVByb3BzLCBQeXRob25FeGVjdXRhYmxlUHJvcHMge31cblxuLyoqXG4gKiBUaGUgZXhlY3V0YWJsZSBwcm9wZXJ0aWVzIHJlbGF0ZWQgdG8gdGhlIEdsdWUgam9iJ3MgR2x1ZVZlcnNpb24sIEpvYlR5cGUgYW5kIGNvZGVcbiAqL1xuZXhwb3J0IGNsYXNzIEpvYkV4ZWN1dGFibGUge1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgU2NhbGEgZXhlY3V0YWJsZSBwcm9wcyBmb3IgQXBhY2hlIFNwYXJrIEVUTCBqb2IuXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyBTY2FsYSBBcGFjaGUgU3BhcmsgSm9iIHByb3BzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHNjYWxhRXRsKHByb3BzOiBTY2FsYUpvYkV4ZWN1dGFibGVQcm9wcyk6IEpvYkV4ZWN1dGFibGUge1xuICAgIHJldHVybiBuZXcgSm9iRXhlY3V0YWJsZSh7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIHR5cGU6IEpvYlR5cGUuRVRMLFxuICAgICAgbGFuZ3VhZ2U6IEpvYkxhbmd1YWdlLlNDQUxBLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBTY2FsYSBleGVjdXRhYmxlIHByb3BzIGZvciBBcGFjaGUgU3BhcmsgU3RyZWFtaW5nIGpvYi5cbiAgICpcbiAgICogQHBhcmFtIHByb3BzIFNjYWxhIEFwYWNoZSBTcGFyayBKb2IgcHJvcHNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc2NhbGFTdHJlYW1pbmcocHJvcHM6IFNjYWxhSm9iRXhlY3V0YWJsZVByb3BzKTogSm9iRXhlY3V0YWJsZSB7XG4gICAgcmV0dXJuIG5ldyBKb2JFeGVjdXRhYmxlKHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgdHlwZTogSm9iVHlwZS5TVFJFQU1JTkcsXG4gICAgICBsYW5ndWFnZTogSm9iTGFuZ3VhZ2UuU0NBTEEsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIFB5dGhvbiBleGVjdXRhYmxlIHByb3BzIGZvciBBcGFjaGUgU3BhcmsgRVRMIGpvYi5cbiAgICpcbiAgICogQHBhcmFtIHByb3BzIFB5dGhvbiBBcGFjaGUgU3BhcmsgSm9iIHByb3BzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHB5dGhvbkV0bChwcm9wczogUHl0aG9uU3BhcmtKb2JFeGVjdXRhYmxlUHJvcHMpOiBKb2JFeGVjdXRhYmxlIHtcbiAgICByZXR1cm4gbmV3IEpvYkV4ZWN1dGFibGUoe1xuICAgICAgLi4ucHJvcHMsXG4gICAgICB0eXBlOiBKb2JUeXBlLkVUTCxcbiAgICAgIGxhbmd1YWdlOiBKb2JMYW5ndWFnZS5QWVRIT04sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIFB5dGhvbiBleGVjdXRhYmxlIHByb3BzIGZvciBBcGFjaGUgU3BhcmsgU3RyZWFtaW5nIGpvYi5cbiAgICpcbiAgICogQHBhcmFtIHByb3BzIFB5dGhvbiBBcGFjaGUgU3BhcmsgSm9iIHByb3BzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHB5dGhvblN0cmVhbWluZyhwcm9wczogUHl0aG9uU3BhcmtKb2JFeGVjdXRhYmxlUHJvcHMpOiBKb2JFeGVjdXRhYmxlIHtcbiAgICByZXR1cm4gbmV3IEpvYkV4ZWN1dGFibGUoe1xuICAgICAgLi4ucHJvcHMsXG4gICAgICB0eXBlOiBKb2JUeXBlLlNUUkVBTUlORyxcbiAgICAgIGxhbmd1YWdlOiBKb2JMYW5ndWFnZS5QWVRIT04sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIFB5dGhvbiBleGVjdXRhYmxlIHByb3BzIGZvciBweXRob24gc2hlbGwgam9icy5cbiAgICpcbiAgICogQHBhcmFtIHByb3BzIFB5dGhvbiBTaGVsbCBKb2IgcHJvcHMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHB5dGhvblNoZWxsKHByb3BzOiBQeXRob25TaGVsbEV4ZWN1dGFibGVQcm9wcyk6IEpvYkV4ZWN1dGFibGUge1xuICAgIHJldHVybiBuZXcgSm9iRXhlY3V0YWJsZSh7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIHR5cGU6IEpvYlR5cGUuUFlUSE9OX1NIRUxMLFxuICAgICAgbGFuZ3VhZ2U6IEpvYkxhbmd1YWdlLlBZVEhPTixcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgUHl0aG9uIGV4ZWN1dGFibGUgcHJvcHMgZm9yIFJheSBqb2JzLlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgUmF5IEpvYiBwcm9wcy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcHl0aG9uUmF5KHByb3BzOiBQeXRob25SYXlFeGVjdXRhYmxlUHJvcHMpOiBKb2JFeGVjdXRhYmxlIHtcbiAgICByZXR1cm4gbmV3IEpvYkV4ZWN1dGFibGUoe1xuICAgICAgLi4ucHJvcHMsXG4gICAgICB0eXBlOiBKb2JUeXBlLlJBWSxcbiAgICAgIGxhbmd1YWdlOiBKb2JMYW5ndWFnZS5QWVRIT04sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgY3VzdG9tIEpvYkV4ZWN1dGFibGUuXG4gICAqXG4gICAqIEBwYXJhbSBjb25maWcgY3VzdG9tIGpvYiBleGVjdXRhYmxlIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG9mKGNvbmZpZzogSm9iRXhlY3V0YWJsZUNvbmZpZyk6IEpvYkV4ZWN1dGFibGUge1xuICAgIHJldHVybiBuZXcgSm9iRXhlY3V0YWJsZShjb25maWcpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25maWc6IEpvYkV4ZWN1dGFibGVDb25maWc7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcihjb25maWc6IEpvYkV4ZWN1dGFibGVDb25maWcpIHtcbiAgICBjb25zdCBnbHVlVmVyc2lvbiA9IGNvbmZpZy5nbHVlVmVyc2lvbi5uYW1lO1xuICAgIGNvbnN0IHR5cGUgPSBjb25maWcudHlwZS5uYW1lO1xuICAgIGlmIChKb2JUeXBlLlBZVEhPTl9TSEVMTC5uYW1lID09PSB0eXBlKSB7XG4gICAgICBpZiAoY29uZmlnLmxhbmd1YWdlICE9PSBKb2JMYW5ndWFnZS5QWVRIT04pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQeXRob24gc2hlbGwgcmVxdWlyZXMgdGhlIGxhbmd1YWdlIHRvIGJlIHNldCB0byBQeXRob24nKTtcbiAgICAgIH1cbiAgICAgIGlmIChbR2x1ZVZlcnNpb24uVjBfOS5uYW1lLCBHbHVlVmVyc2lvbi5WNF8wLm5hbWVdLmluY2x1ZGVzKGdsdWVWZXJzaW9uKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFNwZWNpZmllZCBHbHVlVmVyc2lvbiAke2dsdWVWZXJzaW9ufSBkb2VzIG5vdCBzdXBwb3J0IFB5dGhvbiBTaGVsbGApO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoSm9iVHlwZS5SQVkubmFtZSA9PT0gdHlwZSkge1xuICAgICAgaWYgKGNvbmZpZy5sYW5ndWFnZSAhPT0gSm9iTGFuZ3VhZ2UuUFlUSE9OKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignUmF5IHJlcXVpcmVzIHRoZSBsYW5ndWFnZSB0byBiZSBzZXQgdG8gUHl0aG9uJyk7XG4gICAgICB9XG4gICAgICBpZiAoW0dsdWVWZXJzaW9uLlYwXzkubmFtZSwgR2x1ZVZlcnNpb24uVjFfMC5uYW1lLCBHbHVlVmVyc2lvbi5WMl8wLm5hbWUsIEdsdWVWZXJzaW9uLlYzXzAubmFtZV0uaW5jbHVkZXMoZ2x1ZVZlcnNpb24pKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgU3BlY2lmaWVkIEdsdWVWZXJzaW9uICR7Z2x1ZVZlcnNpb259IGRvZXMgbm90IHN1cHBvcnQgUmF5YCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChjb25maWcuZXh0cmFKYXJzRmlyc3QgJiYgW0dsdWVWZXJzaW9uLlYwXzkubmFtZSwgR2x1ZVZlcnNpb24uVjFfMC5uYW1lXS5pbmNsdWRlcyhnbHVlVmVyc2lvbikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgU3BlY2lmaWVkIEdsdWVWZXJzaW9uICR7Z2x1ZVZlcnNpb259IGRvZXMgbm90IHN1cHBvcnQgZXh0cmFKYXJzRmlyc3RgKTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy5weXRob25WZXJzaW9uID09PSBQeXRob25WZXJzaW9uLlRXTyAmJiAhW0dsdWVWZXJzaW9uLlYwXzkubmFtZSwgR2x1ZVZlcnNpb24uVjFfMC5uYW1lXS5pbmNsdWRlcyhnbHVlVmVyc2lvbikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgU3BlY2lmaWVkIEdsdWVWZXJzaW9uICR7Z2x1ZVZlcnNpb259IGRvZXMgbm90IHN1cHBvcnQgUHl0aG9uVmVyc2lvbiAke2NvbmZpZy5weXRob25WZXJzaW9ufWApO1xuICAgIH1cbiAgICBpZiAoSm9iTGFuZ3VhZ2UuUFlUSE9OICE9PSBjb25maWcubGFuZ3VhZ2UgJiYgY29uZmlnLmV4dHJhUHl0aG9uRmlsZXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZXh0cmFQeXRob25GaWxlcyBpcyBub3Qgc3VwcG9ydGVkIGZvciBsYW5ndWFnZXMgb3RoZXIgdGhhbiBKb2JMYW5ndWFnZS5QWVRIT04nKTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy5weXRob25WZXJzaW9uID09PSBQeXRob25WZXJzaW9uLlRIUkVFX05JTkUgJiYgdHlwZSAhPT0gSm9iVHlwZS5QWVRIT05fU0hFTEwubmFtZSAmJiB0eXBlICE9PSBKb2JUeXBlLlJBWS5uYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NwZWNpZmllZCBQeXRob25WZXJzaW9uIFB5dGhvblZlcnNpb24uVEhSRUVfTklORSBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgSm9iVHlwZSBQeXRob24gU2hlbGwgYW5kIFJheScpO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLnB5dGhvblZlcnNpb24gPT09IFB5dGhvblZlcnNpb24uVEhSRUUgJiYgdHlwZSA9PT0gSm9iVHlwZS5SQVkubmFtZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTcGVjaWZpZWQgUHl0aG9uVmVyc2lvbiBQeXRob25WZXJzaW9uLlRIUkVFIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIFJheScpO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLnJ1bnRpbWUgPT09IHVuZGVmaW5lZCAmJiB0eXBlID09PSBKb2JUeXBlLlJBWS5uYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1J1bnRpbWUgaXMgcmVxdWlyZWQgZm9yIFJheSBqb2JzLicpO1xuICAgIH1cbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgZHVyaW5nIEpvYiBpbml0aWFsaXphdGlvbiB0byBnZXQgSm9iRXhlY3V0YWJsZUNvbmZpZy5cbiAgICovXG4gIHB1YmxpYyBiaW5kKCk6IEpvYkV4ZWN1dGFibGVDb25maWcge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZztcbiAgfVxufVxuXG4vKipcbiAqIFJlc3VsdCBvZiBiaW5kaW5nIGEgYEpvYkV4ZWN1dGFibGVgIGludG8gYSBgSm9iYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBKb2JFeGVjdXRhYmxlQ29uZmlnIHtcbiAgLyoqXG4gICAqIEdsdWUgdmVyc2lvbi5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZ2x1ZS9sYXRlc3QvZGcvcmVsZWFzZS1ub3Rlcy5odG1sXG4gICAqL1xuICByZWFkb25seSBnbHVlVmVyc2lvbjogR2x1ZVZlcnNpb247XG5cbiAgLyoqXG4gICAqIFRoZSBsYW5ndWFnZSBvZiB0aGUgam9iIChTY2FsYSBvciBQeXRob24pLlxuICAgKlxuICAgKiBAc2VlIGAtLWpvYi1sYW5ndWFnZWAgaW4gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2dsdWUvbGF0ZXN0L2RnL2F3cy1nbHVlLXByb2dyYW1taW5nLWV0bC1nbHVlLWFyZ3VtZW50cy5odG1sXG4gICAqL1xuICByZWFkb25seSBsYW5ndWFnZTogSm9iTGFuZ3VhZ2U7XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIHR5cGUgb2YgdGhlIGpvYiB3aGV0aGVyIGl0J3MgYW4gQXBhY2hlIFNwYXJrIEVUTCBvciBzdHJlYW1pbmcgb25lIG9yIGlmIGl0J3MgYSBQeXRob24gc2hlbGwgam9iLlxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZTogSm9iVHlwZTtcblxuICAvKipcbiAgICogVGhlIFB5dGhvbiB2ZXJzaW9uIHRvIHVzZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBweXRob24gdmVyc2lvbiBzcGVjaWZpZWRcbiAgICovXG4gIHJlYWRvbmx5IHB5dGhvblZlcnNpb24/OiBQeXRob25WZXJzaW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgUnVudGltZSB0byB1c2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gcnVudGltZSBzcGVjaWZpZWRcbiAgICovXG4gIHJlYWRvbmx5IHJ1bnRpbWU/OiBSdW50aW1lO1xuXG4gIC8qKlxuICAgKiBUaGUgc2NyaXB0IHRoYXQgaXMgZXhlY3V0ZWQgYnkgYSBqb2IuXG4gICAqL1xuICByZWFkb25seSBzY3JpcHQ6IENvZGU7XG5cbiAgLyoqXG4gICAqIFRoZSBTY2FsYSBjbGFzcyB0aGF0IHNlcnZlcyBhcyB0aGUgZW50cnkgcG9pbnQgZm9yIHRoZSBqb2IuIFRoaXMgYXBwbGllcyBvbmx5IGlmIHlvdXIgdGhlIGpvYiBsYW5nYXVhZ2UgaXMgU2NhbGEuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gc2NhbGEgY2xhc3NOYW1lIHNwZWNpZmllZFxuICAgKlxuICAgKiBAc2VlIGAtLWNsYXNzYCBpbiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZ2x1ZS9sYXRlc3QvZGcvYXdzLWdsdWUtcHJvZ3JhbW1pbmctZXRsLWdsdWUtYXJndW1lbnRzLmh0bWxcbiAgICovXG4gIHJlYWRvbmx5IGNsYXNzTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBKYXZhIC5qYXIgZmlsZXMgdGhhdCBBV1MgR2x1ZSBhZGRzIHRvIHRoZSBKYXZhIGNsYXNzcGF0aCBiZWZvcmUgZXhlY3V0aW5nIHlvdXIgc2NyaXB0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGV4dHJhIGphcnMgc3BlY2lmaWVkLlxuICAgKlxuICAgKiBAc2VlIGAtLWV4dHJhLWphcnNgIGluIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9nbHVlL2xhdGVzdC9kZy9hd3MtZ2x1ZS1wcm9ncmFtbWluZy1ldGwtZ2x1ZS1hcmd1bWVudHMuaHRtbFxuICAgKi9cbiAgcmVhZG9ubHkgZXh0cmFKYXJzPzogQ29kZVtdO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIFB5dGhvbiBmaWxlcyB0aGF0IEFXUyBHbHVlIGFkZHMgdG8gdGhlIFB5dGhvbiBwYXRoIGJlZm9yZSBleGVjdXRpbmcgeW91ciBzY3JpcHQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gZXh0cmEgcHl0aG9uIGZpbGVzIHNwZWNpZmllZC5cbiAgICpcbiAgICogQHNlZSBgLS1leHRyYS1weS1maWxlc2AgaW4gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2dsdWUvbGF0ZXN0L2RnL2F3cy1nbHVlLXByb2dyYW1taW5nLWV0bC1nbHVlLWFyZ3VtZW50cy5odG1sXG4gICAqL1xuICByZWFkb25seSBleHRyYVB5dGhvbkZpbGVzPzogQ29kZVtdO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGZpbGVzLCBzdWNoIGFzIGNvbmZpZ3VyYXRpb24gZmlsZXMgdGhhdCBBV1MgR2x1ZSBjb3BpZXMgdG8gdGhlIHdvcmtpbmcgZGlyZWN0b3J5IG9mIHlvdXIgc2NyaXB0IGJlZm9yZSBleGVjdXRpbmcgaXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gZXh0cmEgZmlsZXMgc3BlY2lmaWVkLlxuICAgKlxuICAgKiBAc2VlIGAtLWV4dHJhLWZpbGVzYCBpbiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZ2x1ZS9sYXRlc3QvZGcvYXdzLWdsdWUtcHJvZ3JhbW1pbmctZXRsLWdsdWUtYXJndW1lbnRzLmh0bWxcbiAgICovXG4gIHJlYWRvbmx5IGV4dHJhRmlsZXM/OiBDb2RlW107XG5cbiAgLyoqXG4gICAqIFNldHRpbmcgdGhpcyB2YWx1ZSB0byB0cnVlIHByaW9yaXRpemVzIHRoZSBjdXN0b21lcidzIGV4dHJhIEpBUiBmaWxlcyBpbiB0aGUgY2xhc3NwYXRoLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGV4dHJhIGphcnMgYXJlIG5vdCBwcmlvcml0aXplZC5cbiAgICpcbiAgICogQHNlZSBgLS11c2VyLWphcnMtZmlyc3RgIGluIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9nbHVlL2xhdGVzdC9kZy9hd3MtZ2x1ZS1wcm9ncmFtbWluZy1ldGwtZ2x1ZS1hcmd1bWVudHMuaHRtbFxuICAgKi9cbiAgcmVhZG9ubHkgZXh0cmFKYXJzRmlyc3Q/OiBib29sZWFuO1xufVxuIl19
|
package/lib/job.js
CHANGED
|
@@ -32,7 +32,7 @@ class WorkerType {
|
|
|
32
32
|
}
|
|
33
33
|
exports.WorkerType = WorkerType;
|
|
34
34
|
_a = JSII_RTTI_SYMBOL_1;
|
|
35
|
-
WorkerType[_a] = { fqn: "@aws-cdk/aws-glue-alpha.WorkerType", version: "2.
|
|
35
|
+
WorkerType[_a] = { fqn: "@aws-cdk/aws-glue-alpha.WorkerType", version: "2.96.0-alpha.0" };
|
|
36
36
|
/**
|
|
37
37
|
* Each worker provides 4 vCPU, 16 GB of memory and a 50GB disk, and 2 executors per worker.
|
|
38
38
|
*/
|
|
@@ -478,7 +478,7 @@ class Job extends JobBase {
|
|
|
478
478
|
}
|
|
479
479
|
exports.Job = Job;
|
|
480
480
|
_b = JSII_RTTI_SYMBOL_1;
|
|
481
|
-
Job[_b] = { fqn: "@aws-cdk/aws-glue-alpha.Job", version: "2.
|
|
481
|
+
Job[_b] = { fqn: "@aws-cdk/aws-glue-alpha.Job", version: "2.96.0-alpha.0" };
|
|
482
482
|
/**
|
|
483
483
|
* Create a CloudWatch Metric that's based on Glue Job events
|
|
484
484
|
* {@see https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/EventTypes.html#glue-event-types}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { CfnTable } from 'aws-cdk-lib/aws-glue';
|
|
2
|
+
import * as iam from 'aws-cdk-lib/aws-iam';
|
|
3
|
+
import * as kms from 'aws-cdk-lib/aws-kms';
|
|
4
|
+
import * as s3 from 'aws-cdk-lib/aws-s3';
|
|
5
|
+
import { Construct } from 'constructs';
|
|
6
|
+
import { PartitionIndex, TableBase, TableBaseProps } from './table-base';
|
|
7
|
+
/**
|
|
8
|
+
* Encryption options for a Table.
|
|
9
|
+
*
|
|
10
|
+
* @see https://docs.aws.amazon.com/athena/latest/ug/encryption.html
|
|
11
|
+
*/
|
|
12
|
+
export declare enum TableEncryption {
|
|
13
|
+
/**
|
|
14
|
+
* Server side encryption (SSE) with an Amazon S3-managed key.
|
|
15
|
+
*
|
|
16
|
+
* @see https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html
|
|
17
|
+
*/
|
|
18
|
+
S3_MANAGED = "SSE-S3",
|
|
19
|
+
/**
|
|
20
|
+
* Server-side encryption (SSE) with an AWS KMS key managed by the account owner.
|
|
21
|
+
*
|
|
22
|
+
* @see https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html
|
|
23
|
+
*/
|
|
24
|
+
KMS = "SSE-KMS",
|
|
25
|
+
/**
|
|
26
|
+
* Server-side encryption (SSE) with an AWS KMS key managed by the KMS service.
|
|
27
|
+
*/
|
|
28
|
+
KMS_MANAGED = "SSE-KMS-MANAGED",
|
|
29
|
+
/**
|
|
30
|
+
* Client-side encryption (CSE) with an AWS KMS key managed by the account owner.
|
|
31
|
+
*
|
|
32
|
+
* @see https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingClientSideEncryption.html
|
|
33
|
+
*/
|
|
34
|
+
CLIENT_SIDE_KMS = "CSE-KMS"
|
|
35
|
+
}
|
|
36
|
+
export interface S3TableProps extends TableBaseProps {
|
|
37
|
+
/**
|
|
38
|
+
* S3 bucket in which to store data.
|
|
39
|
+
*
|
|
40
|
+
* @default one is created for you
|
|
41
|
+
*/
|
|
42
|
+
readonly bucket?: s3.IBucket;
|
|
43
|
+
/**
|
|
44
|
+
* S3 prefix under which table objects are stored.
|
|
45
|
+
*
|
|
46
|
+
* @default - No prefix. The data will be stored under the root of the bucket.
|
|
47
|
+
*/
|
|
48
|
+
readonly s3Prefix?: string;
|
|
49
|
+
/**
|
|
50
|
+
* The kind of encryption to secure the data with.
|
|
51
|
+
*
|
|
52
|
+
* You can only provide this option if you are not explicitly passing in a bucket.
|
|
53
|
+
*
|
|
54
|
+
* If you choose `SSE-KMS`, you *can* provide an un-managed KMS key with `encryptionKey`.
|
|
55
|
+
* If you choose `CSE-KMS`, you *must* provide an un-managed KMS key with `encryptionKey`.
|
|
56
|
+
*
|
|
57
|
+
* @default BucketEncryption.S3_MANAGED
|
|
58
|
+
*/
|
|
59
|
+
readonly encryption?: TableEncryption;
|
|
60
|
+
/**
|
|
61
|
+
* External KMS key to use for bucket encryption.
|
|
62
|
+
*
|
|
63
|
+
* The `encryption` property must be `SSE-KMS` or `CSE-KMS`.
|
|
64
|
+
*
|
|
65
|
+
* @default key is managed by KMS.
|
|
66
|
+
*/
|
|
67
|
+
readonly encryptionKey?: kms.IKey;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* A Glue table that targets a S3 dataset.
|
|
71
|
+
*/
|
|
72
|
+
export declare class S3Table extends TableBase {
|
|
73
|
+
/**
|
|
74
|
+
* Name of this table.
|
|
75
|
+
*/
|
|
76
|
+
readonly tableName: string;
|
|
77
|
+
/**
|
|
78
|
+
* ARN of this table.
|
|
79
|
+
*/
|
|
80
|
+
readonly tableArn: string;
|
|
81
|
+
/**
|
|
82
|
+
* S3 bucket in which the table's data resides.
|
|
83
|
+
*/
|
|
84
|
+
readonly bucket: s3.IBucket;
|
|
85
|
+
/**
|
|
86
|
+
* S3 Key Prefix under which this table's files are stored in S3.
|
|
87
|
+
*/
|
|
88
|
+
readonly s3Prefix: string;
|
|
89
|
+
/**
|
|
90
|
+
* The type of encryption enabled for the table.
|
|
91
|
+
*/
|
|
92
|
+
readonly encryption: TableEncryption;
|
|
93
|
+
/**
|
|
94
|
+
* The KMS key used to secure the data if `encryption` is set to `CSE-KMS` or `SSE-KMS`. Otherwise, `undefined`.
|
|
95
|
+
*/
|
|
96
|
+
readonly encryptionKey?: kms.IKey;
|
|
97
|
+
/**
|
|
98
|
+
* This table's partition indexes.
|
|
99
|
+
*/
|
|
100
|
+
readonly partitionIndexes?: PartitionIndex[];
|
|
101
|
+
protected readonly tableResource: CfnTable;
|
|
102
|
+
constructor(scope: Construct, id: string, props: S3TableProps);
|
|
103
|
+
/**
|
|
104
|
+
* Grant read permissions to the table and the underlying data stored in S3 to an IAM principal.
|
|
105
|
+
*
|
|
106
|
+
* @param grantee the principal
|
|
107
|
+
*/
|
|
108
|
+
grantRead(grantee: iam.IGrantable): iam.Grant;
|
|
109
|
+
/**
|
|
110
|
+
* Grant write permissions to the table and the underlying data stored in S3 to an IAM principal.
|
|
111
|
+
*
|
|
112
|
+
* @param grantee the principal
|
|
113
|
+
*/
|
|
114
|
+
grantWrite(grantee: iam.IGrantable): iam.Grant;
|
|
115
|
+
/**
|
|
116
|
+
* Grant read and write permissions to the table and the underlying data stored in S3 to an IAM principal.
|
|
117
|
+
*
|
|
118
|
+
* @param grantee the principal
|
|
119
|
+
*/
|
|
120
|
+
grantReadWrite(grantee: iam.IGrantable): iam.Grant;
|
|
121
|
+
protected generateS3PrefixForGrant(): string;
|
|
122
|
+
}
|