Bekerja dengan Firehose delivery stream

Streaming Data dengan AWS Kinesis dan Lambda

Maksim Pecherskiy

Data Engineer

Siap membuat stream

KF414O.png

Streaming Data dengan AWS Kinesis dan Lambda

Siap membuat stream

YgVbe.png

Streaming Data dengan AWS Kinesis dan Lambda

Siap membuat stream

BBYB4.png

Streaming Data dengan AWS Kinesis dan Lambda

Siap membuat stream

Ue73e.png

Streaming Data dengan AWS Kinesis dan Lambda

Siap membuat stream

qUq0E.png

Streaming Data dengan AWS Kinesis dan Lambda

Dapatkan Role ARN

qH99c.png

Streaming Data dengan AWS Kinesis dan Lambda

Inisialisasi klien boto3

import boto3

firehose = boto3.client('firehose', 
                        aws_access_key_id=AWS_KEY_ID, 
                        aws_secret_access_key=AWS_SECRET, 
                        region_name='us-east-1')
Streaming Data dengan AWS Kinesis dan Lambda

Buat stream!

res = firehose.create_delivery_stream(

DeliveryStreamName = "gps-delivery-stream",
DeliveryStreamType = "DirectPut",
S3DestinationConfiguration = {
"RoleARN": "arn:aws:iam::0000000:role/firehoseDeliveryRole",
"BucketARN": "arn:aws:s3:::sd-vehicle-data"
}
)
Streaming Data dengan AWS Kinesis dan Lambda

Respons pembuatan stream

print(res['DeliveryStreamARN'])
# ARN Stream baru
"arn:aws:firehose:us-east-1:0000000:deliverystream/gps-delivery-stream"
Streaming Data dengan AWS Kinesis dan Lambda

Stream siap

z0Fp4.png

Streaming Data dengan AWS Kinesis dan Lambda

Menulis ke stream

La0zZ.png

Streaming Data dengan AWS Kinesis dan Lambda

Perangkat telematika

OGHUHC.png

Streaming Data dengan AWS Kinesis dan Lambda

Pengiriman data telematika

wCJz8.png

Streaming Data dengan AWS Kinesis dan Lambda

Satu rekaman

{

'record_id': '939ed1d1-1740-420c-8906-445278573c7f', # <-- ID rekaman unik
'timestamp': '4:25:06.000', # <-- waktu pengukuran
'vin': '4FTEX4944AK844294', # <-- ID kendaraan
'lon': 106.9447146, # <-- bujur lokasi kendaraan
'lat': -6.3385652, # <-- lintang lokasi kendaraan
'speed': 25 # <-- kecepatan kendaraan
}
Streaming Data dengan AWS Kinesis dan Lambda

Rekaman masuk

vRg6A.png

Streaming Data dengan AWS Kinesis dan Lambda

Kasus penggunaan lain

gu6oT.png

Streaming Data dengan AWS Kinesis dan Lambda

Kasus penggunaan lain

XFD7E.png

Streaming Data dengan AWS Kinesis dan Lambda

Pola

h7hUU.png

Streaming Data dengan AWS Kinesis dan Lambda

Mengirim satu rekaman

res = firehose.put_record(

DeliveryStreamName='gps-delivery-stream',
Record = { 'Data': payload }
)
Streaming Data dengan AWS Kinesis dan Lambda

Mengirim satu rekaman

    Record = {
        'Data': payload 
    }
Streaming Data dengan AWS Kinesis dan Lambda

Mengirim satu rekaman

Seperti apa Record kita
record = {
 'record_id': '939ed1d1-1740-420c-8906-445278573c7f',
 'timestamp': '4:25:06.000','vin': '4FTEX4944AK844294',
 'lon': 106.9447146,'lat': -6.338565200000001,
 'speed': 25}
Yang ingin kita kirim (satu string)
"939ed1d1-1740-420c-8906-445278573c7f 4:25:06.000 
4FTEX4944AK844294 106.9447146 -6.338565200000001 25"
Streaming Data dengan AWS Kinesis dan Lambda

Mengirim satu rekaman

payload = " ".join(
    str(value) for value in record.values()
)
print(payload)
"939ed1d1-1740-420c-8906-445278573c7f 4:25:06.000 
4FTEX4944AK844294 106.9447146 -6.338565200000001 25"
Streaming Data dengan AWS Kinesis dan Lambda

Menggabungkan semuanya

record = {
 'record_id': '939ed1d1-1740-420c-8906-445278573c7f',
 'timestamp': '4:25:06.000','vin': '4FTEX4944AK844294',
 'lon': 106.9447146,'lat': -6.338565200000001, 'speed': 25}

