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

अमेज़ॅन लोकेशन सर्विस और एडब्ल्यूएस एनालिटिक्स सेवाओं का उपयोग करके ऐतिहासिक स्थान डेटा से अंतर्दृष्टि प्राप्त करें अमेज़न वेब सेवाएँ

दिनांक:

दुनिया भर में कई संगठन अपने अंतिम ग्राहकों तक सेवा पहुंचाने के लिए वाहनों जैसी भौतिक संपत्तियों के उपयोग पर भरोसा करते हैं। इन संपत्तियों को वास्तविक समय में ट्रैक करके और परिणामों को संग्रहीत करके, संपत्ति के मालिक इस बारे में मूल्यवान अंतर्दृष्टि प्राप्त कर सकते हैं कि उनकी संपत्ति का उपयोग व्यवसाय में लगातार सुधार लाने और भविष्य में बदलावों की योजना बनाने के लिए कैसे किया जा रहा है। उदाहरण के लिए, वाहनों के बेड़े का संचालन करने वाली एक डिलीवरी कंपनी को अपने नियंत्रण से बाहर स्थानीय नीति परिवर्तनों के प्रभाव का पता लगाने की आवश्यकता हो सकती है, जैसे कि किसी कंपनी का घोषित विस्तार अति-निम्न उत्सर्जन क्षेत्र (ULEZ). ऐतिहासिक वाहन स्थान डेटा को अन्य स्रोतों से मिली जानकारी के साथ जोड़कर, कंपनी बेहतर निर्णय लेने के लिए अनुभवजन्य दृष्टिकोण तैयार कर सकती है। उदाहरण के लिए, कंपनी की खरीद टीम इस जानकारी का उपयोग यह निर्णय लेने के लिए कर सकती है कि नीति परिवर्तन प्रभावी होने से पहले प्रतिस्थापन के लिए किन वाहनों को प्राथमिकता दी जाए।

डेवलपर्स इसमें समर्थन का उपयोग कर सकते हैं अमेज़न स्थान सेवा एसटी डिवाइस स्थिति अपडेट प्रकाशित करना सेवा मेरे अमेज़न EventBridge एक वास्तविक समय डेटा पाइपलाइन बनाने के लिए जो ट्रैक की गई संपत्तियों के स्थानों को संग्रहीत करती है अमेज़न सरल भंडारण सेवा (अमेज़ॅन एस3)। इसके अतिरिक्त, आप उपयोग कर सकते हैं AWS लाम्बा आने वाले स्थान डेटा को अन्य स्रोतों से डेटा के साथ समृद्ध करने के लिए, जैसे कि अमेज़ॅन डायनेमोडीबी वाहन रखरखाव विवरण वाली तालिका। तब एक डेटा विश्लेषक इसका उपयोग कर सकता है भू-स्थानिक पूछताछ क्षमताएँ of अमेज़न एथेना अंतर्दृष्टि प्राप्त करने के लिए, जैसे कि विस्तारित यूएलईजेड की प्रस्तावित सीमाओं में उनके वाहनों ने कितने दिनों तक परिचालन किया है। क्योंकि जो वाहन ULEZ उत्सर्जन मानकों को पूरा नहीं करते हैं, उन्हें ज़ोन के भीतर संचालित करने के लिए दैनिक शुल्क के अधीन किया जाता है, आप राशि का अनुमान लगाने के लिए वाहन की उम्र, वर्तमान माइलेज और वर्तमान उत्सर्जन मानकों जैसे रखरखाव डेटा के साथ-साथ स्थान डेटा का उपयोग कर सकते हैं। कंपनी को दैनिक शुल्क पर खर्च करना होगा।

यह पोस्ट दिखाती है कि आप अमेज़न लोकेशन, इवेंटब्रिज, लैम्ब्डा का उपयोग कैसे कर सकते हैं। अमेज़ॅन डेटा फ़ायरहोज़, और अमेज़ॅन S3 एक स्थान-जागरूक डेटा पाइपलाइन बनाने के लिए, और इस डेटा का उपयोग सार्थक अंतर्दृष्टि प्राप्त करने के लिए करते हैं एडब्ल्यूएस गोंद और एथेना.

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

यह स्थान-आधारित परिसंपत्ति प्रबंधन के लिए पूरी तरह से सर्वर रहित समाधान है। समाधान में निम्नलिखित इंटरफ़ेस शामिल हैं:

  • IoT या मोबाइल एप्लिकेशन - एक मोबाइल एप्लिकेशन या इंटरनेट ऑफ थिंग्स (IoT) डिवाइस उपयोग के दौरान कंपनी के वाहन को ट्रैक करने की अनुमति देता है और अपने वर्तमान स्थान को AWS में डेटा अंतर्ग्रहण परत तक सुरक्षित रूप से प्रसारित करता है। अंतर्ग्रहण दृष्टिकोण इस पोस्ट के दायरे में नहीं है। इसके बजाय, हमारे समाधान में एक लैम्ब्डा फ़ंक्शन नमूना वाहन यात्राओं का अनुकरण करता है और यादृच्छिक स्थानों के साथ अमेज़ॅन लोकेशन ट्रैकर ऑब्जेक्ट को सीधे अपडेट करता है।
  • डेटा विश्लेषण - व्यवसाय विश्लेषक वाहनों से एकत्र किए गए स्थान डेटा सहित कई डेटा स्रोतों से परिचालन अंतर्दृष्टि एकत्र करते हैं। डेटा विश्लेषक इस तरह के सवालों के जवाब तलाश रहे हैं, "किसी दिए गए वाहन ने ऐतिहासिक रूप से प्रस्तावित क्षेत्र के अंदर कितना समय बिताया है, और यदि पॉलिसी पिछले 12 महीनों में लागू होती तो फीस कितनी होती?"

