使用 CDK cli 获取堆栈依赖项列表
Get a list of stack dependencies using CDK cli
是否可以使用 AWS CDK CLI 获取另一个堆栈所依赖的堆栈列表?例如,给定一个看起来像这样的堆栈列表:
const app = new App();
const alphaStack = new Stack(app);
const betaStack = new Stack(app);
betaStack.addDependency(alphaStack);
const gammaStack = new Stack(app);
gammaStack.addDependency(gammaStack);
const deltaStack = new Stack(app);
deltaStack.addDependency(betaStack);
deltaStack.addDependency(gammaStack);
我想要 运行 一个可以给我类似于以下输出的命令:
$ cdk list-deps alpha-stack # no result
$ cdk list-deps beta-stack
alpha-stack
$ cdk list-deps gamma-stack
alpha-stack
$ cdk list-deps delta-stack
beta-stack
gamma-stack
具体来说,我希望能够运行在部署我的堆栈之前。
我知道这不像您正在寻找的那样强大,但这里有一个有用的命令来查找依赖于特定导出的堆栈:
aws cloudformation list-imports --export-name EXPORT_NAME
以防以后对任何人有帮助;以下似乎解决了我想解决的问题:
// the stack that we're interested in finding deps for
const stackName = "...";
// assuming app is as defined in the question
const { stacks } = app.synth();
stacks
.find(({ stackName }) => stackName === searchForStackName)
?.dependencies.forEach((dep) => console.log(dep.id));
注意事项:
- 它显然不是 CLI 的内置功能,需要从您的 CDK 定义中公开
app
。
- 这确实需要在应用程序上调用
synth
。最初我的理解是,这会在 AWS 中产生一些人为因素,我想避免这种情况;但事实似乎并非如此。
- 我不确定 reliable/stable
dep.id
是如何从这个 snippet/answer 中得出的。虽然到目前为止它对我的目的来说已经足够强大了,dependencies
returns 一个 CloudArtifact
的列表,我不确定它是否总是代表 Stack
.
运行 cdk synth STACK_NAME
你应该从 cdk.out/manifest.json
中找到依赖项
❯ jq '.artifacts.STACK_NAME.dependencies' cdk.out/manifest.json
[
"STACK_NAME.assets"
...
]
你也可以运行
cdk destroy stackName
它会要求您确认销毁堆栈所需的依赖项。
这是一个危险的操作,应该小心完成,因为它会破坏你的堆栈。
是否可以使用 AWS CDK CLI 获取另一个堆栈所依赖的堆栈列表?例如,给定一个看起来像这样的堆栈列表:
const app = new App();
const alphaStack = new Stack(app);
const betaStack = new Stack(app);
betaStack.addDependency(alphaStack);
const gammaStack = new Stack(app);
gammaStack.addDependency(gammaStack);
const deltaStack = new Stack(app);
deltaStack.addDependency(betaStack);
deltaStack.addDependency(gammaStack);
我想要 运行 一个可以给我类似于以下输出的命令:
$ cdk list-deps alpha-stack # no result
$ cdk list-deps beta-stack
alpha-stack
$ cdk list-deps gamma-stack
alpha-stack
$ cdk list-deps delta-stack
beta-stack
gamma-stack
具体来说,我希望能够运行在部署我的堆栈之前。
我知道这不像您正在寻找的那样强大,但这里有一个有用的命令来查找依赖于特定导出的堆栈:
aws cloudformation list-imports --export-name EXPORT_NAME
以防以后对任何人有帮助;以下似乎解决了我想解决的问题:
// the stack that we're interested in finding deps for
const stackName = "...";
// assuming app is as defined in the question
const { stacks } = app.synth();
stacks
.find(({ stackName }) => stackName === searchForStackName)
?.dependencies.forEach((dep) => console.log(dep.id));
注意事项:
- 它显然不是 CLI 的内置功能,需要从您的 CDK 定义中公开
app
。 - 这确实需要在应用程序上调用
synth
。最初我的理解是,这会在 AWS 中产生一些人为因素,我想避免这种情况;但事实似乎并非如此。 - 我不确定 reliable/stable
dep.id
是如何从这个 snippet/answer 中得出的。虽然到目前为止它对我的目的来说已经足够强大了,dependencies
returns 一个CloudArtifact
的列表,我不确定它是否总是代表Stack
.
运行 cdk synth STACK_NAME
你应该从 cdk.out/manifest.json
❯ jq '.artifacts.STACK_NAME.dependencies' cdk.out/manifest.json
[
"STACK_NAME.assets"
...
]
你也可以运行
cdk destroy stackName
它会要求您确认销毁堆栈所需的依赖项。
这是一个危险的操作,应该小心完成,因为它会破坏你的堆栈。