जेफिरनेट लोगो

एडब्ल्यूएस गोंद और एडब्ल्यूएस सीडीके आधारित सीआई/सीडी पाइपलाइनों का उपयोग करके ईटीएल समाधानों का निर्माण, परीक्षण और तैनाती

दिनांक:

एडब्ल्यूएस गोंद एक सर्वर रहित डेटा एकीकरण सेवा है जो एनालिटिक्स, मशीन लर्निंग (एमएल), और एप्लिकेशन डेवलपमेंट के लिए डेटा को खोजना, तैयार करना और संयोजन करना आसान बनाती है। यह सर्वर रहित है, इसलिए इसे स्थापित करने या प्रबंधित करने के लिए कोई बुनियादी ढांचा नहीं है।

यह पोस्ट एक बनाने के लिए चरण-दर-चरण मार्गदर्शिका प्रदान करती है निरंतर एकीकरण और निरंतर वितरण (सीआई/सीडी) पाइपलाइन का उपयोग कर AWS कोडकॉमिट, एडब्ल्यूएस कोडबिल्ड, तथा AWS कोडपिपलीन एडब्ल्यूएस ग्लू आधारित डेटा पाइपलाइनों के परिवर्तनों को परिभाषित, परीक्षण, प्रावधान और प्रबंधित करने के लिए AWS क्लाउड डेवलपमेंट किट (एडब्ल्यूएस सीडीके)।

AWS CDK परिचित प्रोग्रामिंग भाषाओं का उपयोग करके क्लाउड इंफ्रास्ट्रक्चर को कोड के रूप में परिभाषित करने और इसके माध्यम से प्रावधान करने के लिए एक ओपन-सोर्स सॉफ्टवेयर डेवलपमेंट फ्रेमवर्क है। एडब्ल्यूएस CloudFormation. यह आपको नामक उच्च स्तरीय घटक प्रदान करता है constructs जो सिद्ध चूक के साथ क्लाउड संसाधनों को प्रीकॉन्फ़िगर करता है, बॉयलरप्लेट कोड को कम करता है और एक सुरक्षित, दोहराने योग्य तरीके से तेजी से विकास की अनुमति देता है।

समाधान अवलोकन

समाधान कई चरणों वाली CI/CD पाइपलाइन बनाता है। CI/CD पाइपलाइन उपयोग करके एक डेटा पाइपलाइन का निर्माण करती है COVID-19 सुसंगत डेटा के द्वारा प्रबंधित प्रतिभा / सिलाई. डेटा पाइपलाइन डेटासेट क्रॉल करता है द्वारा प्रदान की neherlab जनता से अमेज़न सरल भंडारण सेवा (अमेज़ॅन S3) बकेट, में सार्वजनिक डेटासेट को उजागर करता है एडब्ल्यूएस गोंद डेटा कैटलॉग इसलिए वे उपयोग करने वाले SQL प्रश्नों के लिए उपलब्ध हैं अमेज़न एथेना, डेटासेट को तालिका में असामान्य करने के लिए ETL (निकालें, ट्रांसफ़ॉर्म और लोड) परिवर्तन करता है, और डेटा कैटलॉग में असामान्य तालिका उपलब्ध कराता है।

समाधान निम्नानुसार डिज़ाइन किया गया है:

  • एक डेटा इंजीनियर प्रारंभिक समाधान को तैनात करता है। समाधान दो ढेर बनाता है:
    • सीडीके-covid19-गोंद-ढेर-पाइपलाइन – यह स्टैक CI/CD इन्फ्रास्ट्रक्चर बनाता है जैसा कि आर्किटेक्चरल डायग्राम (टूल चेन लेबल) में दिखाया गया है।
    • सीडीके-covid19-गोंद-ढेर - cdk-covid19-glue-stack-pipeline ढेर तैनात करता है cdk-covid19-glue-stack AWS गोंद आधारित डेटा पाइपलाइन बनाने के लिए स्टैक जैसा कि चित्र में दिखाया गया है (ETL लेबल किया गया है)।
  • डेटा इंजीनियर परिवर्तन करता है cdk-covid19-glue-stack (जब ETL एप्लिकेशन में बदलाव की आवश्यकता हो)।
  • डेटा इंजीनियर परिवर्तन को एक CodeCommit रिपॉजिटरी में धकेलता है ( cdk-covid19-glue-stack-pipeline ढेर)।
  • पाइपलाइन स्वचालित रूप से पुश द्वारा चालू हो जाती है, और इसमें सभी संसाधनों को तैनात और अद्यतन करती है cdk-covid19-glue-stack ढेर।

