วิธีการสร้างระบบดึงข้อมูล API แบบอัตโนมัติด้วย Amazon Web Services

amazon web services api

สวัสดีค่ะ เพื่อนๆ หลังจากที่มีบทความเกี่ยวกับการสอบ AWS ไปแล้ว เราเลยอยากให้เพื่อนๆเห็นภาพว่าเราสามารถนำบริการต่างๆไปใช้ได้อย่างไรบ้าง วันนี้เราจะมาลองอธิบายวิธีการง่ายๆในการดึงข้อมูลจาก API ตั้งแต่ต้นจนจบแบบอัตโนมัติด้วยเครื่องมือจาก Amazon Web Services หรือ AWS กันค่ะ

เริ่มจากทำความรู้จักกับ AWS และบริการที่เราจะใช้กันก่อนจะได้ไม่สับสนกันนะคะ

Amazon Web Service (AWS)

หลายๆคนอาจจะคุ้ยเคยกับการสั่งของออนไลห์จาก Amazon เพราะหาได้ทุกอย่างตั้งแต่สากกะเบือยันเรือรบ และส่งของไวมาก แต่ไม่เคยรู้มาก่อนว่า Amazon ยังมี Amazon Web Services ซึ่งให้บริการด้านเทคโนโลยี

Amazon Web Services หรือ AWS เป็นแพลตฟอร์มคลาวด์ที่ครอบคลุมและถูกนำมาใช้มากที่สุดในโลก (มีส่วนแบ่งตลาดมากกว่าทั้ง Google Cloud Platform และ Microsoft Azure) โดยมีบริการด้าน Cloud Computing หลากหลายมากกว่า 200 บริการ สามารถใช้บริการได้จากทั่วทุกมุมโลก เพื่อลดค่าใช้จ่าย เพิ่มความคล่องตัว และสร้างสรรค์นวัตกรรมที่รวดเร็วยิ่งขึ้น

ใครที่ยังไม่ค่อยคุ้นกับคำว่า Cloud Computing สามารถเข้าไปทำความเข้าใจเพิ่มเติมได้ในบทความ Cloud Computing มีประเภทอะไรบ้าง บริการด้าน Data ที่คุณต้องรู้

Service ใน AWS

Amazon S3 (Amazon Simsple Storage Service)

AWS S3 1
Amazon S3

เป็นบริการในการจัดเก็บข้อมูลแบบ Object Storage ซึ่งเป็นการจัดเก็บข้อมูลประเภทหนึ่งที่แต่ละ Object ถูกเก็บเป็นหน่วยที่แยกกัน

สามารถเก็บข้อมูลได้เกือบทุกประเภท เช่น CSV, JSON วิดีโอ เสียง ข้อความ หรือไฟล์ประเภทอื่นๆเหมือนกระเป๋าวิเศษเป็นต้น

นอกจากนี้ยังมีความสามารถในการปรับขนาด ความพร้อมใช้งานของข้อมูล ความปลอดภัย และสามารถเก็บเป็นแบบ Version ได้ด้วย

เราจะใช้ Amazon S3 ในการเก็บข้อมูลที่เราจะดึงมาจาก API กัน

AWS Lambda

เมื่อมีที่เก็บข้อมูลแล้ว บริการต่อมาที่เราใช้ดึงข้อมูลก็คือ Lambda ฟังชั่นนั่นเอง

AWS lambda 1
AWS Lambda

Lambda ฟังชั่นเป็นบริการที่สามารถเรียกใช้โค้ดโดยไม่ต้องนึกถึงเซิร์ฟเวอร์ หรือ Serverless

พูดง่ายๆก็คือเราเขียนโค้ด โดยไม่ต้องทำอะไรอย่างจัดการโครงสร้างเลย ฟังชั่นจะเชื่อมต่อกับบริการอื่นตามโค้ดที่เราเขียนโดยอัตโนมัติได้ทุกประเภท เพียงแค่อ้างอิงจากโค้ด

นอกจากนี้ยังให้บริการอย่างจุใจ โดยเราสามารถเรียกใช้ Lambda ฟังชั่น ได้ถึง 1 ล้านครั้งต่อเดือนใน Free Tier

