กำหนดเวลาเวิร์กโฟลว์แบบไร้เซิร์ฟเวอร์

ด้วย AWS Step Functions และ Amazon CloudWatch

การทำให้วิธีที่คุณตอบสนองต่อเหตุการณ์การดำเนินงานเป็นแบบอัตโนมัติสำหรับทรัพยากรในบัญชี AWS ของคุณ สามารถช่วยลดค่าใช้จ่ายในการดำเนินงานของโครงสร้างพื้นฐาน AWS Cloud ของคุณได้ ตัวอย่างในโลกความเป็นจริง ถ้าคุณเป็นวิศวกร DevOps หรือผู้จัดการ IT คุณอาจต้องการทำให้งาน ETL, การซิงโครไนซ์ข้อมูล หรือความปลอดภัยเป็นแบบอัตโนมัติ

เพื่อแก้ปัญหานี้ คุณสามารถเรียกใช้เวิร์กโฟลว์แบบไร้เซิร์ฟเวอร์ได้ตามกำหนดเวลา Amazon CloudWatch Events ช่วยให้การสตรีมเหตุการณ์ของระบบที่อธิบายการเปลี่ยนแปลงและการแจ้งเตือนของทรัพยากร AWS ของคุณเป็นแบบเกือบเรียลไทม์ จากสตรีมนี้ คุณสามารถสร้างกฎเพื่อกำหนดเส้นทางเหตุการณ์เฉพาะไปยัง AWS Step Functions และเรียกใช้เครื่องสถานะเพื่อดำเนินการต่อไปได้ AWS Step Functions ช่วยให้คุณสามารถประสานบริการหลายๆ รายการในเวิร์กโฟลว์แบบไร้เซิร์ฟเวอร์เพื่อให้คุณสามารถสร้างและอัปเดตกระบวนการอัตโนมัติได้อย่างรวดเร็ว

ในบทแนะนำสอนการใช้งานนี้ คุณจะใช้ Step Functions ในการจัดทำเวิร์กโฟลว์แบบไร้เซิร์ฟเวอร์เพื่อตอบสนองต่อเหตุการณ์ CloudWatch ขั้นแรก คุณจะสร้างเครื่องสถานะที่ง่ายมากโดยใช้ AWS Step Functions จากนั้น คุณจะใช้ Amazon CloudWatch Events เพื่อตั้งค่ากฎที่เรียกใช้เครื่องสถานะของคุณทุกนาที แม้ว่าบทแนะนำสอนการใช้งานนี้จะเรียกใช้เวิร์กโฟลว์ตามกำหนดเวลา แต่โดยทั่วไปก็สามารถรวมกับบริการของ AWS ที่สร้างเหตุการณ์อื่นๆ ได้

คุณจะได้ใช้งาน AWS Step Functions และ Amazon CloudWatch ในบทแนะนำการสอนใช้งานนี้ บริการทั้งสองอยู่ภายใน AWS Free Tier

บทแนะนำสอนการใช้งานนี้ต้องใช้บัญชี AWS

ไม่มีค่าบริการเพิ่มเติมสำหรับ Step Functions หรือ CloudWatch ทรัพยากรต่างๆ ที่คุณสร้างขึ้นในบทแนะนำสอนการใช้งานนี้ สามารถใช้กับ Free Tier ได้ 

ข้อมูลเพิ่มเติมเกี่ยวกับ Free Tier >>


ขั้นตอนที่ 1 สร้างบทบาทของ AWS Identity and Access Management (IAM)

AWS Step Functions สามารถดำเนินการโค้ดและเข้าถึงทรัพยากรอื่นๆ ของ AWS ได้ (เช่น ข้อมูลที่จัดเก็บในบัคเก็ต Amazon S3) เพื่อรักษาความปลอดภัย คุณจะต้องมอบสิทธิ์การเข้าถึง Step Functions ให้แก่ทรัพยากรเหล่านี้โดยใช้ AWS Identity and Access Management (IAM)


ก. เปิด AWS Management Console ในหน้าต่างเบราว์เซอร์ใหม่ เพื่อให้คุณเปิดคำแนะนำทีละขั้นตอนนี้ค้างไว้ได้ เมื่อหน้าจอโหลดข้อมูลแล้ว ให้ใส่ชื่อผู้ใช้และรหัสผ่านของคุณเพื่อเริ่มต้นใช้งาน จากนั้นพิมพ์ IAM ในแถบค้นหาและเลือก IAM เพื่อเปิดคอนโซลบริการ

01a

(คลิกเพื่อขยาย)


ข.  คลิก บทบาท จากนั้นเลือก สร้างบทบาท

