Quería tener algunas referencias rápidas en la parte superior de mi plantilla de CloudFormation, para no tener que escribir una referencia compleja cada vez que la necesito en toda la plantilla.
Así que escribí esto:
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/'] ]El resto de la plantilla de CloudFormation sigue esto y, sin las líneas anteriores, la plantilla se implementa (un depósito de S3, una tabla de DynamoDB y una Lambda basada en Python 3.7).
La esperanza era que pudiera usar:
!FindInMap [StandardResourcesMap,AWSExecuteApi,string]cada vez que necesitaba el valor extenso, sin embargo, la plantilla falla en la validación con:
An error occurred (ValidationError) when calling the CreateChangeSet operation: Template format error: Every Mappings attribute must be a String or a List.como dice el titulo.
He probado una serie de variaciones en las Mappings , como usar la variante !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/'] ]y acabo de recibir varios errores de validación, centrados en el presentado anteriormente.
cualquier ayuda sería muy apreciada.
El problema es este: You cannot include parameters, pseudo parameters, or intrinsic functions in the Mappings section. Asignaciones