निम्नलिखित चित्र समाधान वास्तुकला को दर्शाता है।
वास्तुकला आरेख

वर्कफ़्लो में निम्नलिखित प्रमुख चरण शामिल हैं:

  1. वाहन को ट्रैक करने के लिए अमेज़ॅन लोकेशन की ट्रैकिंग कार्यक्षमता का उपयोग किया जाता है। इवेंटब्रिज एकीकरण का उपयोग करके, फ़िल्टर किए गए स्थितिगत अपडेट इवेंटब्रिज इवेंट बस में प्रकाशित किए जाते हैं। इस समाधान का उपयोग करता है दूरी आधारित लागत और घबराहट को कम करने के लिए फ़िल्टरिंग। दूरस्थ-आधारित फ़िल्टरिंग स्थान अपडेट को अनदेखा करता है जिसमें डिवाइस 30 मीटर (98.4 फीट) से कम चले हैं।
  2. अमेज़ॅन लोकेशन डिवाइस स्थिति इवेंट इवेंटब्रिज पर आते हैं default बस के साथ source: ["aws.geo"] और detail-type: ["Location Device Position Event"]. इन घटनाओं को दो डाउनस्ट्रीम लक्ष्यों तक अग्रेषित करने के लिए एक नियम बनाया गया है: एक लैम्ब्डा फ़ंक्शन, और एक फ़ायरहोज़ डिलीवरी स्ट्रीम।
  3. S3 बकेट में डेटा जमा करने के विभिन्न तरीकों को प्रदर्शित करने के लिए इस पोस्ट में प्रत्येक लक्ष्य के आधार पर दो अलग-अलग पैटर्न का वर्णन किया गया है:
    1. लैम्ब्डा फ़ंक्शन - पहला दृष्टिकोण यह प्रदर्शित करने के लिए लैम्ब्डा फ़ंक्शन का उपयोग करता है कि आप आने वाले स्थान डेटा को सीधे रूपांतरित करने के लिए डेटा पाइपलाइन में कोड का उपयोग कैसे कर सकते हैं। आप S3 बकेट में परिणामों को संग्रहीत करने से पहले, डेटा को समृद्ध करने के लिए एक अलग डेटा स्टोर (उदाहरण के लिए, डायनेमोडीबी तालिका या ग्राहक संबंध प्रबंधन प्रणाली) से अतिरिक्त वाहन जानकारी लाने के लिए लैम्ब्डा फ़ंक्शन को संशोधित कर सकते हैं। इस मॉडल में, प्रत्येक आने वाली घटना के लिए लैम्ब्डा फ़ंक्शन लागू किया जाता है।
    2. फ़ायरहोज़ डिलीवरी स्ट्रीम - दूसरा दृष्टिकोण बिना किसी संशोधन के S3 बकेट में संग्रहीत करने से पहले, आने वाले स्थितिगत अपडेट को बफर और बैच करने के लिए फ़ायरहोज़ डिलीवरी स्ट्रीम का उपयोग करता है। यह विधि भंडारण खपत और क्वेरी प्रदर्शन को अनुकूलित करने के लिए GZIP संपीड़न का उपयोग करती है। आप भी उपयोग कर सकते हैं डेटा परिवर्तन बैचों में डेटा परिवर्तन करने के लिए लैम्ब्डा फ़ंक्शन को लागू करने के लिए डेटा फ़ायरहोज़ की सुविधा।
  4. AWS ग्लू दोनों S3 बकेट पथों को क्रॉल करता है, अनुमानित स्कीमा के आधार पर AWS ग्लू डेटाबेस तालिकाओं को पॉप्युलेट करता है, और AWS ग्लू डेटा कैटलॉग के माध्यम से अन्य एनालिटिक्स अनुप्रयोगों के लिए डेटा उपलब्ध कराता है।
  5. एथेना का उपयोग S3 बकेट में संग्रहीत स्थान डेटा पर भू-स्थानिक क्वेरी चलाने के लिए किया जाता है। डेटा कैटलॉग मेटाडेटा प्रदान करता है जो एथेना का उपयोग करके एनालिटिक्स अनुप्रयोगों को अमेज़ॅन एस 3 में संग्रहीत स्थान डेटा को खोजने, पढ़ने और संसाधित करने की अनुमति देता है।
  6. इस समाधान में एक लैम्ब्डा फ़ंक्शन शामिल है जो काल्पनिक यात्राओं से सिम्युलेटेड स्थान डेटा के साथ अमेज़ॅन लोकेशन ट्रैकर को लगातार अपडेट करता है। लैम्ब्डा फ़ंक्शन को निर्धारित इवेंटब्रिज नियम का उपयोग करके नियमित अंतराल पर ट्रिगर किया जाता है।