01b

(คลิกเพื่อขยาย)


ค. ในหน้าเลือกประเภทของเอนทิตีที่เชื่อถือได้ภายใต้บริการของ AWS ให้เลือก Step Functions จากรายการ จากนั้นเลือก ถัดไป: สิทธิ์

01c

(คลิกเพื่อขยาย)


ง. ในหน้า แนบนโยบายสิทธิ์ ให้เลือก ถัดไป: ตรวจสอบ

01d

(คลิกเพื่อขยาย)


จ. ในหน้า ตรวจสอบ ให้พิมพ์ว่า step_functions_basic_execution สำหรับ ชื่อบทบาท และคลิก สร้างบทบาท

01e

(คลิกเพื่อขยาย)


f. บทบาท IAM ใหม่ของคุณจะถูกสร้างขึ้น

01f

(คลิกเพื่อขยาย)


ขั้นตอนที่ 2 สร้างเครื่องสถานะ AWS Step Functions

ในขั้นตอนนี้ คุณจะได้สร้างเครื่องสถานะที่ใช้งานง่ายและเป็นอิสระโดยใช้สถานะ Pass สถานะ Pass จะเพียงส่งผ่านอินพุตไปยังเอาต์พุตของตัวเองและจะไม่ทำงานจริงใดๆ

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


ก. เปิด AWS Step Functions Console Step Funsctions จะมีเครื่องสถานะแบบกำหนดล่วงหน้าเป็นเทมเพลต สำหรับบทแนะนำสอนการใช้งานนี้ คุณจะได้สร้างเครื่องสถานะโดยใช้เทมเพลต Hello World ในหน้าสร้างเครื่องสถานะ เลือกเทมเพลต แล้วเลือก Hello world

02c

(คลิกเพื่อขยาย)


ข. ในส่วนรายละเอียด ป้อนชื่อของเครื่องสถานะของคุณเป็น ScheduledWorkflow จากนั้น ภายใต้ บทบาท IAM ให้เลือกฉันจะใช้บทบาทที่มีอยู่ ภายใต้บทบาท IAM ที่มีอยู่ เลือกบทบาท IAM ที่คุณได้สร้างไว้ ซึ่งก็คือ step_functions_basic_execution

02d

(คลิกเพื่อขยาย)


ค. Step Functions ป้อนชื่อของเครื่องสถานะโดยอัตโนมัติ ยังมีการสร้างบานหน้าต่างคำจำกัดความของเครื่องสถานะพร้อมกับคำอธิบายภาษาสถานะ Amazon ของเครื่องสถานะ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการกำหนดเครื่องสถานะ ดูโครงสร้างเครื่องสถานะ

ลองทำการปรับเปลี่ยนแบบง่ายๆ กับเครื่องสถานะของคุณ:

ในบรรทัดที่ 2 และ 5 แทนที่ “HelloWorld” ด้วย “Do Something”
ในบรรทัดที่ 7 แทนที่ “Hello World!” ด้วย “Work complete!”

จากนั้น คลิกปุ่มรีเฟรชข้างภาพเวิร์กโฟลว์ของคุณเพื่ออัปเดตแผนภาพเครื่องสถานะเพื่อแสดงการเปลี่ยนแปลงของคุณ

02e

(คลิกเพื่อขยาย)


ง. เลือกสร้างเครื่องสถานะ เครื่องสถานะของคุณพร้อมที่จะดำเนินการแล้ว

02f

(คลิกเพื่อขยาย)


ขั้นตอนที่ 3 สร้างกฎ Amazon CloudWatch Events

ตอนนี้ คุณได้สร้างเครื่องสถานะของคุณแล้ว คุณสามารถสร้างกฎ Amazon CloudWatch Events ที่เรียกใช้เครื่องสถานะของคุณตามกำหนดเวลาได้ Amazon CloudWatch Events ส่งมอบสตรีมเหตุการณ์ในระบบในแบบใกล้เคียงเวลาจริงซึ่งอธิบายการเปลี่ยนแปลงในทรัพยากรของ Amazon Web Services (AWS) ด้วยการใช้กฎง่ายๆ ที่คุณสามารถตั้งค่าได้อย่างรวดเร็ว ทำให้คุณสามารถจับคู่เหตุการณ์และกำหนดเส้นทางไปยังฟังก์ชันหรือสตรีมเป้าหมายอย่างน้อยหนึ่งรายการ


ก. เปิดแท็บเบราว์เซอร์อื่น ไปยังคอนโซล CloudWatch Events โดยการป้อน CloudWatch ในแถบค้นหา

