CDK应用能否识别当前正在被调用的执行命令?
CDK判断当前执行命令的实现方法
你可以直接通过读取进程的命令行参数来判断当前执行的CDK子命令,以下是不同语言的实现示例:
TypeScript/JavaScript 实现
import { App } from 'aws-cdk-lib'; const app = new App(); // 判断是否为destroy命令 const isDestroyCommand = process.argv.includes('destroy'); if (isDestroyCommand) { // 执行destroy专属的上下文参数校验逻辑 const requiredParam = app.node.tryGetContext('required-destroy-param'); if (!requiredParam) { throw new Error('执行cdk destroy时必须传入 required-destroy-param 上下文参数'); } } // 栈初始化逻辑 // new YourCustomStack(app, 'YourCustomStack'); app.synth();
Python 实现
import sys from aws_cdk import App app = App() # 判断是否为destroy命令 is_destroy_command = 'destroy' in sys.argv if is_destroy_command: # 执行destroy专属的上下文参数校验逻辑 required_param = app.node.try_get_context("required-destroy-param") if not required_param: raise ValueError("执行cdk destroy时必须传入 required-destroy-param 上下文参数") # 栈初始化逻辑 # YourCustomStack(app, "YourCustomStack") app.synth()
注意事项
- 即使执行destroy时附带了其他参数(比如
cdk destroy --force、cdk destroy 指定栈名),上述判断逻辑依然生效,因为destroy关键字始终会出现在命令行参数列表中 - 如果需要判断其他CDK子命令(deploy、diff、synth等),只需要把判断逻辑里的关键字替换为对应子命令即可
- 所有校验逻辑需要放在
app.synth()调用前执行,才能在合成阶段就拦截不符合要求的请求
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