इस पोस्ट के प्रकाशन के समय, AWS CDK के AWS Glue मॉड्यूल के दो संस्करण हैं: @ एडब्ल्यूएस-सीडीके/एडब्ल्यूएस-गोंद और @ aws-cdk/aws-glue-alpha, युक्त एल1 बनाता है और एल2 बनाता है, क्रमश। इस समय, @aws-cdk/aws-glue-alpha मॉड्यूल अभी प्रायोगिक चरण में है। हम स्थिर का उपयोग करते हैं @aws-cdk/aws-glue इस पोस्ट के प्रयोजन के लिए मॉड्यूल।

निम्नलिखित आरेख समाधान में सभी घटकों को दिखाता है।

चित्रा 1 - आर्किटेक्चर आरेख

डेटा पाइपलाइन में AWS गोंद होता है वर्कफ़्लो, चलाता है, नौकरियों, तथा crawlers के. AWS ग्लू जॉब एक ​​का उपयोग करता है AWS पहचान और अभिगम प्रबंधन (IAM) S3 बकेट में डेटा पढ़ने और लिखने के लिए उपयुक्त अनुमतियों के साथ भूमिका। AWS ग्लू क्रॉलर S3 बकेट में उपलब्ध डेटा को क्रॉल करते हैं, मेटाडेटा के साथ AWS ग्लू डेटा कैटलॉग को अपडेट करते हैं और टेबल बनाते हैं। आप एथेना का उपयोग करके इन तालिकाओं पर SQL क्वेरी चला सकते हैं। पहचान में आसानी के लिए, हमने शुरुआत करने के लिए ट्रिगर्स के लिए नामकरण परंपरा का पालन किया t_*, क्रॉलर के साथ c_*, और नौकरियों के साथ j_*. CodeCommit, CodeBuild और CodePipeline पर आधारित एक CI/CD पाइपलाइन समाधान का निर्माण, परीक्षण और तैनाती करती है। एडब्ल्यूएस सीडीके का उपयोग करके पूरा बुनियादी ढांचा तैयार किया गया है।

निम्न तालिका इस समाधान द्वारा बनाई गई तालिकाओं को सूचीबद्ध करती है जिन्हें आप एथेना का उपयोग करके क्वेरी कर सकते हैं।

तालिका नाम Description डेटासेट स्थान पहुँच पता
neherlab_case_counts मामलों की कुल संख्या s3://covid19-harmonized-dataset/covid19tos3/neherlab_case_counts/ पढ़ना सार्वजनिक
neherlab_country_codes देश कोड s3://covid19-harmonized-dataset/covid19tos3/neherlab_country_codes/ पढ़ना सार्वजनिक
neherlab_icu_capacity इंटेंसिव केयर यूनिट (आईसीयू) की क्षमता s3://covid19-harmonized-dataset/covid19tos3/neherlab_icu_capacity/ पढ़ना सार्वजनिक
neherlab_population आबादी s3://covid19-harmonized-dataset/covid19tos3/neherlab_population/ पढ़ना सार्वजनिक
neherla_denormalized असामान्य तालिका जो सभी पूर्ववर्ती तालिकाओं को एक तालिका में जोड़ती है S3: ///neherlab_denormalized पढ़ना लिखना पाठक का एडब्ल्यूएस खाता

AWS CDK एप्लिकेशन का एनाटॉमी

इस खंड में, हम AWS CDK एप्लिकेशन की प्रमुख अवधारणाओं और शरीर रचना पर जाते हैं, कोड के महत्वपूर्ण वर्गों की समीक्षा करते हैं, और चर्चा करते हैं कि AWS CDK, AWS CloudFormation की तुलना में समाधान की जटिलता को कैसे कम करता है।