03a

(คลิกเพื่อขยาย)


ข. เลือก Events แล้วเลือกสร้างกฎ  

03b

(คลิกเพื่อขยาย)


ค. หน้าขั้นตอนที่ 1: สร้างกฎจะแสดงขึ้นมา ในส่วนแหล่งเหตุการณ์ เลือกกำหนดเวลา ในกำหนดอัตราของ ป้อน 1 และเลือกหน่วย "นาที"

03c

(คลิกเพื่อขยาย)


ง. ในส่วนเป้าหมาย เลือกเพิ่มเป้าหมาย เลือกเครื่องสถานะ Step Functions จากรายการ และเลือกเครื่องสถานะ ScheduledWorkflow ของคุณ

เลือกกำหนดอินพุต และเลือกเหตุการณ์ที่ตรงกัน การดำเนินการนี้จะเป็นการส่งรายละเอียดของเหตุการณ์ CloudWatch เป็นอินพุตไปยัง Step Functions ในทุกครั้งที่ดำเนินการกับอินสแตนซ์ของเครื่องสถานะของคุณ

เลือกสร้างบทบาทใหม่สำหรับทรัพยากรเฉพาะนี้ และคลิกรายละเอียดการกำหนด

03d

(คลิกเพื่อขยาย)


จ. หน้าขั้นตอนที่ 2: กำหนดรายละเอียดกฎจะแสดงขึ้นมา ป้อน execute_state_machine เป็นชื่อสำหรับกฎของคุณ เลือกเปิดใช้งานสถานะ แล้วเลือก สร้างกฎ

กฎนี้จะถูกสร้างขึ้น และหน้ากฎจะแสดงขึ้นมาเป็นรายการกฎ CloudWatch Events ทั้งหมดของคุณ

การดำเนินการใหม่ของเครื่องสถานะของคุณจะดำเนินการทุกนาที

03e

(คลิกเพื่อขยาย)


ขั้นตอนที่ 4 กำหนดวิธีการที่เครื่องสถานะของคุณจัดการอินพุตและเอาต์พุต

ถัดไป คุณจะได้กำหนดวิธีการที่เครื่องสถานะของคุณจัดการอินพุตและเอาต์พุต การทำความเข้าใจว่าข้อมูลเปลี่ยนจากสถานะหนึ่งเป็นอีกสถานะได้อย่างไร และเรียนรู้วิธีกรอง และจัดการข้อมูลนี้ จะช่วยให้คุณออกแบบและใช้เวิร์กโฟลว์ใน AWS Step Functions ได้อย่างมีประสิทธิภาพ


ก. กลับไปที่คอนโซล Step Functions ซึ่งเครื่องสถานะ ScheduledWorkflow ของคุณควรจะยังคงแสดงอยู่ คลิกที่แก้ไข

04a

(คลิกเพื่อขยาย)


ข. ในหน้าต่างคำอธิบายเครื่องสถานะ อ้างถึงบรรทัดที่ 7 ของเครื่องสถานะของคุณ ฟิลด์ผลลัพธ์ในสถานะ Pass จะระบุเอาต์พุตที่ควรส่งต่อไปยังสถานะถัดไป เนื่องจากเครื่องสถานะของคุณมีสถานะเดียวเท่านั้น ข้อความ “Work complete!” จะถูกส่งไปยังสถานะสิ้นสุดของเวิร์กโฟลว์ของคุณ

คุณอาจจำได้ว่าสถานะ Pass ของ Step Function เป็นการส่งผ่านอินพุตไปยังเอาต์พุตอย่างง่าย คุณสามารถใช้ช่อง ResultPath เพื่อแก้ไขเอาต์พุตของสถานะได้ ตัวอย่างเช่น คุณสามารถแทนที่อินพุตสถานะด้วยผลลัพธ์ที่สร้างขึ้น (ตัวอย่างเช่น เอาต์พุตจากฟังก์ชัน Lambda ของสถานะงาน)

หากต้องการรวมอินพุตของสถานะกับผลลัพธ์ ให้เพิ่มบรรทัดใหม่ถัดจากบรรทัด 7 และพิมพ์:

"ResultPath": "$.taskresult",

โดยจะเป็นการรวมรายละเอียดของ CloudWatch Event ที่เรียกใช้การทำงานของเครื่องสถานะกับเอาต์พุตของสถานะ Pass ซึ่งในกรณีนี้คือ “Work complete!” สำหรับข้อมูลเพิ่มเติม ดูการประมวลผลอินพุตและเอาต์พุตใน Step Functions

04b

(คลิกเพื่อขยาย)


