Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.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
Ruby on rails 如何在启动后根据指定的小时自动停止EC2实例?_Ruby On Rails_Amazon Web Services_Amazon Ec2 - Fatal编程技术网

Ruby on rails 如何在启动后根据指定的小时自动停止EC2实例?

Ruby on rails 如何在启动后根据指定的小时自动停止EC2实例?,ruby-on-rails,amazon-web-services,amazon-ec2,Ruby On Rails,Amazon Web Services,Amazon Ec2,我知道如何使用Ruby sdk启动和停止ec2实例。现在我需要在启动ec2实例后,根据小时参数自动关机吗? 我怎样才能解决这个问题?请提供一些有用的参考资料 #disconnecting EC2 Instance def disconnect_group_instance if current_user.present? server_instance = GroupUserInstance.find_by_group_user_id(param

我知道如何使用Ruby sdk启动和停止ec2实例。现在我需要在启动ec2实例后,根据小时参数自动关机吗? 我怎样才能解决这个问题?请提供一些有用的参考资料

   #disconnecting EC2 Instance 
   def disconnect_group_instance
        if current_user.present?
          server_instance = GroupUserInstance.find_by_group_user_id(params[:id])
           ec2 = Aws::EC2::Client.new
           resp = ec2.stop_instances({
           dry_run: false,
           instance_ids: [server_instance.server_id],
           force: false
         })
       end
   end
是否有方法传递时间变量,并在此基础上执行适当的操作?

#/usr/bin/python
导入操作系统
导入json
进口boto3
#python脚本关闭每天/每小时使用lambda的VM列表
'''
事件={
“主题”:“主题:aws:sns:ap-Southast-1:aws-account\u id:sns\u topic”,
“实例id”:“i-0fbaf00d222f6f765”,
“行动”:“停止”,
“区域”:“ap-东南-1”
}
'''
#参数可以通过触发lambda函数的cloudwatch事件传递,也可以通过lambda环境变量传递
def lambda_处理程序(事件、上下文):
topic\u arn=事件['topic\u arn']
实例id=事件['instance\u id']
动作=事件['action']
区域=事件['region']
subject=instance\u id
ec2_client=boto3.client('ec2')
sns_client=boto3.client(“sns”)
message={“topic\u arn”:topic\u arn,“instance”:instance\u id}
def stop_实例(实例id):
stop_instance=ec2_client.stop_实例(instanceId=[instance_id],Force=True)
消息['status']=“已停止”
发送通知(主题、主题、消息)
回信
def start_实例(实例id):
start_instance=ec2_client.start_实例(instanceId=[instance_id,]))
消息['status']='started'
发送通知(主题、主题、消息)
回信
def发送通知(主题、主题、消息):
publish=sns\u client.publish(主题链接=topic\u arn\
Message=json.dumps(消息)\
主语\
)
如果操作==‘停止’:
返回(停止实例(实例id))
其他:
返回(开始\实例(实例\ id))

我不太理解您的要求,但这是lambda可以解决的问题吗?每小时关闭一次服务器?谢谢@George Appleton的回复。实际上,我正在寻找api调用,因为我的时间段是用户定义的(可能是200小时、300小时等等)。基于时间段,我需要自动关闭ec2 Instance。aws api应该能够轻松处理,有两个链接应该会有所帮助。您应该能够让实例自行关闭。但是,如果您有问题,另一种选择是让lambda端点每隔x个时间段查询您的ec2实例api,并在某些响应上关闭ec2实例。我不想在这里使用lambda函数。如果api不可用,有什么办法吗?理想情况下,您需要一个作业调度器或事件驱动源来完成此操作。如果没有找到任何api。您可以安排一个cron作业,每天凌晨12:00通过bash/ruby/python脚本轮询vm的正常运行时间。如果达到所需的时间,您可以执行halt/init 0命令自行停止vm。@NeerajAmoli lambda确实支持ruby