Tengo una cadena que se forma a partir de una serie de variables que utilizo para muchas cosas diferentes, como etiquetas y nombres de host.
¿Hay alguna manera de crear una cadena reutilizable que pueda simplemente Ref mediante la plantilla?
cualquier idea sobre esto sería muy apreciada. editar: un ejemplo sería pasar 2 parámetros como ProjectName y Environment uniéndolos
"Fn::Join" : [ "-", [ {"Ref":"ProjectName"}, {"Ref":"Environment"} ] ]
y usando los resultados en varios lugares
Respuestas:
Lamentablemente, mis experimentos están de acuerdo con tu conclusión, Graeme. He tenido problemas con esto durante algún tiempo, pero no he encontrado una manera de calcular una Cadena a través de Fn :: Join y guardarla para más adelante en la plantilla.
¿Puedo compartir con ustedes un ejemplo típico?
A partir del 18 de septiembre de 2014, la forma más sofisticada de almacenar un valor de cadena para su reutilización en la sección Recursos sería a través de una asignación (de segundo nivel). Mejor aún, puedo calcular previamente una Condición y determinar si usar la cadena o no. Pero desafortunadamente, el almacenamiento de una cadena simplemente no funciona.
Aquí hay un ejemplo de estrofa de tal mapeo ...
Y aquí hay una expresión de acceso a él en un Recurso
En este ejemplo, el entorno es un parámetro de cadena literal con un valor predeterminado conveniente. Ese es un ejemplo muy claro de crear y reutilizar una cadena. Pero aquí está lo que dice el procesador CloudFormation ...
Error de validación de plantilla: error de formato de plantilla: cada atributo de asignaciones debe ser una cadena o una lista.
Así que comparto su frustración de que no parece haber una forma en una plantilla para proporcionar el efecto de una variable de cadena temporal.
... Hasta donde puedo ver. Pero la respuesta que recibió originalmente decía lo contrario de esto (aunque sin un ejemplo).
Entonces, si alguien tiene una solución alternativa, ¿podrían compartir?
fuente
Puede usar parámetros o asignaciones para almacenar cadenas que puede usar en sus plantillas.
fuente
Desafortunadamente, he descubierto que no es posible hacer lo que estaba tratando de lograr. no ayuda pero ahí está.
fuente
Realmente hacemos nuestro nombre de pila de CloudFormation exactamente
{ProjectName}-{Environment}
duranteaws cloudformation deploy
. ¿Has considerado esta convención de nomenclatura para tu nombre de pila?Luego, puede hacer referencia a él como
{ "Fn:Sub": "${AWS::StackName}" }
.fuente