tencentcloud-edgeone について
tencentcloud-edgeone は、Tencent Cloud EdgeOne のゾーン、CDN キャッシュ、DNS レコード、WAF 設定を管理するスキルです。コマンドラインスクリプトでキャッシュ削除や URL のプリフェッチを実行し、タスク状況を追跡できます。
主な機能
- 01ゾーンとアクセラレーションドメインの一覧表示
- 02URL、プレフィックス、ホスト、ゾーン単位のキャッシュ削除
- 03エッジノードへの URL プリフェッチ
- 04削除・プリフェッチタスクの追跡
- 05ゾーン DNS レコードの管理と WAF の確認
活用シーン
- 01デプロイ後のキャッシュ削除
- 02指定ルートのエッジキャッシュの事前読み込み
- 03EdgeOne DNS レコードの確認や更新
- 04ゾーンの WAF 設定の確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ acedatacloud/ skills --skill tencentcloud-edgeoneインストール後、Claude Code で/tencentcloud-edgeoneを入力して読み込まれたか確認します。
同梱ファイルscripts/edgeone.py
詳細
Tencent Cloud EdgeOne(CDN + セキュリティ)
EdgeOne ゾーンを管理します。キャッシュのパージ、URL のプリフェッチ、ゾーンの DNS レコードの管理、WAF 設定の確認を行えます。
セットアップ: Tencent Cloud 認証を参照してください。SDK は環境変数から
TENCENTCLOUD_SECRET_ID/TENCENTCLOUD_SECRET_KEYを読み込みます。EdgeOne はグローバルサービスのため、Region=""で問題ありません。
CLI(推奨)
このスキルには、ゾーンの検出、パージ/プリフェッチ、タスクの追跡、EdgeOne DNS レコード、WAF の確認を行う scripts/edgeone.py が含まれています。
# $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
パージ/プリフェッチの反映はグローバルに行われますが、通常は 30 秒〜2 分かかります。purge-tasks --status processing を使用して完了を待ってください。
使用する場面
- EdgeOne ゾーン/アクセラレーションドメインの一覧表示
- デプロイ後のキャッシュのパージ(URL、プレフィックス、ホスト名、またはゾーン全体を指定)
- エッジノードをウォームアップするための URL のプリフェッチ
- パージ/プリフェッチタスクのステータスの追跡
- EdgeOne DNS レコードの管理(EdgeOne が管理するゾーンには DNSPod ではなく TEO API を使用します)
- 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 | 特定のページ/アセットに変更があった場合 | 最も対象を絞った方法です。1 回の呼び出しで最大 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 のみをプリフェッチしてください。
- パージ/プリフェッチの反映はグローバルに行われますが、30 秒〜2 分かかります。それに合わせてデプロイ時間を計画してください。
- EdgeOne DNS と DNSPod DNS は別々のサービスです。NS モードで EdgeOne に登録されたドメインは TEO API を通じて名前解決されます。CNAME モードのドメインは、設定済みの DNS(DNSPod またはサードパーティ)を通じて名前解決されます。ゾーンの種類に合ったスキルを使用してください。
コンソールのリンク
- EdgeOne コンソール:https://console.cloud.tencent.com/edgeone
- API リファレンス:https://www.tencentcloud.com/document/product/1145/53929
コメント
Markdown 対応