'Number-encoded token not resolved for AWS RDS Aurora port

I am using AWS CDK to create a CloudFormation Stack with a RDS Aurora Cluster Database, VPC, Subnet, RouteTable and Security Group resources. And another Stack with a couple of Lambdas, API Gateway, IAM Roles and Policies and many other resources.

The CDK deployment works fine and I can see both stack created in CloudFormation with all the resources. But I had issues trying to connect with the RDS Database so I added a CfnOutput to check the connection string and realised that the RDS port was not resolved from it's original number-encoded token, while the hostname is resolved properly? So, I'm wondering why this is happening...

This is how I'm setting the CfnOutput:

new CfnOutput(this, "mysql-messaging-connstring", {
    value: connectionString,
    description: "Mysql connection string",
    exportName: `${prefix}-mysqlconnstring`
});

The RDS Aurora Database Cluster is created in a method called createDatabaseCluster:

const cluster = new rds.DatabaseCluster(scope, 'Database', {
    engine: rds.DatabaseClusterEngine.auroraMysql({ version: rds.AuroraMysqlEngineVersion.VER_5_7_12 }),
    credentials: dbCredsSecret,
    instanceProps: {
        instanceType: ec2.InstanceType.of(ec2.InstanceClass.T3, ec2.InstanceSize.SMALL),
        vpcSubnets: { subnetType: ec2.SubnetType.PRIVATE_ISOLATED },
        vpc: vpc,
        publiclyAccessible: true,
        securityGroups: [ clusterSG ]
    },
    instances: 1,
    instanceIdentifierBase: dbInstanceName,
});

This createDatabaseCluster method returns the connection string:

return `server=${cluster.instanceEndpoints[0].hostname};user=${username};password=${password};port=${cluster.instanceEndpoints[0].port};database=${database};`;

In this connection string, the DB credentials are retrieved from a secret in AWS Secrets Manager and stored in username and password variables to be used in the return statement.

The actual observed value of the CfnOutput is as follow: enter image description here

As a workaround, I can just specify the port to be used but I want to understand what's the reason why this number-encoded token is not being resolved.



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source