Search code examples
amazon-web-servicesamazon-ec2amazon-rdsaws-cdk

How can I create a DependsOn relation between EC2 and RDS using aws-cdk


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?


Solution

  • 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', {...});
    
    instance.node.addDependency(rdsInstance);
    

    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.