关于 tencentcloud-edgeone
tencentcloud-edgeone 是管理 Tencent Cloud EdgeOne 区域、CDN 缓存、DNS 记录和 WAF 设置的技能。其命令行脚本支持清除缓存、预热 URL,并跟踪任务状态。
主要功能
- 01列出区域和加速域名
- 02按 URL、前缀、主机或区域清除缓存
- 03将 URL 预热到边缘节点
- 04跟踪清除和预热任务
- 05管理区域 DNS 记录并检查 WAF
适用场景
- 01部署后清除缓存资源
- 02为选定路由预热边缘缓存
- 03检查或更新 EdgeOne DNS 记录
- 04查看区域的 WAF 设置
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ acedatacloud/ skills --skill tencentcloud-edgeone安装后在 Claude Code 中输入/tencentcloud-edgeone确认已加载。
附带文件scripts/edgeone.py
详细介绍
腾讯云 EdgeOne(CDN + 安全)
管理 EdgeOne 区域 — 刷新缓存、预热 URL、管理区域内的 DNS 记录、检查 WAF 设置。
设置: 请参阅 腾讯云身份验证。SDK 会从环境变量中读取
TENCENTCLOUD_SECRET_ID/TENCENTCLOUD_SECRET_KEY。EdgeOne 是全球服务 —Region=""即可。
CLI(推荐)
该技能附带 scripts/edgeone.py — 用于封装区域发现、刷新 / 预热、任务跟踪、EdgeOne DNS 记录管理和 WAF 检查。
# $SKILL_DIR can point at another skill loaded this turn — anchor on our own
# script (re-run this at the top of every fresh-shell Bash block).
EO="$SKILL_DIR/scripts/edgeone.py"; [ -f "$EO" ] || EO=$(find /tmp -maxdepth 8 -path '*/skills/*/scripts/edgeone.py' 2>/dev/null | head -1)
[ -f "$EO" ] || { echo "tencentcloud-edgeone script not found (SKILL_DIR=$SKILL_DIR)" >&2; exit 1; }
python3 $EO zones # list zones
python3 $EO zone zone-xxxxxxxx # one zone's details
python3 $EO domains zone-xxxxxxxx # acceleration domains
python3 $EO purge zone-xxxxxxxx --urls https://hub.example.com/index.html
python3 $EO purge zone-xxxxxxxx --prefixes https://hub.example.com/assets/
python3 $EO purge zone-xxxxxxxx --hosts hub.example.com
python3 $EO purge zone-xxxxxxxx --all # nuclear
python3 $EO prefetch zone-xxxxxxxx --urls https://hub.example.com/ https://hub.example.com/chat
python3 $EO purge-tasks zone-xxxxxxxx --status processing
python3 $EO prefetch-tasks zone-xxxxxxxx
python3 $EO dns zone-xxxxxxxx # EdgeOne DNS records
python3 $EO dns-create zone-xxxxxxxx --name sub --type CNAME --content origin.example.com
python3 $EO dns-delete zone-xxxxxxxx <record-id>
python3 $EO security zone-xxxxxxxx # WAF / security cfg
python3 $EO waf zone-xxxxxxxx
刷新 / 预热的传播范围是全球,但通常需要 30s–2min。使用 purge-tasks --status processing 等待。
适用场景
- 列出 EdgeOne 区域 / 加速域名
- 部署后刷新缓存(按 URL、前缀、主机名或整个区域)
- 预热 URL,将内容加载到边缘节点
- 跟踪刷新 / 预热任务状态
- 管理 EdgeOne DNS 记录(由 EdgeOne 管理的区域使用 TEO API,而非 DNSPod)
- 检查 WAF / 安全配置
依赖项
pip install tencentcloud-sdk-python
快速开始
import os
from tencentcloud.common import credential
from tencentcloud.teo.v20220901 import teo_client, models
cred = credential.EnvironmentVariableCredential().get_credential()
client = teo_client.TeoClient(cred, "")
工作流
列出区域
req = models.DescribeZonesRequest()
req.Limit = 100
resp = client.DescribeZones(req)
for z in resp.Zones:
print(z.ZoneId, z.ZoneName, z.Status, z.Type)
区域 ID 的格式为
zone-xxxxxxxx。ZoneName是顶级域名(例如acedata.cloud)。
列出区域内的加速域名
req = models.DescribeAccelerationDomainsRequest()
req.ZoneId = "zone-xxxxxxxx"
req.Limit = 100
resp = client.DescribeAccelerationDomains(req)
for d in resp.AccelerationDomains:
print(d.DomainName, d.DomainStatus, d.OriginDetail.OriginType)
按 URL 刷新缓存
req = models.CreatePurgeTaskRequest()
req.ZoneId = "zone-xxxxxxxx"
req.Type = "purge_url"
req.Targets = [
"https://hub.example.com/index.html",
"https://hub.example.com/assets/main.css",
]
resp = client.CreatePurgeTask(req)
print("Task:", resp.JobId)
按主机名刷新(整个主机)
req = models.CreatePurgeTaskRequest()
req.ZoneId = "zone-xxxxxxxx"
req.Type = "purge_host"
req.Targets = ["hub.example.com"]
client.CreatePurgeTask(req)
按前缀刷新(路径下的所有 URL)
req = models.CreatePurgeTaskRequest()
req.ZoneId = "zone-xxxxxxxx"
req.Type = "purge_prefix"
req.Targets = ["https://hub.example.com/assets/"]
client.CreatePurgeTask(req)
刷新区域内的所有缓存(强力操作)
# Confirm with the user — this re-fetches every cached object on next request,
# spiking origin load.
req = models.CreatePurgeTaskRequest()
req.ZoneId = "zone-xxxxxxxx"
req.Type = "purge_all"
client.CreatePurgeTask(req)
预热(提前预热边缘节点)
req = models.CreatePrefetchTaskRequest()
req.ZoneId = "zone-xxxxxxxx"
req.Targets = [
"https://hub.example.com/",
"https://hub.example.com/chat",
]
resp = client.CreatePrefetchTask(req)
print("Task:", resp.JobId)
跟踪任务状态
req = models.DescribePurgeTasksRequest()
req.ZoneId = "zone-xxxxxxxx"
req.Limit = 50
# Optional: req.Filters = [{"Name": "job-id", "Values": ["<job-id>"]}]
resp = client.DescribePurgeTasks(req)
for t in resp.Tasks:
print(t.JobId, t.Type, t.Status, t.CreateTime)
# Same shape for DescribePrefetchTasks
列出区域内的 EdgeOne DNS 记录
req = models.DescribeDnsRecordsRequest()
req.ZoneId = "zone-xxxxxxxx"
req.Limit = 100
resp = client.DescribeDnsRecords(req)
for r in resp.DnsRecords:
print(r.RecordId, r.Name, r.Type, r.Content)
创建 EdgeOne DNS 记录
req = models.CreateDnsRecordRequest()
req.ZoneId = "zone-xxxxxxxx"
req.Name = "sub.example.com"
req.Type = "CNAME"
req.Content = "origin.example.com"
req.TTL = 600
client.CreateDnsRecord(req)
删除 EdgeOne DNS 记录
req = models.DeleteDnsRecordsRequest()
req.ZoneId = "zone-xxxxxxxx"
req.RecordIds = ["<record-id>"]
client.DeleteDnsRecords(req)
刷新类型速查表
| 类型 | 适用场景 | 注意事项 |
|---|---|---|
purge_url | 特定页面 / 资源发生变更 | 范围最精确;每次调用最多 1000 个 URL |
purge_prefix | 某个资源目录发生变更(/assets/...) | 将目标视为前缀匹配 |
purge_host | 整个站点部署 | 影响该主机名下的所有内容 |
purge_all | 紧急情况 / 重大迁移 | 刷新区域内的所有缓存 — 源站流量必然激增 |
典型的部署后流程
# 1. Purge the hostname so users get the new bundle
client.CreatePurgeTask(models.CreatePurgeTaskRequest(
ZoneId="zone-xxxxxxxx",
Type="purge_host",
Targets=["hub.example.com"],
))
# 2. Prefetch the most-trafficked routes so edge cache is warm
client.CreatePrefetchTask(models.CreatePrefetchTaskRequest(
ZoneId="zone-xxxxxxxx",
Targets=[
"https://hub.example.com/",
"https://hub.example.com/chat",
"https://hub.example.com/login",
],
))
# 3. Watch for completion (typically 30s – 2min)
import time
while True:
resp = client.DescribePurgeTasks(models.DescribePurgeTasksRequest(
ZoneId="zone-xxxxxxxx",
Filters=[{"Name": "status", "Values": ["processing"]}],
))
if not resp.Tasks:
print("All purge tasks done.")
break
print(f"{len(resp.Tasks)} tasks still processing...")
time.sleep(15)
重要提醒
purge_all会导致源站负载激增。 仅在精确刷新无法满足需求时使用。- 预热并非免费 — 在边缘预热时会计入 CDN 流量配额。只预热你确信用户会访问的 URL。
- 刷新 / 预热的传播范围是全球的,但需要 30s–2min。请据此安排部署时间。
- EdgeOne DNS 和 DNSPod DNS 是相互独立的。通过 NS 模式接入 EdgeOne 的域名会通过 TEO API 解析;CNAME 模式的域名仍通过你配置的 DNS(DNSPod 或第三方)解析。请针对相应的区域类型使用正确的技能。
控制台链接
评论
支持 Markdown