AWS提供了一种机制,即通过 EC2 实例元数据服务 (IMDS) v2,从 EC2 实例中检索预测性停机任务。 IMDSv2 是一个安全的 RESTful API,用于获取元数据和用户数据。可以将以下代码添加到 EC2 实例上运行,以检查是否存在预测性停机任务:
import boto3 import requests
IMDS_BASE_URL = "http://169.254.169.254/latest" # EC2 实例元数据服务地址
session = boto3.Session() credentials = session.get_credentials() role = credentials.get("role_name")
headers = { "x-aws-ec2-metadata-token": requests.put(f'{IMDS_BASE_URL}/api/token', headers={"X-aws-ec2-metadata-token-ttl-seconds": 60*60}).content.decode() # 获取使用互联网访问 EC2 实例元数据服务所需的令牌 } response = requests.get(f'{IMDS_BASE_URL}/meta-data/spot/instance-action', headers=headers)
if response.status_code == 404: print("未找到预测性停机任务") else: print(f"发现预测性停机任务:{response.content.decode()}")
可以使用定时任务或后台任务来定期执行此脚本,以检查预测性停机任务并采取相应的措施。例如,可以重启服务或将 EC2 实例替换为备份实例来避免服务中断。