आप इसका उपयोग करके स्वयं इस समाधान का परीक्षण कर सकते हैं AWS नमूने GitHub रिपॉजिटरी. भंडार में शामिल है AWS सर्वर रहित अनुप्रयोग मॉडल इस समाधान को आज़माने के लिए (AWS SAM) टेम्प्लेट और लैम्ब्डा कोड की आवश्यकता है। में दिए गए निर्देशों का संदर्भ लें README इस समाधान का प्रावधान और डीकमीशन कैसे करें, इसके चरणों के लिए फ़ाइल करें।

इस पोस्ट के कुछ स्क्रीनशॉट में विज़ुअल लेआउट आपके स्क्रीनशॉट से भिन्न दिख सकते हैं एडब्ल्यूएस प्रबंधन कंसोल.

डेटा जनरेशन

इस अनुभाग में, हम यात्रा डेटा को मैन्युअल रूप से या स्वचालित रूप से उत्पन्न करने के चरणों पर चर्चा करते हैं।

यात्रा डेटा मैन्युअल रूप से उत्पन्न करें

आप इसका उपयोग करके डिवाइस की स्थिति को मैन्युअल रूप से अपडेट कर सकते हैं AWS कमांड लाइन इंटरफ़ेस (एडब्ल्यूएस सीएलआई) कमांड aws location batch-update-device-position। बदलो tracker-name, device-id, Position, तथा SampleTime अपने स्वयं के मूल्यों के साथ, और सुनिश्चित करें कि किसी ईवेंट को रखने के लिए क्रमिक अपडेट 30 मीटर से अधिक दूरी पर हों default इवेंटब्रिज इवेंट बस:

aws location batch-update-device-position --tracker-name <tracker-name> --updates "[{"DeviceId": "<device-id>", "Position": [<longitude>, <latitude>], "SampleTime": "<YYYY-MM-DDThh:mm:ssZ>"}]"

सिम्युलेटर का उपयोग करके स्वचालित रूप से यात्रा डेटा उत्पन्न करें

प्रदान किया गया एडब्ल्यूएस CloudFormation टेम्प्लेट एक इवेंटब्रिज शेड्यूल्ड नियम और एक संबंधित लैम्ब्डा फ़ंक्शन को तैनात करता है जो वाहनों से ट्रैकर अपडेट का अनुकरण करता है। यह नियम डिफ़ॉल्ट रूप से सक्षम है, और द्वारा निर्दिष्ट आवृत्ति पर चलता है SimulationIntervalMinutes क्लाउडफॉर्मेशन पैरामीटर। डेटा जेनरेशन लैम्ब्डा फ़ंक्शन अमेज़ॅन लोकेशन ट्रैकर को वाहनों के आधार स्थानों से यादृच्छिक स्थिति ऑफसेट के साथ अपडेट करता है।

वाहन के नाम और आधार स्थान इसमें संग्रहीत हैं गाड़ियाँ.json फ़ाइल। एक वाहन की शुरुआती स्थिति को हर दिन रीसेट किया जाता है, और एक यथार्थवादी यात्रा सिमुलेशन प्रदान करने के लिए उन्हें एक निश्चित दिन पर यूएलईजेड के अंदर और बाहर जाने की क्षमता देने के लिए आधार स्थानों को चुना गया है।

आप ऐसा कर सकते हैं नियम को अक्षम करें इवेंटब्रिज कंसोल पर निर्धारित नियम विवरण पर नेविगेट करके अस्थायी रूप से। वैकल्पिक रूप से, पैरामीटर बदलें State: ENABLED सेवा मेरे State: DISABLED निर्धारित नियम संसाधन के लिए GenerateDevicePositionsScheduleRule में टेम्पलेट.yml फ़ाइल। इस परिवर्तन को प्रभावी बनाने के लिए AWS SAM टेम्पलेट का पुनर्निर्माण और पुनः परिनियोजन करें।

स्थान डेटा पाइपलाइन दृष्टिकोण

इस अनुभाग में उल्लिखित कॉन्फ़िगरेशन दिए गए AWS SAM टेम्पलेट द्वारा स्वचालित रूप से तैनात किए जाते हैं। इस अनुभाग में जानकारी समाधान के प्रासंगिक भागों का वर्णन करने के लिए प्रदान की गई है।

अमेज़न स्थान डिवाइस स्थिति घटनाएँ

