Я хотел бы иметь несколько быстрых ссылок в верхней части моего шаблона 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 и Lambda на основе python 3.7).
Была надежда, что тогда я смогу просто использовать:
!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/'] ]
, и я просто столкнулся с различными ошибками проверки, сосредоточив внимание на один из представленных выше.
любая помощь будет принята с благодарностью.