हाहा यह मज़ेदार है क्योंकि मैं वर्तमान में खोज कर रहा हूं कि टेराफॉर्म और सर्वरलेस को एक साथ कैसे खेलना है (यह कम से कम इन 2 लेखों का उल्लेख करने के लायक है जो 2 प्लेटफार्मों के बीच आउटपुट साझा करने के तरीके पर बहुत अच्छी अंतर्दृष्टि देते हैं: https://www.keithrozario.com /2019/03/use-terraform-and-serverless-framework.html और https://theburningmonk.com/2019/03/making-terraform-and-serverless-framework-work-tately/)।

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

मेरा मुख्य लक्ष्य * .tf फ़ाइल में आधारभूत संरचना vianull_resource परिभाषाओं के साथ सर्वर रहित रिपॉजिटरी का प्रबंधन करना है और यह जानना है कि सर्वर रहित तैनाती को चलाने का समय क्या है (संस्करण बदलते समय) या सर्वर रहित हटाने (यदि 0 से गिनती की गणना स्वचालित रूप से की जाती है)। इस तरह यह संभव है कि बदलावों को नेत्रहीन रूप से व्यक्त करें और उनके अनुसार संस्करण बनाएं, जिससे कंटिन्यूअस परिनियोजन बाकी को संभाल सके।

मैंने Terraform के अंदर बनाए जाने के बाद सर्वर रहित के साथ API गेटवे के लिए अपने लैम्ब्डा के स्वचालित तैनाती को संभालने के लिए null_resource के निर्माण-समय और विध्वंसक-समय का उपयोग करने के लिए चुना है, जो तब परेशानी का कारण बनता है जब आप तैनात संस्करण को अपडेट करने में सक्षम होना चाहते हैं (का उपयोग करके एक सर्वर के साथ रेपो के git टैग को निर्दिष्ट करने के लिए एक संस्करण के साथ ट्रिगर होता है। जो कि एथरसर्वररलेस तैनाती या सर्वर रहित हटाने से पहले अंतर्निहित बैश स्क्रिप्ट को सही गिट टैग को क्लोन करने की अनुमति देता है)। मुझे वास्तव में यह जांचने के लिए एक वर्कअराउंड मिला कि क्या केवल संस्करण * .tf और * .tfstate फ़ाइलों को आत्मनिरीक्षण करके बदला गया है और यह तय करना है कि सर्वर रहित हटाने के लिए जब = नष्ट किया जाए या नहीं, और यहां तक ​​कि अगर यह एक इष्टतम समाधान होने से दूर है, तो यह वास्तव में करता है। काम।

तो अंत में:

सर्वर रहित निष्कासन चलाया जाएगा:

  • यदि संसाधन की संख्या 0 पर सेट है
  • यदि संसाधन निर्भर करता है तो हटा दिया जाता है

सर्वर रहित तैनात किया जाएगा:

  • संसाधन निर्माण पर
  • संस्करण वेटरिगर के परिवर्तन पर

सर्वर रहित निष्कासन नहीं चलाया जाएगा:

  • जब संस्करण बदल गया, लेकिन संसाधन को हटाने के लिए चिह्नित नहीं किया गया है

यहाँ नमूना है :)