Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 关闭EC2实例前提示_Amazon Web Services_Amazon Ec2_Amazon Vpc - Fatal编程技术网

Amazon web services 关闭EC2实例前提示

Amazon web services 关闭EC2实例前提示,amazon-web-services,amazon-ec2,amazon-vpc,Amazon Web Services,Amazon Ec2,Amazon Vpc,是否可以对EC2实例执行“有条件”关闭,以便关闭过程在关闭之前请求VM实例本身的任何登录用户确认 我们的VM实例在一个固定的计划中被启动/停止,有时我们会被强制关闭而陷入工作的中间。如果我们能让关闭过程在任何活动用户会话中提示,并让用户有机会说“不,谢谢,我正在工作”来停止关闭,那就太好了 有人知道EC2实例是否有这样的功能,或者类似的功能是如何实现的吗?我同意这将是一个很棒的功能(我现在有点想要),但亚马逊方面没有办法做到这一点。当您停止或终止一个实例时,该实例永远不会有机会抱怨—这就像是猛拉

是否可以对EC2实例执行“有条件”关闭,以便关闭过程在关闭之前请求VM实例本身的任何登录用户确认

<>我们的VM实例在一个固定的计划中被启动/停止,有时我们会被强制关闭而陷入工作的中间。如果我们能让关闭过程在任何活动用户会话中提示,并让用户有机会说“不,谢谢,我正在工作”来停止关闭,那就太好了


有人知道EC2实例是否有这样的功能,或者类似的功能是如何实现的吗?

我同意这将是一个很棒的功能(我现在有点想要),但亚马逊方面没有办法做到这一点。当您停止或终止一个实例时,该实例永远不会有机会抱怨—这就像是猛拉电源线一样

但是,从您的评论“我们的VM实例是按照设置的时间表启动/停止的”,听起来您好像有一个脚本或cronjob在某处运行,它使用AWS API关闭实例

假设如此,我建议您遵循以下路径:

  • 编写一个客户端程序,该程序将在侦听某个端口上的信号的每个实例上运行
  • 让您的自动关机程序在每个实例上向该端口发送该信号
  • 该实例检查已登录的用户并询问他们*
  • 如果用户回答是,则向主cronjob发送一个信号,表示可以关机
  • 然后通过API关闭实例
  • 当然,你可以也应该随心所欲地处理异常(比如用户仍然想要工作)



    *我不知道如何做到这一点。

    通过介绍我的想法:在EC2中的Linux虚拟机上,如果您指示系统关闭并“关机”(例如,
    sudo halt
    ),不仅机器看起来做了您期望的事情,实例本身实际上也会在EC2中转换到“stopped”状态

    我不在EC2中使用Windows,只使用Linux,我不认为自己是Windows服务器专家,但是假设EC2中的Windows实例看到了相同的行为整合,那么我看到了两个看似可行的选项。p> 第一个选项:您的计划维护脚本不是通过EC2 API停止实例,而是通过远程调用

    shutdown
    命令指示机器自行关闭

    shutdown/m\\computername/s/t 600/c“nighty night”

    据我所知,这将为任何登录用户弹出一个警告,然后用户可以选择在600秒警告过期之前取消关机:

    shutdown/a

    可能会有一些复杂的情况,比如身份验证需要采用的方式,或者其他一些Windows的怪癖使得这个解决方案成了问题,但从我的角度来看,它似乎非常理想。脚本可以继续尝试每小时停止一次机器,或者不管多么频繁,直到发现机器实际上已经处于停止状态

    第二种选择:您不希望依赖实例本身,但是如果远程调用
    shutdown
    比看起来更复杂,然后,计划B是您可以在实例本身上使用任务调度器来执行相同的功能——调用带有超时的shutdown实用程序,以便用户有时间在需要时中止。作为故障保护,如果机器没有停机,您随后仍然可以进行API调用,但可以在以后进行调用,同时发出警报/警报,通知您需要使用备用位置,这将提醒您一线关机系统可能没有按预期运行


    当然,在Linux中,这可以很容易地实现为一个cron作业,它触发了
    shutdown
    命令,该命令会广播警告,同样可以由具有足够权限的用户中止,或者由通过SSH连接到机器并按计划发出shutdown命令的远程进程中止。

    该“计划”如何实际执行?如果实例正在停止(而不是终止),那么是的,可能有一种有效的方法。。。但这取决于当前启动关机的方式。现在,我们正在使用powershell脚本中的标准AWS api执行此操作,而powershell脚本又使用windows任务计划程序进行计划。实例是否也是windows计算机?是,我们计划自动启动/停止的所有机器都是windows机器。这不是个坏主意,但我真的希望在不依赖客户端机器的情况下完成它。我想知道是否有一个内置的windows实用程序来提示并获得响应?