dalam cloudformation apakah mungkin untuk membuat string yang dapat digunakan kembali?

14

Saya punya string yang dibentuk dari sejumlah variabel yang saya gunakan untuk banyak hal yang berbeda seperti Tag dan nama host.

apakah ada cara untuk membuat string yang dapat digunakan kembali yang saya bisa Ref melalui template?

setiap pemikiran tentang ini akan sangat dihargai. sunting: Contoh akan melewati 2 parameter seperti ProjectName dan Lingkungan bergabung dengan mereka

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

dan menggunakan hasilnya di sejumlah tempat

graeme
sumber
Apakah Anda berbicara tentang parameter? docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/…
Edwin
Saya pikir Transformasi adalah apa yang disediakan AWS untuk ini. Sayangnya, mereka belum mendukung alias YAML.
jgomo3

Jawaban:

7

Sayangnya percobaan saya setuju dengan Graeme kesimpulan Anda. Saya telah berjuang dengan ini selama beberapa waktu tetapi tidak menemukan cara menghitung String melalui Fn :: Bergabung dan simpan untuk nanti dalam template.

Bisakah saya berbagi dengan Anda contoh yang khas?

Pada 2014-09-18, cara paling canggih untuk menyimpan nilai string untuk digunakan kembali di bagian Sumber Daya adalah melalui Pemetaan (tingkat kedua). Lebih baik lagi, saya dapat melakukan pra-komputasi suatu Kondisi dan menentukan apakah akan menggunakan string atau tidak. Namun sayangnya penyimpanan string tidak berfungsi.

Berikut adalah contoh bait Pemetaan seperti itu ...

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

Dan di sini adalah ekspresi akses untuk itu di Sumber Daya

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

Dalam contoh ini, Lingkungan adalah Parameter string literal dengan default yang sesuai. Jadi itu adalah contoh yang sangat jelas untuk membuat dan menggunakan kembali string. Tapi inilah yang dikatakan prosesor CloudFormation ...

Kesalahan validasi template: Kesalahan format templat: Setiap atribut pemetaan harus berupa string atau daftar.

Jadi saya membagikan rasa frustrasi Anda bahwa sepertinya tidak ada cara dalam template untuk memberikan efek dari variabel string sementara.

... Sejauh yang saya bisa lihat. Tetapi jawaban yang Anda terima semula mengatakan hal yang sebaliknya (walaupun tanpa contoh).

Jadi, jika ada yang punya contoh solusi, maka bisakah mereka berbagi?

John
sumber
2

Anda dapat menggunakan params atau pemetaan untuk menyimpan string yang dapat Anda gunakan di template Anda.

Drew Khoury
sumber
1
Ini hanya berfungsi untuk string statis. OP secara khusus meminta string yang dikomputasi, yang tampaknya tidak mungkin sama sekali.
Joe
0

sayangnya saya telah menemukan bahwa itu tidak mungkin untuk melakukan apa yang saya coba capai. itu tidak membantu tetapi itu dia.

graeme
sumber
0

Kami benar-benar membuat nama tumpukan CloudFormation kami tepat {ProjectName}-{Environment}selama aws cloudformation deploy. Sudahkah Anda mempertimbangkan konvensi penamaan ini untuk nama tumpukan Anda?

Setelah itu, Anda bisa merujuknya sebagai { "Fn:Sub": "${AWS::StackName}" }.

Ryan McGeary
sumber