एक एडब्ल्यूएस सीडीके अनुप्रयोग एक या अधिक को परिभाषित करता है ढेर. ढेर (CloudFormation ढेर के बराबर) में शामिल हैं constructs, जिनमें से प्रत्येक एक या अधिक ठोस AWS संसाधनों को परिभाषित करता है। एडब्ल्यूएस सीडीके ऐप में प्रत्येक ढेर एक पर्यावरण से जुड़ा हुआ है। एक पर्यावरण लक्ष्य एडब्ल्यूएस खाता आईडी और क्षेत्र है जिसमें स्टैक को तैनात करने का इरादा है।

AWS CDK में, सबसे शीर्ष वस्तु AWS CDK ऐप है, जिसमें कई स्टैक बनाम AWS CloudFormation में शीर्ष-स्तरीय स्टैक शामिल हैं। इस अंतर को देखते हुए, आप AWS CDK ऐप में एप्लिकेशन के लिए आवश्यक सभी स्टैक को परिभाषित कर सकते हैं। एडब्ल्यूएस ग्लू आधारित ईटीएल परियोजनाओं में, डेवलपर्स को विषय क्षेत्र या व्यावसायिक तर्क द्वारा कई डेटा पाइपलाइनों को परिभाषित करने की आवश्यकता होती है। AWS CloudFormation में, हम इसे कई CloudFormation स्टैक लिखकर प्राप्त कर सकते हैं और अक्सर उन्हें स्वतंत्र रूप से तैनात कर सकते हैं। कुछ मामलों में, डेवलपर्स नेस्टेड स्टैक लिखते हैं, जो समय के साथ बनाए रखने के लिए बहुत बड़ा और जटिल हो जाता है। एडब्ल्यूएस सीडीके में, एडब्ल्यूएस सीडीके ऐप से सभी ढेर तैनात किए जाते हैं, कोड की मॉड्यूलरिटी बढ़ती है और डेवलपर्स को आसानी से किसी एप्लिकेशन से जुड़े सभी डेटा पाइपलाइनों की पहचान करने की अनुमति मिलती है।

हमारे AWS CDK एप्लिकेशन में चार मुख्य फाइलें हैं:

  • ऐप.पी.ई - यह एडब्ल्यूएस सीडीके है अनुप्रयोग और AWS CDK एप्लिकेशन के लिए प्रवेश बिंदु
  • पाइपलाइन - pipeline.py स्टैक, app.py द्वारा आह्वान किया गया, CI / CD पाइपलाइन बनाता है
  • ईटीएल/infrastructure.py - etl/infrastructure.py स्टैक, Pipeline.py द्वारा आह्वान किया गया, AWS गोंद आधारित डेटा पाइपलाइन बनाता है
  • डिफ़ॉल्ट-config.yaml - कॉन्फ़िगरेशन फ़ाइल में एडब्ल्यूएस खाता आईडी और क्षेत्र शामिल है।

AWS CDK एप्लिकेशन कॉन्फ़िगरेशन को पढ़ता है default-config.yaml फ़ाइल, पर्यावरण की जानकारी सेट करता है (एडब्ल्यूएस खाता आईडी और क्षेत्र), और आह्वान करता है पाइपलाइनसीडीकेस्टैक कक्षा में pipeline.py. आइए पूर्ववर्ती पंक्ति को तोड़ दें और इस डिज़ाइन के लाभों पर चर्चा करें।

प्रत्येक एप्लिकेशन के लिए, हम प्री-प्रोडक्शन वातावरण और उत्पादन वातावरण में तैनात करना चाहते हैं। सभी वातावरणों में एप्लिकेशन के अलग-अलग कॉन्फ़िगरेशन होंगे, जैसे कि तैनात संसाधनों का आकार। AWS CDK में, प्रत्येक स्टैक में एक गुण होता है जिसे कहा जाता है env, जो स्टैक के लक्षित वातावरण को परिभाषित करता है। यह संपत्ति दिए गए ढेर के लिए एडब्ल्यूएस खाता आईडी और क्षेत्र प्राप्त करती है।

लाइन्स 26-34 in app.py उपरोक्त विवरण दिखाएं:

# Initiating the CodePipeline stack
PipelineCDKStack(
app,
"PipelineCDKStack",
config=config,
env=env,
stack_name=config["codepipeline"]["pipelineStackName"]
)

