Sunucusuz API’ler

AWS Kinesis ve Lambda ile Akış Verileri

Maksim Pecherskiy

Data Engineer

Önceki ders

RGv3B.png

AWS Kinesis ve Lambda ile Akış Verileri

Veriye erişim sağlama

htdz9.png

AWS Kinesis ve Lambda ile Akış Verileri

Basit API

XTKzt.png

AWS Kinesis ve Lambda ile Akış Verileri

Basit API

RFhY5.png

AWS Kinesis ve Lambda ile Akış Verileri

Basit API

SuISK.png

AWS Kinesis ve Lambda ile Akış Verileri

Tetikleyici ekleyin

jSRoQ.png

AWS Kinesis ve Lambda ile Akış Verileri

Yeni API’nizi test edin

JtGop.png

AWS Kinesis ve Lambda ile Akış Verileri

İlk API’miz

r2u54G.png

AWS Kinesis ve Lambda ile Akış Verileri

API parametreleri

Örnek istek
https://.../speederReporterApi?date=20200620
Örnek olay
{
  "queryStringParameters": {
    "date": "20200620"
  },
  "isBase64Encoded": false
}
AWS Kinesis ve Lambda ile Akış Verileri

Lambda işleyici (handler)

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 ve Lambda ile Akış Verileri

Lambda işleyici (handler)

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 ve Lambda ile Akış Verileri

Veriyle yanıt verin

def lambda_handler(event, context):
    ...
    return {
        'statusCode': 200,
        'headers': {
            "content-type" : "application/json"
        },
        'body': df.to_json()
    }
AWS Kinesis ve Lambda ile Akış Verileri

Canlı yanıt

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 ve Lambda ile Akış Verileri

Başka bir Lambda’yı tetikleyin

oJAqB.png

AWS Kinesis ve Lambda ile Akış Verileri

Başka bir Lambda’yı tetikleyin

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 ve Lambda ile Akış Verileri

speederAggregator ARN’si

oB7uh.png

AWS Kinesis ve Lambda ile Akış Verileri

Çağırma (Invoke)

def trigger_recalc():
  ...
  lambda_client.invoke(
    FunctionName='arn:aws:lambda:us-east-1:458913182630:function:speederAggregator',
    InvocationType='Event', # (or RequestResponse)
  )
AWS Kinesis ve Lambda ile Akış Verileri

Gözden geçirme

f44P0.png

AWS Kinesis ve Lambda ile Akış Verileri

Gözden geçirme

Oi7du.png

AWS Kinesis ve Lambda ile Akış Verileri

Gözden geçirme

8yfg4.png

AWS Kinesis ve Lambda ile Akış Verileri

Gözden geçirme

BTM2Q.png

AWS Kinesis ve Lambda ile Akış Verileri

Hadi pratik yapalım!

AWS Kinesis ve Lambda ile Akış Verileri

Preparing Video For Download...