解决这个问题的一种常见方法是使用AWS Lambda和CloudWatch事件触发器。以下是一个示例代码:
import boto3
def lambda_handler(event, context):
# 获取EC2实例ID
instance_id = event['detail']['instance-id']
# 创建EC2客户端
ec2 = boto3.client('ec2')
# 停止实例
ec2.stop_instances(InstanceIds=[instance_id])
print(f'Stopped EC2 instance: {instance_id}')
在CloudWatch中创建一个事件规则,以每隔3天触发Lambda函数:
cron(0 0 */3 * ? *)
表示每隔3天触发一次)现在,每隔3天,CloudWatch事件将触发Lambda函数,停止相应的EC2实例。
请注意,为了使Lambda函数能够停止EC2实例,您需要为Lambda函数提供足够的IAM权限。可以通过创建一个具有必要权限的IAM角色,并将其附加到Lambda函数来实现。