@cdklabs/cdk-hyperledger-fabric-network
Version:
CDK construct to deploy a Hyperledger Fabric network running on Amazon Managed Blockchain
116 lines • 10.6 kB
JavaScript
;
// 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