[DatabaseProxy] Model validation failed (#: required key [TargetGroupName] not found)
See original GitHub issueI tried DatabaseProxy with Database Cluster (Aurora, Postgres) but it’s failed as titled.
Reproduction Steps
const databaseUser = 'test';
const secret = new secretsmanager.Secret(this, 'secret', {
generateSecretString: {
generateStringKey: 'password',
secretStringTemplate: `{"username": "${databaseUser}"}`,
excludePunctuation: true
}
});
const cluster = new rds.DatabaseCluster(this, 'Database', {
engine: rds.DatabaseClusterEngine.AURORA_POSTGRESQL,
engineVersion: '11.7',
defaultDatabaseName: 'mydatabase',
masterUser: {
username: databaseUser,
password: secret.secretValueFromJson('password')
},
instanceProps: {
instanceType: ec2.InstanceType.of(
ec2.InstanceClass.R5,
ec2.InstanceSize.LARGE
),
vpcSubnets: {
subnetType: ec2.SubnetType.PRIVATE
},
vpc
},
parameterGroup: new rds.ClusterParameterGroup(this, 'ParameterGroup', {
family: 'aurora-postgresql11',
parameters: {
application_name: 'test',
},
}),
removalPolicy: cdk.RemovalPolicy.DESTROY,
});
const proxy = new rds.DatabaseProxy(this, 'DatabaseProxy', {
dbProxyName: 'test-proxy',
debugLogging: true,
iamAuth: false,
requireTLS: true,
secret,
vpc,
vpcSubnets: {
subnetType: ec2.SubnetType.PRIVATE,
},
proxyTarget: rds.ProxyTarget.fromCluster(cluster),
});
Error Log
Model validation failed (#: required key [TargetGroupName] not found)
Environment
- CLI Version : 1.49.1
- Framework Version: 1.49.1
- Node.js Version: v13.7.0
- OS : 10.14.6
- Language (Version): TypeScript (3.7.5)
Other
This is 🐛 Bug Report
Issue Analytics
- State:
- Created 3 years ago
- Reactions:4
- Comments:20 (9 by maintainers)
Top Results From Across the Web
AWS::RDS::DBProxy - AWS CloudFormation
An optional set of key-value pairs to associate arbitrary data of your choosing with the proxy. Required: No. Type: List of TagFormat. Update...
Read more >How do I disassociate a a Database Proxy from a Lambda ...
Hi. I've a associated a database proxy to a lambda function. Now I need the proxy to be removed from that function. I...
Read more >CloudFormation Template errors on AWS - Stack Overflow
InternetGateway CREATE_FAILED Properties validation failed for resource InternetGateway with message: #: extraneous key [KeyName] is not ...
Read more >awsrds - Go Packages
This identifier is found in AWS CloudTrail log entries whenever the KMS key for the DB cluster is accessed. AttrDbClusterResourceId() *string // The ......
Read more >Benjamin Smith | Noise | Page 2
Specify tag key-value pairs to categorize API Gateway resources by ... https://docs.aws.amazon.com/serverless-application-model/latest/ ...
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
This was my original workaround: Prior to rds.DatabaseProxy’s introduction in 1.49 I had to create the DB Proxy with CfnDBProxy. This route required me to set the proxy’s target group as follow:
This caused the same required key [TargetGroupName] error. After many hours of struggling and diving into the cdk source I realized there is no place where TargetGroupName* seems to be assigned to the target group, expept has has been pointed out, in
cdk.Token.asString(this.getAtt('TargetGroupName'))
which we can’t use, and no way to pass it into the constructor as a property. My workaround was to add the following line immediately after creating the target group:TargetGroupName is not documented and assigning anything but default caused an enum error.
In cdk 1.49.0 the DatabaseProxy class was finally added, alongside the very helpful rdsInstance.addProxy(…) for which I am very thankful. However, I notice in the new proxy.ts file that was introduced calls the following
yet without again assigning the TargetGroupName. Hence the error still remaining.
You can thus solve the error by adding the following at the end of your code after
const proxy
I just tested these two lines on the new implementation of the cdk rds proxy class and it is working with my new db stack. I hope this helps.
Another problem has happened. After I applying this patch, the deployment was failed with the message “Timed out waiting for target group to become available.”. But I confirmed that the database proxy had been created successfully on the AWS Management Console.
Does anyone hit the same problem? Should I open another issue?