RSI env=env लाइन लक्ष्य एडब्ल्यूएस खाता आईडी और क्षेत्र के लिए सेट करती है PipelieCDKStack. यह डिज़ाइन AWS CDK ऐप को एक साथ कई वातावरणों में तैनात करने की अनुमति देता है और सभी वातावरणों में एप्लिकेशन की समानता को बढ़ाता है। हमारे उदाहरण के लिए, यदि हम तैनात करना चाहते हैं PipelineCDKStack कई वातावरणों में, जैसे कि विकास, परीक्षण और उत्पादन, हम बस कॉल करते हैं PipelineCDKStack आबाद करने के बाद ढेर env लक्ष्य एडब्ल्यूएस खाता आईडी और क्षेत्र के साथ उचित रूप से परिवर्तनशील। AWS CloudFormation में यह अधिक कठिन था, जहाँ डेवलपर्स को आमतौर पर प्रत्येक वातावरण के लिए व्यक्तिगत रूप से स्टैक को तैनात करने की आवश्यकता होती थी। AWS CDK कमांड लाइन पर स्टेज पास करने के लिए सुविधाएँ भी प्रदान करता है। हम बाद के खंड में इस विकल्प और उपयोग पर गौर करेंगे।

AWS CDK एप्लिकेशन पर वापस आते हुए, पाइपलाइनCDKStack क्लास इन pipeline.py का उपयोग करता है aws_cdk.पाइपलाइन एडब्ल्यूएस सीडीके अनुप्रयोगों की निरंतर डिलीवरी बनाने के लिए पुस्तकालय का निर्माण। एडब्ल्यूएस सीडीके कई विचारित निर्माण पुस्तकालय प्रदान करता है जैसे aws_cdk.पाइपलाइन किसी एप्लिकेशन से बॉयलरप्लेट कोड को कम करने के लिए। pipeline.py फ़ाइल कोडकॉमिट रिपॉजिटरी बनाता है, नमूना कोड के साथ रिपॉजिटरी को पॉप्युलेट करता है, और कोडपाइपलाइन को चलाने के लिए आवश्यक एडब्ल्यूएस सीडीके चरणों के साथ एक पाइपलाइन बनाता है। सीडीकेग्लूब्लॉगस्टैक वर्ग से etl/infrastructure.py फ़ाइल.

रेखा 99 in pipeline.py को आमंत्रित करता है CdkGlueBlogStack वर्ग.

RSI CdkGlueBlogStack कक्षा में etl/infrastructure.py एडब्ल्यूएस गोंद आधारित डेटा पाइपलाइन के प्रावधान के लिए क्रॉलर, जॉब, डेटाबेस, ट्रिगर और वर्कफ़्लो बनाता है।

का संदर्भ लें लाइन 539 का उपयोग कर क्रॉलर बनाने के लिए Cfnक्रॉलर निर्माण, लाइन 564 का उपयोग कर रोजगार सृजित करने के लिए सीएफ़एन नौकरी निर्माण, और लाइन 168 का उपयोग करके कार्यप्रवाह बनाने के लिए सीएफएन कार्यप्रवाह निर्माण। हम उपयोग करते हैं सीएफएनट्रिगर वर्कफ़्लो बनाने के लिए कई ट्रिगर्स को एक साथ सिलाई करने के लिए निर्माण करें। AWS CDK L1 लोकप्रिय प्रोग्रामिंग भाषाओं के तरीकों का उपयोग करके सभी उपलब्ध AWS CloudFormation संसाधनों और संस्थाओं को उजागर करता है। यह डेवलपर्स को संसाधनों के साथ काम करने के बजाय लोकप्रिय प्रोग्रामिंग भाषाओं का उपयोग करने की अनुमति देता है JSON or YAML AWS CloudFormation में फ़ाइलें।

का संदर्भ लें ईटीएल/infrastructure.py अतिरिक्त जानकारी के लिए।

CI/CD पाइपलाइन का पूर्वाभ्यास

