mcpField
T
tencentcloud-edgeone

tencentcloud-edgeone

github.com/acedatacloud云与 DevOps17209 次安装今天更新
代码仓库

关于 tencentcloud-edgeone

tencentcloud-edgeone 是管理 Tencent Cloud EdgeOne 区域、CDN 缓存、DNS 记录和 WAF 设置的技能。其命令行脚本支持清除缓存、预热 URL,并跟踪任务状态。

主要功能

  1. 01列出区域和加速域名
  2. 02按 URL、前缀、主机或区域清除缓存
  3. 03将 URL 预热到边缘节点
  4. 04跟踪清除和预热任务
  5. 05管理区域 DNS 记录并检查 WAF

适用场景

  1. 01部署后清除缓存资源
  2. 02为选定路由预热边缘缓存
  3. 03检查或更新 EdgeOne DNS 记录
  4. 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