前言

最近写了一个爬虫脚本, 脚本跑在一台北京的 ecs 上. 但奈何因某种未知力量, 需要连接代理才能访问目标网站.

本来想着自己搭代理, 但是太贵了, 就暂时搁置了. 直到我发现了这个:

阿里云香港的服务器, 一个小时才5分钱. 如果脚本直接跑在香港服务器上不就可以了咩, 按照这个价格, 我每天使用一个小时, 一个月也就不到两块(流量另付).

窥探

我的基本思路是这样的:

  • 北京 ecs 定时任务, 创建并启动香港 ecs
  • 在香港 ecs 上执行任务
  • 任务执行完成后, 将香港 ecs 删除

说干就干, 查了一下阿里云提供的API, 云服务商确实是方便, 基本所有操作都可以通过API来执行. API文档地址: https://next.api.aliyun.com/api/Ecs

API文档上每个语言的每个接口, 都有对应的 demo, 这点点个赞.

启动 ecs

启动 ecs 方法: runInstances, 可以自定义参数, 不过个人推荐创建一个启动模板, 比较方便:

其中的UserData参数 其实就是一个小脚本, 不过不能超过16kb. 自定义数据文档

我们就通过他, 在 ecs 创建之后自动执行任务.

通过下面命令, 可查看传入 ecs 的脚本内容(其实在文档中写的很清楚了):

curl http://100.100.100.200/latest/user-data

好, 我们启动的脚本需要执行以下操作:

  1. 初始化环境
  2. 将需要运行的项目拽下来
  3. 运行脚本
  4. 完成后将自己删除

我的脚本大概这样, 可供参考:

#!/bin/sh
# 先下载依赖
apt update
apt install -y git php curl
# 安装 composer
export HOME=/root
curl -sS https://getcomposer.org/installer -o /root/composer-setup.php
/usr/bin/php /root/composer-setup.php --install-dir=/usr/local/bin --filename=composer
# 下载项目
git clone xxx /var/workspace
# 安装vendor
cd /var/workspace
printf 'yes\n' | composer install
# 导入配置文件
echo '$confJson' > /var/workspace/cron/conf.json
# 运行命令...
# 运行脚本将自己删除
php /var/worspace/cron/delete_self.php

注意, 这里将删除自己的脚本单独拿出来了, 为什么不再任务脚本执行完成后直接删除自己呢? 如果因为某种不可知的原因, 任务脚本挂了, 会导致实例没有被正常删除, 这可都是白花花的银子啊.

如果你遇到UserData有问题, 但是开一台新的 ecs 后, 重新运行又没问题. 此时, 可查看/var/log/cloud-init-output.log文件进行排查, 记录了初始化脚本的运行结果.

删除 ecs

现在任务已经跑起来了, 但是跑完了之后还需要删除自己呀. 查看后发现了deleteInstances方法, 但参数需要instanceId, 如何获得当前运行实例的instanceId呢? 找了一下文档中也有介绍

小提示, 查找语法: instance-Id site:https://help.aliyun.com/ 直接定位目标页面.

访问地址:

curl http://100.100.100.200/latest/meta-data/instance-id

获取当前实例 ID 后, 接下来就简单了, 把自己删除掉就好啦.


通过这种方式执行脚本, 实在是经济又实惠. 有需要的小伙伴不妨一试哦~