Amazon CloudWatch

รู้จักกับบริการที่เก็บข้อมูล และฟังชั่นที่ใช้ดึงข้อมูลจาก API กันไปแล้ว เราจะทำอย่างไรให้ดึงข้อมูลโดยอัตโนมัติทุกวันในเวลาที่เราต้องการได้ละ CloudWatch ช่วยคุณในเรื่องนี้ได้

Amazon CloudWatch
Amazon CloudWatch

CloudWatch เป็นบริการตรวจสอบ เฝ้าสังเกตและทำการตอบสนองต่อเหตุการณ์การดำเนินงานเป็นแบบอัตโนมัติ ด้วยความสามารถนี้เองทำให้เราสามารถเรียกใช้ระบบแบบไร้เซิร์ฟเวอร์ได้ตามกำหนดเวลา

โดยทำการตั้ง Amazon CloudWatch Event ขึ้นมาพร้อมตั้งเวลาตามที่เราต้องการผ่าน CronJob เมื่อถึงเวลาที่กำหนดไว้ Event ก็จะทำการกระตุ้นบริการอื่นหรือ Lambda ฟังชั่นที่เราจะใช้ให้ทำงาน

มาถึงตรงนี้ เพื่อนๆหลายคนอาจจะไม่คุ้นเคยกับ CronJob นัก เราเลยจะมาอธิบายเพิ่มเติมว่า CronJob คืออะไร

CronJob คืออะไร

CronJob คือ คำสั่งที่ตั้งไว้เพื่อให้ทำตามเวลาที่กำหนด เหมาะสำหรับงานบางอย่างที่ต้องทำซ้ำๆ หลายๆ ครั้ง อาจจะเป็นทุกๆเดือนทุกๆวัน ทุกๆชั่วโมง หรือทุกๆนาทีก็ได้ โดยสามารถเขียนได้ตามด้านล่างนี้ เรียงกันไป

cron(* * * * ? *) 
#cron(นาที ชั่วโมง วันในเดือน เดือน วันของสัปดาห์ ปี)

ยกตัวอย่างให้ดูกันสั้นๆ จะได้เข้าใจกันจริงๆและนำไปใช้งานต่อได้

ตัวอย่างเวลาการเขียน cron
10 โมง 15 นาที ตอนเช้าทุกๆวันcron(15 10 * * ? *)
6 โมงเย็น วันจันทร์ถึงวันศุกร์cron(0 18 ? * MON-FRI *)
8 โมงเช้า วันแรกของเดือนcron(0 8 1 * ? *)

สังเกตได้ว่าการระบุเวลานั้น ตำแหน่งแรกเป็นนาที ตำแหน่งที่สองเป็นชั่วโมง ตำแหน่งที่สามเป็นวันในเดือน ซึ่งแทนด้วย * ในตัวอย่างแรก ตำแหน่งที่สี่เป็นเดือน ตำแหน่งที่ห้าเป็นวันในสัปดาห์ ซึ่งแทนด้วย ? ในตัวอย่างแรกเช่นกัน และตำแหน่งสุดท้ายเป็นปี

* (asterisk) เป็น wildcard ตัวหนึ่ง มีความหมายว่ารวมทุกค่าในตำแหน่งนั้นๆ และ ? (question mark) เป็น wildcard อีกตัวหนึ่ง มีความหมายว่าค่าใดค่าหนึ่ง กฎจะมีอยู่ว่าสามารถห้ามใช้ * ในทั้งตำแหน่งวันในเดือนและตำแหน่งวันของสัปดาห์พร้อมๆกัน แต่สามารถใช้ ? แทนในอีกตำแหน่งได้

ยังมี wildcard ตัวอื่นเช่น , (comma) ที่ไว้รวมค่าไว้ด้วยกัน เช่น JAN,FEB,MAR ในตำแหน่งเดือน แปลว่ารวมสามเดือนนี้เท่านั้น หรือ – (dash) ที่ระบุช่วงเวลา เช่น MON-FRI จากวันจัทร์ถึงว่าศุกร์ในตัวอย่างที่สอง

สุดท้ายนี้ถ้าเราต้องการสร้างระบบจากส่วนประกอบที่เราคุยๆกันมาให้ใช้ได้เลย ก็ต้องใช้ CloudFormation เข้ามาช่วย

