Skip to content

Commit 2bde1a0

Browse files
authored
fix(elasticache-alpha): cannot import Redis 7 serverless cache (#35629)
### Issue # (if applicable) N/A ### Reason for this change The `ServerlessCache` class was missing the `CacheEngine.REDIS_7` case in the switch statement that determines the default port for imported caches. So importing a Redis 7 serverless cache causes an error: > ValidationError: Unsupported cache engine: redis_7 ### Description of changes * Added missing `CacheEngine.REDIS_7` case** in the `fromServerlessCacheAttributes` method's switch statement to ensure Redis 7 caches use the correct default port. * Add unit tests for all supported versions. ### Describe any new or updated permissions being added N/A ### Description of how you validated changes Add unit tests ### Checklist - [x] My code adheres to the [CONTRIBUTING GUIDE](https://github.com/aws/aws-cdk/blob/main/CONTRIBUTING.md) and [DESIGN GUIDELINES](https://github.com/aws/aws-cdk/blob/main/docs/DESIGN_GUIDELINES.md) ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
1 parent 2be0b63 commit 2bde1a0

File tree

2 files changed

+30
-4
lines changed

2 files changed

+30
-4
lines changed

packages/@aws-cdk/aws-elasticache-alpha/lib/serverless-cache.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -329,6 +329,7 @@ export class ServerlessCache extends ServerlessCacheBase {
329329
case CacheEngine.VALKEY_7:
330330
case CacheEngine.VALKEY_8:
331331
case CacheEngine.REDIS_LATEST:
332+
case CacheEngine.REDIS_7:
332333
// Document showing the default port
333334
// https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/set-up.html#elasticache-install-grant-access-VPN
334335
defaultPort = ec2.Port.tcp(6379);

packages/@aws-cdk/aws-elasticache-alpha/test/serverless-cache.test.ts

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,22 @@ describe('serverless cache', () => {
2020
expect(cache.serverlessCacheArn).toEqual(`arn:${stack.partition}:elasticache:${stack.region}:${stack.account}:serverlesscache/my-serverless-cache`);
2121
});
2222

23+
test.each([
24+
[CacheEngine.VALKEY_LATEST],
25+
[CacheEngine.VALKEY_8],
26+
[CacheEngine.VALKEY_7],
27+
[CacheEngine.REDIS_LATEST],
28+
[CacheEngine.REDIS_7],
29+
[CacheEngine.MEMCACHED_LATEST],
30+
])('import serverless cache for %s', (cacheEngine) => {
31+
const cache = ServerlessCache.fromServerlessCacheAttributes(stack, 'ImportedCache', {
32+
serverlessCacheName: 'my-serverless-cache',
33+
engine: cacheEngine,
34+
});
35+
36+
expect(cache.serverlessCacheArn).toEqual(`arn:${stack.partition}:elasticache:${stack.region}:${stack.account}:serverlesscache/my-serverless-cache`);
37+
});
38+
2339
test('create serverless cache with full props', () => {
2440
const key = new Key(stack, 'Key', {});
2541
const securityGroup = new SecurityGroup(stack, 'SecurityGroup', { vpc });
@@ -73,15 +89,24 @@ describe('serverless cache', () => {
7389
});
7490
});
7591

76-
test('create serverless cache with VALKEY_LATEST enigne', () => {
92+
test.each([
93+
[CacheEngine.VALKEY_LATEST, 'valkey', Match.absent()],
94+
[CacheEngine.VALKEY_8, 'valkey', '8'],
95+
[CacheEngine.VALKEY_7, 'valkey', '7'],
96+
[CacheEngine.REDIS_LATEST, 'redis', Match.absent()],
97+
[CacheEngine.REDIS_7, 'redis', '7'],
98+
[CacheEngine.MEMCACHED_LATEST, 'memcached', Match.absent()],
99+
])('test serverless cache version for %s', (cacheEngine, engine, version) => {
77100
new ServerlessCache(stack, 'Cache', {
101+
description: 'Serverless cache',
78102
vpc,
79-
engine: CacheEngine.VALKEY_LATEST,
103+
engine: cacheEngine,
80104
});
81105

82106
Template.fromStack(stack).hasResourceProperties('AWS::ElastiCache::ServerlessCache', {
83-
Engine: 'valkey',
84-
MajorEngineVersion: Match.absent(),
107+
Description: 'Serverless cache',
108+
Engine: engine,
109+
MajorEngineVersion: version,
85110
});
86111
});
87112
});

0 commit comments

Comments
 (0)