AWS IoT Device Management คืออะไร? การแนะนำฟังก์ชันของ AWS IoT ในปี 2023

หากต้องการจัดการ IoT จำนวนหลายๆอุปกรณ์ หรือ หลายๆ Device บน AWS หรือ IoT Core ขอเสนอให้รู้จักกับ IoT Device Management
2023.09.20

บทความนี้มีเนื้อหาดัดแปลงมาจากบทความภาษาญี่ปุ่นของ Classmethod, Inc. ในหัวข้อ「AWS IoT 再入門ブログリレー AWS IoT Device Management編 | DevelopersIO」 หากผู้อ่านสนใจอ่านเนื้อหาต้นฉบับสามารถอ่านได้ที่ลิ้งค์ "บทความต้นฉบับ" ด้านล่าง เนื้อหาในบทความนี้การอัพเดทเนื้อหาบางอย่างเพื่อให้เข้าใจง่ายขึ้นทำให้แตกต่างจากต้นฉบับในบางจุด

ภาพรวม

สวัสดีครับ ต้าครับ

ในบทความนี้เราจะมาแนะนำเกี่ยวกับบริการ "AWS IoT Device Management" ที่ทำหน้าที่ควบคุมดูแล IoT Device กันครับ

เริ่มต้น

ปัจจุบัน IoT Device Management ได้ถูกรวมเข้ากับ IoT Core โปรดอย่าตกใจเมื่อทำการค้นหา IoT Device Management แล้วเข้าไปในหน้าต่าง IoT Core แทนครับ

ในการพัฒนาผลิตภัณฑ์ IoT และนำออกมาใช้ จำเป็นต้องติดตาม ดูแล และบริหารจัดการอุปกรณ์อยู่ตลอด
ตัวอย่างเช่น เมื่อคุณต้องการนำเข้าหรือบริหารจัดการอุปกรณ์ IoT คุณจะต้องมีองค์ประกอบต่อไปนี้:

อ้างอิง: AWS-Black-Belt_2023_AWS-IoT-DeviceManagemen_0313_v1.pdf (Japanese)

การลงทะเบียนอุปกรณ์ทั้งหมด, การตรวจสอบสถานะของอุปกรณ์, การอัปเดตอุปกรณ์, การเข้าถึงอุปกรณ์เพื่อแก้ไขปัญหา, และองค์ประกอบอื่น ๆ ที่หลากหลายเหล่านี้ การติดตั้งสิ่งเหล่านี้ด้วยตัวเองทั้งหมดเป็นสิ่งที่ต้องใช้กำลังความพยายามอย่างมาก
"AWS IoT Device Management" เป็นบริการการจัดการที่ช่วยให้คุณสามารถจัดการอุปกรณ์ IoT จำนวนมากๆ ได้อย่างง่ายและปลอดภัยแบบง่าย ๆ ได้ครับ

เมื่อเราดูใน AWS IoT Device Management FAQs - Amazon Web Services จะเห็นได้ว่ามี components หลักๆ 6 อย่างเขียนไว้อยู่

  • Bulk Registration
  • Fleet Indexing and Search
  • Fine-grained Logging
  • Device Jobs
  • Secure Tunneling
  • Fleet Hub

จะเห็นว่ามีหลายๆอย่าง
ซึ่งในหัวข้อต่อไปเราจะมาอธิบายเกี่ยวกับแต่ละ Components กันครับ

Bulk Registration

ในการใช้บริการ IoT บน AWS คุณจำเป็นต้องลงทะเบียนข้อมูลอุปกรณ์ (เช่น Metadata ของ Device, Certificate, Policy) บน AWS โดยหากเราต้องการลงทะเบียนที่ละหลายๆ Device สามารถทำได้ผ่านฟังก์ชัน "การดำเนินการลงทะเบียนหลายอุปกรณ์พร้อมกัน" ได้
คุณจะเก็บ Object ที่มี parameter ที่จำเป็นไว้ใน S3 และการลงทะเบียนของอุปกรณ์จะถูกดำเนินการขึ้นโดยข้อมูล parameter ที่ระบุใน Object นั้น

และเกี่ยวกับการลงทะเบียน Things มีหลากหลายวิธีในการลงทะเบียน
ในการ Provisioning ข้อมูลการรับรองตัวตนสำหรับอุปกรณ์ใน AWS IoT นั้น มีตัวเลือกต่าง ๆ สามารถตรวจสอบได้จากลิ้งค์ด้านล่างนี้ได้ครับ

Client authentication - AWS IoT Core
Device provisioning - AWS IoT Core
Device provisioning - IoT Lens

โดยในบทความนี้จะไม่ขอลงลึกลงไปหากใครต้องการความรู้เพิ่มเติมสามารถตรวจสอบบทความด้านบนนี้ได้ครับ

Fleet Indexing and Search

นี่คือฟังก์ชันที่ช่วยในการสร้าง index เพื่อให้เป็นเป้าหมายของการค้นหาสำหรับ Things หรือ Thing groups ครับ