अमेज़ॅन लोकेशन निम्नलिखित प्रारूप में इवेंटब्रिज को डिवाइस स्थिति अपडेट ईवेंट भेजता है:

{
    "version":"0",
    "id":"<event-id>",
    "detail-type":"Location Device Position Event",
    "source":"aws.geo",
    "account":"<account-number>",
    "time":"<YYYY-MM-DDThh:mm:ssZ>",
    "region":"<region>",
    "resources":[
        "arn:aws:geo:<region>:<account-number>:tracker/<tracker-name>"
    ],
    "detail":{
        "EventType":"UPDATE",
        "TrackerName":"<tracker-name>",
        "DeviceId":"<device-id>",
        "SampleTime":"<YYYY-MM-DDThh:mm:ssZ>",
        "ReceivedTime":"<YYYY-MM-DDThh:mm:ss.sssZ>",
        "Position":[
            <longitude>, 
            <latitude>
	]
    }
}

आप वैकल्पिक रूप से एक निर्दिष्ट कर सकते हैं इनपुट परिवर्तन लक्ष्य तक पहुंचने से पहले डिवाइस स्थिति ईवेंट डेटा के प्रारूप और सामग्री को संशोधित करना।

लैम्ब्डा का उपयोग करके डेटा संवर्धन

इस पैटर्न में डेटा संवर्धन को लैम्ब्डा फ़ंक्शन के आह्वान के माध्यम से सुविधाजनक बनाया गया है। इस उदाहरण में, हम इस फ़ंक्शन को कॉल करते हैं ProcessDevicePosition, और पायथन रनटाइम का उपयोग करें। निम्नलिखित प्रारूप में इवेंट डेटा प्राप्त करने के लिए इवेंटब्रिज लक्ष्य परिभाषा में एक कस्टम परिवर्तन लागू किया गया है:

{
    "EventType":<EventType>,
    "TrackerName":<TrackerName>,
    "DeviceId":<DeviceId>,
    "SampleTime":<SampleTime>,
    "ReceivedTime":<ReceivedTime>,
    "Position":[<Longitude>,<Latitude>]
}

आप अतिरिक्त परिवर्तन लागू कर सकते हैं, जैसे कि रीफैक्टरिंग Latitude और Longitude यदि घटनाओं को संसाधित करने वाले डाउनस्ट्रीम व्यावसायिक तर्क के लिए यह आवश्यक हो तो डेटा को अलग-अलग कुंजी-मूल्य जोड़े में रखें।

निम्नलिखित कोड पायथन एप्लिकेशन लॉजिक को प्रदर्शित करता है जो कि द्वारा चलाया जाता है ProcessDevicePosition लैम्ब्डा फ़ंक्शन. संक्षिप्तता के लिए इस कोड स्निपेट में त्रुटि प्रबंधन को छोड़ दिया गया है। पूरा कोड इसमें उपलब्ध है गीथहब रेपो.

import json
import os
import uuid
import boto3

# Import environment variables from Lambda function.
bucket_name = os.environ["S3_BUCKET_NAME"]
bucket_prefix = os.environ["S3_BUCKET_LAMBDA_PREFIX"]

s3 = boto3.client("s3")