ค. คลิก บันทึก

04c

(คลิกเพื่อขยาย)


ขั้นตอนที่ 5 ยืนยันว่าเวิร์กโฟลว์ของคุณทำงานตามที่คาดไว้

ตอนนี้ คุณได้เปิดใช้งานกฎ CloudWatch Event ของคุณแล้ว และ CloudWatch กำลังเรียกใช้การดำเนินการเวิร์กโฟลว์ของเครื่องสถานะของคุณทุกนาที ในขั้นตอนนี้ คุณจะได้สังเกตการดำเนินการเหล่านั้นและตรวจสอบว่ารายละเอียดของ CloudWatch Event ถูกจับโดย Step Functions แล้ว


ก. กลับไปที่คอนโซล Step Functions คลิกที่ ScheduledWorkflow ในเครื่องมือนำทางที่ด้านบนของหน้า

05a

(คลิกเพื่อขยาย)


ข. ภายใต้การดำเนินการ คุณสามารถสังเกตการดำเนินการที่เกิดจาก CloudWatch Events ได้ คุณสามารถคลิกปุ่มรีเฟรชเพื่ออัปเดตหน้าต่างเพื่อสังเกตการดำเนินการใหม่ของเครื่องสถานะของคุณที่ปรากฏขึ้นได้ รอสองสามนาที เพื่อให้อินสแตนซ์อย่างน้อย 2 อินสแตนซ์ของคุณในเวิร์กโฟลว์ถูกเรียกใช้งาน

05b

(คลิกเพื่อขยาย)


ค. คลิกขวาที่หนึ่งในการดำเนินการและเปิดลิงก์ในแท็บเบราว์เซอร์ใหม่ ทำซ้ำการดำเนินการที่แตกต่างกันของเครื่องสถานะของคุณ

ในแต่ละแท็บ คลิกสถานะ “Do Something” ในหน้าต่างภาพเวิร์กโฟลว์เพื่อสร้างบานหน้าต่างรายละเอียดขั้นตอนทางด้านขวา

เมื่อคลิกที่อินพุต คุณจะเห็นรายละเอียดของเหตุการณ์ที่ตรงกันจาก CloudWatch ความแตกต่างในเหตุการณ์ เช่น ฟิลด์ "รหัส" และ "เวลา"

05c

(คลิกเพื่อขยาย)


ง. ในแต่ละแท็บเอาต์พุต ภายใต้บานหน้าต่างรายละเอียดขั้นตอน คุณจะเห็นว่าอินพุตถูกรวมเข้ากับเอาต์พุตของสถานะ "Do Something"

05d

(คลิกเพื่อขยาย)


ขั้นตอนที่ 6 ลบทรัพยากรของคุณ

ในขั้นตอนนี้ คุณจะยกเลิกทรัพยากรที่เกี่ยวข้องกับ AWS Step Functions และทรัพยากร Amazon CloudWatch ของคุณ

ข้อสำคัญ: การลบทรัพยากรที่ไม่ได้ใช้งานออกจะช่วยลดต้นทุนและเป็นแนวทางปฏิบัติที่ดีที่สุด การไม่ยกเลิกทรัพยากรของคุณอาจทำให้มีการเรียกเก็บค่าบริการ


ก. ปิดแท็บสำหรับการดำเนินการของเครื่องสถานะแต่ละเครื่องของคุณ ที่ด้านบนของหน้าต่าง Step Functions ให้คลิกเครื่องสถานะ

06a

(คลิกเพื่อขยาย)


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

06b

(คลิกเพื่อขยาย)


ค. ถัดไป คุณจะได้ทำการลบกฎ Amazon CloudWatch Events ของคุณ ในคอนโซล CloudWatch คลิกที่การดำเนินการและ คลิกลบ ยืนยันการลบโดยการคลิกลบอีกครั้ง

06c

(คลิกเพื่อขยาย)


ง. คลิกที่บริการ จากนั้นป้อน IAM ในแถบค้นหาเพื่อไปยังคอนโซล IAM

06d

(คลิกเพื่อขยาย)


จ. คลิกที่บทบาท

06e

(คลิกเพื่อขยาย)


ฉ. เลือกบทบาท IAM ที่คุณเลือกสำหรับบทแนะนำสอนการใช้งาน จากนั้นคลิก Delete role (ลบบทบาท) ยืนยันการลบโดยการคลิก ใช่ ลบออก บนกล่องโต้ตอบ

ตอนนี้คุณสามารถออกจากระบบ AWS Management Console ได้แล้ว

06f

(คลิกเพื่อขยาย)


ขอแสดงความยินดี!

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