I am currently using the aws-cdk (TypeScript) to create a stack that consists of an EC2 instance and a RDS databaseInstance.
The RDS instance needs to be setup before the EC2 instance can be started and userdata will be executed.
The problem I have is, that I could not find a way to define the DepensOn (Cloudformation) attribute between the two resources.
The workaround is, that I am using netsted stacks.
The code looks something like this:
const instance = new ec2.Instance(this, 'Instance', {...})
const rdsInstance = new rds.DatabaseInstance(this, 'DbInstance', {...})
Now I would like to define something like instance.dependsOn(rdsInstance).
Did anybody run into the same issue?
The solution here is to use addDependency() on the node, this will handle all the necessary CloudFormation DependsOn for you:
const instance = new ec2.Instance(this, 'Instance', {...});
const rdsInstance = new rds.DatabaseInstance(this, 'DbInstance', {...});
rdsInstance.node.addDependency(instance);
From the JSDoc of addDependency(): Add an ordering dependency on another Construct. All constructs in the dependency's scope will be deployed before any construct in this construct's scope.
Hope the following helps you.
const instance = new ec2.Instance(this, 'Instance', { /* ... */ }).getInstance();
const rdsInstance = new rds.DatabaseInstance(this, 'DbInstance', { /* ... */ }).getInstance();
instance.addDependsOn(rdsInstance);