हाल ही में, मैंने एक निजी प्रोजेक्ट पर काम करना शुरू किया है जहां मैं एक ऐसा एप्लिकेशन बनाना चाहता हूं जो क्लाउड एग्नोस्टिक हो - यानी इसे किसी भी क्लाउड प्रदाता पर न्यूनतम/बिना कोड परिवर्तन के तैनात किया जा सकता है। प्राथमिक आवश्यकता व्यावसायिक तर्क को क्लाउड प्रदाता विशिष्ट तर्क से अलग करना है।
इस पोस्ट में, मैं अपनाए गए दृष्टिकोण को साझा करना चाहता हूं।
नीचे दिया गया कोड पायथन का उपयोग करता है
from abc import ABC, abstractmethod class IObjectStorage(ABC): @abstractmethod def upload_object_to_bucket(self, file_name, file_content): _raise an error that method is not implemented_
class AWSObjectStorageConnector(IObjectStorage): def __init__(self, bucket_name): _Initialize a s3 client using boto3 and initialize a variable using bucket name_ def upload_object_to_bucket(self, file_name, file_content): _Implement the logic to upload the file to AWS S3 bucket_
यह विधि एक क्लाउड प्रदाता वैरिएबल लेती है जिसे कॉलिंग विधि से पारित किया जाएगा
def get_object_storage(cloud_provider, bucket_name) -> IObjectStorage: if cloud_provider == 'aws': return AWSObjectStorageConnector(bucket_name=bucket_name) else: raise ValueError(f'Unsupported cloud provider: {cloud_provider}')
cloud_provider वेरिएबल को इनपुट के रूप में पारित पर्यावरण वेरिएबल से पढ़ा जाएगा। यह सुनिश्चित करता है कि एक ही तर्क विभिन्न क्लाउड प्रदाताओं के साथ ठीक काम करता है।
object_storage_connector = get_object_storage(cloud_provider=provider, bucket_name=bucket_name)
कृपया किसी भी सुझाव या प्रतिक्रिया के साथ बेझिझक टिप्पणी करें।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3