इस खंड में, हम CI/CD पाइपलाइन के विभिन्न चरणों से गुजरते हैं। को देखें सीडीके पाइपलाइन: एडब्ल्यूएस सीडीके अनुप्रयोगों के लिए निरंतर वितरण अतिरिक्त जानकारी के लिए।

  • स्रोत - यह चरण CodeCommit रेपो से AWS CDK ऐप के स्रोत को प्राप्त करता है और हर बार एक नया कमिट होने पर पाइपलाइन को ट्रिगर करता है।
  • बनाएँ - यह चरण कोड संकलित करता है (यदि आवश्यक हो), परीक्षण चलाता है, और करता है cdk synth. चरण का आउटपुट a है बादल सभा, जिसका उपयोग शेष पाइपलाइन में सभी क्रियाओं को करने के लिए किया जाता है। pytest का उपयोग करके चलाया जाता है amazon/aws-glue-libs:glue_libs_3.0.0_image_01 डॉकटर छवि. यह छवि डॉकर कंटेनर का उपयोग करके एडब्ल्यूएस गोंद संस्करण 3.0 नौकरियों के परीक्षण चलाने के लिए सभी आवश्यक पुस्तकालयों के साथ आती है। को देखें डॉकर कंटेनर का उपयोग करके स्थानीय रूप से एडब्ल्यूएस गोंद संस्करण 3.0 नौकरियों का विकास और परीक्षण करें अतिरिक्त जानकारी के लिए।
  • पाइपलाइन अपडेट करें – यदि आवश्यक हो तो यह चरण पाइपलाइन को संशोधित करता है। उदाहरण के लिए, यदि पाइपलाइन में एक नया परिनियोजन चरण जोड़ने के लिए कोड अपडेट किया गया है या आपके एप्लिकेशन में एक नई संपत्ति जोड़ने के लिए है, तो परिवर्तनों को दर्शाने के लिए पाइपलाइन स्वचालित रूप से अपडेट हो जाती है।
  • संपत्ति - यह चरण ऐप के सभी एडब्ल्यूएस सीडीके संपत्तियों को अमेज़ॅन एस 3 और सभी डॉकर छवियों को तैयार और प्रकाशित करता है अमेज़ॅन इलास्टिक कंटेनर रजिस्ट्री (अमेज़न ईसीआर)। जब एडब्ल्यूएस सीडीके एक ऐप को तैनात करता है जो संपत्तियों का संदर्भ देता है (या तो सीधे ऐप कोड या लाइब्रेरी के माध्यम से), एडब्ल्यूएस सीडीके सीएलआई पहले कोडबिल्ड जॉब का उपयोग करके अमेज़ॅन एस 3 को संपत्ति तैयार और प्रकाशित करता है। यह एडब्ल्यूएस गोंद समाधान चार संपत्तियां बनाता है।
  • सीडीकेग्लूस्टेज – यह चरण संपत्ति को AWS खाते में तैनात करता है। इस मामले में, पाइपलाइन एडब्ल्यूएस सीडीके टेम्पलेट को तैनात करती है etl/infrastructure.py सभी एडब्ल्यूएस गोंद कलाकृतियों को बनाने के लिए।

कोड

कोड यहां पाया जा सकता है एडब्ल्यूएस नमूने गीथहब पर

.. पूर्वापेक्षाएँ

यह पोस्ट मानता है कि आपके पास निम्नलिखित हैं:

समाधान तैनात करें

समाधान परिनियोजित करने के लिए, निम्न चरणों को पूरा करें:

  • क्लाइंट मशीन के लिए AWS सैंपल GitHub रिपॉजिटरी से सोर्स कोड डाउनलोड करें:
$ git clone git@github.com:aws-samples/aws-glue-cdk-cicd.git

  • आभासी वातावरण बनाएँ:
$ cd aws-glue-cdk-cicd 
$ python3 -m venv .venv

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

  • अपने OS के अनुसार आभासी वातावरण को सक्रिय करें:
    • MacOS और Linux पर, निम्न कोड का उपयोग करें:
$ source .venv/bin/activate

    • Windows प्लेटफ़ॉर्म पर, निम्न कोड का उपयोग करें:
% .venvScriptsactivate.bat

इस चरण के बाद, बाद के चरण क्लाइंट मशीन पर आभासी वातावरण की सीमा के भीतर चलते हैं और आवश्यकतानुसार AWS खाते के साथ सहभागिता करते हैं।

  • में वर्णित आवश्यक निर्भरताओं को स्थापित करें requirements.txt आभासी वातावरण के लिए:
