Serverless Framework v3自动生成的custom-resource-existing-cup函数Node16版本废弃求助
解决Serverless自动生成的custom-resource-existing-cup Lambda运行时版本问题
以下是几个可行的解决办法:
1. 通过CloudFormation资源覆盖修改运行时
Serverless Framework生成的所有资源最终都会转化为CloudFormation模板,你可以直接在serverless.yml中覆盖自动生成的Lambda函数配置:
- 执行
serverless package命令,在.serverless目录下找到生成的CloudFormation模板(通常是cloudformation-template-update-stack.json),查找名为custom-resource-existing-cup的Lambda函数对应的逻辑ID(示例逻辑ID类似CustomResourceExistingCupLambdaFunction)。 - 在
serverless.yml的resources块中添加该资源的扩展配置,指定运行时版本:
resources: Resources: # 替换成你找到的实际逻辑ID CustomResourceExistingCupLambdaFunction: Properties: Runtime: nodejs18.x
- 重新部署服务,框架会自动更新该Lambda函数的运行时版本。
2. 升级Serverless Framework及相关插件
这个自动生成的Lambda函数可能是由Serverless核心或第三方Cognito插件创建的,旧版本可能未适配Node.js 18:
- 升级Serverless CLI到最新v3版本:
npm install -g serverless@latest - 如果使用了Cognito相关的第三方插件(如
serverless-aws-cognito),同步升级到该插件的最新版本,查看插件更新日志是否包含运行时版本适配的修复。
3. 自定义CloudFormation自定义资源
如果上述方法都无法解决,可以完全替代框架自动生成的自定义资源:
- 在
serverless.yml中手动创建一个Node.js 18版本的Lambda函数,用于处理Cognito触发器existing: true对应的逻辑。 - 在
resources块中定义CloudFormation自定义资源,关联你自己创建的Lambda函数,替代框架自动生成的custom-resource-existing-cup。
内容的提问来源于stack exchange,提问作者Justine Dela Rosa
相关产品推荐
相关产品推荐

