在腾讯云轻量应用服务器(Lighthouse)中,目前官方控制台和 API 暂不支持自动定时创建快照(截至2024年6月)。但你可以通过以下几种方式实现“定时创建快照”的效果:
✅ 方案一:使用腾讯云自动化助手 + 云函数(推荐)
利用 腾讯云云函数 SCF(Serverless Cloud Function) 配合 API 调用 实现定时触发快照创建。
步骤如下:
-
开通服务
- 登录 腾讯云控制台
- 开通:
- 云函数 SCF
- CAM 权限管理(用于授权)
- Lighthouse API 访问权限
-
获取 API 密钥
- 进入 访问管理 CAM
- 创建子用户并赋予
QcloudLighthouseFullAccess或最小权限策略 - 获取
SecretId和SecretKey
-
编写云函数(Python 示例)
# -*- coding: utf8 -*-
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.lighthouse.v20200324 import lighthouse_client, models
import json
def main_handler(event, context):
# 替换为你的密钥(建议使用环境变量或 CAM 角色)
secret_id = "YOUR_SECRET_ID"
secret_key = "YOUR_SECRET_KEY"
cred = credential.Credential(secret_id, secret_key)
httpProfile = HttpProfile()
httpProfile.endpoint = "lighthouse.tencentcloudapi.com"
clientProfile = ClientProfile()
clientProfile.httpProfile = httpProfile
client = lighthouse_client.LighthouseClient(cred, "ap-guangzhou", clientProfile)
req = models.CreateSnapshotRequest()
# 设置参数:替换为你的实例 ID 和磁盘 ID
params = {
"DiskId": "disk-xxxxxx", # 系统盘或数据盘 ID
"SnapshotName": "Auto-Snapshot-" + event.get("time", "").split("T")[0] # 自动命名
}
req._deserialize(params)
try:
resp = client.CreateSnapshot(req)
print(resp.to_json_string())
return {"code": 0, "msg": "快照创建成功", "response": resp.to_json_string()}
except Exception as e:
print(e)
return {"code": -1, "msg": "创建失败", "error": str(e)}
-
部署云函数
- 在 SCF 控制台创建函数,运行环境选择 Python
- 粘贴代码,填写 SecretId/SecretKey(建议使用环境变量更安全)
-
设置定时触发器
- 在云函数中添加“触发方式” → “定时触发”
- 配置 Cron 表达式,例如每天凌晨 2 点:
0 0 2 * * *
✅ 方案二:使用本地/云服务器 + 脚本 + crontab
如果你有一台长期运行的服务器(CVM 或本地),可以写脚本调用腾讯云 API。
示例(Linux + Python + crontab):
-
安装 SDK:
pip install tencentcloud-sdk-python -
编写脚本
create_snapshot.py(内容同上) -
添加定时任务:
crontab -e添加:
0 2 * * * /usr/bin/python3 /path/to/create_snapshot.py >> /var/log/snapshot.log 2>&1
✅ 方案三:使用第三方工具(如 Terraform + 自动化平台)
结合 Terraform 管理资源,并通过 CI/CD 工具(如 GitHub Actions、Jenkins)定时执行 terraform apply 创建快照。
⚠️ 注意事项
- 快照会占用存储空间,产生费用,请定期清理旧快照。
- 建议配合 快照生命周期管理 手动或通过脚本删除超过 N 天的快照。
- 可以对系统盘或数据盘分别创建快照。
- 轻量服务器目前仅支持单块磁盘(系统盘),所以
DiskId是实例的系统盘 ID。
🔍 如何获取 DiskId?
进入 轻量应用服务器控制台 → 实例详情 → 存储与镜像 → 磁盘信息中查看 disk-xxxxxx 格式的 ID。
📌 总结
| 方法 | 是否全自动 | 难度 | 推荐度 |
|---|---|---|---|
| 云函数 + 定时触发 | ✅ 是 | ⭐⭐☆ | ⭐⭐⭐⭐☆ |
| 本地脚本 + cron | ✅ 是 | ⭐⭐☆ | ⭐⭐⭐☆ |
| 手动创建 | ❌ 否 | ⭐ | ⭐ |
如需我帮你生成完整的可部署云函数代码包(含依赖打包),请提供:
- 地域(如 ap-beijing, ap-guangzhou)
- 实例磁盘 ID
- 快照保留天数(可选,用于自动清理)
我可以进一步帮你完善自动化方案。
PHPWP博客