Serverless APIs

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

Maksim Pecherskiy

Data Engineer

पिछला पाठ

RGv3B.png

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

डेटा तक पहुँच देना

htdz9.png

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

सिंपल API

XTKzt.png

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

सिंपल API

RFhY5.png

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

सिंपल API

SuISK.png

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

एक ट्रिगर जोड़ें

jSRoQ.png

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

नई API टेस्ट करें

JtGop.png

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

हमारी पहली API

r2u54G.png

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

API पैरामीटर

सैंपल रिक्वेस्ट
https://.../speederReporterApi?date=20200620
सैंपल इवेंट
{
  "queryStringParameters": {
    "date": "20200620"
  },
  "isBase64Encoded": false
}
AWS Kinesis और Lambda के साथ स्ट्रीमिंग डेटा

Lambda हैंडलर

import json, boto3
import awswrangler as wr
import pandas as pd

session = boto3.Session(aws_access_key_id = AWS_KEY, aws_secret_access_key = AWS_SECRET, region_name="us-east-1")
AWS Kinesis और Lambda के साथ स्ट्रीमिंग डेटा

Lambda हैंडलर

def lambda_handler(event, context):
    filter_date = event['queryStringParameters']['date']

df = wr.s3.read_csv( f"s3://sd-vehicle-data/speeders_daily/{filter_date}.csv", boto3_session=session, delimiter=" ")
AWS Kinesis और Lambda के साथ स्ट्रीमिंग डेटा

डेटा से रिस्पॉन्ड करें

def lambda_handler(event, context):
    ...
    return {
        'statusCode': 200,
        'headers': {
            "content-type" : "application/json"
        },
        'body': df.to_json()
    }
AWS Kinesis और Lambda के साथ स्ट्रीमिंग डेटा

लाइव रिस्पॉन्स

https://.../default/speederReporterApi?date=20200621
[
  {
      "record_id":"939ed1d1-1740-420c-8906-445278573c7f",
      "timestamp":"4:25:06.000",
      "vin":"4FTEX4944AK844294",
      "lon":106.9447146,
      "lat":-6.3385652,
      "speed":25
  },
  {
      "record_id":"f29a5b3d-d0fa-43c0-9e1a-e2a5cdb8be7a",
      ...
  },

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

दूसरी Lambda ट्रिगर करें

oJAqB.png

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

दूसरी Lambda ट्रिगर करें

def trigger_recalc():
  lambda_client = boto3.client("s3", 
                            aws_access_key_id = AWS_KEY, 
                            aws_secret_access_key = AWS_SECRET, 
                            region_name = 'us-east-1')

def lambda_handler(event, context):
  ...

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

speederAggregator ARN

oB7uh.png

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

Invoke करें

def trigger_recalc():
  ...
  lambda_client.invoke(
    FunctionName='arn:aws:lambda:us-east-1:458913182630:function:speederAggregator',
    InvocationType='Event', # (or RequestResponse)
  )
AWS Kinesis और Lambda के साथ स्ट्रीमिंग डेटा

रीव्यू

f44P0.png

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

रीव्यू

Oi7du.png

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

रीव्यू

8yfg4.png

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

रीव्यू

BTM2Q.png

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

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

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

Preparing Video For Download...