模板格式错误:每个映射属性必须是字符串或列表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模板格式错误:每个映射属性必须是字符串或列表相关的知识,希望对你有一定的参考价值。

我想在CloudFormation模板的顶部提供一些快速参考,以便我不必每次在整个模板中都需要写出复杂的参考。

所以我写了这个:

Mappings:
  StandardResourcesMap:
    AWSExecuteApi:
      string: !Join [ ':' , ['arn', !Sub '${AWS::Partition}', 'execute-api', !Sub '${AWS::Region}', !Sub '${AWS::AccountId}'] ]
    AWSLambdaFunctions:
      string: !Join [ ':' , ['arn', !Sub '${AWS::Partition}', 'apigateway', !Sub '${AWS::Region}', 'lambda:path/2015-03-31/functions/'] ]

CloudFormation模板的其余部分将遵循此步骤,并且在没有上述内容的情况下,将部署该模板(一个S3存储桶,DynamoDB表和一个基于python 3.7的Lambda)。]]

希望是然后我可以使用:

!FindInMap [StandardResourcesMap,AWSExecuteApi,string]

无论何时我需要长远的价值,但是模板使用以下方法都无法通过验证:

An error occurred (ValidationError) when calling the CreateChangeSet operation: Template format error: Every Mappings attribute must be a String or a List.

正如标题所述。

我已经尝试过Mappings的多种变体,例如使用!Ref变体:

Mappings:
  StandardResourcesMap:
    AWSExecuteApi:
      string: !Join [ ':' , ['arn', !Ref 'AWS::Partition', 'execute-api', !Ref 'AWS::Region', !Ref 'AWS::AccountId'] ]
    AWSLambdaFunctions:
      string: !Join [ ':' , ['arn', !Ref 'AWS::Partition', 'apigateway', !Ref 'AWS::Region', 'lambda:path/2015-03-31/functions/'] ]

而且我只是以上面介绍的一个为中心,遇到了各种验证错误。

任何帮助将不胜感激。

我想在CloudFormation模板的顶部有一些快速参考,因此我不必每次在整个模板中都需要写出复杂的参考。所以我这样写:...

答案

问题是这样:You cannot include parameters, pseudo parameters, or intrinsic functions in the Mappings section. Mappings

以上是关于模板格式错误:每个映射属性必须是字符串或列表的主要内容,如果未能解决你的问题,请参考以下文章

如何解决以下错误?输入必须是任意长度的字符向量或字符向量列表,每个字符向量的长度为1

索引(从零开始)必须大于或等于零且小于参数列表的大小。 - 字符串.格式

AWS CloudFormation 错误“属性 AlarmActions 的值必须是字符串列表类型”

Logstash动态模板映射收集Nginx的Json格式的日志

根据对象列表生成新卡片

如何从 Freemarker 中的模板数据映射对象递归打印数据?