Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 带有的CloudFormation文件的YAML错误!相等&!裁判_Amazon Web Services_Yaml_Amazon Cloudformation - Fatal编程技术网

Amazon web services 带有的CloudFormation文件的YAML错误!相等&!裁判

Amazon web services 带有的CloudFormation文件的YAML错误!相等&!裁判,amazon-web-services,yaml,amazon-cloudformation,Amazon Web Services,Yaml,Amazon Cloudformation,对于CloudFormation文件,YAML出现问题,该文件到目前为止一直运行良好,今天开始出现错误,该文件在几行中不是有效的YAML: Conditions: Az2Enabled: !Equals [!Ref "AzCount", "2"] CreateStagingResources: Equals [!Ref "Environment", staging] 在上面的例子中,第二行给出了一个错误,而第三行虽然是错误的,但没有给出任何错误。第二行的错误是: unknown t

对于CloudFormation文件,YAML出现问题,该文件到目前为止一直运行良好,今天开始出现错误,该文件在几行中不是有效的YAML:

Conditions:
  Az2Enabled: !Equals [!Ref "AzCount", "2"]
  CreateStagingResources: Equals [!Ref "Environment", staging]  
在上面的例子中,第二行给出了一个错误,而第三行虽然是错误的,但没有给出任何错误。第二行的错误是:

unknown tag ! at line 95, column 38: ... Enabled: !Equals [!Ref "AzCount", "2"] ^
我正在使用AWS的说明,并且仅从AWS下载了模板:

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/conditions-section-structure.html
我在以下URL上尝试了在线提供的YAML验证程序:

https://yamlvalidator.com/
https://codebeautify.org/yaml-validator
https://onlineyamltools.com/validate-yaml
如果删除:&!之间的空格!,它说同样有效,但现在给出了一个错误的行:

  Tags:
    - Key: ClientName
      Value:!Sub "${ClientName}"
错误是:

can not read an implicit mapping pair; a colon is missed at line 108, column 37: Value:!Sub "${ClientName}" ^
如果我删除:&!之间的空格,就会出现这种情况!Sub,如果我保留空格,它会给出上面的错误

不确定,如果要将其转换为长格式,请尝试遵循此链接中给出的格式:

https://gist.github.com/DavidWells/be078deef45f8cb2e280ccc7af947392

Conditions:
  Az2Enabled: {"Fn::Equals", {Ref: "AzCount", "2"}}
上述格式没有给出错误,但必须将整个文件转换为该格式:-

有没有人遇到过这个问题并找到了解决办法?

我想你失踪了!在:

应该是:

CreateStagingResources: !Equals [!Ref "Environment", staging]

您是在提交时出错,还是在过梁中出错?我相信:后面的空格是必需的。两者都是,当我在AWS中运行它时,它给出了错误,所以我在在线验证器上检查了相同的错误。直到昨天,同一份文件还在工作。我检查了AWS文档,他们也说需要空间,但当我提供空间时,它会给出错误,当我删除它时,错误就会消失。我会使用cfn lint来验证文件。它处理云形成所特有的一些事情。就我个人而言,我只在叶节点上使用函数的速记版本,所以如果我需要Equals中的Ref,我将使用Fn::Equals and!此外,我从不使用JSON结构。如果我使用以下格式:Conditions:Az2Enabled:{Fn::Equals,[Ref:AzCount,2]},它就像一个符咒,但这是否意味着我需要更改整个文件?还有,我还不确定它为什么突然停止工作。我不知道你必须更改文件,我只是觉得更容易。关于YAML验证器,请记住,CloudFormation函数不是标准的YAML,因此许多验证器无法工作。至于it突然停止工作的原因,我怀疑有些事情并没有什么不同。AWS有时确实会破坏一些东西,所以它可能会发生,但更可能的是,你错过了一些改变,至少这是我的经验。谢谢。是的,这是一个没有给出错误的示例行。如果我把它放进去!Equals,而不是Equals,它给出了与前面提到的相同的错误。@gagneet它仍然是必需的,因为不能有纯Equals。那么AzCount是什么呢?是的,完全明白。我刚刚把它作为一个例子放在那里,说明什么是有效的,什么是无效的。对不起,混淆了,我们将两者分开,以便更清楚
CreateStagingResources: !Equals [!Ref "Environment", staging]