mcpField
T
tencentcloud-edgeone

tencentcloud-edgeone

github.com/acedatacloudクラウド・DevOps17209 回インストール今日更新
リポジトリ

tencentcloud-edgeone について

tencentcloud-edgeone は、Tencent Cloud EdgeOne のゾーン、CDN キャッシュ、DNS レコード、WAF 設定を管理するスキルです。コマンドラインスクリプトでキャッシュ削除や URL のプリフェッチを実行し、タスク状況を追跡できます。

主な機能

  1. 01ゾーンとアクセラレーションドメインの一覧表示
  2. 02URL、プレフィックス、ホスト、ゾーン単位のキャッシュ削除
  3. 03エッジノードへの URL プリフェッチ
  4. 04削除・プリフェッチタスクの追跡
  5. 05ゾーン DNS レコードの管理と WAF の確認

活用シーン

  1. 01デプロイ後のキャッシュ削除
  2. 02指定ルートのエッジキャッシュの事前読み込み
  3. 03EdgeOne DNS レコードの確認や更新
  4. 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 またはサードパーティ)を通じて名前解決されます。ゾーンの種類に合ったスキルを使用してください。

コンソールのリンク

コメント