การใช้งาน S3 ควบคู่กับ Amazon Kinesis Data Firehose
เริ่มต้น
อันดับแรกสิ่งที่เราต้องมีคือ S3 Bucket นะครับสำหรับใช้เป็นพื้นที่ในการเก็บข้อมูลเพื่อนำมาแสดงใน Amazon Kinesis ครับ โดยผมจะกำหนดชื่อ S3 Bucket ตามตัวอย่างด้านล่างนี้นะครับ
AS3 Bucket anme: chawish-test-[date]
และสำหรับขั้นตอนและวิธีการสร้าง 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 นะครับ แล้วพบกันใหม่บล็อกหน้าครับผม