如何使用 aws-cdk 在 EC2 和 RDS 之间创建 DependsOn 关系

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

我目前正在使用 aws-cdk (TypeScript) 创建一个由 EC2 实例和 RDS 数据库实例。

需要先设置 RDS 实例,然后才能启动 EC2 实例并执行用户数据。

我遇到的问题是,我找不到在两个资源之间定义 DepensOn (Cloudformation) 属性的方法。

解决方法是,我正在使用 netsted 堆栈。

代码看起来像这样:

const instance = new ec2.Instance(this, 'Instance', {...})
const rdsInstance = new rds.DatabaseInstance(this, 'DbInstance', {...})

现在我想定义类似 instance.dependsOn(rdsInstance).

的东西

有人 运行 遇到同样的问题吗?

希望以下内容对您有所帮助。

const instance = new ec2.Instance(this, 'Instance', { /* ... */ }).getInstance();
const rdsInstance = new rds.DatabaseInstance(this, 'DbInstance', { /* ... */ }).getInstance();

instance.addDependsOn(rdsInstance);

这里的解决方案是在 node 上使用 addDependency(),这将为您处理所有必要的 CloudFormation DependsOn

const instance = new ec2.Instance(this, 'Instance', {...});
const rdsInstance = new rds.DatabaseInstance(this, 'DbInstance', {...});

rdsInstance.node.addDependency(instance);

来自 addDependency() 的 JSDoc:添加对另一个 Construct 的排序依赖。依赖范围内的所有构造将在此构造范围内的任何构造之前部署。