def lambda_handler(event, context):
    key = "%s/%s/%s-%s.json" % (bucket_prefix,
                                event["DeviceId"],
                                event["SampleTime"],
                                str(uuid.uuid4())
    body = json.dumps(event, separators=(",", ":"))
    body_encoded = body.encode("utf-8")
    s3.put_object(Bucket=bucket_name, Key=key, Body=body_encoded)
    return {
        "statusCode": 200,
        "body": "success"
    }

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

आप अन्य स्रोतों का उपयोग करके ईवेंट डेटा को समृद्ध करने के लिए पिछले लैम्ब्डा फ़ंक्शन कोड में अतिरिक्त तर्क जोड़ सकते हैं। उदाहरण में गीथहब रेपो DynamoDB वाहन रखरखाव तालिका से डेटा के साथ घटना को समृद्ध करना प्रदर्शित करता है।

शर्त के अतिरिक्त AWS पहचान और अभिगम प्रबंधन (IAM) भूमिका द्वारा प्रदान की गई अनुमतियाँ AWSBasicLambdaExecutionRole, ProcessDevicePosition फ़ंक्शन को S3 निष्पादित करने के लिए अनुमति की आवश्यकता होती है put_object कार्रवाई और डेटा संवर्धन तर्क के लिए आवश्यक कोई अन्य कार्रवाई। समाधान के लिए आवश्यक IAM अनुमतियाँ इसमें प्रलेखित हैं टेम्पलेट.yml फ़ाइल.

{
    "Version":"2012-10-17",
    "Statement":[
        {
            "Action":[
                "s3:ListBucket"
            ],
            "Resource":[
                "arn:aws:s3:::<S3_BUCKET_NAME>"
            ],
            "Effect":"Allow"
        },
        {
            "Action":[
                "s3:PutObject"
            ],
            "Resource":[
                "arn:aws:s3:::<S3_BUCKET_NAME>/<S3_BUCKET_LAMBDA_PREFIX>/*"
            ],
            "Effect":"Allow"
        }
    ]
}

अमेज़ॅन डेटा फ़ायरहोज़ का उपयोग करके डेटा पाइपलाइन

अपनी फ़ायरहोज़ डिलीवरी स्ट्रीम बनाने के लिए निम्नलिखित चरणों को पूरा करें:

  1. अमेज़ॅन डेटा फ़ायरहोज़ कंसोल पर, चुनें फ़ायरहोज़ धाराएँ नेविगेशन फलक में
  2. चुनें फ़ायरहोज़ स्ट्रीम बनाएं.
  3. के लिए स्रोत, के रूप में चुनें सीधा पुट.
  4. के लिए गंतव्य, चुनें अमेज़न S3.
  5. के लिए फ़ायरहोज़ स्ट्रीम नाम, एक नाम दर्ज करें (इस पद के लिए, ProcessDevicePositionFirehose).
    फ़ायरहोज़ स्ट्रीम बनाएं
  6. S3 बकेट के बारे में विवरण के साथ गंतव्य सेटिंग्स कॉन्फ़िगर करें जिसमें विभाजन रणनीति के साथ स्थान डेटा संग्रहीत है:
    1. उपयोग और बकेट और ऑब्जेक्ट उपसर्गों को निर्धारित करने के लिए।
    2. उपयोग DeviceId ऑब्जेक्ट को बकेट में लिखने के लिए एक अतिरिक्त उपसर्ग के रूप में।
  7. सक्षम गतिशील विभाजन और नई लाइन सीमांकक यह सुनिश्चित करने के लिए कि विभाजन स्वचालित है DeviceId, और अमेज़ॅन S3 को डिलीवर किए गए ऑब्जेक्ट में रिकॉर्ड के बीच नई लाइन डिलीमीटर जोड़े जाते हैं।

बाद में डेटा को क्रॉल करने के लिए और एथेना को व्यक्तिगत रिकॉर्ड को पहचानने के लिए AWS ग्लू द्वारा इनकी आवश्यकता होती है।
फ़ायरहोज़ स्ट्रीम के लिए गंतव्य सेटिंग्स

एक इवेंटब्रिज नियम बनाएं और लक्ष्य संलग्न करें

इवेंटब्रिज नियम ProcessDevicePosition दो लक्ष्यों को परिभाषित करता है: ProcessDevicePosition लैम्ब्डा फ़ंक्शन, और ProcessDevicePositionFirehose वितरण धारा. नियम बनाने और लक्ष्य संलग्न करने के लिए निम्नलिखित चरणों को पूरा करें:

  1. इवेंटब्रिज कंसोल पर, एक नया नियम बनाएं।
  2. के लिए नाम, एक नाम दर्ज करें (इस पद के लिए, ProcessDevicePosition).
  3. के लिए घटना बसचुनें चूक.
  4. के लिए नियम प्रकारचुनते हैं एक घटना पैटर्न के साथ नियम.
    इवेंटब्रिज नियम विवरण
  5. के लिए इवेंट स्रोत, चुनते हैं AWS इवेंट या इवेंटब्रिज पार्टनर इवेंट.
    इवेंटब्रिज इवेंट स्रोत
  6. के लिए विधि, चुनते हैं पैटर्न फॉर्म का प्रयोग करें.
  7. में इवेंट पैटर्न अनुभाग, निर्दिष्ट करें AWS सेवाएं स्रोत के रूप में, अमेज़न स्थान सेवा विशिष्ट सेवा के रूप में, और स्थान डिवाइस स्थिति घटना इवेंट प्रकार के रूप में.
    इवेंटब्रिज निर्माण विधि
  8. के लिए लक्ष्य 1, संलग्न करें ProcessDevicePosition लैम्ब्डा एक लक्ष्य के रूप में कार्य करता है।
    इवेंटब्रिज लक्ष्य 1
  9. हम का उपयोग करें इनपुट ट्रांसफॉर्मर S3 बकेट के लिए प्रतिबद्ध ईवेंट को अनुकूलित करने के लिए।
    इवेंटब्रिज लक्ष्य 1 ट्रांसफार्मर
  10. कॉन्फ़िगर इनपुट पथ मानचित्र और इनपुट टेम्प्लेट पेलोड को वांछित प्रारूप में व्यवस्थित करने के लिए।
    1. निम्नलिखित कोड इनपुट पथ मानचित्र है:
      {
          EventType: $.detail.EventType
          TrackerName: $.detail.TrackerName
          DeviceId: $.detail.DeviceId
          SampleTime: $.detail.SampleTime
          ReceivedTime: $.detail.ReceivedTime
          Longitude: $.detail.Position[0]
          Latitude: $.detail.Position[1]
      }

    2. निम्नलिखित कोड इनपुट टेम्पलेट है:
      {
          "EventType":<EventType>,
          "TrackerName":<TrackerName>,
          "DeviceId":<DeviceId>,
          "SampleTime":<SampleTime>,
          "ReceivedTime":<ReceivedTime>,
          "Position":[<Longitude>, <Latitude>]
      }

  11. के लिए लक्ष्य 2, चुनना ProcessDevicePositionFirehose लक्ष्य के रूप में वितरण धारा।
    इवेंटब्रिज लक्ष्य 2

इस लक्ष्य के लिए एक IAM भूमिका की आवश्यकता होती है जो फ़ायरहोज़ डिलीवरी स्ट्रीम में एक या एकाधिक रिकॉर्ड लिखने की अनुमति देती है:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "firehose:PutRecord",
                "firehose:PutRecords"
            ],
            "Resource": [
                "arn:aws:firehose:<region>:<account-id>:deliverystream/<delivery-stream-name>"
            ],
            "Effect": "Allow"
        }
    ]
}

