क्या विरूपण में पुन: प्रयोज्य स्ट्रिंग बनाना संभव है?


14

मेरे पास एक स्ट्रिंग है जो कई प्रकार के चर से बनाई गई है जो मैं कई अलग-अलग चीजों के लिए उपयोग करता हूं जैसे कि टैग और होस्ट नाम।

वहाँ एक पुन: प्रयोज्य स्ट्रिंग बनाने का एक तरीका है कि मैं सिर्फ टेम्पलेट से बाहर रेफरी कर सकते हैं?

इस पर किसी भी विचार बहुत सराहना की जाएगी। संपादित करें: एक उदाहरण 2 मापदंडों में गुजर रहा होगा जैसे प्रोजेक्टनेम और पर्यावरण उनके साथ जुड़ना

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

और कई स्थानों पर परिणामों का उपयोग करते हुए


क्या आप किसी पैरामीटर के बारे में बात कर रहे हैं? docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/…
एडविन

मुझे लगता है कि ट्रांसफॉर्मेशन इसके लिए AWS प्रदान करता है। अफसोस की बात है, वे अभी तक YAML उपनाम का समर्थन नहीं करते हैं।
jgomo3

जवाबों:


7

दुर्भाग्य से मेरे प्रयोग आपके निष्कर्ष ग्रीम से सहमत हैं। मैं कुछ समय तक इससे जूझता रहा, लेकिन Fn के माध्यम से एक स्ट्रिंग की गणना करने का एक तरीका नहीं मिला :: टेम्पलेट में बाद में शामिल होने और इसे रखने के लिए।

क्या मैं आपके साथ एक विशिष्ट उदाहरण साझा कर सकता हूं?

2014-09-18 तक, संसाधन अनुभाग में पुन: उपयोग के लिए एक स्ट्रिंग मान संग्रहीत करने का सबसे परिष्कृत तरीका एक (दूसरे-स्तर) मैपिंग के माध्यम से होगा। बेहतर अभी भी, मैं एक शर्त की पूर्व-गणना कर सकता हूं और यह निर्धारित कर सकता हूं कि स्ट्रिंग का उपयोग करना है या नहीं। लेकिन दुर्भाग्य से एक तार का भंडारण सिर्फ काम नहीं करता है।

इस तरह के मानचित्रण का एक उदाहरण छंद है ...

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

और यहाँ एक संसाधन में इसका उपयोग अभिव्यक्ति है

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

इस उदाहरण में, पर्यावरण एक सुविधाजनक डिफ़ॉल्ट के साथ एक शाब्दिक स्ट्रिंग पैरामीटर है। तो यह एक स्ट्रिंग बनाने और फिर से उपयोग करने का एक बहुत स्पष्ट उदाहरण है। लेकिन यहाँ CloudFormation प्रोसेसर क्या कहता है ...

टेम्पलेट सत्यापन त्रुटि: टेम्पलेट प्रारूप त्रुटि: प्रत्येक मैपिंग विशेषता स्ट्रिंग या सूची होनी चाहिए।

इसलिए मैं आपकी हताशा को साझा करता हूं कि अस्थायी स्ट्रिंग चर के प्रभाव को प्रदान करने के लिए टेम्पलेट में एक रास्ता नहीं लगता है।

... जहाँ तक मैं देख सकता हूँ। लेकिन मूल रूप से आपको जो उत्तर मिला, वह इस के विपरीत है (हालांकि एक उदाहरण के बिना)।

तो अगर किसी के पास एक उदाहरण वर्कअराउंड है, तो कृपया उन्हें साझा कर सकते हैं?


2

आप स्ट्रिंग्स को स्टोर करने के लिए परमेस या मैपिंग का उपयोग कर सकते हैं जिसे आप अपने टेम्पलेट में उपयोग कर सकते हैं।


1
यह केवल स्टैटिक स्ट्रिंग्स के लिए काम करता है। ओपी ने विशेष रूप से गणना की गई तारों के लिए कहा, जो बिल्कुल भी संभव नहीं लगता है।
जो

0

दुर्भाग्य से मैंने पाया है कि मैं जो हासिल करने की कोशिश कर रहा था वह करना संभव नहीं था। यह मदद नहीं करता है, लेकिन वहाँ यह है।


0

हम वास्तव में हमारे CloudFormation ढेर नाम ठीक वैसे ही बनाने {ProjectName}-{Environment}के दौरान aws cloudformation deploy। क्या आपने अपने स्टैक नाम के लिए इस नामकरण सम्मेलन पर विचार किया है?

बाद में, आप इसे केवल इस रूप में संदर्भित कर सकते हैं { "Fn:Sub": "${AWS::StackName}" }

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.