AWS CloudFormation

AWS CloudFormation
AWS CloudFormation

CloudFormation คือบริการหนึ่งที่ช่วยในการสร้าง (provision) โครงสร้างระบบ จัดเตรียม และจัดการทรัพยากร และบุคคลที่เข้าถึงได้ ได้อย่างง่ายดาย โดยใช้รูปแบบ Infrastructure as Code หรือพูดง่ายๆก็คือเราสามารถสร้างระบบทั้งระบบได้โดยผ่านโค้ดอย่างเดียว CloudFormation จะทำการสร้างทุกอย่างที่อยู่ในโค้ดขึ้นมาให้เราโดยอัตโนมัติ

CloudFormation นั้นถือเป็นบริการรูปแบบ IaaS หรือ Infrastructure-as-a-Service ซึ่งเป็นหนึ่งในประเภทของการให้บริการ Cloud Computing หรือ Cloud Service ใครยังไม่ค่อยเข้าใจเรื่องนี้เข้าไปทำความเข้าใจเพิ่มเติมในบทความของเราได้ที่ Cloud Computing มีประเภทอะไรบ้าง บริการด้าน Data ที่คุณต้องรู้

วิธีดึงข้อมูล API แบบอัตโนมัติ

เมื่อเครื่องมือพร้อมแล้ว เราก็ทำการดึงข้อมูลได้้เลย

AWS Diagram 1
Achitecture: AWS Serverless Data Ingestion

เริ่มจากการสร้างระบบ (Stack) ผ่าน AWS CloudFormation จากนั้น เราจะได้ระบบที่มี Amazon CloudWatch Event, AWS Lambda ฟังก์ชั่น และ S3 ซึ่งเป็นที่เก็บข้อมูลของเรา ตามแบบที่เห็นใน Diagram

มาทวนขั้นตอนกันอีกครั้ง CloudWatch Event ซึ่งตั้งเวลาไว้ให้ทำงานนั้นจะกระตุ้น Lambda ฟังก์ชั่น เหมือนไกปืนให้เริ่มรันงานตามคำสั่งที่เขียนไว้ในฟังก์ชั่นที่ให้ดึงข้อมูลจาก api จากนั้นเมื่อดึงข้อมูลมาแล้วก็นำมาเก็บไว้ใน S3 ไม่ว่าจะเป็นรูปแบบ CSV หรือ JSON ก็ขึ้นอยู่กับคำสั่งที่เขียนไว้่ใน Lambda

สรุปการดึงข้อมูล API แบบอัตโนมัติด้วย AWS

มาถึงตรงนี้เพื่อนๆคงจะมองเห็นภาพกันแล้วว่าเราสามารถสร้างระบบดึงข้อมูลโดยอัตโนมัติด้วยเครื่องมือจาก AWS ได้อย่างไร เครื่องมือไหนใช้ทำอะไรได้บ้าง การตั้งเวลาผ่าน Cron และการสร้างทั้งระบบโดยใช้แค่โค้ดเท่านั้น

และบทความนี้ก็เป็นเพียงตัวอย่างง่ายๆให้เพื่อนๆมีความเข้าใจเกี่ยวกับ AWS มากขี้นเท่านั้น ถ้าเพื่อนๆสนใจอยากทำความเข้าใจกับ AWS และบริการอื่นๆ ก็ลองเริ่มศึกษาจาก AWS Cloud Practitioner ได้ โดยเข้าไปในบทความของเรา ฮาวทูสอบ AWS Cloud Practitioner ใน 10 วัน ได้เลย

ถ้าเพื่อนๆคิดว่าบทความนี้มีประโยชน์ อยากฝากให้ช่วยแชร์ให้เพื่อน ๆ หน่อยนะคะ และถ้าอยากติดตามบทความดี ๆ ด้าน Data กันบน Facebook หรืออยากมาพูดคุย ติชมกัน เชิญได้ที่ Facebook Page: DataTH – Data Science ชิลชิล เลยนะค้าา

แล้วพบกันใหม่บทความหน้าค่ะ

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

บทความที่เกี่ยวข้อง