AWS ग्लू का उपयोग करके डेटा को क्रॉल और सूचीबद्ध करें

पर्याप्त डेटा तैयार होने के बाद, निम्नलिखित चरण पूरे करें:

  1. एडब्ल्यूएस गोंद कंसोल पर, चुनें क्रौलर नेविगेशन फलक में
  2. बनाए गए क्रॉलर का चयन करें, location-analytics-glue-crawler-lambda और location-analytics-glue-crawler-firehose.
  3. चुनें रन.

क्रॉलर स्वचालित रूप से डेटा को JSON प्रारूप में वर्गीकृत करेंगे, रिकॉर्ड को तालिकाओं और विभाजनों में समूहित करेंगे, और संबंधित मेटाडेटा को AWS ग्लू डेटा कैटलॉग में प्रतिबद्ध करेंगे।
क्रौलर

  1. जब आखरी बार दोनों क्रॉलर की स्थितियाँ इस प्रकार दिखाई देती हैं सफल हुए, पुष्टि करें कि दो तालिकाएँ (lambda और firehose) पर बनाया गया है टेबल्स इस पृष्ठ पर ज़ूम कई वीडियो ट्यूटोरियल और अन्य साहायक साधन प्रदान करता है।

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

अब आप एथेना का उपयोग करके तालिकाओं पर क्वेरी करने के लिए तैयार हैं।

एथेना का उपयोग करके डेटा को क्वेरी करें

एथेना एक सर्वर रहित, इंटरैक्टिव एनालिटिक्स सेवा है जो असंरचित, अर्ध-संरचित और संरचित डेटा का विश्लेषण करने के लिए बनाई गई है जहां इसे होस्ट किया जाता है। यदि आप पहली बार एथेना कंसोल का उपयोग कर रहे हैं, निर्देशों का पालन करें Amazon S3 में क्वेरी परिणाम स्थान सेट करने के लिए। एथेना के साथ डेटा को क्वेरी करने के लिए, निम्नलिखित चरणों को पूरा करें:

  1. एथेना कंसोल पर, क्वेरी संपादक खोलें।
  2. के लिए डेटा स्रोत, चुनें AwsDataCatalog.
  3. के लिए डाटाबेस, चुनें location-analytics-glue-database.
  4. विकल्प मेनू (तीन लंबवत बिंदु) पर, चुनें पूर्वावलोकन तालिका दोनों तालिकाओं की सामग्री को क्वेरी करने के लिए।
    पूर्वावलोकन तालिका

क्वेरी वर्तमान में तालिका में संग्रहीत 10 नमूना स्थितीय रिकॉर्ड प्रदर्शित करती है। निम्नलिखित स्क्रीनशॉट पूर्वावलोकन का एक उदाहरण है firehose मेज़। firehose टेबल अमेज़ॅन लोकेशन ट्रैकर से कच्चा, असंशोधित डेटा संग्रहीत करता है।
क्वेरी परिणाम
अब आप भू-स्थानिक प्रश्नों के साथ प्रयोग कर सकते हैं 2021 लंदन ULEZ विस्तार के लिए जियोजसन फ़ाइल रिपॉजिटरी का हिस्सा है, और इसे पहले ही दोनों एथेना तालिकाओं के साथ संगत क्वेरी में परिवर्तित कर दिया गया है।

  1. से सामग्री को कॉपी और पेस्ट करें 1-फ़ायरहोज़-एथेना-उलेज़-2021-क्रिएट-व्यू.एसक्यूएल फ़ाइल में पाया गया examples/firehose क्वेरी संपादक में फ़ोल्डर.

यह क्वेरी इसका उपयोग करती है ST_Within भू-स्थानिक फ़ंक्शन यह निर्धारित करने के लिए कि क्या दर्ज की गई स्थिति बहुभुज द्वारा परिभाषित यूएलईजेड क्षेत्र के अंदर या बाहर है। एक नया दृश्य बुलाया गया ulezvehicleanalysis_firehose एक नये कॉलम के साथ बनाया गया है, insidezone, जो कैप्चर करता है कि दर्ज की गई स्थिति ज़ोन के भीतर मौजूद है या नहीं।

