API tanpa server

Streaming Data dengan AWS Kinesis dan Lambda

Maksim Pecherskiy

Data Engineer

Pelajaran sebelumnya

RGv3B.png

Streaming Data dengan AWS Kinesis dan Lambda

Memberi akses ke data

htdz9.png

Streaming Data dengan AWS Kinesis dan Lambda

API sederhana

XTKzt.png

Streaming Data dengan AWS Kinesis dan Lambda

API sederhana

RFhY5.png

Streaming Data dengan AWS Kinesis dan Lambda

API sederhana

SuISK.png

Streaming Data dengan AWS Kinesis dan Lambda

Tambahkan pemicu

jSRoQ.png

Streaming Data dengan AWS Kinesis dan Lambda

Uji API baru Anda

JtGop.png

Streaming Data dengan AWS Kinesis dan Lambda

API pertama kita

r2u54G.png

Streaming Data dengan AWS Kinesis dan Lambda

Parameter API

Contoh request
https://.../speederReporterApi?date=20200620
Contoh event
{
  "queryStringParameters": {
    "date": "20200620"
  },
  "isBase64Encoded": false
}
Streaming Data dengan AWS Kinesis dan Lambda

Handler 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")
Streaming Data dengan AWS Kinesis dan Lambda

Handler 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=" ")
Streaming Data dengan AWS Kinesis dan Lambda

Kirim respons data

def lambda_handler(event, context):
    ...
    return {
        'statusCode': 200,
        'headers': {
            "content-type" : "application/json"
        },
        'body': df.to_json()
    }
Streaming Data dengan AWS Kinesis dan Lambda

Respons langsung

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",
      ...
  },

  ...
]
Streaming Data dengan AWS Kinesis dan Lambda

Memicu Lambda lain

oJAqB.png

Streaming Data dengan AWS Kinesis dan Lambda

Memicu Lambda lain

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):
  ...

Streaming Data dengan AWS Kinesis dan Lambda

ARN speederAggregator

oB7uh.png

Streaming Data dengan AWS Kinesis dan Lambda

Invoke

def trigger_recalc():
  ...
  lambda_client.invoke(
    FunctionName='arn:aws:lambda:us-east-1:458913182630:function:speederAggregator',
    InvocationType='Event', # (or RequestResponse)
  )
Streaming Data dengan AWS Kinesis dan Lambda

Ulasan

f44P0.png

Streaming Data dengan AWS Kinesis dan Lambda

Ulasan

Oi7du.png

Streaming Data dengan AWS Kinesis dan Lambda

Ulasan

8yfg4.png

Streaming Data dengan AWS Kinesis dan Lambda

Ulasan

BTM2Q.png

Streaming Data dengan AWS Kinesis dan Lambda

Ayo berlatih!

Streaming Data dengan AWS Kinesis dan Lambda

Preparing Video For Download...