定时关闭AWS上的EC2机器实例

简介: 最近一段时间在做一个产品从阿里云向亚马逊云中国区迁移的前期试验。亚马逊中国区并没有开放免费体验账号,使用的每一份资源都要实打实的掏钱。而为了实验我们使用时一般要启动好几台EC2实例。为了不浪费辛辛苦苦赚的钱,特写了一个脚本,在每天晚上6点将所有的EC2实例自动关闭。

最近一段时间在做一个产品从阿里云向亚马逊云中国区迁移的前期试验。亚马逊中国区并没有开放免费体验账号,使用的每一份资源都要实打实的掏钱。而为了实验我们使用时一般要启动好几台EC2实例。为了不浪费辛辛苦苦赚的钱,特写了一个脚本,在每天晚上6点将所有的EC2实例自动关闭。由于在亚马逊云中关闭的EC2实例是不收费的,只收取少量的存储费用,所以这样节省不少钱。

为了让一台机器可以值守这个任务,所以我们在AWS留一台机器用来定期执行关闭其它机器的命令。关闭EC2的命令主要是使用AWS提供了awscli来实现。

首先在这台机器上安装awscli。这台机器使用的操作系统是ubuntu 12.04,所以使用其自带的包管理器可以一键安装。

1
$ apt-get install awscli

安装完毕后需要配置aws命令行工具的认证。方式有很多,最简单的是运行aws configure来实现。

1
2
3
4
5
$ aws configure
AWS Access Key ID [None]: YOURACCESSKEY
AWS Secret Access Key [None]: YOURSECRTKEY
Default region name [None]: cn-north-1
Default output format [None]: json

或者你可以在当前用户根目录下的.aws目录中配置认证信息,详情请移步http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html.

接下来在当前用户根目录下创建stopinstance.sh文件,并输入以下信息.

stopinstance.sh
1
2
#!/bin/bash
aws ec2 stop-instances --instance-ids i-68726951 i-965ca276 i-377a620e i-d35fa133 i-fe5ca21e

这就是关闭指定EC2实例的命令,--instance-ids后面跟的就是你的EC2实例的id。

把该文件权限改为可执行。

1
$ chmod +x stopinstance.sh

最后要让该命令定时执行,那么就要借助crontab这个命令了。

使用crontab -e来编辑batch文件,在文件最后加上下行.

1
* 18 * * * ~/stopinstance.sh >> ~/shutdown.log

前五个字段制定命令执行的时间。第一个是分钟,第二个是小时,第三个是每月的哪天,第四个是月份,第五个是每周的哪天。配置相当灵活。

这句话是描述了一个batch任务,在每天的下午6点执行,会执行stopinstance.sh脚本,并把日志输出到shutdown.log文件中。

注意使用crontab执行任务时一定要注意当前机器的时区和你期望执行的时间所用时区是否不同。有关crontab和cron命令的进一步使用请移步http://www.adminschoice.com/crontab-quick-reference

至此,就大功告成了。

相关文章
|
1月前
|
弹性计算 资源调度 Serverless
ECS重启问题之跨账号重启调用如何解决
ECS(Elastic Compute Service,弹性计算服务)是云计算服务提供商提供的一种基础云服务,允许用户在云端获取和配置虚拟服务器。以下是ECS服务使用中的一些常见问题及其解答的合集:
|
1月前
|
Prometheus Kubernetes 监控
容器服务ACK常见问题之pod设置securityContext调整参数失败如何解决
容器服务ACK(阿里云容器服务 Kubernetes 版)是阿里云提供的一种托管式Kubernetes服务,帮助用户轻松使用Kubernetes进行应用部署、管理和扩展。本汇总收集了容器服务ACK使用中的常见问题及答案,包括集群管理、应用部署、服务访问、网络配置、存储使用、安全保障等方面,旨在帮助用户快速解决使用过程中遇到的难题,提升容器管理和运维效率。
|
25天前
|
Java 应用服务中间件 nginx
服务器重置实例后的部署工作
该内容描述了一次服务器配置过程,包括使用`nginx`作为反向代理,通过`docker`运行两个项目环境(生产&测试)以及`redis`服务。`init.sh`脚本用于创建项目目录和安装`docker`、`unzip`、`nginx`。`step.sh`用于管理`java`项目的容器。在`nginx`配置中,设定了反向代理规则。最后,通过`systemctl restart nginx`重启服务,并提到项目部署自动化已集成到`jenkins`,只需更新服务器访问凭证即可。
|
1月前
|
Java Serverless 测试技术
Serverless 应用引擎常见问题之自动缩容策略触发的时候终止先创建的机器如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
|
1月前
|
Kubernetes 监控 Linux
容器服务ACK常见问题之新增一台CentOS 5.4内核的节点失败如何解决
容器服务ACK(阿里云容器服务 Kubernetes 版)是阿里云提供的一种托管式Kubernetes服务,帮助用户轻松使用Kubernetes进行应用部署、管理和扩展。本汇总收集了容器服务ACK使用中的常见问题及答案,包括集群管理、应用部署、服务访问、网络配置、存储使用、安全保障等方面,旨在帮助用户快速解决使用过程中遇到的难题,提升容器管理和运维效率。
|
1月前
|
Kubernetes NoSQL Redis
容器服务ACK常见问题之修改内存限制失败如何解决
容器服务ACK(阿里云容器服务 Kubernetes 版)是阿里云提供的一种托管式Kubernetes服务,帮助用户轻松使用Kubernetes进行应用部署、管理和扩展。本汇总收集了容器服务ACK使用中的常见问题及答案,包括集群管理、应用部署、服务访问、网络配置、存储使用、安全保障等方面,旨在帮助用户快速解决使用过程中遇到的难题,提升容器管理和运维效率。
|
1月前
|
Serverless 文件存储
函数计算FC部署问题之启动失败如何解决
函数计算FC部署是指在阿里云Function Compute服务上部署函数或应用程序的过程,它提供了一个无需管理服务器即可运行代码的平台;本合集将介绍和总结函数计算FC部署中常见的问题与解决方案,指导用户如何高效部署和管理Serverless函数。
|
6月前
|
监控 应用服务中间件
如下请问EDAS的这个问题怎么解决? 应用id:2b0e6935-47fb-40ec-a11d-7dac320aecc1 集群中的节点内存是足够的,部署跑不起来 可以帮忙看看吗,以前集群下应用发布都是正常的,最近集群下应用部署基本都报错跑不起来,提示节点不可用
如下请问EDAS的这个问题怎么解决? 应用id:2b0e6935-47fb-40ec-a11d-7dac320aecc1 集群中的节点内存是足够的,部署跑不起来 可以帮忙看看吗,以前集群下应用发布都是正常的,最近集群下应用部署基本都报错跑不起来,提示节点不可用
72 2
|
7月前
|
存储 网络安全 云计算
AWS EC2入门指南中创建和配置云虚拟机实例的基本步骤
Amazon Elastic Compute Cloud(EC2)是亚马逊云计算(AWS)提供的一项强大的云计算服务,它允许用户轻松地启动虚拟机实例以运行应用程序和服务。本文将引导您完成 AWS EC2 的快速入门过程,以帮助您开始使用这一强大的云计算服务。
187 0
|
Kubernetes 监控 网络协议
实验记录:PolarDB-X集群kill POD自动恢复实验
实验记录:PolarDB-X集群kill POD自动恢复实验
176 0
实验记录:PolarDB-X集群kill POD自动恢复实验