एक साधारण पायथन उपयोगिता प्रदान किया गया है, जो डाउनलोड की गई जियोजसन फ़ाइल में पाए जाने वाले बहुभुज सुविधाओं को परिवर्तित करता है ST_Polygon स्ट्रिंग्स पर आधारित है सुप्रसिद्ध पाठ प्रारूप जिसका उपयोग सीधे एथेना क्वेरी में किया जा सकता है।

  1. चुनें पूर्वावलोकन दृश्य पर ulezvehicleanalysis_firehose इसकी सामग्री का पता लगाने के लिए देखें।
    पूर्वावलोकन दृश्य

व्यापक जानकारी प्राप्त करने के लिए अब आप इस दृश्य के विरुद्ध क्वेरी चला सकते हैं।

  1. से सामग्री को कॉपी और पेस्ट करें 2-फ़ायरहोज़-एथेना-उलेज़-2021-क्वेरी-डेज़-इन-ज़ोन.एसक्यूएल फ़ाइल में पाया गया examples/firehose क्वेरी संपादक में फ़ोल्डर.

यह क्वेरी स्थापित करती है कि प्रत्येक वाहन ने ULEZ में कितने दिनों तक प्रवेश किया है, और अपेक्षित कुल शुल्क क्या होगा। का उपयोग करके क्वेरी को पैरामीटरयुक्त किया गया है ? प्लेसहोल्डर चरित्र. पैरामीटरयुक्त प्रश्न आपको विभिन्न पैरामीटर मानों के साथ एक ही क्वेरी को दोबारा चलाने की अनुमति देता है।

  1. के लिए दैनिक शुल्क राशि दर्ज करें पैरामीटर 1, फिर क्वेरी चलाएँ।
    प्रश्न-संपादक

परिणाम प्रत्येक वाहन, प्रस्तावित यूएलईजेड में बिताए गए दिनों की कुल संख्या और आपके द्वारा दर्ज किए गए दैनिक शुल्क के आधार पर कुल शुल्क प्रदर्शित करते हैं।
क्वेरी परिणाम
आप इसका उपयोग करके इस अभ्यास को दोहरा सकते हैं lambda मेज़। डेटा में lambda तालिका को लैम्ब्डा फ़ंक्शन द्वारा संसाधित किए जाने के समय वाहन रखरखाव डायनेमोडीबी तालिका में मौजूद अतिरिक्त वाहन विवरण के साथ संवर्धित किया जाता है। समाधान निम्नलिखित क्षेत्रों का समर्थन करता है:

  • MeetsEmissionStandards (बूलियन)
  • Mileage (संख्या)
  • PurchaseDate (स्ट्रिंग, इन YYYY-MM-DD प्रारूप)

आप नए डेटा के आने पर उसे समृद्ध भी कर सकते हैं।

  1. DynamoDB कंसोल पर, नीचे वाहन रखरखाव तालिका ढूंढें टेबल्स. तालिका का नाम आउटपुट के रूप में प्रदान किया गया है VehicleMaintenanceDynamoTable तैनात क्लाउडफॉर्मेशन स्टैक में।
  2. चुनें टेबल आइटम एक्सप्लोर करें तालिका की सामग्री देखने के लिए.
  3. चुनें आइटम बनाएं किसी वाहन के लिए एक नया रिकॉर्ड बनाने के लिए।
    आइटम बनाएं
  4. दर्ज DeviceId (जैसे vehicle1 एक स्ट्रिंग के रूप में), PurchaseDate (जैसे 2005-10-01 एक स्ट्रिंग के रूप में), Mileage (जैसे 10000 एक संख्या के रूप में), और MeetsEmissionStandards (जैसे मान के साथ False बूलियन के रूप में)।
  5. चुनें आइटम बनाएं रिकॉर्ड बनाने के लिए.
    आइटम बनाएं
  6. अन्य वाहनों (जैसे कि) के लिए अतिरिक्त प्रविष्टियों के साथ नव निर्मित रिकॉर्ड को डुप्लिकेट करें vehicle2 or vehicle3), हर बार विशेषताओं के मानों को थोड़ा संशोधित करना।
  7. पुनः चलाएँ location-analytics-glue-crawler-lambda नया डेटा जेनरेट होने के बाद AWS ग्लू क्रॉलर यह पुष्टि करने के लिए कि नए फ़ील्ड के साथ स्कीमा में अपडेट पंजीकृत है।
  8. से सामग्री को कॉपी और पेस्ट करें 1-लैम्ब्डा-एथेना-उलेज़-2021-क्रिएट-व्यू.एसक्यूएल फ़ाइल में पाया गया examples/lambda क्वेरी संपादक में फ़ोल्डर.
  9. का पूर्वावलोकन करें ulezvehicleanalysis_lambda यह पुष्टि करने के लिए देखें कि नए कॉलम बनाए गए हैं।

