Cómo poner etiquetas en los siguientes recursos usando una plantilla de CloudFormation:
Para un recurso genérico de AWS::ApiGatewayV2::Api, probé lo siguiente en la sección Recursos de la plantilla de CloudFormation:
MyApi: Type: 'AWS::ApiGatewayV2::Api' Properties: Name: MyApi ProtocolType: WEBSOCKET RouteSelectionExpression: $request.body.action ApiKeySelectionExpression: $request.header.x-api-key Tags: - Key: TagKey1 Value: MyFirstTag - Key: TagKey2 Value: !Ref MySecondTagAsParameterEn la vista Eventos de CloudFormation de Amazon Management Console, el recurso falló por el siguiente motivo:
Error de validación de la propiedad: [El valor de la propiedad {/Tags} no coincide con el tipo {Mapa}]
Busqué el Tipo, que parecía ser Json en la documentación :
Tags The collection of tags. Each tag element is associated with a given resource. Required: No Type: Json Update requires: No interruption Required: No
Lo que me hizo probar lo siguiente:
Tags: !Sub "{ \"TagKey1\" : \"MyFirstTag\", \"TagKey2\" : \"${MySecondTagAsParameter}\"}"
Eso tampoco funcionó, lo que me llevó a probar los literales YAML:
Tags: !Sub | { "TagKey1": "MyFirstTag", "TagKey2": "${MySecondTagAsParameter}" }
Eso tampoco funcionó.
Lo siguiente hizo el truco:
Tags: TagKey1: MyFirstTag TagKey2: !Ref MySecondTagAsParameter
Estabas muy cerca de la solución similar a json :
Tags: { "TagKey1": "MyFirstTag", "TagKey2": !Ref MySecondTagAsParameter}Para mí, la siguiente sintaxis funcionó:
Tags: - Key: "keyname1" Value: "value1" - Key: "keyname2" Value: "value2"Fuente: Documentación de AWS