@aws-solutions-constructs/core
Version:
Core CDK Construct for patterns library
67 lines • 9.77 kB
JavaScript
/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
* with the License. A copy of the License is located at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
* OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
* and limitations under the License.
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.DefaultGlueTable = DefaultGlueTable;
exports.CheckGlueProps = CheckGlueProps;
/*
* The functions found here in the core library are for internal use and can be changed
* or removed outside of a major release. We recommend against calling them directly from client code.
*/
const aws_glue_1 = require("aws-cdk-lib/aws-glue");
/**
* @internal This is an internal core function and should not be called directly by Solutions Constructs clients.
*
* Method to build the default table props
*
* @param scope
* @param database
* @param fieldSchema
* @param sourceType
* @param parameters - Key value pairs of parameters. If source type is 'Kinesis', pass Kinesis Data Stream name with key
* as 'STREAM_NAME'. Example: {STREAM_NAME: 'KinesisStreamConstruct.streamName'}
*/
function DefaultGlueTable(scope, tableProps) {
return new aws_glue_1.CfnTable(scope, 'GlueTable', tableProps);
}
function CheckGlueProps(propsObject) {
let errorMessages = '';
let errorFound = false;
if (propsObject.glueJobProps && propsObject.existingGlueJob) {
errorMessages += 'Error - Either provide glueJobProps or existingGlueJob, but not both.\n';
errorFound = true;
}
if ((!propsObject.existingGlueJob) && (!propsObject.glueJobProps.command.scriptLocation && !propsObject.etlCodeAsset)) {
errorMessages += ('Either one of CfnJob.JobCommandProperty.scriptLocation or etlCodeAsset has ' +
'to be provided. If the ETL Job code file exists in a local filesystem, please set ' +
'KinesisstreamsToGluejobProps.etlCodeAsset. If the ETL Job is available in an S3 bucket, set the ' +
'CfnJob.JobCommandProperty.scriptLocation property\n');
errorFound = true;
}
if (propsObject.glueJobProps?.command?.scriptLocation) {
const s3Url = propsObject.glueJobProps.command.scriptLocation;
const found = s3Url.match(/^s3:\/\/\S+\/\S+/g);
if (!(found && found.length > 0 && found[0].length === s3Url.length)) {
errorMessages += "Invalid S3 URL for Glue script provided\n";
errorFound = true;
}
}
if (propsObject.fieldSchema === undefined && propsObject.existingTable === undefined && propsObject.tableProps === undefined) {
errorMessages += "Either fieldSchema or table property has to be set, both cannot be omitted";
errorFound = true;
}
if (errorFound) {
throw new Error(errorMessages);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2x1ZS10YWJsZS1oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJnbHVlLXRhYmxlLWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7O0dBV0c7O0FBd0JILDRDQUVDO0FBVUQsd0NBa0NDO0FBcEVEOzs7R0FHRztBQUVILG1EQUErRDtBQUsvRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILFNBQWdCLGdCQUFnQixDQUFDLEtBQWdCLEVBQUUsVUFBeUI7SUFDMUUsT0FBTyxJQUFJLG1CQUFRLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUN0RCxDQUFDO0FBVUQsU0FBZ0IsY0FBYyxDQUFDLFdBQTRCO0lBQ3pELElBQUksYUFBYSxHQUFHLEVBQUUsQ0FBQztJQUN2QixJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFFdkIsSUFBSSxXQUFXLENBQUMsWUFBWSxJQUFJLFdBQVcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUM1RCxhQUFhLElBQUkseUVBQXlFLENBQUM7UUFDM0YsVUFBVSxHQUFHLElBQUksQ0FBQztJQUNwQixDQUFDO0lBRUQsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxjQUFjLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztRQUN0SCxhQUFhLElBQUksQ0FBQyw2RUFBNkU7WUFDN0Ysb0ZBQW9GO1lBQ3BGLGtHQUFrRztZQUNsRyxxREFBcUQsQ0FBQyxDQUFDO1FBQ3pELFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDcEIsQ0FBQztJQUVELElBQUksV0FBVyxDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLENBQUM7UUFDdEQsTUFBTSxLQUFLLEdBQVcsV0FBVyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDO1FBQ3RFLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNyRSxhQUFhLElBQUksMkNBQTJDLENBQUM7WUFDN0QsVUFBVSxHQUFHLElBQUksQ0FBQztRQUNwQixDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksV0FBVyxDQUFDLFdBQVcsS0FBSyxTQUFTLElBQUksV0FBVyxDQUFDLGFBQWEsS0FBSyxTQUFTLElBQUksV0FBVyxDQUFDLFVBQVUsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUM3SCxhQUFhLElBQUksNEVBQTRFLENBQUM7UUFDOUYsVUFBVSxHQUFHLElBQUksQ0FBQztJQUNwQixDQUFDO0lBRUQsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDakMsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKS4gWW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuICogIHdpdGggdGhlIExpY2Vuc2UuIEEgY29weSBvZiB0aGUgTGljZW5zZSBpcyBsb2NhdGVkIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgb3IgaW4gdGhlICdsaWNlbnNlJyBmaWxlIGFjY29tcGFueWluZyB0aGlzIGZpbGUuIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAnQVMgSVMnIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVNcbiAqICBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9uc1xuICogIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKlxuICogIFRoZSBmdW5jdGlvbnMgZm91bmQgaGVyZSBpbiB0aGUgY29yZSBsaWJyYXJ5IGFyZSBmb3IgaW50ZXJuYWwgdXNlIGFuZCBjYW4gYmUgY2hhbmdlZFxuICogIG9yIHJlbW92ZWQgb3V0c2lkZSBvZiBhIG1ham9yIHJlbGVhc2UuIFdlIHJlY29tbWVuZCBhZ2FpbnN0IGNhbGxpbmcgdGhlbSBkaXJlY3RseSBmcm9tIGNsaWVudCBjb2RlLlxuICovXG5cbmltcG9ydCB7IENmblRhYmxlLCBDZm5UYWJsZVByb3BzIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1nbHVlXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0ICogYXMgZ2x1ZSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZ2x1ZSc7XG5pbXBvcnQgKiBhcyBzM2Fzc2V0cyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMtYXNzZXRzJztcblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICpcbiAqIE1ldGhvZCB0byBidWlsZCB0aGUgZGVmYXVsdCB0YWJsZSBwcm9wc1xuICpcbiAqIEBwYXJhbSBzY29wZVxuICogQHBhcmFtIGRhdGFiYXNlXG4gKiBAcGFyYW0gZmllbGRTY2hlbWFcbiAqIEBwYXJhbSBzb3VyY2VUeXBlXG4gKiBAcGFyYW0gcGFyYW1ldGVycyAtIEtleSB2YWx1ZSBwYWlycyBvZiBwYXJhbWV0ZXJzLiBJZiBzb3VyY2UgdHlwZSBpcyAnS2luZXNpcycsIHBhc3MgS2luZXNpcyBEYXRhIFN0cmVhbSBuYW1lIHdpdGgga2V5XG4gKiAgYXMgJ1NUUkVBTV9OQU1FJy4gRXhhbXBsZToge1NUUkVBTV9OQU1FOiAnS2luZXNpc1N0cmVhbUNvbnN0cnVjdC5zdHJlYW1OYW1lJ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIERlZmF1bHRHbHVlVGFibGUoc2NvcGU6IENvbnN0cnVjdCwgdGFibGVQcm9wczogQ2ZuVGFibGVQcm9wcyk6IENmblRhYmxlIHtcbiAgcmV0dXJuIG5ldyBDZm5UYWJsZShzY29wZSwgJ0dsdWVUYWJsZScsIHRhYmxlUHJvcHMpO1xufVxuZXhwb3J0IGludGVyZmFjZSBHbHVlUHJvcHMge1xuICByZWFkb25seSBleGlzdGluZ0dsdWVKb2I/OiBnbHVlLkNmbkpvYixcbiAgcmVhZG9ubHkgZXRsQ29kZUFzc2V0PzogczNhc3NldHMuQXNzZXQ7XG4gIHJlYWRvbmx5IGdsdWVKb2JQcm9wcz86IGdsdWUuQ2ZuSm9iUHJvcHMgfCBhbnk7XG4gIHJlYWRvbmx5IGZpZWxkU2NoZW1hPzogZ2x1ZS5DZm5UYWJsZS5Db2x1bW5Qcm9wZXJ0eVtdO1xuICByZWFkb25seSBleGlzdGluZ1RhYmxlPzogZ2x1ZS5DZm5UYWJsZTtcbiAgcmVhZG9ubHkgdGFibGVQcm9wc3M/OiBnbHVlLkNmblRhYmxlUHJvcHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDaGVja0dsdWVQcm9wcyhwcm9wc09iamVjdDogR2x1ZVByb3BzIHwgYW55KSB7XG4gIGxldCBlcnJvck1lc3NhZ2VzID0gJyc7XG4gIGxldCBlcnJvckZvdW5kID0gZmFsc2U7XG5cbiAgaWYgKHByb3BzT2JqZWN0LmdsdWVKb2JQcm9wcyAmJiBwcm9wc09iamVjdC5leGlzdGluZ0dsdWVKb2IpIHtcbiAgICBlcnJvck1lc3NhZ2VzICs9ICdFcnJvciAtIEVpdGhlciBwcm92aWRlIGdsdWVKb2JQcm9wcyBvciBleGlzdGluZ0dsdWVKb2IsIGJ1dCBub3QgYm90aC5cXG4nO1xuICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKCghcHJvcHNPYmplY3QuZXhpc3RpbmdHbHVlSm9iKSAmJiAoIXByb3BzT2JqZWN0LmdsdWVKb2JQcm9wcy5jb21tYW5kLnNjcmlwdExvY2F0aW9uICYmICFwcm9wc09iamVjdC5ldGxDb2RlQXNzZXQpKSB7XG4gICAgZXJyb3JNZXNzYWdlcyArPSAoJ0VpdGhlciBvbmUgb2YgQ2ZuSm9iLkpvYkNvbW1hbmRQcm9wZXJ0eS5zY3JpcHRMb2NhdGlvbiBvciBldGxDb2RlQXNzZXQgaGFzICcgK1xuICAgICAgJ3RvIGJlIHByb3ZpZGVkLiBJZiB0aGUgRVRMIEpvYiBjb2RlIGZpbGUgZXhpc3RzIGluIGEgbG9jYWwgZmlsZXN5c3RlbSwgcGxlYXNlIHNldCAnICtcbiAgICAgICdLaW5lc2lzc3RyZWFtc1RvR2x1ZWpvYlByb3BzLmV0bENvZGVBc3NldC4gSWYgdGhlIEVUTCBKb2IgaXMgYXZhaWxhYmxlIGluIGFuIFMzIGJ1Y2tldCwgc2V0IHRoZSAnICtcbiAgICAgICdDZm5Kb2IuSm9iQ29tbWFuZFByb3BlcnR5LnNjcmlwdExvY2F0aW9uIHByb3BlcnR5XFxuJyk7XG4gICAgZXJyb3JGb3VuZCA9IHRydWU7XG4gIH1cblxuICBpZiAocHJvcHNPYmplY3QuZ2x1ZUpvYlByb3BzPy5jb21tYW5kPy5zY3JpcHRMb2NhdGlvbikge1xuICAgIGNvbnN0IHMzVXJsOiBzdHJpbmcgPSBwcm9wc09iamVjdC5nbHVlSm9iUHJvcHMuY29tbWFuZC5zY3JpcHRMb2NhdGlvbjtcbiAgICBjb25zdCBmb3VuZCA9IHMzVXJsLm1hdGNoKC9eczM6XFwvXFwvXFxTK1xcL1xcUysvZyk7XG4gICAgaWYgKCEoZm91bmQgJiYgZm91bmQubGVuZ3RoID4gMCAmJiBmb3VuZFswXS5sZW5ndGggPT09IHMzVXJsLmxlbmd0aCkpIHtcbiAgICAgIGVycm9yTWVzc2FnZXMgKz0gXCJJbnZhbGlkIFMzIFVSTCBmb3IgR2x1ZSBzY3JpcHQgcHJvdmlkZWRcXG5cIjtcbiAgICAgIGVycm9yRm91bmQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGlmIChwcm9wc09iamVjdC5maWVsZFNjaGVtYSA9PT0gdW5kZWZpbmVkICYmIHByb3BzT2JqZWN0LmV4aXN0aW5nVGFibGUgPT09IHVuZGVmaW5lZCAmJiBwcm9wc09iamVjdC50YWJsZVByb3BzID09PSB1bmRlZmluZWQpIHtcbiAgICBlcnJvck1lc3NhZ2VzICs9IFwiRWl0aGVyIGZpZWxkU2NoZW1hIG9yIHRhYmxlIHByb3BlcnR5IGhhcyB0byBiZSBzZXQsIGJvdGggY2Fubm90IGJlIG9taXR0ZWRcIjtcbiAgICBlcnJvckZvdW5kID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChlcnJvckZvdW5kKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGVycm9yTWVzc2FnZXMpO1xuICB9XG59XG4iXX0=
;