โดยการใช้ฟังก์ชันนี้ คุณจะสามารถ "สร้าง Groups เพื่อใช้งานงานเพิ่มเติมเช่นการปรับใช้งานกับ Device job หรือ Policy ตามผลลัพธ์การค้นหา" และ "จัดรวมค่า Metrics ที่คุณต้องการ" ได้ และทำการค้นหาได้ครับ
หากใครสนใจรายละเอียดเพิ่มเติมสามารถเข้าไปอ่านได้ที่ลิ้งค์ด้านล่างนี้ครับ

Managing fleet indexing - AWS IoT Core
Fleet indexing - AWS IoT Core

อาจจะลึกไปหน่อย แต่เรามาดูเรื่องเกี่ยวกับ ข้อจำกัด กันหน่อยครับ
ค่า Maximum number of results per search query results page จะถูกตั้งค่าไว้ที่ 500 และปัจุบัน(วันที่ 5 เดือน 9 ปี 2023) ไม่สามารถยื่นเรื่องขอขยายข้อจำกัดได้
แต่าเราสามารถใช้ "nextToken" ของ SearchIndex เพื่อรับข้อมูล Pagination ทั้งหมดได้
หากเกิดปัญหา เราอาจจะนำข้อมูลใส่ลงไปใน DB เพื่อแก้ไขปัญหานี้ก็ได้

อ้างอิง: AWS IoT Device Management endpoints and quotas - AWS General Reference

Fine-grained Logging

เราสามารถเอาต์พุต Device log ไปยัง "Amazon CloudWatch" ได้

หากเกิดปัญหาใด ๆ คุณสามารถทำการ trouble shooting จาก log ของ "Amazon CloudWatch" หรือสามารถสร้าง Alarm ได้ครับ
นอกจากนี้ คุณสามารถกำหนดการตั้งค่า log ได้ทั้งในระดับ "AWS IoT ทั้งหมด" หรือในระดับ "เฉพาะ Thing groups" ได้ครับ

ภาพด้านล่างนี้เป็นภาพจาก AWS Management Console ซึ่งจะเห็นได้ว่าการส่งเอาต์พุต level ของ Log สามารถเลือกได้ตามนี้

เป็นฟังก์ชันที่สะดวกสบายมากๆ แต่จะมีบางกรณีที่หากเจอ High traffic แล้ว log อาจจะปิดการตั้งค่าเองโดยอัตโนมัติได้

If you expect high traffic patterns in AWS IoT Core due to load testing, consider turning off IoT logging to prevent throttling. If high traffic is detected, our service may disable logging in your account.

อ้างอิง: Configure AWS IoT logging - AWS IoT Core

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

Device Jobs

นี่เป็นฟังก์ชันที่ช่วยให้คุณสามารถดำเนินการบางอย่างกับ "Thing groups" ได้ครับ
"Thing groups" นี้สามารถระบุกลุ่มได้จาก group ที่สร้างขึ้นได้โดยใช้ฟังก์ชัน "Fleet Indexing and Search" ที่เขียนไว้ในหัวข้อที่ผ่านมา และคุณสามารถใช้งานได้เพื่อการอัปเดต firmware หรือการแจ้งสถานะของอุปกรณ์
โดยคุณสามารถนำ "หัวข้อ (Topics)" มาใช้สำหรับคำสั่งงานปกติและ "งานอุปกรณ์ (Device Jobs)" สามารถนำมาใช้สำหรับ maintenance และ operation อุปกรณ์ได้
โดยคุณสามารถอ่านข้อมูลเพิ่มเติมได้ที่ลิ้งค์ต่อไปนี้
Devices and jobs - AWS IoT Core
Jobs - AWS IoT Core
Schedule remote operations using AWS IoT Device Management Jobs | The Internet of Things on AWS – Official Blog

Job เองก็มี 2 ประภทคือ "Snapshot job" ที่จะเป็นแบบใช้แล้วทิ้ง กับ job ที่ทำงานต่อเนื่อง "Continuous Job" ซึ่งจะใช้แยกกันตามแต่ละ Use case ครับ
สำหรับ group ที่เราใช้ "Continuous Job" หากมี Device ถูกเพิ่มเข้ามาทีหลังใน Group แล้ว Device นั้นก็จะถูกดำเนินการ job ด้วยครับ

นอกจากนี้ เรายังสามารถควบคุมการส่งออกและหยุด job ได้ด้วยครับ
โดยจะควบคุมในรูปแบบประมาณ "ให้เริ่มที่ X device /min แล้วหาก Y Device ทำสำเร็จแล้วให้ดำเนินการ job เป็น 2X/min" หรือ "หาก job มีความผิดพลาดมากกว่า x % ให้ทำการหยุด(โดยคำสั่งนี้จะทำงานต่อเมื่อมีการดำเนินการ job มากกว่า Y Device)"

