@aws-solutions-constructs/core
Version:
Core CDK Construct for patterns library
77 lines • 10.8 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.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
;