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

CDK未定义Lambda却报BucketNotificationsHandler运行时版本错误如何解决

问题解决方法

错误来源说明

你遇到的BucketNotificationsHandler是AWS CDK自动创建的内置自定义资源Lambda,用于底层配置S3桶的事件通知规则,你代码中没有显式定义是因为这是CDK封装的底层逻辑。
报错的原因是你使用的CDK版本过旧,旧版本CDK默认给该内置Lambda使用nodejs10.x运行时,而当前AWS已经不再支持该运行时用于创建或更新Lambda函数,因此触发部署失败。

解决方法

方案1:升级CDK版本(推荐)

该问题已经在后续CDK版本中修复,直接升级你的CDK版本到对应兼容版本即可,无需修改业务代码:

  • 若使用CDK v1:升级到1.181.0及以上版本,该版本已将内置自定义资源的默认运行时更换为nodejs14.x
  • 若使用CDK v2:升级到2.16.0及以上版本,同样修复了该默认运行时问题

升级完成后重新执行cdk synth和cdk deploy即可正常部署。

方案2:手动覆盖内置Lambda运行时(暂时无法升级CDK时使用)

如果当前场景下你暂时不能升级CDK版本,可以通过CDK的Aspect能力手动修改该内置Lambda的运行时配置,在你当前栈的代码中添加以下逻辑即可:

import { Stack, IAspect } from 'aws-cdk-lib';
import { Function } from 'aws-cdk-lib/aws-lambda';
import { IConstruct } from 'constructs';

// 放在你现有资源定义的同级位置
Stack.of(this).node.applyAspect(new (class implements IAspect {
  visit(node: IConstruct): void {
    // 匹配BucketNotificationsHandler相关的Lambda函数
    if (node instanceof Function && node.node.id.includes('BucketNotificationsHandler')) {
      node.addPropertyOverride('Runtime', 'nodejs14.x');
    }
  }
})());

修改完成后重新执行cdk synth和cdk deploy即可完成部署。

内容的提问来源于stack exchange,提问作者Sushil Verma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 02:54:07