问题出现在 AWS Instance Scheduler 只能停止虚拟机,但不能启动虚拟机。为了解决这个问题,可以编写一个 AWS Lambda 函数,用于启动目标实例 ID 列表中的 VM。
下面是一个示例 Lambda 函数代码,它将启动传递列表中的实例 ID。
import boto3
def lambda_handler(event, context):
instance_list = event['instance_list']
ec2 = boto3.client('ec2')
ec2.start_instances(InstanceIds=instance_list)
print('Started your instances: ' + str(instance_list))
请注意,上述代码使用 AWS SDK for Python(boto3)向 EC2 发送请求。要测试此函数,请按照以下步骤操作:
创建新的 Lambda 函数,并将上述代码粘贴到函数代码窗口中。
在 function handler 中输入 lambda_handler,并单击“保存”
创建一个测试事件,如下面的示例:
{
"instance_list": ["i-1234567890abcdef0", "i-0123456789abcdef"]
}
另外,我们还可以将 AWS Systems Manager Automation 与 AWS Instance Scheduler 结合使用,以便在 scheduler 中配置电源计划之后,自动启动实例。这样,我们就可以实现完全自动化的电源管理。