आपका पहला लाइव lambda!

AWS Kinesis और Lambda के साथ स्ट्रीमिंग डेटा

Maksim Pecherskiy

Data Engineer

पिछला पाठ

StkGt.png

AWS Kinesis और Lambda के साथ स्ट्रीमिंग डेटा

यह पाठ

Zb4Va.png

AWS Kinesis और Lambda के साथ स्ट्रीमिंग डेटा

सामान्य लॉग फ़ॉर्मैट

bc75da5f-1bf6-444c-80ad-49c180e1b8de 23:16:06.000 3FTEX1G5XAK844393 -76.6990172 2.481207 40
ff8e7131-408d-463b-8d07-d016419b0656 20:26:44.000 2LAXX1C8XAK844292 114.39239199999999 36.097577 90
f29a5b3d-d0fa-43c0-9e1a-e2a5cdb8be7a 8:10:47.000 3FTEX1G5XAK844393 108.58068100000001 34.79925 37
AWS Kinesis और Lambda के साथ स्ट्रीमिंग डेटा

S3 फ़ाइलें पढ़ना

import pandas as pd

results in:

Response:
{
  "errorMessage": "Unable to import module 'lambda_function': No module named 'pandas'",
  "errorType": "Runtime.ImportModuleError"
}
AWS Kinesis और Lambda के साथ स्ट्रीमिंग डेटा

हैंडलर अपडेट करना

#lambda_function.py
import json, boto3, pandas as pd
# Initialize clients
...

SPEED_ALERT_THRESHOLD = 45 ALERT_PHONE_NUMBER = "+1234567890"
# Helper function to get dataframe from written records def get_new_data(event): pd.read_csv()... ... return data
# Lambda function handler def record_created_handler(event, context): data = get_new_data(event) ... sns.publish() ...
AWS Kinesis और Lambda के साथ स्ट्रीमिंग डेटा

get_new_data()

def get_new_data(event):
    # Create a list to store new object keys.
    written_objects = []

    # Iterate over each S3 event record.
    for record in event['Records']:

        # Get the variables to check for
        event_name = record['eventName']
        bucket_name = record['s3']['bucket']['name']
        obj_key = record['s3']['object']['key']
AWS Kinesis और Lambda के साथ स्ट्रीमिंग डेटा

get_new_data()

def get_new_data(event):
        ...
        # Verify that event is created from sd-vehicle-data bucket.
        if event_name == 'ObjectCreated:Put' and bucket_name == 'sd-vehicle-data':

obj = s3.get_object(Bucket=bucket_name, Key = obj_key) df = pd.read_csv(obj['Body'], delimiter = " ", names=["record_id", "timestamp", "vin", "lon", "lat", "speed"])
written_objects.append(df)
# Concatenate new records into a single dataframe. return pd.concat(written_objects)
AWS Kinesis और Lambda के साथ स्ट्रीमिंग डेटा

record_created_handler()

SPEED_ALERT_THRESHOLD = 45
ALERT_PHONE_NUMBER = "+1234567890"
...
def record_created_handler(event, context):
    # Call the helper method
    data = get_new_data(event)

## Get the top speeds top_speeds = data.groupby(['vin'])['speed'].max().reset_index()
## Get top speeds that exceed the limit of 45 too_fast = top_speeds.loc[top_speeds.speed > SPEED_ALERT_THRESHOLD, :]
AWS Kinesis और Lambda के साथ स्ट्रीमिंग डेटा

record_created_handler()

SPEED_ALERT_THRESHOLD = 45
ALERT_PHONE_NUMBER = "+1234567890"
...

def record_created_handler(event, context):
    ...
    ## Send SMS
    sns.publish(PhoneNumber=ALERT_PHONE_NUMBER,
        Message="Speeding Alert \n" + too_fast.to_string())

## This doesn't go anywhere yet, but we need to return something. totals = data.groupby(['vin'])['speed'].max().reset_index() return totals.to_csv(sep=" ", index=False)
AWS Kinesis और Lambda के साथ स्ट्रीमिंग डेटा

Lambda फंक्शन का टेस्ट करें

jBpMo.png

KodWB.png

AWS Kinesis और Lambda के साथ स्ट्रीमिंग डेटा

Environment variables जोड़ना

import os
os.environ.get("ENV_VARIABLE_NAME", "DEFAULT_VALUE")
import os
SPEED_ALERT_THRESHOLD = os.environ.get("SPEED_ALERT_THRESHOLD", 45)
ALERT_PHONE_NUMBER = os.environ.get("ALERT_PHONE_NUMBER", None)
...

def record_created_handler(event, context):
    ...
AWS Kinesis और Lambda के साथ स्ट्रीमिंग डेटा

Environment variables जोड़ना

7jD6x.png

AWS Kinesis और Lambda के साथ स्ट्रीमिंग डेटा

Environment variables जोड़ना

eDRTX.png

AWS Kinesis और Lambda के साथ स्ट्रीमिंग डेटा

yKjWC.png

AWS Kinesis और Lambda के साथ स्ट्रीमिंग डेटा

ट्रिगर जोड़ना

gLmbZD.png

AWS Kinesis और Lambda के साथ स्ट्रीमिंग डेटा

ट्रिगर जोड़ना

7F08p.png

AWS Kinesis और Lambda के साथ स्ट्रीमिंग डेटा

ट्रिगर जोड़ना

bPUtX.png

AWS Kinesis और Lambda के साथ स्ट्रीमिंग डेटा

रीव्यू

ZAbfT.png

AWS Kinesis और Lambda के साथ स्ट्रीमिंग डेटा

रीव्यू

m9jlv.png

AWS Kinesis और Lambda के साथ स्ट्रीमिंग डेटा

रीव्यू

GTlyD.png

AWS Kinesis और Lambda के साथ स्ट्रीमिंग डेटा

रीव्यू

XddOW.png

AWS Kinesis और Lambda के साथ स्ट्रीमिंग डेटा

अभ्यास करते हैं!

AWS Kinesis और Lambda के साथ स्ट्रीमिंग डेटा

Preparing Video For Download...