payload = " ".join( str(value) for value in record.values() )
#"939ed1d1-1740-420c-8906-445278573c7f 4:25:06.000 4FTEX4944AK844294 106.9447146 -6.338565200000001 25"
Streaming Data dengan AWS Kinesis dan Lambda

Menggabungkan semuanya

res = firehose.put_record(
    DeliveryStreamName='gps-delivery-stream',
    Record = {
        'Data': payload + "\n" #<-- Baris baru!
    }
)
Streaming Data dengan AWS Kinesis dan Lambda

File dibuat

McYNJ.png

Streaming Data dengan AWS Kinesis dan Lambda

Contoh data

939ed1d1-1740-420c-8906-445278573c7f 4:25:06.000 4FTEX4944AK844294 106.9447146 -6.338565200000001 25
f29a5b3d-d0fa-43c0-9e1a-e2a5cdb8be7a 8:10:47.000 3FTEX1G5XAK844393 108.58068100000001 34.79925 37
ff8e7131-408d-463b-8d07-d016419b0656 20:26:44.000 2LAXX1C8XAK844292 114.39239199999999 36.097577 90
bc75da5f-1bf6-444c-80ad-49c180e1b8de 23:16:06.000 3FTEX1G5XAK844393 -76.6990172 2.481207 40
7bdcf779-444e-4313-83da-140461933aeb 22:28:44.000 5FTEX1MAXAK844295 -47.0145295 -21.4649238 40
Streaming Data dengan AWS Kinesis dan Lambda

File dibuat

X0px9.png

Streaming Data dengan AWS Kinesis dan Lambda

Buat klien S3

# Create boto3 S3 client.
s3 = boto3.client('s3', 
                  aws_access_key_id=AWS_KEY_ID, 
                  aws_secret_access_key=AWS_SECRET, 
                  region_name='us-east-1')
Streaming Data dengan AWS Kinesis dan Lambda

Baca data ke DataFrame

# Get the object from S3
obj_data = s3.get_object(Bucket='sd-vehicle-data', Key=KEY_YOU_COPIED)
# Read read the object into a DataFrame
vehicle_data = pd.read_csv(
    data['Body'], 
    delimiter = " ", 
    names=["record_id", "timestamp", "vin", "lon", "lat", "speed"]))
Streaming Data dengan AWS Kinesis dan Lambda

vehicle_data

record_id timestamp vin lon lat speed
0 939ed1d1... 4:25:06.000 4FTEX4944AK844294 106.945 -6.33857 25
1 f29a5b3d... 8:10:47.000 3FTEX1G5XAK844393 108.581 34.7993 37
2 ff8e7131... 20:26:44.000 2LAXX1C8XAK844292 114.392 36.0976 90
3 bc75da5f... 23:16:06.000 3FTEX1G5XAK844393 -76.699 2.48121 40
4 7bdcf779... 22:28:44.000 5FTEX1MAXAK844295 -47.0145 -21.4649 40
Streaming Data dengan AWS Kinesis dan Lambda

Ringkasan

qUq0E.png

Streaming Data dengan AWS Kinesis dan Lambda

Ringkasan

res = firehose.create_delivery_stream(

DeliveryStreamName = "gps-delivery-stream",
DeliveryStreamType = "DirectPut",
S3DestinationConfiguration = {
"RoleARN": "arn:aws:iam::0000000:role/firehoseDeliveryRole",
"BucketARN": "arn:aws:s3:::sd-vehicle-data",
}
)
Streaming Data dengan AWS Kinesis dan Lambda

Ringkasan

wCJz8.png

Streaming Data dengan AWS Kinesis dan Lambda

Ringkasan

Streaming Data dengan AWS Kinesis dan Lambda

Ringkasan

record_id timestamp vin lon lat speed
0 939ed1d1... 4:25:06.000 4FTEX4944AK844294 106.945 -6.33857 25
1 f29a5b3d... 8:10:47.000 3FTEX1G5XAK844393 108.581 34.7993 37
2 ff8e7131... 20:26:44.000 2LAXX1C8XAK844292 114.392 36.0976 90
3 bc75da5f... 23:16:06.000 3FTEX1G5XAK844393 -76.699 2.48121 40
4 7bdcf779... 22:28:44.000 5FTEX1MAXAK844295 -47.0145 -21.4649 40
Streaming Data dengan AWS Kinesis dan Lambda

Ayo berlatih!

Streaming Data dengan AWS Kinesis dan Lambda

Preparing Video For Download...