मैं CloudFormation में मौजूदा संसाधनों का पुन: उपयोग कैसे कर सकता हूं?


32

मेरे पास CloudFormation टेम्पलेट में संसाधन के रूप में S3 बाल्टी है। के साथ DeletionPolicyसेट किया गया Retain। यह उम्मीद के अनुसार काम करता है, जब स्टैक को हटाते हैं, तो यह वास्तव में बाल्टी को बनाए रखता है। हालाँकि, जब मैं फिर से स्टैक बनाने का प्रयास करता हूं, तो एक ही बाल्टी को फिर से बनाने का प्रयास करते समय सृजन विफल हो जाता है, त्रुटि संदेश के साथ यह शिकायत करता है कि यह पहले से मौजूद है।

अपने क्लाउडफ़ॉर्मेशन टेम्प्लेट को जोड़ने के लिए मुझे क्या करने की आवश्यकता है ताकि यह पहले से मौजूद संसाधन को पुनः बनाने की कोशिश न करे?

मेरे टेम्पलेट का प्रासंगिक टुकड़ा इस प्रकार है:

  "Resources": {
    "SomeS3Bucket" : {
      "Type" : "AWS::S3::Bucket",
      "DeletionPolicy" : "Retain",
      "Properties": {
          "BucketName": "SomeS3Bucket"
          }
      }

ब्याज के बाहर, क्या बाल्टी के लिए प्रयोग किया जाता है? हो सकता है कि आप जो करने की कोशिश कर रहे हैं, उसके आधार पर इसके आसपास एक और तरीका हो।
ड्रू खोरी

जवाबों:


15

एक दृष्टिकोण यह है कि क्लाउडफ़ॉर्मेशन टेम्प्लेट में एक इनपुट पैरामीटर जोड़ना है ताकि यह इंगित किया जा सके कि एक मौजूदा बाल्टी का उपयोग किया जाना चाहिए।

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


4
+1 अब तक यह एकमात्र तरीका है जो मैंने देखा है। हालांकि यह जवाब के रूप में चिह्नित नहीं है, क्योंकि मैं वास्तव में इसे स्वचालित करने का एक तरीका देख रहा हूं।
vartec

1
एक तरीका होना चाहिए, यदि नहीं: "क्लाउडफ़ॉर्मर" कैसे काम करता है?
jgomo3

7

CloudFormation "aws:" उपसर्ग के साथ टैग का उपयोग करता है कि कौन से संसाधन किस स्टाॅक से जुड़े हुए हैं, उसका ट्रैक रखने के लिए उपसर्ग - यह "लाइव" स्थिति है जो इसे जोड़ने / हटाने / अपडेट करने का निर्णय लेने से पहले एक टेम्पलेट के साथ तुलना करने के लिए उपयोग करता है।

एक उपयोगकर्ता के रूप में, आप ऐसे टैगों को जोड़, संपादित या हटा नहीं सकते हैं।

इसलिए यदि आपके मौजूदा संसाधनों में ये टैग नहीं हैं, या उन टैग के लिए सही मान नहीं हैं, तो उन्हें नए स्टैक का हिस्सा नहीं माना जाता है, और मुझे इसे बदलने का कोई तरीका नहीं दिखता है।


2

मैं इसे भी स्वचालित करने की कोशिश कर रहा हूं, क्योंकि ऐसा लगता है कि यह सिर्फ क्लाउडफॉर्म टेम्पलेट के साथ नहीं किया जा सकता है। मैं जिस प्रक्रिया के बारे में सोच रहा हूँ वह है:

  1. एक और अस्थायी बाल्टी बनाएँ temp-$originalbucketname
  2. समय बचाने के लिए बाल्टी से बाल्टी में सभी सामग्री की प्रतिलिपि बनाएँ
  3. से सभी सामग्री को हटा दें $originalbucketname
  4. $ originalbucketname को निकाल दें अब यह खाली है
  5. क्लाउडफॉर्म स्टैक बनाएं (जो बाल्टी को फिर से बनाएगा)
  6. सामग्री वापस कॉपी करें
  7. हटाना temp-$originalbucketname

यह एक बहुत ही सम्मिलित प्रक्रिया है, बाल्टी के आकार के आधार पर इसे आसानी से घंटों में लिया जा सकता है क्योंकि अधिकांश चरण कुंजी की संख्या के साथ O (n) हैं।

आपको लगता है कि क्लाउडफॉर्म एडब्ल्यूएस स्वचालन की मूल परत है, लेकिन मुझे लगता है कि यह सिर्फ एक (बहुत सीमित) राक्षस है जो अपनी सभी सेवाओं के लिए बीजान्टिन एपीआई को एक साथ खींच रहा है।

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