$ pip install -r requirements.txt
  • AWS CDK ऐप को बूटस्ट्रैप करें:
cdk bootstrap

यह चरण किसी दिए गए परिवेश (AWS खाता ID और क्षेत्र) को AWS CDK द्वारा पर्यावरण में परिनियोजन करने के लिए आवश्यक संसाधनों से भरता है। को देखें bootstrapping अतिरिक्त जानकारी के लिए। इस चरण पर, आप CloudFormation स्टैक देख सकते हैं CDKToolkit AWS CloudFormation कंसोल पर।

  • निर्दिष्ट स्टैक के लिए CloudFormation टेम्प्लेट को सिंथेसाइज़ करें:
$ cdk synth # optional if not default (-c stage=default)

अगले चरण में तैनात किए जाने वाले संसाधनों की पहचान करने के लिए आप CloudFormation टेम्प्लेट को सत्यापित कर सकते हैं।

  • AWS संसाधनों (CI/CD पाइपलाइन और AWS गोंद आधारित डेटा पाइपलाइन) को परिनियोजित करें:
$ cdk deploy # optional if not default (-c stage=default)

इस चरण पर, आप CloudFormation स्टैक देख सकते हैं cdk-covid19-glue-stack-pipeline और cdk-covid19-glue-stack AWS CloudFormation कंसोल पर। cdk-covid19-glue-stack-pipeline स्टैक पहले तैनात हो जाता है, जो बदले में तैनात हो जाता है cdk-covid19-glue-stack एडब्ल्यूएस गोंद पाइपलाइन बनाने के लिए।

समाधान सत्यापित करें

जब पिछले सभी चरण पूरे हो जाते हैं, तो आप निर्मित कलाकृतियों की जांच कर सकते हैं।

क्लाउडफॉर्मेशन ढेर

आप AWS CloudFormation कंसोल पर ढेर के अस्तित्व की पुष्टि कर सकते हैं। जैसा कि निम्नलिखित स्क्रीनशॉट में दिखाया गया है, क्लाउडफॉर्मेशन स्टैक्स द्वारा बनाया और तैनात किया गया है cdk bootstrap और cdk deploy.

BDB-2467-क्लाउडफॉर्मेशन-स्टैक

चित्र 2 - AWS CloudFormation ढेर

कोडपाइपलाइन पाइपलाइन

CodePipeline कंसोल पर, के लिए जाँच करें cdk-covid19-glue पाइप लाइन।

BDB-2467-कोड-पाइपलाइन-सारांश

चित्रा 3 - एडब्ल्यूएस कोडपिपलाइन सारांश दृश्य

आप विस्तृत दृश्य के लिए पाइपलाइन खोल सकते हैं।

BDB-2467-कोड-पाइपलाइन-विस्तृत

चित्र 4 - एडब्ल्यूएस कोडपिपलाइन विस्तृत दृश्य

AWS गोंद वर्कफ़्लो

एडब्ल्यूएस गोंद कार्यप्रवाह और उसके घटकों को मान्य करने के लिए, निम्न चरणों को पूरा करें:

  • एडब्ल्यूएस गोंद कंसोल पर, चुनें वर्कफ़्लोज़ नेविगेशन फलक में
  • की उपस्थिति की पुष्टि करें Covid_19 कार्यप्रवाह।
BDB-2467-गोंद-वर्कफ़्लो-सारांश

चित्रा 5 - एडब्ल्यूएस गोंद वर्कफ़्लो सारांश दृश्य

विस्तृत दृश्य के लिए आप कार्यप्रवाह का चयन कर सकते हैं।

BDB-2467-गोंद-कार्यप्रवाह-विस्तृत

चित्रा 6 - एडब्ल्यूएस गोंद वर्कफ़्लो विस्तृत दृश्य

  • चुनें ट्रिगर्स नेविगेशन फलक में और सात की उपस्थिति के लिए जाँच करें t-* चलाता।
BDB-2467-गोंद-ट्रिगर

चित्र 7 - AWS गोंद ट्रिगर

  • चुनें नौकरियां नेविगेशन फलक में और तीन की उपस्थिति के लिए जाँच करें j_* नौकरियों.