यदि त्रुटियाँ जैसे Column 'mileage' cannot be resolved प्रदर्शित होते हैं, डेटा संवर्धन नहीं हो रहा है, या AWS ग्लू क्रॉलर ने अभी तक स्कीमा में अपडेट का पता नहीं लगाया है।

अगर पूर्वावलोकन तालिका विकल्प केवल DynamoDB तालिका में रिकॉर्ड बनाने से पहले के परिणाम लौटा रहा है, क्वेरी परिणामों को अवरोही क्रम में लौटाएँ sampletime (उदाहरण के लिए, order by sampletime desc limit 100;).
क्वेरी परिणाम
अब हम उन वाहनों पर ध्यान केंद्रित करते हैं जो वर्तमान में उत्सर्जन मानकों को पूरा नहीं करते हैं, और प्रति वर्ष माइलेज के आधार पर वाहनों को अवरोही क्रम में व्यवस्थित करते हैं (नवीनतम माइलेज/वर्षों में वाहन की आयु का उपयोग करके गणना की जाती है)।

  1. से सामग्री को कॉपी और पेस्ट करें 2-लैम्ब्डा-एथेना-उलेज़-2021-क्वेरी-डेज़-इन-ज़ोन.एसक्यूएल फ़ाइल में पाया गया examples/lambda क्वेरी संपादक में फ़ोल्डर.
    क्वेरी परिणाम

इस उदाहरण में, हम देख सकते हैं कि हमारे वाहनों के बेड़े में से पाँच को उत्सर्जन मानकों को पूरा नहीं करने की सूचना दी गई है। हम उन वाहनों को भी देख सकते हैं जिन्होंने प्रति वर्ष उच्च माइलेज अर्जित किया है, और प्रस्तावित ULEZ में बिताए गए दिनों की संख्या भी देख सकते हैं। बेड़े संचालक अब प्रतिस्थापन के लिए इन वाहनों को प्राथमिकता देने का निर्णय ले सकते हैं। चूँकि स्थान डेटा अंतर्ग्रहण के समय सबसे अद्यतित वाहन रखरखाव डेटा से समृद्ध होता है, आप एक निर्धारित समय विंडो पर चलने के लिए इन प्रश्नों को और विकसित कर सकते हैं। उदाहरण के लिए, आप पिछले वर्ष के दौरान माइलेज में हुए बदलावों को ध्यान में रख सकते हैं।

डेटा संवर्धन की गतिशील प्रकृति के कारण, क्वेरी परिणामों के साथ अमेज़ॅन एस 3 के लिए प्रतिबद्ध कोई भी नया डेटा डायनेमोडीबी वाहन रखरखाव तालिका में रिकॉर्ड अपडेट होने पर बदल दिया जाएगा।

क्लीन अप

में दिए गए निर्देशों का संदर्भ लें README इस समाधान के लिए प्रावधानित संसाधनों को साफ़ करने के लिए फ़ाइल।

निष्कर्ष

इस पोस्ट में दिखाया गया है कि आप स्थान-जागरूक डेटा पाइपलाइन बनाने के लिए अमेज़ॅन लोकेशन, इवेंटब्रिज, लैम्ब्डा, अमेज़ॅन डेटा फ़ायरहोज़ और अमेज़ॅन एस 3 का उपयोग कैसे कर सकते हैं, और एडब्ल्यूएस ग्लू और एथेना का उपयोग करके विश्लेषणात्मक अंतर्दृष्टि प्राप्त करने के लिए एकत्रित डिवाइस स्थिति डेटा का उपयोग कर सकते हैं। इन परिसंपत्तियों को वास्तविक समय में ट्रैक करके और परिणामों को संग्रहीत करके, कंपनियां मूल्यवान अंतर्दृष्टि प्राप्त कर सकती हैं कि उनके बेड़े का उपयोग कितने प्रभावी ढंग से किया जा रहा है और भविष्य में परिवर्तनों पर बेहतर प्रतिक्रिया दे सकते हैं। अब आप इस नमूना कोड को अपने डिवाइस ट्रैकिंग डेटा और एनालिटिक्स आवश्यकताओं के साथ विस्तारित करने का पता लगा सकते हैं।


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

एलन पीटी AWS में सीनियर पार्टनर सॉल्यूशंस आर्किटेक्ट हैं। एलन ग्लोबल सिस्टम इंटीग्रेटर्स (जीएसआई) और ग्लोबल इंडिपेंडेंट सॉफ्टवेयर वेंडर्स (जीआईएसवी) को एडब्ल्यूएस सेवाओं का उपयोग करके जटिल ग्राहक चुनौतियों को हल करने में मदद करता है। AWS में शामिल होने से पहले, एलन ने व्यावसायिक आवश्यकताओं को तकनीकी समाधानों में बदलने के लिए सिस्टम इंटीग्रेटर्स में एक वास्तुकार के रूप में काम किया। काम के अलावा, एलन एक IoT उत्साही और एक उत्सुक धावक है, जिसे अंग्रेजी ग्रामीण इलाकों की कीचड़ भरी पगडंडियों पर चलना पसंद है।

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

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

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

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