2015-12-15 7 views
9

होना चाहिए हाय मैं आरडीएस डिलीशन पॉलिसी के लिए क्लाउड गठन दस्तावेज में उल्लिखित "आईएफ" फ़ंक्शन का उपयोग करने की कोशिश कर रहा हूं, लेकिन किसी कारण से यह कहता है कि मेरा फ़ंक्शन कोई नहीं लौटाता है स्ट्रिंग।क्लाउडफ़ॉर्म टेम्पलेट प्रारूप त्रुटि: प्रत्येक हटाना नीति सदस्य एक स्ट्रिंग

AWS Documentation on conditional statements

यहाँ स्थिति है:

"DeletionPolicy" : { 
    "Fn::If" : [ 
     "CreateProdResources", 
     "Snapshot", 
     "Delete" 
    ]} 

और त्रुटि शीर्षक में से एक है:

Template validation error: Template format error: Every DeletionPolicy member must be a string. 

अन्य प्रयास है कि काम नहीं किया:

मानचित्र के साथ:

"RdsDeletionPolicyMap" :{ 
     "production" : { 
      "policy" : "Snapshot" 
     }, 
     "staging" : { 
      "policy" : "Delete" 
     } 
    } 

और फिर:

"DeletionPolicy" : { 
     "Fn::FindInMap" : [ "RdsDeletionPolicyMap", {"Ref": "RailsEnvironment"}, "policy" ] 
    } 

साथ ही एक सरल "Ref": ... रूप में अच्छी तरह से काम नहीं किया। मुझे अत्यधिक संदेह है कि यह क्लाउडफॉर्म

उत्तर

5

के साथ एक बग है मुद्दा यह है कि DeletionPolicy को तीन तारों में से एक पर सेट किया जाना चाहिए। और, यद्यपि आपका यदि चेक एक व्यवस्थित परिप्रेक्ष्य से, उनमें से एक को वापस कर देगा, तो यह केवल जानता है कि यह एक स्ट्रिंग लौटा रहा है - लेकिन एक वैध स्ट्रिंग (आपके मानचित्र और पैरामीटर चेक के साथ ही) होने की गारंटी नहीं है, और इस प्रकार यह केवल स्वीकार करता है एक स्ट्रिंग शाब्दिक और स्ट्रिंग करने का हल करने वाला कुछ नहीं।

मेरा मानना ​​है कि यह सीमा पहले एडब्ल्यूएस इंजीनियरिंग टीम में उठाई गई है, क्योंकि यह एक उपद्रव है।

+0

आईएमओ यह निश्चित रूप से एक बग है। इसके आसपास काम करने के बारे में कोई विचार? – Gleeb

+0

आप एक सशर्त कथन जोड़ सकते हैं और शर्त के आधार पर उचित एक जोड़ा जा रहा है के साथ 2 प्रतिधारण नीतियां हो सकती हैं। निश्चित रूप से गैर आदर्श। –

+0

धन्यवाद, बीमार देखें कि मैं इसके बारे में क्या कर सकता हूं – Gleeb

संबंधित मुद्दे