alicloud-network-esa by cinience/alicloud-skills
npx skills add https://github.com/cinience/alicloud-skills --skill alicloud-network-esaCategory: service
使用阿里云 OpenAPI (RPC) 及官方 Python SDK 管理所有 ESA 功能。
阿里云 ESA 提供四大核心能力:
统一使用 Python SDK 调用 ESA OpenAPI。
pip install alibabacloud_esa20240910 alibabacloud_tea_openapi alibabacloud_credentialsfrom alibabacloud_esa20240910.client import Client as Esa20240910Client
from alibabacloud_esa20240910 import models as esa_models
from alibabacloud_tea_openapi import models as open_api_models
def create_client(region_id: str = "cn-hangzhou") -> Esa20240910Client:
config = open_api_models.Config(
region_id=region_id,
endpoint="esa.cn-hangzhou.aliyuncs.com",
)
return Esa20240910Client(config)
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
Pages 是基于 Edge Routine 的快捷部署流程,将 HTML 或静态目录部署到边缘。
CreateRoutine → GetRoutineStagingCodeUploadInfo → 上传代码到OSS
→ CommitRoutineStagingCode → PublishRoutineCodeVersion(staging)
→ PublishRoutineCodeVersion(production) → GetRoutine(获取访问URL)
CreateRoutine → CreateRoutineWithAssetsCodeVersion → 打包zip上传OSS
→ 轮询 GetRoutineCodeVersionInfo(等待available)
→ CreateRoutineCodeDeployment(staging) → CreateRoutineCodeDeployment(production)
→ GetRoutine(获取访问URL)
zip 包结构取决于 EDGE_ROUTINE_TYPE(由 checkEdgeRoutineType 根据 entry 文件和 assets 目录是否存在自动判断):
routine/index.js(esbuild 打包或 --no-bundle 直接读取源文件)assets/ 下所有静态文件,保持原始目录结构routine/index.js + assets/ 静态资源(最常见)assets/ 路径相对于配置中 assets.directory。配置优先级:命令行参数 > esa.jsonc / esa.toml。
GetRoutine 获取 defaultRelatedRecord 作为访问域名详细参考: references/pages.md
通过 Python SDK 管理 Serverless 边缘函数的完整生命周期。
CreateRoutine → GetRoutineStagingCodeUploadInfo → 上传代码到OSS
→ CommitRoutineStagingCode → PublishRoutineCodeVersion
→ (CreateRoutineRoute) → GetRoutine
CreateRoutine, DeleteRoutine, GetRoutine, GetRoutineUserInfo, ListUserRoutinesGetRoutineStagingCodeUploadInfo, CommitRoutineStagingCode, PublishRoutineCodeVersion, DeleteRoutineCodeVersionCreateRoutineRoute, UpdateRoutineRoute, DeleteRoutineRoute, GetRoutineRoute, ListRoutineRoutes, ListSiteRoutesCreateRoutineRelatedRecord, DeleteRoutineRelatedRecord, ListRoutineRelatedRecordsexport default {
async fetch(request) {
return new Response("Hello", {
headers: { "content-type": "text/html;charset=UTF-8" },
});
},
};
详细参考: references/er.md
分布式边缘键值存储,可在 Edge Routine 中读写,也可通过 OpenAPI/SDK 管理。
Expiration(Unix 时间戳)或 ExpirationTtl(秒)CreateKvNamespace, DeleteKvNamespace, GetKvNamespace, GetKvAccount, DescribeKvAccountStatusPutKv, GetKv, GetKvDetail, DeleteKv, PutKvWithHighCapacityBatchPutKv, BatchDeleteKv, BatchPutKvWithHighCapacity, BatchDeleteKvWithHighCapacity, ListKvsclient = create_client()
# 创建 namespace
client.create_kv_namespace(esa_models.CreateKvNamespaceRequest(namespace="my-ns"))
# 写入
client.put_kv(esa_models.PutKvRequest(namespace="my-ns", key="k1", value="v1"))
# 读取
resp = client.get_kv(esa_models.GetKvRequest(namespace="my-ns", key="k1"))
详细参考: references/kv.md
使用 Python SDK 管理 ESA 站点、DNS 记录、缓存规则等。
PageNumber + PageSize 进行分页。ListSites 返回所有区域的站点;无需迭代区域。pending;通过 VerifySite 完成访问验证以激活。UpdateSiteAccessType 可以在 CNAME 和 NS 之间切换,但如果存在不兼容的 DNS 记录,切换到 CNAME 可能会失败。CreateRecord, ListRecords 等)对 NS 和 CNAME 连接的站点均有效。CNAME 站点 仅限于 CNAME 和 A/AAAA 类型,并且记录不能禁用加速(代理必须保持启用)。Type 参数必须精确:使用 A/AAAA(而非 A)、CNAME、MX、TXT、NS、SRV、CAA。CreateCacheRule 支持两种配置类型:global(站点范围的默认值)和 rule(带有匹配表达式的条件规则)。references/api_overview.md 中找到 API 分组和确切的 API 操作名称。scripts/ 下的脚本,并将输出写入 output/alicloud-network-esa/ 目录。scripts/list_sites.pyscripts/summary_sites_by_plan.pyscripts/check_site_status.pyscripts/list_dns_records.pyCreateSiteListSites(支持 SiteName、Status、AccessType、Coverage 过滤器)GetSiteDeleteSiteCheckSiteNameVerifySiteUpdateSiteAccessTypeUpdateSiteCoverageGetSiteCurrentNSUpdateSiteVanityNSUpdateSitePause、GetSitePauseUpdateSiteNameExclusive、GetSiteNameExclusiveActivateVersionManagement、DeactivateVersionManagementGetIPv6、UpdateIPv6NS 访问:支持完整记录类型。CNAME 访问:仅支持 CNAME 和 A/AAAA,代理必须保持启用。
CreateRecordListRecords(支持 Type、RecordName、Proxied 过滤器)GetRecordUpdateRecordDeleteRecordBatchCreateRecordsExportRecordsCreateCacheRuleListCacheRulesGetCacheRuleUpdateCacheRuleDeleteCacheRule缓存规则表达式注意事项(重要):
CreateCacheRule 的参数是扁平化的,而非嵌套的 JSON Rule 对象。Rule 参数是一个匹配条件表达式字符串。请参阅下面的规则表达式语法部分。ends_with()/starts_with() 必须使用函数调用风格;matches(正则表达式)需要标准套餐或更高版本。--EdgeCacheMode override_origin --EdgeCacheTtl <seconds> 设置边缘缓存 TTL。ESA 在多个功能(缓存规则、WAF 自定义规则、速率限制、URL 重写、标头修改等)中使用统一的规则引擎表达式语法。
在任何接受匹配条件表达式的 ESA API 的 Rule 参数中使用此语法:
CreateCacheRule / UpdateCacheRule - 缓存规则CreateWafRule / UpdateWafRule - WAF 自定义规则CreateRatePlanRule - 速率限制规则CreateRewriteUrlRule / UpdateRewriteUrlRule - URL 重写规则(condition)
(condition1 and condition2)
(condition1) or (condition2)
最大嵌套深度:2 层。
中缀风格(运算符在字段和值之间):
(field eq "value")
(field ne "value")
(field contains "value")
(field in {"value1" "value2"})
(field matches "regex")
函数风格(运算符包裹字段):
(starts_with(field, "value"))
(ends_with(field, "value"))
(exists(field))
(len(field) gt 100)
(lower(field) eq "value")
# 匹配文件扩展名
--Rule '(http.request.uri.path.extension eq "html")'
# 匹配多个扩展名
--Rule '(http.request.uri.path.extension in {"js" "css" "png" "jpg"})'
# 匹配 URL 前缀
--Rule '(starts_with(http.request.uri, "/api/"))'
# 匹配 URL 后缀
--Rule '(ends_with(http.request.uri, ".html"))'
# 匹配包含子字符串的 URL(值必须以 / 开头)
--Rule '(http.request.uri contains "/test")'
# 匹配特定主机
--Rule '(http.host eq "www.example.com")'
# 组合条件
--Rule '(http.request.uri contains "/test" and ip.geoip.country eq "CN")'
# 按国家匹配
--Rule '(ip.geoip.country eq "CN")'
# 排除路径
--Rule '(not starts_with(http.request.uri, "/admin/"))'
# 否定集合成员资格
--Rule '(not http.host in {"a.com" "b.com"})'
ends_with 和 starts_with 必须使用函数调用语法,而非中缀形式。matches(正则表达式)需要标准套餐或更高版本;基础套餐会返回 RuleRegexQuotaCheckFailed。contains 时必须包含路径分隔符:"/test" 是正确的;仅使用 "test" 会导致 CompileRuleError。in 运算符中的列表值在花括号内用空格分隔:{"a.com" "b.com"}。ne 表示“不等于”,切勿使用 not...eq。not...in 来否定集合成员资格(not 在字段前),而不是 not in。| 套餐 | eq/ne/in/starts_with/ends_with | contains | matches (regex) |
|---|---|---|---|
| 基础版 | 支持 | 支持 | 不支持 |
| 标准版 | 支持 | 支持 | 支持 |
| 企业版 | 支持 | 支持 | 支持 |
ALICLOUD_ACCESS_KEY_ID / ALICLOUD_ACCESS_KEY_SECRET / ALICLOUD_REGION_ID 区域策略:ALICLOUD_REGION_ID 是一个可选的默认值。如果未设置,请决定最适合任务的区域;如果不确定,请询问用户。~/.alibabacloud/credentials(区域仍来自环境变量)环境变量:
export ALICLOUD_ACCESS_KEY_ID="your-ak"
export ALICLOUD_ACCESS_KEY_SECRET="your-sk"
export ALICLOUD_REGION_ID="cn-hangzhou"
阿里云 SDK 也支持:
export ALIBABA_CLOUD_ACCESS_KEY_ID="your-ak"
export ALIBABA_CLOUD_ACCESS_KEY_SECRET="your-sk"
共享配置文件:
~/.alibabacloud/credentials
[default]
type = access_key
access_key_id = your-ak
access_key_secret = your-sk
ESA2024-09-10https://api.aliyun.com/meta/v1/products/ESA/versions/2024-09-10/api-docs.json如果需要保存响应或生成的工件,请将其写入:output/alicloud-network-esa/
references/pages.mdreferences/er.mdreferences/kv.mdreferences/api_overview.mdreferences/endpoints.mdreferences/sites.mdreferences/dns-records.mdreferences/cache.mdreferences/sources.mdreferences/rule-generation-guide.mdreferences/rule-match-fields.mdreferences/rule-operators.mdreferences/rule-examples.md每周安装数
89
仓库
GitHub 星标数
345
首次出现
8 天前
安全审计
安装于
gemini-cli88
github-copilot88
codex88
amp88
cline88
kimi-cli88
Yahoo Finance CLI:Python股票数据命令行工具,支持实时价格、期权、财报分析
2,600 周安装
资深产品设计师AI智能体 | 提供UX/UI设计、原型测试、设计系统全流程解决方案
2,600 周安装
Terraform 风格指南 - HashiCorp 官方代码规范与最佳实践
2,600 周安装
浏览器自动化策略指南:何时及如何使用实时浏览器会话进行网页调试与研究
154 周安装
Apify竞争对手情报分析工具:多平台数据采集与竞品监控指南
2,600 周安装
Next.js 迁移到 vinext 完整指南 | 无需改代码,快速切换至 Vite
2,600 周安装