更新时间:2025-07-29 GMT+08:00
分享

购买APIG实例并管理API

  1. 创建APIG实例
  2. 开放API
    • APIG需要与算力节点在同一个VPC网络下。
    • 通过创建API的负载通道方式实现APIG与后端服务的网络互通。
    • 创建REST API。
      • 1)模型请求API为:/v1/chat/completions
      • 2)指标查看API为:/metrics
      • 3)在“配置API的后端信息”时,字段“后端超时(ms)”建议设置成10min,因为推理结果非流式输出时,API响应时间可能较长。
    • 如果后端服务是部署在CCE集群上,则负载通道以“云容器引擎微服务”通道类型对接,否则以“服务器”通道类型对接。
      • 云容器引擎微服务类型对接:服务标识名为”app.modelarts.huaweicloud/deployment”,标识值”$name-$id-role-0”,其中name为推理服务的负载名称,id为推理服务的随机ID。
      • 服务器类型对接:后端服务器地址为cluster集群或者server集群的节点IP,端口为推理服务负载对外暴露的nodePort。

  3. 配置API的流量控制

    • 时长:1分钟
    • API流量限制:根据表1中推荐的APIG流控来设置。

      过载控制点

      APIG流控(每分钟并发数,不考虑故障)

      =总QPS*60*总实例数/总实例数

      APIG流控(每分钟并发数,考虑故障)

      =总QPS*60*(总实例数-2)/总实例数

    • 用户流量限制、凭据流量限制、源IP流量限制:默认不用设置,用户也可以按需设置。
  4. 使用FunctionGraph服务实现APIG的自定义认证。其中认证函数参考实现如下:
    # -*- coding:utf-8 -*-
    
    import json import hashlib
    
    
    def handler(event, context):
        # 从文件或其他存储系统读取已授权的API-KEY
        api_key = "xxx"
    
        request_auth = event["headers"].get("authorization")[7:]
        encoded_auth = hashlib.sha256(request_auth.encode('utf-8')).hexdigest().upper()
    
        if encoded_auth == api_key:
            resp = {
                'statusCode': 200,
                'body': json.dumps({
                    "status": "allow"
                })
            }
        else:
            resp = {
                'statusCode': 200,
                'body': json.dumps({
                    "status": "deny"
                })
            }
        return json.dumps(resp)

相关文档