【问题标题】:Lambda function to start and stop the instance when SSH service goes down用于在 SSH 服务关闭时启动和停止实例的 Lambda 函数
【发布时间】:2017-11-06 06:59:23
【问题描述】:

当我们无法通过 SSH 连接服务器时,需要一个 lambda 函数来启动和停止服务器。 请帮帮我。

【问题讨论】:

  • 请澄清您的具体问题或添加其他详细信息以准确突出您的需要。正如目前所写的那样,很难准确地说出你在问什么。请参阅How to Ask 页面以获得澄清此问题的帮助。
  • 服务器有时会进入无响应模式,因此我们需要手动停止并启动实例以启动它。为了自动化这个启动和停止,我需要一个 Python Lambda 函数,它应该在服务器离线时处理这个问题。
  • lambda 函数是如何做到这一点的?
  • 如果我们编写python脚本并放入自定义函数,稍后配置cloudwatch以每5分钟监控一次实例,如果实例出现故障,则执行lambda函数。
  • 当然...会这样做。

标签: lambda


【解决方案1】:
import boto3
import json
import time
def lambda_handler(event, context):
    print(json.dumps(event, indent=2))
    ec2=boto3.resource('ec2', region_name='us-west-2')
    instances =ec2.instances.filter(Filters=[{'Name': 'tag:Env', 'Values': ['Prod']}])
    for ins in instances:
        print(ins.id)
        if ins.state['Name']!='stopped':
            ins.stop()
            print("Stopping the instance ")
            print(ins.id)
            while ins.state['Name']!='stopped':
                ins.reload()
                time.sleep(5)
                if ins.state['Name']=='stopped':
                    print("Instance "+ins.id+" is stopped now")
                    break

        if ins.state['Name']!='running':
            ins.start()
            print("Starting the instance "+ins.id)
            while ins.state['Name']!='running':
                ins.reload()
                time.sleep(5)
                if ins.state['Name']=='running':
                    print("Instance "+ins.id+" is running now")
                    break

【讨论】:

  • 这是一个答案还是应该在问题中?如果它应该在问题中,那么您应该编辑您的问题,添加代码,然后删除此答案。
猜你喜欢
  • 2021-05-27
  • 2020-06-01
  • 1970-01-01
  • 2019-12-08
  • 1970-01-01
  • 2018-06-19
  • 2016-06-15
  • 2016-03-11
  • 2017-11-28
相关资源
最近更新 更多