BDB-2467-गोंद-नौकरियां

चित्र 8 - एडब्ल्यूएस गोंद नौकरियां

नौकरियां निम्नलिखित कार्य करती हैं:

    • etlScripts/j_emit_start_event.py - एक पायथन नौकरी जो वर्कफ़्लो शुरू करती है और ईवेंट बनाती है
    • etlScripts/j_neherlab_denorm.py - डेटा को बदलने के लिए एक स्पार्क ईटीएल जॉब और सभी आधार डेटा को एक साथ Parquet प्रारूप में जोड़कर एक असामान्य दृश्य बनाना
    • etlScripts/j_emit_ended_event.py - एक पायथन नौकरी जो वर्कफ़्लो को समाप्त करती है और विशिष्ट घटना बनाती है
  • चुनें क्रौलर नेविगेशन फलक में और पाँच की उपस्थिति के लिए जाँच करें neherlab-* क्रॉलर।
BDB-2467-गोंद-क्रॉलर

चित्रा 9 - एडब्ल्यूएस गोंद क्रॉलर

समाधान पर अमल करें

  • समाधान एक बनाता है अनुसूचित AWS ग्लू वर्कफ़्लो जो हर महीने के पहले दिन सुबह 10:00 UTC पर चलता है। ऑन-डिमांड एक शेड्यूल किए गए वर्कफ़्लो को भी ट्रिगर किया जा सकता है। इस पोस्ट के प्रयोजन के लिए, हम AWS CLI से निम्न आदेश का उपयोग करके वर्कफ़्लो ऑन-डिमांड निष्पादित करेंगे। यदि कार्यप्रवाह सफलतापूर्वक प्रारंभ हो जाता है, तो कमांड लौटाता है run ID. Amazon Glue में वर्कफ़्लो को चलाने और उसकी निगरानी करने के निर्देशों के लिए, देखें Amazon Glue में वर्कफ़्लो चलाना और उसकी निगरानी करना.
aws glue start-workflow-run --name Covid_19
  • आप एडब्ल्यूएस सीएलआई से निम्न आदेश निष्पादित करके कार्यप्रवाह की स्थिति को सत्यापित कर सकते हैं। कृपया उपयोग करें run ID उपरोक्त आदेश से लौटा। ए सफलतापूर्वक निष्पादित किया गया Covid_19 कार्यप्रवाह का मान लौटाना चाहिए 7 एसटी SucceededActions  और 0 एसटी FailedActions.
aws glue get-workflow-run --name Covid_19 --run-id 
  • उपरोक्त कमांड का एक नमूना आउटपुट नीचे दिया गया है।
{
"Run": {
"Name": "Covid_19",
"WorkflowRunId": "wr_c8855e82ab42b2455b0e00cf3f12c81f957447abd55a573c087e717f54a4e8be",
"WorkflowRunProperties": {},
"StartedOn": "2022-09-20T22:13:40.500000-04:00",
"CompletedOn": "2022-09-20T22:21:39.545000-04:00",
"Status": "COMPLETED",
"Statistics": {
"TotalActions": 7,
"TimeoutActions": 0,
"FailedActions": 0,
"StoppedActions": 0,
"SucceededActions": 7,
"RunningActions": 0
}
}
}
  • (वैकल्पिक) AWS ग्लू कंसोल का उपयोग करके चलने वाले वर्कफ़्लो की स्थिति को सत्यापित करने के लिए, नेविगेशन फलक में वर्कफ़्लो चुनें, चुनें Covid_19 कार्यप्रवाह, इतिहास टैब पर क्लिक करें, नवीनतम पंक्ति का चयन करें और रन विवरण देखें पर क्लिक करें। एक सफलतापूर्वक पूर्ण कार्यप्रवाह को हरे चेक मार्क में चिह्नित किया गया है। अतिरिक्त स्थितियों के लिए कृपया नीचे स्क्रीनशॉट में लेजेंड अनुभाग देखें।
    BDB-2467-गोंद-कार्यप्रवाह-सफलता

    चित्रा 10 - एडब्ल्यूएस गोंद वर्कफ़्लो सफल रन

