使用AWS-Amplify执行amplify push失败,Lambda运行时不支持报错
这问题我之前帮好几个开发者排查过,其实和你本地NodeJS版本完全没关系——根源出在云端Lambda运行时的支持政策和Amplify项目的配置模板上。
为什么之前成功现在报错?
AWS早就宣布停止对Node.js 6.10的支持,后续完全禁止用这个运行时创建或更新Lambda函数。你之前执行amplify push成功,是因为当时AWS还允许存量资源的更新操作,但现在政策收紧,哪怕是旧项目的函数更新,只要指定了nodejs6.10就会触发这个错误。而你本地Node版本没改也不影响,因为Lambda的运行时是云端环境的配置,和本地开发环境的Node版本完全无关。
解决步骤
第一步:修改Lambda函数的运行时配置
找到你项目中PinpointFunction的CloudFormation模板文件,路径一般是amplify/backend/function/PinpointFunction/cloudformation-template.yml(如果是JSON格式就是.json)。在文件里找到Runtime字段,把值从nodejs6.10改成nodejs8.10(或者更高的AWS支持版本,比如nodejs16.x,8.10是最接近旧版本的兼容选项)。第二步:升级Amplify CLI到最新版
旧版本的Amplify CLI可能会默认生成使用nodejs6.10的模板,执行命令升级CLI:npm install -g @aws-amplify/cli升级后重新执行
amplify push,CLI会自动使用兼容的运行时模板。第三步:重新推送资源
修改完配置或升级CLI后,再次运行:amplify push这次应该就能成功创建/更新PinpointFunction了。
如果还是有问题,可以尝试先执行amplify pull同步云端最新配置,再修改运行时后推送。
内容的提问来源于stack exchange,提问作者Michel

