UNPKG

@aws-solutions-constructs/core

Version:
77 lines 10.8 kB
"use strict"; /** * 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.obtainMemcachedCluster = obtainMemcachedCluster; exports.createCacheSubnetGroup = createCacheSubnetGroup; exports.getCachePort = getCachePort; const cache = require("aws-cdk-lib/aws-elasticache"); const elasticache_defaults_1 = require("./elasticache-defaults"); const utils_1 = require("./utils"); /** * @internal This is an internal core function and should not be called directly by Solutions Constructs clients. */ function obtainMemcachedCluster(scope, id, props) { if (props.existingCache) { props.existingCache.vpcSecurityGroupIds?.push(props.cacheSecurityGroupId); return props.existingCache; } else { if (!props.cachePort) { throw Error('props.cachePort required for new caches'); } // Create the subnet group from all the isolated subnets in the VPC const subnetGroup = createCacheSubnetGroup(scope, props.vpc, id); const defaultProps = (0, elasticache_defaults_1.GetMemcachedDefaults)(id, props.cachePort); const requiredConstructProps = { vpcSecurityGroupIds: [props.cacheSecurityGroupId], cacheSubnetGroupName: subnetGroup.cacheSubnetGroupName, }; const consolidatedProps = (0, utils_1.consolidateProps)(defaultProps, props.cacheProps, requiredConstructProps, true); const newCache = new cache.CfnCacheCluster(scope, `${id}-cluster`, consolidatedProps); newCache.addDependency(subnetGroup); return newCache; } } /** * @internal This is an internal core function and should not be called directly by Solutions Constructs clients. */ function createCacheSubnetGroup(construct, vpc, id) { // Memcached has no auth, all access control is // network based, so, at least initially, we will // only launch it in isolated subnets. const subnetIds = []; vpc.isolatedSubnets.forEach((subnet) => { subnetIds.push(subnet.subnetId); }); return new cache.CfnSubnetGroup(construct, `ec-subnetgroup-${id}`, { description: "Solutions Constructs generated Cache Subnet Group", subnetIds, cacheSubnetGroupName: `${id}-subnet-group`, }); } /** * @internal This is an internal core function and should not be called directly by Solutions Constructs clients. */ function getCachePort(clientCacheProps, existingCache) { if (existingCache) { return existingCache.attrConfigurationEndpointPort; } else if (clientCacheProps?.port) { return clientCacheProps.port; } else { return (0, elasticache_defaults_1.GetDefaultCachePort)(); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxhc3RpY2FjaGUtaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZWxhc3RpY2FjaGUtaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7Ozs7Ozs7R0FXRzs7QUF3Qkgsd0RBc0NDO0FBS0Qsd0RBbUJDO0FBS0Qsb0NBV0M7QUE5RkQscURBQXFEO0FBRXJELGlFQUFtRjtBQUNuRixtQ0FBMkM7QUFVM0M7O0dBRUc7QUFDSCxTQUFnQixzQkFBc0IsQ0FDcEMsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLEtBQWtDO0lBR2xDLElBQUksS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3hCLEtBQUssQ0FBQyxhQUFhLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzFFLE9BQU8sS0FBSyxDQUFDLGFBQWEsQ0FBQztJQUM3QixDQUFDO1NBQU0sQ0FBQztRQUNOLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDckIsTUFBTSxLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQztRQUN6RCxDQUFDO1FBRUQsbUVBQW1FO1FBQ25FLE1BQU0sV0FBVyxHQUFHLHNCQUFzQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWxFLE1BQU0sWUFBWSxHQUFHLElBQUEsMkNBQW9CLEVBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMvRCxNQUFNLHNCQUFzQixHQUFHO1lBQzdCLG1CQUFtQixFQUFFLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDO1lBQ2pELG9CQUFvQixFQUFFLFdBQVcsQ0FBQyxvQkFBb0I7U0FDdkQsQ0FBQztRQUNGLE1BQU0saUJBQWlCLEdBQUcsSUFBQSx3QkFBZ0IsRUFDeEMsWUFBWSxFQUNaLEtBQUssQ0FBQyxVQUFVLEVBQ2hCLHNCQUFzQixFQUN0QixJQUFJLENBQ0wsQ0FBQztRQUVGLE1BQU0sUUFBUSxHQUFHLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FDeEMsS0FBSyxFQUNMLEdBQUcsRUFBRSxVQUFVLEVBQ2YsaUJBQWlCLENBQ2xCLENBQUM7UUFDRixRQUFRLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7QUFFSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixzQkFBc0IsQ0FDcEMsU0FBb0IsRUFDcEIsR0FBYSxFQUNiLEVBQVU7SUFHViwrQ0FBK0M7SUFDL0MsaURBQWlEO0lBQ2pELHNDQUFzQztJQUN0QyxNQUFNLFNBQVMsR0FBYSxFQUFFLENBQUM7SUFDL0IsR0FBRyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtRQUNyQyxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsQyxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxFQUFFLEVBQUU7UUFDakUsV0FBVyxFQUFFLG1EQUFtRDtRQUNoRSxTQUFTO1FBQ1Qsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLGVBQWU7S0FDM0MsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsWUFBWSxDQUMxQixnQkFBbUQsRUFDbkQsYUFBcUM7SUFFckMsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUNsQixPQUFPLGFBQWEsQ0FBQyw2QkFBNkIsQ0FBQztJQUNyRCxDQUFDO1NBQU0sSUFBSSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUNsQyxPQUFPLGdCQUFnQixDQUFDLElBQUksQ0FBQztJQUMvQixDQUFDO1NBQU0sQ0FBQztRQUNOLE9BQU8sSUFBQSwwQ0FBbUIsR0FBRSxDQUFDO0lBQy9CLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIikuIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiAqICB3aXRoIHRoZSBMaWNlbnNlLiBBIGNvcHkgb2YgdGhlIExpY2Vuc2UgaXMgbG9jYXRlZCBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIG9yIGluIHRoZSAnbGljZW5zZScgZmlsZSBhY2NvbXBhbnlpbmcgdGhpcyBmaWxlLiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTXG4gKiAgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnNcbiAqICBhbmQgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLypcbiAqICBUaGUgZnVuY3Rpb25zIGZvdW5kIGhlcmUgaW4gdGhlIGNvcmUgbGlicmFyeSBhcmUgZm9yIGludGVybmFsIHVzZSBhbmQgY2FuIGJlIGNoYW5nZWRcbiAqICBvciByZW1vdmVkIG91dHNpZGUgb2YgYSBtYWpvciByZWxlYXNlLiBXZSByZWNvbW1lbmQgYWdhaW5zdCBjYWxsaW5nIHRoZW0gZGlyZWN0bHkgZnJvbSBjbGllbnQgY29kZS5cbiAqL1xuXG5pbXBvcnQgKiBhcyBlYzIgZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIjtcbmltcG9ydCAqIGFzIGNhY2hlIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtZWxhc3RpY2FjaGVcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBHZXREZWZhdWx0Q2FjaGVQb3J0LCBHZXRNZW1jYWNoZWREZWZhdWx0cyB9IGZyb20gJy4vZWxhc3RpY2FjaGUtZGVmYXVsdHMnO1xuaW1wb3J0IHsgY29uc29saWRhdGVQcm9wcyB9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE9idGFpbk1lbWNhY2hlZENsdXN0ZXJQcm9wcyB7XG4gIHJlYWRvbmx5IGNhY2hlUG9ydD86IGFueSxcbiAgcmVhZG9ubHkgY2FjaGVTZWN1cml0eUdyb3VwSWQ6IHN0cmluZyxcbiAgcmVhZG9ubHkgY2FjaGVQcm9wcz86IGNhY2hlLkNmbkNhY2hlQ2x1c3RlclByb3BzIHwgYW55LFxuICByZWFkb25seSBleGlzdGluZ0NhY2hlPzogY2FjaGUuQ2ZuQ2FjaGVDbHVzdGVyLFxuICByZWFkb25seSB2cGM/OiBlYzIuSVZwYyxcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gb2J0YWluTWVtY2FjaGVkQ2x1c3RlcihcbiAgc2NvcGU6IENvbnN0cnVjdCxcbiAgaWQ6IHN0cmluZyxcbiAgcHJvcHM6IE9idGFpbk1lbWNhY2hlZENsdXN0ZXJQcm9wc1xuKSB7XG5cbiAgaWYgKHByb3BzLmV4aXN0aW5nQ2FjaGUpIHtcbiAgICBwcm9wcy5leGlzdGluZ0NhY2hlLnZwY1NlY3VyaXR5R3JvdXBJZHM/LnB1c2gocHJvcHMuY2FjaGVTZWN1cml0eUdyb3VwSWQpO1xuICAgIHJldHVybiBwcm9wcy5leGlzdGluZ0NhY2hlO1xuICB9IGVsc2Uge1xuICAgIGlmICghcHJvcHMuY2FjaGVQb3J0KSB7XG4gICAgICB0aHJvdyBFcnJvcigncHJvcHMuY2FjaGVQb3J0IHJlcXVpcmVkIGZvciBuZXcgY2FjaGVzJyk7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIHRoZSBzdWJuZXQgZ3JvdXAgZnJvbSBhbGwgdGhlIGlzb2xhdGVkIHN1Ym5ldHMgaW4gdGhlIFZQQ1xuICAgIGNvbnN0IHN1Ym5ldEdyb3VwID0gY3JlYXRlQ2FjaGVTdWJuZXRHcm91cChzY29wZSwgcHJvcHMudnBjISwgaWQpO1xuXG4gICAgY29uc3QgZGVmYXVsdFByb3BzID0gR2V0TWVtY2FjaGVkRGVmYXVsdHMoaWQsIHByb3BzLmNhY2hlUG9ydCk7XG4gICAgY29uc3QgcmVxdWlyZWRDb25zdHJ1Y3RQcm9wcyA9IHtcbiAgICAgIHZwY1NlY3VyaXR5R3JvdXBJZHM6IFtwcm9wcy5jYWNoZVNlY3VyaXR5R3JvdXBJZF0sXG4gICAgICBjYWNoZVN1Ym5ldEdyb3VwTmFtZTogc3VibmV0R3JvdXAuY2FjaGVTdWJuZXRHcm91cE5hbWUsXG4gICAgfTtcbiAgICBjb25zdCBjb25zb2xpZGF0ZWRQcm9wcyA9IGNvbnNvbGlkYXRlUHJvcHMoXG4gICAgICBkZWZhdWx0UHJvcHMsXG4gICAgICBwcm9wcy5jYWNoZVByb3BzLFxuICAgICAgcmVxdWlyZWRDb25zdHJ1Y3RQcm9wcyxcbiAgICAgIHRydWVcbiAgICApO1xuXG4gICAgY29uc3QgbmV3Q2FjaGUgPSBuZXcgY2FjaGUuQ2ZuQ2FjaGVDbHVzdGVyKFxuICAgICAgc2NvcGUsXG4gICAgICBgJHtpZH0tY2x1c3RlcmAsXG4gICAgICBjb25zb2xpZGF0ZWRQcm9wc1xuICAgICk7XG4gICAgbmV3Q2FjaGUuYWRkRGVwZW5kZW5jeShzdWJuZXRHcm91cCk7XG4gICAgcmV0dXJuIG5ld0NhY2hlO1xuICB9XG5cbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ2FjaGVTdWJuZXRHcm91cChcbiAgY29uc3RydWN0OiBDb25zdHJ1Y3QsXG4gIHZwYzogZWMyLklWcGMsXG4gIGlkOiBzdHJpbmdcbik6IGNhY2hlLkNmblN1Ym5ldEdyb3VwIHtcblxuICAvLyBNZW1jYWNoZWQgaGFzIG5vIGF1dGgsIGFsbCBhY2Nlc3MgY29udHJvbCBpc1xuICAvLyBuZXR3b3JrIGJhc2VkLCBzbywgYXQgbGVhc3QgaW5pdGlhbGx5LCB3ZSB3aWxsXG4gIC8vIG9ubHkgbGF1bmNoIGl0IGluIGlzb2xhdGVkIHN1Ym5ldHMuXG4gIGNvbnN0IHN1Ym5ldElkczogc3RyaW5nW10gPSBbXTtcbiAgdnBjLmlzb2xhdGVkU3VibmV0cy5mb3JFYWNoKChzdWJuZXQpID0+IHtcbiAgICBzdWJuZXRJZHMucHVzaChzdWJuZXQuc3VibmV0SWQpO1xuICB9KTtcblxuICByZXR1cm4gbmV3IGNhY2hlLkNmblN1Ym5ldEdyb3VwKGNvbnN0cnVjdCwgYGVjLXN1Ym5ldGdyb3VwLSR7aWR9YCwge1xuICAgIGRlc2NyaXB0aW9uOiBcIlNvbHV0aW9ucyBDb25zdHJ1Y3RzIGdlbmVyYXRlZCBDYWNoZSBTdWJuZXQgR3JvdXBcIixcbiAgICBzdWJuZXRJZHMsXG4gICAgY2FjaGVTdWJuZXRHcm91cE5hbWU6IGAke2lkfS1zdWJuZXQtZ3JvdXBgLFxuICB9KTtcbn1cblxuLyoqXG4gKiBAaW50ZXJuYWwgVGhpcyBpcyBhbiBpbnRlcm5hbCBjb3JlIGZ1bmN0aW9uIGFuZCBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSBieSBTb2x1dGlvbnMgQ29uc3RydWN0cyBjbGllbnRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2FjaGVQb3J0KFxuICBjbGllbnRDYWNoZVByb3BzPzogY2FjaGUuQ2ZuQ2FjaGVDbHVzdGVyUHJvcHMgfCBhbnksXG4gIGV4aXN0aW5nQ2FjaGU/OiBjYWNoZS5DZm5DYWNoZUNsdXN0ZXJcbik6IGFueSB7XG4gIGlmIChleGlzdGluZ0NhY2hlKSB7XG4gICAgcmV0dXJuIGV4aXN0aW5nQ2FjaGUuYXR0ckNvbmZpZ3VyYXRpb25FbmRwb2ludFBvcnQ7XG4gIH0gZWxzZSBpZiAoY2xpZW50Q2FjaGVQcm9wcz8ucG9ydCkge1xuICAgIHJldHVybiBjbGllbnRDYWNoZVByb3BzLnBvcnQ7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIEdldERlZmF1bHRDYWNoZVBvcnQoKTtcbiAgfVxufVxuIl19