【发布时间】:2020-02-19 16:44:43
【问题描述】:
我需要为我拥有的所有 EC2 实例创建终止计划。
即如果服务器连续 7 天停止,则只能终止该 ec2。如果不是它不能。
关于如何做到这一点的任何想法?我正在考虑通过 Cloud watch events 规则执行此操作,方法是将所有停止的实例拉 7 天以上,其目标是通过 lambda,因此它将检查规则并终止它。这行得通吗?如果是怎么办?请出主意。
import boto3
ec2client = boto3.client('ec2')
def lambda_handler(event, context):
instancesWithEvent = ec2client.describe_instance_status(
Filters=[
{
'Name': 'event.code',
'Values': [
'instance-reboot', 'system-reboot', 'system-maintenance', 'instance-retirement', 'instance-stop'
]
},
],
MaxResults=1000,
IncludeAllInstances=False
)
instancesToTerminate=[]
for index in instancesWithEvent['InstanceStatuses']:
instancesToTerminate.append(index['InstanceId'])
if len(instancesToTerminate) > 0:
print("Instances to terminate: %s " % (', '.join(instancesToTerminate)))
ec2client.terminate_instances( DryRun=False, InstanceIds=instancesToTerminate )
else:
print("No instances with events found.")
return()
【问题讨论】:
-
欢迎来到 StackOverflow!您能否编辑您的问题并告诉我们您尝试了什么以及您面临的具体困难是什么?你试过运行上面的代码吗?如果是这样,您面临什么问题?您是否能够识别已停止 7 天的实例?您是否能够终止实例?谢谢。
-
我尝试使用云观看事件。提取过去 7 天停止的实例列表。此 lambda 用于终止。因此,根据云观察事件规则,它获取列表并执行此 lambda 。我假设这会奏效。但不确定。需要知道如何解决这个问题?
标签: python amazon-web-services amazon-ec2 aws-lambda amazon-cloudwatch