diff --git a/src/aws-elasticache/serverless-cache.ts b/src/aws-elasticache/serverless-cache.ts index bfb0766..3c99dc5 100644 --- a/src/aws-elasticache/serverless-cache.ts +++ b/src/aws-elasticache/serverless-cache.ts @@ -618,7 +618,7 @@ export class ServerlessCache extends ServerlessCacheBase { this.serverlessCacheName = serverlessCache.ref; this.endpointAddress = serverlessCache.attrEndpointAddress; - this.endpointPort = Number(serverlessCache.attrEndpointPort); + this.endpointPort = Token.asNumber(serverlessCache.attrEndpointPort); this.connections = new aws_ec2.Connections({ securityGroups: this.securityGroups, diff --git a/test/aws-elasticache/serverless-cache.test.ts b/test/aws-elasticache/serverless-cache.test.ts index 6a36b44..cfca278 100644 --- a/test/aws-elasticache/serverless-cache.test.ts +++ b/test/aws-elasticache/serverless-cache.test.ts @@ -41,6 +41,30 @@ describe('ElastiCache Serverless Cache', () => { }); }); + test('should correctly export properties to dependencies', () => { + const cache = new ServerlessCache(stack, 'ServerlessCache', { + engine: Engine.VALKEY, + vpc, + majorEngineVersion: MajorVersion.VER_8, + }); + const dependentStack = new Stack(app, 'DependentStack', {}); + new SecurityGroup(dependentStack, 'SecurityGroup', { vpc }).connections.allowToDefaultPort(cache); + + Template.fromStack(stack).hasOutput('ExportsOutputFnGetAttServerlessCacheDFFA799DEndpointPort48E77897', { + Export: { + Name: 'TestStack:ExportsOutputFnGetAttServerlessCacheDFFA799DEndpointPort48E77897', + }, + Value: { + 'Fn::GetAtt': ['ServerlessCacheDFFA799D', 'Endpoint.Port'], + }, + }); + Template.fromStack(dependentStack).hasResourceProperties('AWS::EC2::SecurityGroupIngress', { + FromPort: { + 'Fn::ImportValue': 'TestStack:ExportsOutputFnGetAttServerlessCacheDFFA799DEndpointPort48E77897', + }, + }); + }); + test('Create a serverless cache with maximum properties', () => { const user = new NoPasswordRequiredUser(stack, 'User', {});