【发布时间】:2022-03-17 05:36:28
【问题描述】:
尝试理解 CDK 的一个奇怪行为:
我有 2 个堆栈
StackA -> 定义资源 outA
StackB -> 定义资源 outB - 它依赖于资源 outA
第一个“CDK 部署”运行没有任何问题。
现在我通过删除“outA”资源来更改 StackA,并创建一个新资源调用“outAnew” 并更新 StackB 以使用这个新值
此时我无法部署任何堆栈! 如果我尝试部署 StackA 得到错误:
Export outA 正被 StackB 和 StackC 使用,因此无法删除
如果尝试部署 StackB,由于依赖关系,它首先尝试部署 StackA。
有什么想法吗?
示例代码:
堆栈A:
export class CdkDependenciesStackA extends cdk.Stack {
// public out_a: cdk.CfnOutput;
public out_a_new: cdk.CfnOutput;
constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
// this.out_a = new cdk.CfnOutput(this, "out_a", {
// value: "outA",
// exportName: "outA",
// });
this.out_a_new = new cdk.CfnOutput(this, "out_a_new", {
value: "outAnew",
exportName: "outAnew",
});
}
}
堆栈B:
export class CdkDependenciesStackB extends cdk.Stack {
public out_b: cdk.CfnOutput;
constructor(
scope: cdk.Construct,
id: string,
outputValue: cdk.CfnOutput,
props?: cdk.StackProps
) {
super(scope, id, props);
this.out_b = new cdk.CfnOutput(this, "out_b", {
value: `outB_${outputValue.importValue}`,
exportName: "outB",
});
}
}
应用:
const app = new cdk.App();
const stack_a = new stacks.CdkDependenciesStackA(
app,
"CdkDependenciesStack",
{}
);
const stack_b =new stacks.CdkDependenciesStackB(
app,
"CdkDependenciesStackB",
stack_a.out_a_new,
{}
);
stack_b.addDependency(stack_a)
【问题讨论】:
标签: amazon-cloudformation aws-cdk