UNPKG

@cdklabs/cdk-hyperledger-fabric-network

Version:

CDK construct to deploy a Hyperledger Fabric network running on Amazon Managed Blockchain

116 lines 10.6 kB
"use strict"; // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: MIT-0 Object.defineProperty(exports, "__esModule", { value: true }); exports.ENDING_PORT = exports.STARTING_PORT = exports.SUPPORTED_AVAILABILITY_ZONES = exports.SUPPORTED_REGIONS = void 0; exports.getTlsBucket = getTlsBucket; exports.validateRegion = validateRegion; exports.validateAvailabilityZone = validateAvailabilityZone; exports.validateInteger = validateInteger; exports.validateString = validateString; /** * Regions where Managed Blockchain is supported, for details see * https://aws.amazon.com/managed-blockchain/pricing/hyperledger/ */ exports.SUPPORTED_REGIONS = [ 'ap-northeast-1', 'ap-northeast-2', 'ap-southeast-1', 'eu-west-1', 'eu-west-2', 'us-east-1', ]; /** * Map of supported regions to their availability zones */ exports.SUPPORTED_AVAILABILITY_ZONES = { 'ap-northeast-1': [ 'ap-northeast-1a', 'ap-northeast-1b', 'ap-northeast-1c', ], 'ap-northeast-2': [ 'ap-northeast-2a', 'ap-northeast-2b', 'ap-northeast-2c', 'ap-northeast-2d', ], 'ap-southeast-1': [ 'ap-southeast-1a', 'ap-southeast-1b', 'ap-southeast-1c', ], 'eu-west-1': [ 'eu-west-1a', 'eu-west-1b', 'eu-west-1c', ], 'eu-west-2': [ 'eu-west-2a', 'eu-west-2b', 'eu-west-2c', ], 'us-east-1': [ 'us-east-1a', 'us-east-1b', 'us-east-1c', 'us-east-1d', 'us-east-1e', 'us-east-1f', ], }; /** * Starting port of the Network port range */ exports.STARTING_PORT = 30001; /** * Ending port of the Network port range */ exports.ENDING_PORT = 30004; /** * Returns the S3 Bucket and key that contains the TLS cert file */ function getTlsBucket(region) { return { bucketName: `${region}.managedblockchain`, key: 'etc/managedblockchain-tls-chain.pem' }; } /** * Throw an error if provided region is not in the supported list */ function validateRegion(region) { if (!exports.SUPPORTED_REGIONS.includes(region)) { const regionList = exports.SUPPORTED_REGIONS.join(', '); throw new Error(`Managed Blockchain is only available in the following regions: ${regionList}.`); } } /** * Throw an error if provided availability zone is not in the supported list */ function validateAvailabilityZone(region, availabilityZone) { const availabililtyZonesForRegion = exports.SUPPORTED_AVAILABILITY_ZONES[region]; if (typeof availabilityZone === 'undefined' || !availabililtyZonesForRegion.includes(availabilityZone)) { const availabilityZoneList = availabililtyZonesForRegion.join(', '); throw new Error(`Managed Blockchain in ${region} is only available in the following availability zones: ${availabilityZoneList}.`); } } /** * Throw an error if provided number is not an integer, or not with the given range (inclusive) */ function validateInteger(value, min, max) { if (!Number.isInteger(value)) return false; if (value < min || value > max) return false; return true; } /** * Throw an error if provided string has length with a given range (inclusive), * and optionally matches a provided regular expression pattern */ function validateString(value, min, max, regexp) { if (value.length < min || value.length > max) return false; if (typeof regexp !== 'undefined' && !value.match(regexp)) return false; return true; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0aWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3V0aWxpdGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEscUVBQXFFO0FBQ3JFLGlDQUFpQzs7O0FBcUVqQyxvQ0FFQztBQUtELHdDQUtDO0FBS0QsNERBTUM7QUFLRCwwQ0FJQztBQU1ELHdDQUlDO0FBNUdEOzs7R0FHRztBQUNVLFFBQUEsaUJBQWlCLEdBQUc7SUFDL0IsZ0JBQWdCO0lBQ2hCLGdCQUFnQjtJQUNoQixnQkFBZ0I7SUFDaEIsV0FBVztJQUNYLFdBQVc7SUFDWCxXQUFXO0NBQ1osQ0FBQztBQUVGOztHQUVHO0FBQ1UsUUFBQSw0QkFBNEIsR0FBa0M7SUFDekUsZ0JBQWdCLEVBQUU7UUFDaEIsaUJBQWlCO1FBQ2pCLGlCQUFpQjtRQUNqQixpQkFBaUI7S0FDbEI7SUFDRCxnQkFBZ0IsRUFBRTtRQUNoQixpQkFBaUI7UUFDakIsaUJBQWlCO1FBQ2pCLGlCQUFpQjtRQUNqQixpQkFBaUI7S0FDbEI7SUFDRCxnQkFBZ0IsRUFBRTtRQUNoQixpQkFBaUI7UUFDakIsaUJBQWlCO1FBQ2pCLGlCQUFpQjtLQUNsQjtJQUNELFdBQVcsRUFBRTtRQUNYLFlBQVk7UUFDWixZQUFZO1FBQ1osWUFBWTtLQUNiO0lBQ0QsV0FBVyxFQUFFO1FBQ1gsWUFBWTtRQUNaLFlBQVk7UUFDWixZQUFZO0tBQ2I7SUFDRCxXQUFXLEVBQUU7UUFDWCxZQUFZO1FBQ1osWUFBWTtRQUNaLFlBQVk7UUFDWixZQUFZO1FBQ1osWUFBWTtRQUNaLFlBQVk7S0FDYjtDQUNGLENBQUM7QUFFRjs7R0FFRztBQUNVLFFBQUEsYUFBYSxHQUFHLEtBQUssQ0FBQztBQUVuQzs7R0FFRztBQUNVLFFBQUEsV0FBVyxHQUFHLEtBQUssQ0FBQztBQUVqQzs7R0FFRztBQUNILFNBQWdCLFlBQVksQ0FBQyxNQUFjO0lBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxNQUFNLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxxQ0FBcUMsRUFBRSxDQUFDO0FBQ25HLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLGNBQWMsQ0FBQyxNQUFjO0lBQzNDLElBQUksQ0FBQyx5QkFBaUIsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUN4QyxNQUFNLFVBQVUsR0FBRyx5QkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxrRUFBa0UsVUFBVSxHQUFHLENBQUMsQ0FBQztJQUNuRyxDQUFDO0FBQ0gsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0Isd0JBQXdCLENBQUMsTUFBYyxFQUFFLGdCQUF5QjtJQUNoRixNQUFNLDJCQUEyQixHQUFHLG9DQUE0QixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pFLElBQUksT0FBTyxnQkFBZ0IsS0FBSyxXQUFXLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO1FBQ3ZHLE1BQU0sb0JBQW9CLEdBQUcsMkJBQTJCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLE1BQU0sMkRBQTJELG9CQUFvQixHQUFHLENBQUMsQ0FBQztJQUNySSxDQUFDO0FBQ0gsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsZUFBZSxDQUFDLEtBQWEsRUFBRSxHQUFXLEVBQUUsR0FBVztJQUNyRSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUMzQyxJQUFJLEtBQUssR0FBRyxHQUFHLElBQUksS0FBSyxHQUFHLEdBQUc7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUM3QyxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQixjQUFjLENBQUMsS0FBYSxFQUFFLEdBQVcsRUFBRSxHQUFXLEVBQUUsTUFBMkI7SUFDakcsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUcsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLEdBQUc7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUMzRCxJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDeEUsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlULTBcblxuXG4vKipcbiAqIFJlZ2lvbnMgd2hlcmUgTWFuYWdlZCBCbG9ja2NoYWluIGlzIHN1cHBvcnRlZCwgZm9yIGRldGFpbHMgc2VlXG4gKiBodHRwczovL2F3cy5hbWF6b24uY29tL21hbmFnZWQtYmxvY2tjaGFpbi9wcmljaW5nL2h5cGVybGVkZ2VyL1xuICovXG5leHBvcnQgY29uc3QgU1VQUE9SVEVEX1JFR0lPTlMgPSBbXG4gICdhcC1ub3J0aGVhc3QtMScsXG4gICdhcC1ub3J0aGVhc3QtMicsXG4gICdhcC1zb3V0aGVhc3QtMScsXG4gICdldS13ZXN0LTEnLFxuICAnZXUtd2VzdC0yJyxcbiAgJ3VzLWVhc3QtMScsXG5dO1xuXG4vKipcbiAqIE1hcCBvZiBzdXBwb3J0ZWQgcmVnaW9ucyB0byB0aGVpciBhdmFpbGFiaWxpdHkgem9uZXNcbiAqL1xuZXhwb3J0IGNvbnN0IFNVUFBPUlRFRF9BVkFJTEFCSUxJVFlfWk9ORVM6IFJlY29yZDxzdHJpbmcsIEFycmF5PHN0cmluZz4+ID0ge1xuICAnYXAtbm9ydGhlYXN0LTEnOiBbXG4gICAgJ2FwLW5vcnRoZWFzdC0xYScsXG4gICAgJ2FwLW5vcnRoZWFzdC0xYicsXG4gICAgJ2FwLW5vcnRoZWFzdC0xYycsXG4gIF0sXG4gICdhcC1ub3J0aGVhc3QtMic6IFtcbiAgICAnYXAtbm9ydGhlYXN0LTJhJyxcbiAgICAnYXAtbm9ydGhlYXN0LTJiJyxcbiAgICAnYXAtbm9ydGhlYXN0LTJjJyxcbiAgICAnYXAtbm9ydGhlYXN0LTJkJyxcbiAgXSxcbiAgJ2FwLXNvdXRoZWFzdC0xJzogW1xuICAgICdhcC1zb3V0aGVhc3QtMWEnLFxuICAgICdhcC1zb3V0aGVhc3QtMWInLFxuICAgICdhcC1zb3V0aGVhc3QtMWMnLFxuICBdLFxuICAnZXUtd2VzdC0xJzogW1xuICAgICdldS13ZXN0LTFhJyxcbiAgICAnZXUtd2VzdC0xYicsXG4gICAgJ2V1LXdlc3QtMWMnLFxuICBdLFxuICAnZXUtd2VzdC0yJzogW1xuICAgICdldS13ZXN0LTJhJyxcbiAgICAnZXUtd2VzdC0yYicsXG4gICAgJ2V1LXdlc3QtMmMnLFxuICBdLFxuICAndXMtZWFzdC0xJzogW1xuICAgICd1cy1lYXN0LTFhJyxcbiAgICAndXMtZWFzdC0xYicsXG4gICAgJ3VzLWVhc3QtMWMnLFxuICAgICd1cy1lYXN0LTFkJyxcbiAgICAndXMtZWFzdC0xZScsXG4gICAgJ3VzLWVhc3QtMWYnLFxuICBdLFxufTtcblxuLyoqXG4gKiBTdGFydGluZyBwb3J0IG9mIHRoZSBOZXR3b3JrIHBvcnQgcmFuZ2VcbiAqL1xuZXhwb3J0IGNvbnN0IFNUQVJUSU5HX1BPUlQgPSAzMDAwMTtcblxuLyoqXG4gKiBFbmRpbmcgcG9ydCBvZiB0aGUgTmV0d29yayBwb3J0IHJhbmdlXG4gKi9cbmV4cG9ydCBjb25zdCBFTkRJTkdfUE9SVCA9IDMwMDA0O1xuXG4vKipcbiAqIFJldHVybnMgdGhlIFMzIEJ1Y2tldCBhbmQga2V5IHRoYXQgY29udGFpbnMgdGhlIFRMUyBjZXJ0IGZpbGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRsc0J1Y2tldChyZWdpb246IHN0cmluZykge1xuICByZXR1cm4geyBidWNrZXROYW1lOiBgJHtyZWdpb259Lm1hbmFnZWRibG9ja2NoYWluYCwga2V5OiAnZXRjL21hbmFnZWRibG9ja2NoYWluLXRscy1jaGFpbi5wZW0nIH07XG59XG5cbi8qKlxuICogVGhyb3cgYW4gZXJyb3IgaWYgcHJvdmlkZWQgcmVnaW9uIGlzIG5vdCBpbiB0aGUgc3VwcG9ydGVkIGxpc3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlUmVnaW9uKHJlZ2lvbjogc3RyaW5nKSB7XG4gIGlmICghU1VQUE9SVEVEX1JFR0lPTlMuaW5jbHVkZXMocmVnaW9uKSkge1xuICAgIGNvbnN0IHJlZ2lvbkxpc3QgPSBTVVBQT1JURURfUkVHSU9OUy5qb2luKCcsICcpO1xuICAgIHRocm93IG5ldyBFcnJvcihgTWFuYWdlZCBCbG9ja2NoYWluIGlzIG9ubHkgYXZhaWxhYmxlIGluIHRoZSBmb2xsb3dpbmcgcmVnaW9uczogJHtyZWdpb25MaXN0fS5gKTtcbiAgfVxufVxuXG4vKipcbiAqIFRocm93IGFuIGVycm9yIGlmIHByb3ZpZGVkIGF2YWlsYWJpbGl0eSB6b25lIGlzIG5vdCBpbiB0aGUgc3VwcG9ydGVkIGxpc3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlQXZhaWxhYmlsaXR5Wm9uZShyZWdpb246IHN0cmluZywgYXZhaWxhYmlsaXR5Wm9uZT86IHN0cmluZykge1xuICBjb25zdCBhdmFpbGFiaWxpbHR5Wm9uZXNGb3JSZWdpb24gPSBTVVBQT1JURURfQVZBSUxBQklMSVRZX1pPTkVTW3JlZ2lvbl07XG4gIGlmICh0eXBlb2YgYXZhaWxhYmlsaXR5Wm9uZSA9PT0gJ3VuZGVmaW5lZCcgfHwgIWF2YWlsYWJpbGlsdHlab25lc0ZvclJlZ2lvbi5pbmNsdWRlcyhhdmFpbGFiaWxpdHlab25lKSkge1xuICAgIGNvbnN0IGF2YWlsYWJpbGl0eVpvbmVMaXN0ID0gYXZhaWxhYmlsaWx0eVpvbmVzRm9yUmVnaW9uLmpvaW4oJywgJyk7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBNYW5hZ2VkIEJsb2NrY2hhaW4gaW4gJHtyZWdpb259IGlzIG9ubHkgYXZhaWxhYmxlIGluIHRoZSBmb2xsb3dpbmcgYXZhaWxhYmlsaXR5IHpvbmVzOiAke2F2YWlsYWJpbGl0eVpvbmVMaXN0fS5gKTtcbiAgfVxufVxuXG4vKipcbiAqIFRocm93IGFuIGVycm9yIGlmIHByb3ZpZGVkIG51bWJlciBpcyBub3QgYW4gaW50ZWdlciwgb3Igbm90IHdpdGggdGhlIGdpdmVuIHJhbmdlIChpbmNsdXNpdmUpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUludGVnZXIodmFsdWU6IG51bWJlciwgbWluOiBudW1iZXIsIG1heDogbnVtYmVyKSB7XG4gIGlmICghTnVtYmVyLmlzSW50ZWdlcih2YWx1ZSkpIHJldHVybiBmYWxzZTtcbiAgaWYgKHZhbHVlIDwgbWluIHx8IHZhbHVlID4gbWF4KSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIFRocm93IGFuIGVycm9yIGlmIHByb3ZpZGVkIHN0cmluZyBoYXMgbGVuZ3RoIHdpdGggYSBnaXZlbiByYW5nZSAoaW5jbHVzaXZlKSxcbiAqIGFuZCBvcHRpb25hbGx5IG1hdGNoZXMgYSBwcm92aWRlZCByZWd1bGFyIGV4cHJlc3Npb24gcGF0dGVyblxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVTdHJpbmcodmFsdWU6IHN0cmluZywgbWluOiBudW1iZXIsIG1heDogbnVtYmVyLCByZWdleHA/OiBSZWdFeHAgfCB1bmRlZmluZWQpIHtcbiAgaWYgKHZhbHVlLmxlbmd0aCA8IG1pbiB8fCB2YWx1ZS5sZW5ndGggPiBtYXgpIHJldHVybiBmYWxzZTtcbiAgaWYgKHR5cGVvZiByZWdleHAgIT09ICd1bmRlZmluZWQnICYmICF2YWx1ZS5tYXRjaChyZWdleHApKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiB0cnVlO1xufVxuIl19