Mic*_*xon 6 amazon-web-services aws-cloudformation
我希望在我的 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/'] ]
Run Code Online (Sandbox Code Playgroud)
CloudFormation 模板的其余部分遵循这一点,并且在没有上面几行的情况下,模板将部署(一个 S3 存储桶、DynamoDB 表和一个基于 Python 3.7 的 Lambda)。
希望我可以使用:
!FindInMap [StandardResourcesMap,AWSExecuteApi,string]
Run Code Online (Sandbox Code Playgroud)
每当我需要冗长的值时,模板都无法通过以下方式验证:
An error occurred (ValidationError) when calling the CreateChangeSet operation: Template format error: Every Mappings attribute must be a String or a List.
Run Code Online (Sandbox Code Playgroud)
正如标题所说。
我已经尝试了许多变体,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/'] ]
Run Code Online (Sandbox Code Playgroud)
我只是被拉到各种验证错误上,以上面介绍的错误为中心。
任何帮助将不胜感激。
| 归档时间: |
|
| 查看次数: |
3225 次 |
| 最近记录: |