Serverless.yml部署报错:deploymentBucket未识别accessLog属性
问题现象
在Serverless配置文件中为deploymentBucket配置服务器访问日志(Server access logging)功能时,最初使用的配置如下:
deploymentBucket: accessLog: bucket: !Ref BucketReference prefix: 'BucketPrefix'
配置完成后部署到AWS环境时,抛出如下错误提示:
Warning: Invalid configuration encountered at 'provider.deploymentBucket': unrecognized property 'accessLog'
故障原因
触发这个报错通常是两个问题导致的:
- YAML配置缩进错误,
accessLog属性没有作为deploymentBucket的子属性正确缩进,框架读取配置时无法建立属性的从属关系 accessLog不是Serverless Framework原生支持的deploymentBucket配置属性,是第三方插件serverless-deployment-bucket提供的扩展能力,未正确安装、注册该插件,或者插件版本和当前Serverless Framework版本不兼容时,框架内置的配置校验规则会判定该属性为非法字段
修复步骤
- 修正YAML配置缩进,保证层级关系正确,修正后的配置结构参考如下:
provider: name: aws deploymentBucket: # accessLog需缩进2个空格,作为deploymentBucket的子属性 accessLog: bucket: !Ref BucketReference prefix: 'BucketPrefix'
- 确认项目已安装对应插件,在项目根目录执行安装命令:
npm install --save-dev serverless-deployment-bucket
- 检查Serverless配置文件的
plugins节点,确认插件已正确注册,缺失则补充如下配置:
plugins: - serverless-deployment-bucket
- 版本兼容性校验:如果使用Serverless Framework v3及以上版本,需要保证
serverless-deployment-bucket版本不低于1.5.0,版本不匹配时执行如下命令升级:
npm update serverless-deployment-bucket
完成以上步骤后重新执行部署命令,配置校验即可正常通过。
内容的提问来源于stack exchange,提问作者Sharon
相关产品推荐
相关产品推荐

