You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 13:15:03