आउटपुट की जाँच करें

  • जब कार्यप्रवाह पूरा हो जाए, तो सफल निर्माण और जनसंख्या की जांच करने के लिए एथेना कंसोल पर नेविगेट करें neherlab_denormalized मेज़। आप डेटा की जांच करने के लिए सभी 5 तालिकाओं के विरुद्ध SQL क्वेरी चला सकते हैं। एक नमूना SQL क्वेरी नीचे दी गई है।
SELECT "country", "location", "date", "cases", "deaths", "ecdc-countries",
        "acute_care", "acute_care_per_100K", "critical_care", "critical_care_per_100K" 
FROM "AwsDataCatalog"."covid19db"."neherlab_denormalized"
limit 10;
बीडीबी-2467-एथेना

चित्र 10 - अमेज़न एथेना

क्लीन अप

इस पोस्ट में बनाए गए संसाधनों को साफ़ करने के लिए, AWS CloudFormation स्टैक को निम्न क्रम में हटाएं:

  • cdk-covid19-glue-stack
  • cdk-covid19-glue-stack-pipeline
  • CDKToolkit

फिर सभी संबद्ध S3 बकेट हटाएं:

  • cdk-covid19-glue-stack-p-pipelineartifactsbucketa-*
  • cdk-*-assets--
  • covid19-glue-config--
  • neherlab-denormalized-dataset--

निष्कर्ष

इस पोस्ट में, हमने AWS CDK का उपयोग करके AWS Glue आधारित ETL समाधान को परिभाषित करने, परीक्षण करने, प्रावधान करने और परिवर्तनों को प्रबंधित करने के लिए चरण-दर-चरण मार्गदर्शिका प्रदर्शित की। हमने एक एडब्ल्यूएस गोंद उदाहरण का उपयोग किया, जिसमें एक जटिल ईटीएल समाधान बनाने के लिए सभी घटक हैं, और यह प्रदर्शित किया कि व्यक्तिगत एडब्ल्यूएस गोंद घटकों को घर्षण रहित सीआई/सीडी पाइपलाइन में कैसे एकीकृत किया जाए। हम आपको एडब्ल्यूएस गोंद आधारित ईटीएल समाधानों के लिए अपनी खुद की सीआई/सीडी पाइपलाइन बनाने के लिए शुरुआती बिंदु के रूप में इस पोस्ट और संबंधित कोड का उपयोग करने के लिए प्रोत्साहित करते हैं।


लेखक के बारे में

पुनीत बब्बर AWS में डेटा आर्किटेक्ट है, बिग डेटा और AI/ML में विशेषज्ञता प्राप्त है। वह उत्पादों के निर्माण के बारे में भावुक है, विशेष रूप से ऐसे उत्पाद जो ग्राहकों को उनके डेटा से अधिक लाभ उठाने में मदद करते हैं। अपने खाली समय के दौरान, वह अपने परिवार के साथ समय बिताना और लंबी पैदल यात्रा, दौड़ना और स्केटिंग सहित बाहरी गतिविधियों में शामिल होना पसंद करते हैं। उसके साथ जुड़ें लिंक्डइन.

सुवोजीत दासगुप्ता Amazon Web Services में सीनियर लेकहाउस आर्किटेक्ट हैं। वह ग्राहकों के साथ AWS पर डेटा समाधान डिजाइन और निर्माण करने के लिए काम करता है।

जस्टिन कुस्कोवस्की Amazon Web Services में प्रधान DevOps सलाहकार हैं। वह AWS ग्राहकों के साथ सीधे काम करता है ताकि उनकी मूल्य धारा में सुधार के लिए मार्गदर्शन और तकनीकी सहायता प्रदान की जा सके, जो अंततः बाजार में उत्पाद के समय को कम करता है और बेहतर ग्राहक अनुभव की ओर ले जाता है। काम के बाहर, जस्टिन को अपने दो बच्चों को फ़ुटबॉल खेलते देखने के लिए देश की यात्रा करने और अपने परिवार और दोस्तों के साथ मिशिगन में झीलों पर सर्फिंग करते हुए समय बिताने में मज़ा आता है।

स्पॉट_आईएमजी

नवीनतम खुफिया

स्पॉट_आईएमजी