ฉันมี กลุ่มปรับขนาดอัตโนมัติ ซึ่งปรับขนาดขึ้น/ลงตามตรรกะที่เป็นกรรมสิทธิ์
เราใช้ ลูกค้า boto3 เพื่อทำกิจกรรมปรับขนาดดังกล่าวเมื่อจำเป็น
ตามค่าเริ่มต้น อินสแตนซ์ EC2 ของเรามีวงจรการดำเนินการสูงสุด 60 วินาที เมื่อมีการร้องขอให้ยกเลิกอินสแตนซ์สปอต สิ่งสำคัญคือต้องดำเนินการเหล่านี้ แยกออกจากโหลดบาลานเซอร์ทันที.
เมื่อ AWS เรียกคืนอินสแตนซ์ Spot ของตน สิ่งนี้จะได้รับการจัดการ ec2-spot-termination-handler lambdas เพื่อแยกออกจากโหลดบาลานเซอร์ที่เกี่ยวข้อง: สิ่งนี้ช่วยให้เราหยุดประมวลผลงานใหม่ในอินสแตนซ์ EC2 ที่กำลังจะตายเร็วๆ นี้ และปล่อยให้วงจรชีวิตสมบูรณ์
การอ่าน เอกสาร boto3 ให้ข้อมูลเชิงลึกว่าเราจะทำอย่างไร หยุด และ ยุติ อินสแตนซ์เฉพาะจุด แต่ไม่ใช่วิธีที่เราสามารถบอก AWS ได้ เรียกคืนอย่างสง่างาม พวกเขา:
รหัส = ['อินสแตนซ์-id-1', 'อินสแตนซ์-id-2', ...]
#โบโต้2.x
ec2_connection.stop_instances(instance_ids=ids)
ec2_connection.terminate_instances(instance_ids=ids)
#Boto3
ec2.instances.filter(InstanceIds=ids).stop()
ec2.instances.filter(InstanceIds=ids).terminate()
เราจะบรรลุฟังก์ชันการทำงานที่ต้องการได้อย่างไร ซึ่งจะส่งการแจ้งเตือนการยกเลิกและบอกให้ AWS เรียกคืนอินสแตนซ์สปอตภายในสองนาที โดยทางโปรแกรม?