阿里云定时任务并自动释放相关推荐

  1. 阿里云盘三月自动签到Python脚本,可本地、青龙、云函数自动执行

    阿里云盘自动签到脚本 引言 准备工作 运行脚本 本地运行 下载脚本 配置 python 运行环境 安装依赖 运行脚本 运行结果 青龙面板运行 新增订阅 安装依赖 添加环境变量 运行脚本 注意 本文博客 ...

  2. 对话阿里云叔同:释放云价值,让容器成为“普适”技术

    戳蓝字"CSDN云计算"关注我们哦! 作者 | 刘丹 受访者 | 丁宇 出品 | CSDN云计算(ID:CSDNcloud) 云改变了IT业态和市场格局,催生了应用大发展的时代,企 ...

  3. Air202掉坑日记(2)——连接阿里云成功后自动掉线(AT版本)

    离上次更新已经过了20来天了,主要还是因为工作原因一直丢在旁边吃灰,趁着补休赶紧拿出来玩玩,结果一不小心又掉入新坑,不说了直接上图吧! 发送AT+MIPSTART=****************** ...

  4. 阿里云服务器到期后多久会释放

    阿里云服务器到期多久释放?如果你买的是阿里云轻量应用服务器,到期后会将服务器关机,7 天内数据保留,用户可以续费.超过 7 天后未续费,服务器将会被释放. 如果你买的是阿里云的云服务器ECS,一般会将 ...

  5. 阿里云ACP认证详细笔记(一)

    2019独角兽企业重金招聘Python工程师标准>>> ECS -------------------------- 1.云服务器Elastic Compute Service(EC ...

  6. API信息全掌控,方便你的日志管理——阿里云推出API网关打通日志服务

    摘要: 近日,阿里云API网关对接了日志服务,可以输出用户在API网关产生的API调用日志,目前支持将 API 接入 API 网关的用户查看日志明细.概况.报表分析.在线查询等. 访问日志(Accce ...

  7. 浅谈MQTT底层原理(网络调试助手直连阿里云)

    目录 第一节 本文探讨的内容 第二节 环境搭建 第三节 MQTT控制报文格式 第四节 CONNEC报文 第五节 订阅和取消订阅 第六节 接收消息和发布消息 第七节 网络调试助手直连阿里云极速体验 第一 ...

  8. 阿里云证书 | 套路太深,还是我打开姿势不对?

    文章所有链接,请点击文章左下角"阅读原文"查阅. 一.阿里云证书资源包初体验 2021 年 1 月 13 左右,收到阿里云提示个人 SSL 证书即将过期,需要续费.于是登陆阿里云, ...

  9. 使用阿里云接口实现证件照制作

    之前制作证件照使用face++的人像抠图和自己实现向face++抠出来的透明图加上自己设置的背景实现证件照的制作,后面发现如果拍的照片不是很正规的话,使用抠图再增加背景色后制作成的证件照感觉不是很好, ...

最新文章

  1. JDK、JRE、JVM三者间的关系(有图)
  2. csgo陀螺仪是什么意思_CSGO:起源2将在五月中旬推出?B5无意间透露出这个消息...
  3. MySQL / schema的概念
  4. PWN-PRACTICE-BUUCTF-12
  5. 招商银行信用卡中心华泰证券暑期实习软开笔试小结
  6. 局域网中计算机网络密码查看,Win10怎么查看电脑上已知的wifi网络密码
  7. IDEA使用git提交代码时,点了commit之后卡死在performing code analysis部分,或者performing code analysis结束后没有进入下一步操作。
  8. socket编程简单Demo讲解及源码分享(C# Winform 内网)
  9. 索尼爱立信k510驱动_未来人工智能驱动的电信网络:爱立信案例研究
  10. BZOJ3813 奇数国
  11. dux修改index.php,DUX主题修改首页轮播图为通栏模式
  12. 九宫格,二十五宫格,甚至八十一宫格 技巧
  13. 怎么用计算机弹奏忘羡,《忘羡,钢琴谱》魔道祖师 岚之调(五线谱 钢琴曲 指法)-弹吧|蛐蛐钢琴网...
  14. 关于一台机器运行两个身份证读卡器模块(总结)
  15. 拉黑的微信好友怎么恢复,拉黑的微信好友聊天记录还在吗
  16. 全国计算机四级网络工程师教程,全国计算机等级考试立体化应试教程——四级网络工程师...
  17. cocos2dx fnt字体、自定义字体制作
  18. 最近公共祖先 (Lowest common ancestor)
  19. C++类与对象入门实践(日期类的实现)
  20. 基于Visual C++ 2010开发Windows7应用 开发多点触控MFC应用程序

热门文章

  1. 通过数组和枚举简化GPIO操作编码
  2. smbus协议的command_SMBus总线概述
  3. mybatisplus新增返回主键_第17期:索引设计(主键设计)
  4. iptable 详解_最全的iptables防火墙详解.pdf
  5. ubuntu 设置开机执行脚本_Ubuntu 16.04设置rc.local开机启动命令/脚本的方法
  6. JAVA入门级教学之(多态)
  7. JAVA入门级教学之(方法-4)
  8. b - 数据结构实验之查找二:平衡二叉树_文件系统的灵魂数据结构 B树
  9. python次方运算_neg__python 魔术方法1 运算符重载
  10. python的特点及应用-python有什么特性和劣势?老男孩python入门