使用预提交挂钩获得 "E0000 Template needs to be an object."
With pre-commit hook getting "E0000 Template needs to be an object."
cfn-lint 版本:0.53.0
问题描述。
我的 Ubuntu 机器上有以下设置
- cfn-lint
- cfn-python-lint via pre-commit
案例 1:如果我 运行 cfn-lint ./**/*.yml
从终端在项目根文件夹然后没有错误
案例 2:如果我现在尝试 git 提交安装了预提交的代码,它会给出以下错误“E0000 Template needs to be an object ”对于参数 JSON file.
参数 JSON 看起来像这样:
[
{
"ParameterKey": "XKey",
"ParameterValue": "XValue"
},
{
"ParameterKey": "YKey",
"ParameterValue": "YValue"
},
..
..
..
..
]
.pre-commit-config.yaml
个文件看起来像
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v3.4.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-added-large-files
- id: pretty-format-json
args:
- --autofix
- repo: https://github.com/awslabs/cfn-python-lint
rev: v0.53.0
hooks:
- id: cfn-python-lint
files: ./.*\.(json|yml|yaml)$
在情况 1 中,您只匹配具有 *.yml
扩展名而不是 JSON 扩展名的文件。但是,在情况 2 中,作为您的预提交挂钩,您也包含 json 文件。这意味着它可能会尝试将您的参数 JSON 文件解释为 CloudFormation 文件。
您的参数文件不是 CloudFormation,而是一个包含一些值的简单 JSON 数组。 CloudFormation 文件始终是一个对象,绝不是顶层的数组。这将解释错误消息。解决方案:仅在您的 cfn-python-lint 扫描中包含实际上是 CloudFormation 文件的文件。
cfn-lint 版本:0.53.0
问题描述。
我的 Ubuntu 机器上有以下设置
- cfn-lint
- cfn-python-lint via pre-commit
案例 1:如果我 运行 cfn-lint ./**/*.yml
从终端在项目根文件夹然后没有错误
案例 2:如果我现在尝试 git 提交安装了预提交的代码,它会给出以下错误“E0000 Template needs to be an object ”对于参数 JSON file.
参数 JSON 看起来像这样:
[
{
"ParameterKey": "XKey",
"ParameterValue": "XValue"
},
{
"ParameterKey": "YKey",
"ParameterValue": "YValue"
},
..
..
..
..
]
.pre-commit-config.yaml
个文件看起来像
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v3.4.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-added-large-files
- id: pretty-format-json
args:
- --autofix
- repo: https://github.com/awslabs/cfn-python-lint
rev: v0.53.0
hooks:
- id: cfn-python-lint
files: ./.*\.(json|yml|yaml)$
在情况 1 中,您只匹配具有 *.yml
扩展名而不是 JSON 扩展名的文件。但是,在情况 2 中,作为您的预提交挂钩,您也包含 json 文件。这意味着它可能会尝试将您的参数 JSON 文件解释为 CloudFormation 文件。
您的参数文件不是 CloudFormation,而是一个包含一些值的简单 JSON 数组。 CloudFormation 文件始终是一个对象,绝不是顶层的数组。这将解释错误消息。解决方案:仅在您的 cfn-python-lint 扫描中包含实际上是 CloudFormation 文件的文件。