| name | tencentcloud-edgeone |
| description | Manage Tencent Cloud EdgeOne (CDN + edge security). Use when the user
asks to: list zones, purge CDN cache (URL / prefix / hostname / all),
prefetch URLs to warm edges, check purge / prefetch task status,
manage acceleration domains, list / create / delete EdgeOne DNS
records, inspect WAF / security configuration. Backed by the official
tencentcloud-sdk-python TEO client.
|
| license | Apache-2.0 |
| metadata | {"author":"acedatacloud","version":"1.0"} |
| connections | ["tencentcloud"] |
Tencent Cloud EdgeOne (CDN + Security)
Manage EdgeOne zones — purge cache, prefetch URLs, manage DNS records on the zone, check WAF settings.
Setup: See tencentcloud authentication. The SDK reads TENCENTCLOUD_SECRET_ID / TENCENTCLOUD_SECRET_KEY from env. EdgeOne is global — Region="" is fine.
CLI (preferred)
The skill ships scripts/edgeone.py — wraps zone discovery, purge / prefetch, task tracking, EdgeOne DNS records, and WAF inspection.
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
python3 $EO zone zone-xxxxxxxx
python3 $EO domains zone-xxxxxxxx
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
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
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
python3 $EO waf zone-xxxxxxxx
Purge / prefetch propagation is global but typically takes 30s–2min. Use purge-tasks --status processing to wait.
When to Use
- List EdgeOne zones / acceleration domains
- Purge cache after a deploy (by URL, prefix, hostname, or whole zone)
- Prefetch URLs to warm edge nodes
- Track purge / prefetch task status
- Manage EdgeOne DNS records (zones managed by EdgeOne use the TEO API, not DNSPod)
- Inspect WAF / security config
Dependencies
pip install tencentcloud-sdk-python
Quick start
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, "")
Workflows
List zones
req = models.DescribeZonesRequest()
req.Limit = 100
resp = client.DescribeZones(req)
for z in resp.Zones:
print(z.ZoneId, z.ZoneName, z.Status, z.Type)
Zone IDs look like zone-xxxxxxxx. The ZoneName is the apex domain (e.g. acedata.cloud).
List acceleration domains in a zone
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)
Purge cache — by 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)
Purge by hostname (entire host)
req = models.CreatePurgeTaskRequest()
req.ZoneId = "zone-xxxxxxxx"
req.Type = "purge_host"
req.Targets = ["hub.example.com"]
client.CreatePurgeTask(req)
Purge by prefix (all URLs under a path)
req = models.CreatePurgeTaskRequest()
req.ZoneId = "zone-xxxxxxxx"
req.Type = "purge_prefix"
req.Targets = ["https://hub.example.com/assets/"]
client.CreatePurgeTask(req)
Purge ALL cache for a zone (nuclear option)
req = models.CreatePurgeTaskRequest()
req.ZoneId = "zone-xxxxxxxx"
req.Type = "purge_all"
client.CreatePurgeTask(req)
Prefetch (pre-warm edges)
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)
Track task status
req = models.DescribePurgeTasksRequest()
req.ZoneId = "zone-xxxxxxxx"
req.Limit = 50
resp = client.DescribePurgeTasks(req)
for t in resp.Tasks:
print(t.JobId, t.Type, t.Status, t.CreateTime)
List EdgeOne DNS records on a zone
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)
Create an EdgeOne DNS record
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)
Delete an EdgeOne DNS record
req = models.DeleteDnsRecordsRequest()
req.ZoneId = "zone-xxxxxxxx"
req.RecordIds = ["<record-id>"]
client.DeleteDnsRecords(req)
Purge type cheatsheet
| Type | When to use | Caveat |
|---|
purge_url | Specific page / asset changed | Most surgical; up to 1000 URLs per call |
purge_prefix | A directory of assets changed (/assets/...) | Treats target as a prefix match |
purge_host | Full site deployment | Affects everything on the hostname |
purge_all | Emergency / major migration | All cache for the zone — origin spike inevitable |
Typical post-deploy sequence
client.CreatePurgeTask(models.CreatePurgeTaskRequest(
ZoneId="zone-xxxxxxxx",
Type="purge_host",
Targets=["hub.example.com"],
))
client.CreatePrefetchTask(models.CreatePrefetchTaskRequest(
ZoneId="zone-xxxxxxxx",
Targets=[
"https://hub.example.com/",
"https://hub.example.com/chat",
"https://hub.example.com/login",
],
))
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)
Important reminders
purge_all causes origin load spike. Use only when surgical purges aren't enough.
- Prefetch isn't free — it counts against your CDN traffic quota at edge-warm time. Only prefetch URLs you're confident users will hit.
- Purge / prefetch propagation is global but takes 30s–2min. Plan deploy windows accordingly.
- EdgeOne DNS and DNSPod DNS are separate. Domains onboarded to EdgeOne with NS-mode resolve through the TEO API; CNAME-mode domains still resolve through whatever DNS you've configured (DNSPod or third-party). Use the right skill for the right zone type.
Console links