Studi Kasus: Membangun sistem notifikasi

Pengantar AWS Boto di Python

Maksim Pecherskiy

Data Engineer

Produk akhir

Produk akhir

Produk akhir

Pengantar AWS Boto di Python

Produk akhir

Produk akhir

Pengantar AWS Boto di Python

Produk akhir

Produk akhir

Pengantar AWS Boto di Python

Produk akhir

Produk akhir

Pengantar AWS Boto di Python

Membangun sistem notifikasi

Penyiapan Topik

  • Buat topik
  • Unduh CSV daftar kontak
  • Buat topik untuk tiap layanan
  • Langganan kontak ke topik masing-masing
Pengantar AWS Boto di Python

Membangun sistem notifikasi

Dapatkan angka teragregasi

  • Unduh laporan bulanan get it done
  • Dapatkan jumlah Potholes
  • Dapatkan jumlah notifikasi Illegal dumping

Kirim peringatan

  • Jika potholes > 100, kirim peringatan
  • Jika illegal dumping > 30, kirim peringatan
Pengantar AWS Boto di Python

Penyiapan topik

Inisialisasi klien SNS

sns = boto3.client('sns', 
                   region_name='us-east-1',
                   aws_access_key_id=AWS_KEY_ID, 
                   aws_secret_access_key=AWS_SECRET)

Buat topik dan simpan ARN-nya

trash_arn = sns.create_topic(Name="trash_notifications")['TopicArn']
streets_arn = sns.create_topic(Name="streets_notifications")['TopicArn']
Pengantar AWS Boto di Python

Penyiapan topik

Penyiapan topik

Pengantar AWS Boto di Python

Melanggankan pengguna ke topik

contacts = pd.read_csv('http://gid-staging.contacts.csv')
Pengantar AWS Boto di Python

Melanggankan pengguna ke topik

contacts.csv

Name Email Phone Department
John Smith [email protected] +11224567890 trash
Fanny Mae [email protected] +11234597890 trash
Janessa Goldsmith [email protected] +11534567890 streets
Evelyn Monroe [email protected] +11234067890 streets
Max Pe [email protected] +11234517890 streets
Pengantar AWS Boto di Python

Melanggankan pengguna ke topik

Buat metode subscribe_user

def subscribe_user(user_row):

if user_row['Department'] == 'trash': sns.subscribe(TopicArn = trash_arn, Protocol='sms', Endpoint=str(user_row['Phone'])) sns.subscribe(TopicArn = trash_arn, Protocol='email', Endpoint=user_row['Email'])
else: sns.subscribe(TopicArn = streets_arn, Protocol='sms', Endpoint=str(user_row['Phone'])) sns.subscribe(TopicArn = streets_arn, Protocol='email', Endpoint=user_row['Email'])

Terapkan metode subscribe_user ke setiap baris

contacts.apply(subscribe_user, axis=1)
Pengantar AWS Boto di Python

Melanggankan pengguna ke topik

Melanggankan pengguna ke topik

Pengantar AWS Boto di Python

Dapatkan angka teragregasi

Muat laporan Januari ke DataFrame

df = pd.read_csv('http://gid-reports.2019/feb/final_report.csv')
Pengantar AWS Boto di Python

Dapatkan angka teragregasi

service_name count
Illegal Dumping 2580
Potential Missed Collection 150
Pothole 1170
Traffic Sign - Maintain 210
Traffic Signal Head Turned 60
Traffic Signal Light Out 120
Pengantar AWS Boto di Python

Dapatkan angka teragregasi

Setel index agar bisa akses jumlah per nama layanan langsung

df.set_index('service_name', inplace=True)

Dapatkan angka teragregasi

trash_violations_count = df.at['Illegal Dumping', 'count']
streets_violations_count = df.at['Pothole', 'count']
Pengantar AWS Boto di Python

Kirim peringatan

if trash_violations_count > 100:

# Construct the message to send message = "Trash violations count is now {}".format(trash_violations_count)
# Send message sns.publish(TopicArn = trash_arn, Message = message, Subject = "Trash Alert")
Pengantar AWS Boto di Python

Kirim peringatan

if streets_violations_count > 30:

    # Construct the message to send
    message = "Streets violations count is now {}".format(streets_violations_count)

# Send message sns.publish(TopicArn = streets_arn, Message = message, Subject = "Streets Alert")
Pengantar AWS Boto di Python

Hasil akhir

Hasil akhir

Pengantar AWS Boto di Python

Ayo berlatih!

Pengantar AWS Boto di Python

Preparing Video For Download...