Bref从1.7升级至2.1后CLI命令输出重复数据问题求助
Bref 2.x CLI输出多重复JSON头部的解决方法
将Bref从1.7升级到2.1后,使用serverless bref:cli命令执行Lambda控制台函数时,输出内容顶部会多出一段重复的JSON字符串(包含Lambda响应结构),而旧版vendor/bin/bref cli命令只会输出预期的CSV结果。
解决方案1:使用--raw参数(推荐)
Bref 2.x的serverless bref:cli命令提供了--raw选项,用于跳过JSON包装,直接输出Lambda函数的原始标准输出,和旧版行为一致。修改后的命令如下:
serverless bref:cli --region=us-east-1 --stage=production --function=console --raw --args="production:foreach 'SELECT COUNT(id) FROM mytable'" > mytable-us.out
解决方案2:提取JSON中的body内容(备选)
如果--raw参数无法使用(比如特定版本兼容性问题),可以用jq工具提取响应JSON中的body字段内容:
serverless bref:cli --region=us-east-1 --stage=production --function=console --args="production:foreach 'SELECT COUNT(id) FROM mytable'" | jq -r '.body' > mytable-us.out
注意:此方法需要提前安装
jq工具,且Lambda函数的输出需正确返回在响应的body字段中。
问题原因
Bref 2.x与Serverless框架集成后,bref:cli命令默认遵循Serverless调用Lambda的输出规范,将函数的输出包装成了标准Lambda响应JSON结构(包含statusCode、body等字段)。而旧版1.7的vendor/bin/bref cli命令是直接捕获并输出Lambda函数的stdout内容,没有额外的包装层。--raw参数就是为了兼容旧版的直接输出行为而添加的。
内容的提问来源于stack exchange,提问作者Aaryn
相关产品推荐
相关产品推荐

