2013-01-17 8 views
15

का उपयोग कर रहा Cloudformation का उपयोग कर एक आरडीएस उदाहरण बनाकर कर रहा हूँ एक आरडीएस डेटाबेस उदाहरण इस का उपयोग कर बनाने प्रारंभिक एसक्यूएल को चलाने के लिए एक रास्ता है:वहाँ जब cloudformation

 
"Resources": { 
     "myDB": { 
      "Type": "AWS::RDS::DBInstance", 
      "Properties": { 
       "AllocatedStorage": "5", 
       "DBInstanceClass": "db.m1.small", 
       "Engine": "MySQL", 
       "EngineVersion": "5.5", 
       "DBName": "mydb", 
       "MasterUsername": { 
        "Ref": "DBUser" 
       }, 
       "MasterUserPassword": { 
        "Ref": "DBPassword" 
       }, 
       "DBParameterGroupName": { 
        "Ref": "myRDSParamGroup" 
       } 
      } 
     }, 

और यह सब काम करता है। लेकिन मुझे अपने ऐप्स स्कीमा को सेट करने के लिए डीबी पर शुरुआती एसक्यूएल चलाने की जरूरत है। मेरा वर्तमान दृष्टिकोण ऐप स्वयं माइग्रेट करना है, लेकिन मैं इसे क्लाउडफॉर्मेशन परिभाषा में करना चाहता हूं। क्या यह संभव है?

उत्तर

6

नहीं, यह संभव नहीं है। हालांकि, आपके पास ऐसा करने के लिए आपके आरडीएस इंस्टेंस से कनेक्ट होने वाला ईसी 2 इंस्टेंस हो सकता है। मैं शायद S3 में एक .sql फ़ाइल संग्रहीत करता हूं और फ़ाइल डाउनलोड करने और इसे निष्पादित करने के लिए EC2 इंस्टेंस पर क्लाउड-इनिट स्क्रिप्ट का उपयोग करता हूं।

+3

आज, एक लैम्ब्डा समारोह का उपयोग कर + CustomResource एक EC2 उदाहरण –

+1

@OdedNiv मैं बिल्कुल वही बात करने के लिए कोशिश कर रहा हूँ की तुलना में अधिक समझ में आता है। क्या आप लैम्ब्डा फ़ंक्शन और कस्टम संसाधन साझा करना चाहते हैं? –

+0

@ ऋषिगोएल मेरे पास मेरे साथ कोई नहीं है लेकिन लैम्ब्डा बहुत आसान है और दस्तावेज़ बहुत सीधे आगे हैं। मैं जल्द ही एक बना सकता हूं, जिस स्थिति में मैं इसे यहां पोस्ट करूंगा –

4

क्लाउडफ़ॉर्मेशन कस्टम संसाधन बनाना भी संभव होगा। एसएनएस here का उपयोग करके एक बनाने के तरीके के बारे में एक अच्छी चर्चा है; Lambda का उपयोग कर एक बनाना भी संभव है। कस्टम संसाधन अनिवार्य रूप से केवल आरपीसी हैं, इसलिए स्कीमा के साथ डेटाबेस प्रारंभ करने के लिए एक बनाना मुश्किल नहीं होगा, उदाहरण के लिए।

+1

मैं अपने बीनस्टॉक/ईसी 2 संसाधन को डेटाबेस स्कीमा/डेटा को इनिट पर लोड करने के प्रभारी होने से बचना चाहता हूं। मैं चाहता हूं कि डेटाबेस init स्कीमा/डेटा को चिंता को अलग करने के लिए किसी अन्य तरीके से प्रबंधित किया जाएगा और प्रावधान सामग्री के साथ आवेदक केंद्रित ऐप मिश्रण न करें। आरडीएस डेटाबेस में एसक्यूएल स्क्रिप्ट हो रही है और स्कीमा/डाटा डालने के आरोप में एक कस्टम cloudformation संसाधन अच्छा लगता है, हो सकता है लैम्ब्डा का उपयोग कर और फिर हम एक बार बेकार इस अतिरिक्त कस्टम संसाधन नष्ट करने के लिए एक रास्ता खोजने की जरूरत है। अगर किसी क्लासिक आवश्यकता इस तरह का करने के लिए एक मानक तरीका खोजने बढ़िया नहीं होगा: डीबी –

+0

init मैं सब कुछ तुम कह रहे हो के साथ सहमत - स्कीमा एक तैनाती चिंता का विषय है। यह एक कारण है कि एक "मानक" मौजूद नहीं है, पहुंच प्रतिबंधों के कारण है। अपने डेटाबेस को प्रारंभ करने के लिए कस्टम संसाधन के लिए, इसमें लेखन अनुमतियां होनी चाहिए, जो अवांछित है। मुझे खुद को एक समान समस्या का सामना करना पड़ रहा है, यद्यपि; अगर मैं अंत एक कस्टम संसाधन के निर्माण, मैं वापस आ गया और वे साझा यह आपके लिए उपयोगी हो सकता है कि मैं क्या उम्मीद में संदर्भ के लिए किया जाएगा। – sigpwned

+0

क्या आप समाधान के साथ आए थे? मैं भी ऐसी ही समस्या का सामना कर रहा हूँ। मैं इसके लिए ansible प्लेबुक उपयोग करने के बारे में सोच रहा था, लेकिन मुझे आश्चर्य है कि अगर वहाँ एक उचित समाधान है कि cloudformation दायरे में किया जा सकता है – Eitan

1

CloudFormation अभी भी हमारे लिए कोई समाधान नहीं रखता है, लेकिन उम्मीद है कि वे Database Migration Service सहायता शीघ्र जोड़ देगा।

इस बीच में, वहाँ महान समाधान है अगर आप CodePipeline उपयोग कर रहे हैं: एक प्रवास चरण में एक लैम्ब्डा समारोह आपका माइग्रेशन चलाने के लिए आह्वान है कि पैदा करते हैं। कोडपिपलाइन से लैम्ब्डा को आमंत्रित करने के लिए मैंने this guide पर ठोकर खाई जो उन अपरिचित लोगों के लिए उपयोगी हो सकती है।

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