การใช้งาน S3 ควบคู่กับ Amazon Kinesis Data Firehose

สวัสดรับในบล็อกนี้ผมจะมาสร้างตัวอย่างการใช้งาน Kinesis Data Firehose ที่อยู่ในเซอร์วิส Amazon Kinesis กันครับโดยจะเป็นการใช้งานควบคู่กับ Amazon S3 นะครับสำหรับคนที่มีความสนใจในการใช้งาน Amazon Kinesis หรือกำลังเริ่มต้นศึกษานะครับก็สามารถใช้ตัวอย่างและเนื้อหาจากบล็อกนี้นำไปต่อยอดได้ครับ
2022.08.05

เริ่มต้น

อันดับแรกสิ่งที่เราต้องมีคือ S3 Bucket นะครับสำหรับใช้เป็นพื้นที่ในการเก็บข้อมูลเพื่อนำมาแสดงใน Amazon Kinesis ครับ โดยผมจะกำหนดชื่อ S3 Bucket ตามตัวอย่างด้านล่างนี้นะครับ

AS3 Bucket anme: chawish-test-[date]

และสำหรับขั้นตอนและวิธีการสร้าง S3 Bucket นะครับสามารถดูได้จากลิ้งค์ด้านล่างเลยครับ

  • การสร้าง S3 BUCKET
  • เมื่อเราสร้าง S3 Bucket เรียบร้อยแล้วอันดับต่อไปเราก็จะสร้างและใช้งาน Amazon Kinesis กันครับ

    Amazon Kinesis

    เริ่มแรกให้เราค้นหาชื่อเซอร์วิส Amazon Kinesis บนแทบค้นหาของ AWS Management console นะครับ และคลิ้กที่เซอร์วิสได้เลย

    เมื่อเข้าสู่หน้าแรกของ Amazon Kinesis จะเห็นได้ว่ามีข้อมูล 3 แบบให้เราเลือกสร้างและใช้งานโดยข้อมูลแต่ละอย่างก็จะมีการใช้งานที่แตกต่างกันดังนี้

    Kinesis Data Streams - จะเป็นบริการสตรีมข้อมูลแบบเรียลไทม์ที่มั่นคงและสามารถปรับขนาดได้
    Kinesis Data Firehose - เป็นบริการในการรวบรวม แปลง และโหลดสตรีมข้อมูลลงในที่จัดเก็บข้อมูล AWS สำหรับการวิเคราะห์แบบเกือบเรียลไทม์ซึ่งมีเครื่องมืออัจฉริยะทางธุรกิจอยู่แล้วฝ
    Kinesis Data Analytics - เป็นบริการในการประมวลผลสตรีมข้อมูลแบบเรียลไทม์ด้วย SQL หรือ Apache Flink โดยไม่ต้องเรียนรู้ภาษาโปรแกรมหรือเฟรมเวิร์กการประมวลผลใหม่


    ซึ่งตัวอย่างการใช้งานในครั้งนี้เราจะใช้งานในรูปแบบของ Kinesis Data Firehose นะครับผม ให้เราเลือกข้อมูลนี้แล้วกดปุ่ม Create delivery stream สร้างได้เลยครับ

    สร้าง Kinesis Data Firehose

    ในส่วนนี้ให้เรากำหนด Source และ Destination พร้อมกับตั้งชื่อ Delivery ที่เราต้องการนะครับโดยเลือกข้อมูลตามนี้ครับ

    Source: Direct PUT
    Destination: Amazon S3
    Delivery stream name: chawish-test-[date]


    หลังจากนั้นให้เราเลื่อนลงมาในส่วนของ Destination settings แล้วกด Browse ครับและเลือก S3 Bucket ของเราที่ทำการสร้างไปก่อนหน้านี้มาใช้งานครับ

    ถัดไปให้เลื่อนลงมาในหัวข้อ Buffer hints, compression and encryption นะครับ กดที่หัวข้อเพื่อให้ระบบแสดงข้อมูลมาเพิ่มเติมและเปลี่ยนแปลงข้อมูลของ Buffer interval ตามเนื้อหาด้านล่างนะครับ

    เมื่อสร้างเสร็จแล้วระบบก็จะแสดงหน้านี้มาเพื่อยืนยันว่าเราได้ทำการสร้าง Delivery streams เป็นที่เรียบร้อยแล้ว

    เริ่มทดสอบการใช้งาน

    ให้เราเปิดหน้าต่างหัวข้อ Test with demo data ขยายขึ้นมาแล้วจะเจอกับหน้าต่างแบบนี้นะครับ

    โดยในหน้านี้จะประกอบด้วยข้อมูลที่ใช้ในการทดสอบระบบนะครับ อย่างเช่น สคริปต์ที่ใช้ในการทดสอบก็จะเป็นหน้าตาแบบนี้ครับ

    {
      "TICKER_SYMBOL": "QXZ",
      "SECTOR": "HEALTHCARE",
      "CHANGE": -0.05,
      "PRICE": 84.51
    }


    อันดับถัดไป ให้เรากดปุ่ม Start sending demo data เพื่อส่งข้อมูลไปยัง Amazon S3 เป็นการทดสอบระบบการใช้งานนะครับถ้าหากเราตั้งค่าถูกต้องก็จะมีข้อมูลที่ระบบสร้างขึ้นมาใช้งาน หลังจากกดแล้วให้รอประมาณ 1-2 นาทีนะครับ

    หลังจากผ่านไป 1-2 นาที ให้เรากดปุ่ม Stop sending demo data ได้เลยครับเพื่อทำการหยุดส่งข้อมูลไปยัง S3

    ขั้นตอนถัดไปให้เราลองเข้าไปดูใน S3 Bucket ที่เราสร้างนะครับ ถ้าระบบทำงานถูกต้องจะมีโฟลเดอร์วันนที่ และ ไฟล์อยู่ใน Bucket ซึ่งไฟล์เหล่านี้จะถูกสร้างอัตโนมัติจากการทำงานของ Firehose ตอนที่เรากดปุ่ม Sending demo data นั้นเองครับ

    ซึ่งถ้าเราเข้าไปยังไฟล์ลึกที่สุดก็จะเจอกับข้อมูลที่ระบบ Firehose ส่งมาให้โดยระยะเวลาการส่งนั้นคือทุกๆ 1 นาที ตามที่เราได้ตั้งค่าไว้จากตอนสร้าง Delivery นะครับ ระบบจะมีการส่งข้อมูลไฟล์ให้นะครับ สังเกตจากข้อมูลในรูป

    และถ้าเรากดเปิดไฟล์เพื่อดูข้อมูลที่อยู่ในไฟล์เหล้านี้เราก็จะเจอกับฟอร์มข้อมูลที่เหมือนกันกับโค้ดก่อนหน้านี้ที่ผมเอามาแสดง

    เมื่อถึงส่วนนี้ก็เป็นการจบส่วนของการทดสอบระบบแล้วนะครับ ถ้าเราทำตามขั้นตอนและมีผลลัพธ์ตรงกับบล็อกนี้ แสดงว่าตอนนี้เราสามารถใช้งาน Firehose ควบคู่กับ S3 ได้แล้วครับ ที่นี้ก็มาดูในส่วนของการปิดการใช้งานกันบ้างหลังจากที่เราจบการใช้งานแล้ว ควรจะทำอย่างไรบ้าง ไปดูในหัวข้อถัดไปได้เลยครับ

    การหยุดการใช้งาน

    Firehose

    อันดับแรกเลยให้เรา Firehose ก่อนเลยโดยเข้าไปที่ชื่อ Delivery ที่เราสร้างก็จะมีปุ่ม Delete delivery stream อยู่มุมขวานะครับให้เรากดได้เลยครับแล้วใส่ชื่อยืนยันให้ดำเนินการนะครับ


    จากนั้นตามด้วย IAM Role ของ Firehose นะครับเพราะทุกครั้งที่เรามีการสร้าง delivery stream ระบบจะทำการสร้าง IAM Role ให้โดยอัตโนมัติ

    ต่อไปก็ทำการลบการใช้งานของ CloudWatch นะครับ ซึ่งข้อมูลในนี้เกิดจากเหตุผลเดียวกับของ IAM Role เช่นกันครับ ระบบจะสร้างมาให้อัตโนมัติ โดยให้เราเข้าไปที่หน้าแรกของ CloudWatch นะครับและเลือก Log ที่เป็นชื่อเดียวกับ S3 ของเราจากนั้นเลือกคำสั่ง
    Actions -> Delete log groups
    เพื่อกับการลบข้อมูลครับ

    Amazon S3

    ในส่วนนี้ก็จะเป็นการลบข้อมูลของ S3 นะครับ เริ่มต้นเลยให้เราไปที่ Bucket ของเราที่เราสร้างไว้และกด Empty นะครับเพื่อเป็นการล้างข้อมูลทุกอย่างที่อยู่ใน Bucket ออกไป

    และเมื่อเราลบไฟล์ทั้งหมดใน Bucket ออกหมดแล้วก็ให้ทำการกดปุ่ม Delete เพื่อหยุดการใช้งานได้เลยครับ

    เพียงเท่านั้นก็เป็นาการจบการใช้งาน S3 และ Firehose แล้วครับ

    สรุป

    สำหรับเนื้อหาในบล็อกนี้ผมก็หวังเป็นอย่างยิ่งว่าจะมีประโยชน์ต่อผู้ที่สนใจและอยากศึกษาเกี่ยวกับการใช้งาน Firehose กับ s3 นะครับ แล้วพบกันใหม่บล็อกหน้าครับผม

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

  • การสร้าง S3 BUCKET
  • วิธีการใช้ S3 จาก EC2 และการใช้ AWS CLI S3
  • ดูรายละเอียดเพิ่มเติมได้ที่นี่ สอบถามเพิ่มเติมเกี่ยวกับ AWS คลิกที่นี่