โดยสามารถอ่านรายละเอียดเพิ่มได้ที่ลิ้งค์ด้านล่างนี้ครับ
Job configurations - AWS IoT Core

Secure Tunneling

Secure tunneling เป็นฟังก์ชันที่ใช้ในการสื่อสารระยะไกลอย่างปลอดภัยระหว่างอุปกรณ์แต่ละตัวครับ
การดำเนินการ "การแก้ปัญหาขั้นสูง(advanced troubleshooting)" จะถูกดำเนินการสำหรับอุปกรณ์ที่อยู่ "ในเครือข่ายที่แยกออกหรืออยู่หลัง firewall" เป็นฟังก์ชันที่จะช่วยรักษา "ประสบการณ์ของผู้ใช้ปลายทาง" ครับ
สามารถอ่านรายละเอียดเพิ่มเติมได้ที่เอกสารด้านล่างนี้ครับ
AWS IoT secure tunneling - AWS IoT Core

"จุดเด่นของการสื่อสาระยะไกล(Remote Access)นี้ คือสามารถผ่าน Firewall หรือข้อจำกัดของ Network ได้ง่ายกว่าการสื่อสารรูปแบบอื่นๆ ซึ่งทำให้สอดคล้องกับนโยบายความปลอดภัยขององค์กรได้ง่ายขึ้น เนื่องจากอุปกรณ์จะเป็นผู้ส่งสัญญาณไปยัง "AWS IoT" เพื่อเชื่อมต่อเซสชัน ดังนั้นจึงอาจรองรับกรณีต่างๆ เช่น ห้ามเชื่อมต่อจากภายนอกไปยังอุปกรณ์ สำหรับภาพการเชื่อมต่อสามารถดูได้จากสไลด์ด้านล่าง
อ้างอิง: AWS re:Invent 2019 Recap IoT Update (Japanese)

Fleet Hub

Fleet Hub เป็นแอปพลิเคชันแบบ Full management ที่จัดการควบคุมอุปกรณ์ที่เชื่อมต่อแล้ว
หากต้องการทราบรายละเอียดเพิ่มเติม โปรดดูข้อมูลด้านล่างนี้ได้

What is Fleet Hub for AWS IoT Device Management? - Fleet Hub for AWS IoT Device Management

สรุป

เราได้อธิบายเกี่ยวกับฟังก์ชันต่างๆของ AWS IoT Device Management กันไปแล้ว จะเห็นได้ว่ามีหลายอย่างที่น่าสนใจสำหรับผู้ใช้ IoT โดยหากจะทำระบบเหล่านี้เองอาจจะเป็นเรื่องยาก ผมจึงแนะนำว่าหากใครตั้งการควบคุม IoT ที่มีจำนวนมาก็ลองไปใช้บริการนี้ได้ครับ

บทความอ้างอิง

AWS IoT Core คืออะไร? การแนะนำฟังก์ชันล่าสุดของ AWS | DevelopersIO
มาเริ่มต้นใช้งาน IoT Core กัน | DevelopersIO
AWS IoT Device Managementハンズオン - YouTube (Japanese)
AWS IoT Device Management FAQs - Amazon Web Services (english)
AWS IoT Device ManagementのBulk Provisioningを使ってデバイスを一括登録してみた #reinvent | DevelopersIO (Japanese)
AWS IoTにおけるデバイスへの認証情報のプロビジョニング - YouTube (Japanese)
SearchIndex - AWS IoT
Using Continuous Jobs with AWS IoT Device Management | The Internet of Things on AWS – Official Blog (english)
AWS re:Invent 2019 Recap IoT アップデート (Japanese)
ファイアウォールを超えてデバイスに接続! AWS IoTセキュアトンネリングを試してみた | DevelopersIO (Japanese)
AWS IoT セキュアトンネリングを使ってローカルのRaspberry Piにリモートから接続してみた | DevelopersIO (Japanese)
Fleet Hub for AWS IoT Device Management のご紹介 - YouTube (Japanese)
Client authentication - AWS IoT Core (english)
Device provisioning - AWS IoT Core (english)
Device provisioning - IoT Lens (english)
Managing fleet indexing - AWS IoT Core (english)
Fleet indexing - AWS IoT Core (english)
AWS IoT Device Management endpoints and quotas - AWS General Reference (english)
Configure AWS IoT logging - AWS IoT Core (english)
Devices and jobs - AWS IoT Core (english)
Jobs - AWS IoT Core (english)
Schedule remote operations using AWS IoT Device Management Jobs | The Internet of Things on AWS – Official Blog (english)
Job configurations - AWS IoT Core (english)
AWS IoT secure tunneling - AWS IoT Core (english)
What is Fleet Hub for AWS IoT Device Management? - Fleet Hub for AWS IoT Device Management (english)

บทความต้นฉบับ

AWS IoT 再入門ブログリレー AWS IoT Device Management編 | DevelopersIO