in cloudformation è possibile creare una stringa riutilizzabile?


14

ho una stringa che è formata da un numero di variabili che uso per molte cose diverse come tag e nomi host.

c'è un modo per creare una stringa riutilizzabile che posso solo fare riferimento anche se fuori dal modello?

qualsiasi pensiero su questo sarebbe molto apprezzato. modifica: un esempio passerebbe in 2 parametri come ProjectName e Environment che li unisce

"Fn::Join" : [ "-", [ {"Ref":"ProjectName"}, {"Ref":"Environment"} ] ]

e usando i risultati in un numero di posti



Penso che le trasformazioni siano ciò che AWS offre per questo. Purtroppo, non supportano ancora gli alias YAML.
jgomo3,

Risposte:


7

Purtroppo i miei esperimenti sono d'accordo con la tua conclusione Graeme. Ho lottato con questo per un po 'di tempo, ma non ho trovato un modo per calcolare una stringa tramite Fn :: Join e tenerlo per più tardi nel modello.

Posso condividere con te un tipico esempio?

A partire dal 18.09.2014, il modo più sofisticato di memorizzare un valore di stringa per il riutilizzo nella sezione Risorse sarebbe tramite una mappatura (di secondo livello). Meglio ancora, posso pre-calcolare una condizione e determinare se usare la stringa o meno. Ma sfortunatamente la memorizzazione di una stringa non funziona.

Ecco una strofa esemplificativa di tale Mappatura ...

    "LoadBalancerBucketMap": {
        "BucketName": {
            "string": {
                "Fn::Join": [
                    "-",
                    [
                        "mylb",
                        {
                            "Ref": "Environment"
                        },
                        "logs"
                    ]
                ]
            }
        }
    },

Ed ecco un'espressione di accesso ad essa in una risorsa

                "S3BucketName": {
                    "Fn::FindInMap": [
                        "LoadBalancerBucketMap",
                        "BucketName",
                        "string"
                    }

In questo esempio, Environment è un parametro stringa letterale con un valore predefinito conveniente. Questo è un chiaro esempio di come creare e riutilizzare una stringa. Ma ecco cosa dice il processore CloudFormation ...

Errore di convalida modello: errore formato modello: ogni attributo Mapping deve essere una stringa o un elenco.

Quindi condivido la tua frustrazione per il fatto che non sembra esserci un modo in un modello per fornire l'effetto di una variabile stringa temporanea.

... Per quanto posso vedere. Ma la risposta che hai ricevuto inizialmente diceva il contrario (anche se senza un esempio).

Quindi, se qualcuno ha una soluzione alternativa di esempio, allora potrebbe condividere?


2

È possibile utilizzare parametri o mapping per memorizzare stringhe che è possibile utilizzare nei modelli.


1
Funziona solo con stringhe statiche. L'OP ha specificamente richiesto stringhe calcolate, il che non sembra affatto possibile.
Joe,

0

purtroppo ho scoperto che non era possibile fare ciò che stavo cercando di ottenere. non aiuta ma eccolo.


0

Realizziamo il nome del nostro stack CloudFormation esattamente {ProjectName}-{Environment}durante aws cloudformation deploy. Hai preso in considerazione questa convenzione di denominazione per il nome del tuo stack?

Successivamente, puoi semplicemente fare riferimento come { "Fn:Sub": "${AWS::StackName}" }.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.