本示例展示如何使用火山引擎 Python SDK 调用 WAF 服务 API,包括:
适用场景:需要通过编程方式管理 WAF 配置的开发者
from volcengine.base.Service import Service
from volcengine.Credentials import Credentials
from volcengine.ApiInfo import ApiInfo
from volcengine.ServiceInfo import ServiceInfo
API_VERSION = "2023-12-25"
"CreateVolcWafServicesByBytePlusCDN",
"UpdateVulnerabilityConfig",
"UpdateWafServiceControl",
class WafService(Service):
用于封装与 WAF API 交互的所有操作,包括初始化、注册 API、发送请求等
def __init__(self, region, access_key=None, secret_key=None):
region: 地域代码,如 'cn-beijing'
access_key: 访问密钥 AK(可选,也可通过 set_ak 方法设置)
secret_key: 访问密钥 SK(可选,也可通过 set_sk 方法设置)
self.service_info = self._get_service_info(region)
self.api_info = self._get_api_info()
super(WafService, self).__init__(self.service_info, self.api_info)
def _get_service_info(region):
"Accept": "application/json",
"Content-Type": "application/json"
credentials = Credentials("", "", "waf", region)
"waf.volcengineapi.com",
用户只需在文件顶部的 API_ACTIONS 列表中添加需要调用的 API Action 名称,
API 接口信息字典,格式为 {API名称: ApiInfo对象}
for action in API_ACTIONS:
api_info[action] = ApiInfo(
def call_api(self, action_name, body=None, params=None):
action_name: API 接口名称,如 'UpdateWafServiceControl'
if action_name not in self.api_info:
raise ValueError(f"未注册的 API Action:{action_name}")
response = self.json(action_name, params, json.dumps(body))
raise ValueError(f"调用 API {action_name} 失败:API 响应为空")
return json.loads(response)
主函数:展示如何使用 WafService 类调用 API
client = WafService(REGION, ACCESS_KEY, SECRET_KEY)
print("示例1:更新 WAF 服务控制 - 开启自定义响应防护")
demo_action = "UpdateWafServiceControl"
response_json = client.call_api(demo_action, demo_request_body)
if __name__ == "__main__":