You need to enable JavaScript to run this app.
文档中心
向量数据库VikingDB

向量数据库VikingDB

复制全文
下载 pdf
用户管理(Users)
AccessOpenVikingApiKey - 获取库APIKey
复制全文
下载 pdf
AccessOpenVikingApiKey - 获取库APIKey

概述

AccessOpenVikingApiKey 接口用于获取指定用户的真实 API Key(明文),可用于调用数据面接口。

前置条件

完成 "数据库管理使用说明" 页面的 AK/SK 获取后,可调用本接口。

请求接口

Action

AccessOpenVikingApiKey

接口标识

请求方法

POST

客户端请求类型

请求参数

字段

类型

必填

说明

ResourceID

string

✅

库 ID

UserID

string

否

企业版传入返回指定用户真实 API Key;个人版可不传,返回 default 用户

响应消息

字段

类型

说明

UserID

string

用户 ID

Role

string

用户角色

ApiKey

string

API Key(明文,可用于调用数据面接口)

注意:返回的 ApiKey 为明文,请妥善保管,避免泄露至公开环境。

常见错误码

HTTP 状态

Error.Code

含义 / 触发场景

404

ResourceNotExist

指定库或用户不存在

完整示例

Python 请求示例

import os
import datetime
import hashlib
import hmac
from urllib.parse import quote

import requests, json

def norm_query(params):
    query = ""
    for key in sorted(params.keys()):
        if type(params[key]) == list:
            for k in params[key]:
                query = (
                        query + quote(key, safe="-_.~") + "=" + quote(k, safe="-_.~") + "&"
                )
        else:
            query = (query + quote(key, safe="-_.~") + "=" + quote(params[key], safe="-_.~") + "&")
    query = query[:-1]
    return query.replace("+", "%20")

def hmac_sha256(key: bytes, content: str):
    return hmac.new(key, content.encode("utf-8"), hashlib.sha256).digest()

def hash_sha256(content: str):
    return hashlib.sha256(content.encode("utf-8")).hexdigest()

class ClientForConsoleApi:
    def __init__(self, ak, sk, host, region):
        self.ak = ak
        self.sk = sk
        self.host = host
        self.region = region
        self.service_code = "vikingdb"
        self.version = "2025-06-09"

    def request(self, method, action, body, query=None, header=None):
        if query is None:
            query = {}
        if header is None:
            header = {}
        credential = {
            "access_key_id": self.ak,
            "secret_access_key": self.sk,
            "service": self.service_code,
            "region": self.region,
        }
        request_param = {
            "body": json.dumps(body),
            "host": self.host,
            "path": "/",
            "method": method,
            "content_type": 'application/json',
            "date": datetime.datetime.utcnow(),
            "query": {"Action": action, "Version": self.version, **query},
        }
        if body is None:
            request_param["body"] = ""
        x_date = request_param["date"].strftime("%Y%m%dT%H%M%SZ")
        short_x_date = x_date[:8]
        x_content_sha256 = hash_sha256(request_param["body"])
        sign_result = {
            "Host": request_param["host"],
            "X-Content-Sha256": x_content_sha256,
            "X-Date": x_date,
            "Content-Type": request_param["content_type"],
        }
        signed_headers_str = ";".join(
            ["content-type", "host", "x-content-sha256", "x-date"]
        )
        canonical_request_str = "\n".join(
            [request_param["method"].upper(),
             request_param["path"],
             norm_query(request_param["query"]),
             "\n".join(
                 [
                     "content-type:" + request_param["content_type"],
                     "host:" + request_param["host"],
                     "x-content-sha256:" + x_content_sha256,
                     "x-date:" + x_date,
                 ]
             ),
             "",
             signed_headers_str,
             x_content_sha256,
             ]
        )

        hashed_canonical_request = hash_sha256(canonical_request_str)
        credential_scope = "/".join([short_x_date, credential["region"], credential["service"], "request"])
        string_to_sign = "\n".join(["HMAC-SHA256", x_date, credential_scope, hashed_canonical_request])

        k_date = hmac_sha256(credential["secret_access_key"].encode("utf-8"), short_x_date)
        k_region = hmac_sha256(k_date, credential["region"])
        k_service = hmac_sha256(k_region, credential["service"])
        k_signing = hmac_sha256(k_service, "request")
        signature = hmac_sha256(k_signing, string_to_sign).hex()

        sign_result["Authorization"] = "HMAC-SHA256 Credential={}, SignedHeaders={}, Signature={}".format(
            credential["access_key_id"] + "/" + credential_scope,
            signed_headers_str,
            signature,
        )
        header = {**header, **sign_result}
        r = requests.request(method=method,
                             url="https://{}{}".format(request_param["host"], request_param["path"]),
                             headers=header,
                             params=request_param["query"],
                             data=request_param["body"],
                             )
        return r.status_code, r.headers, r.json()

if __name__ == '__main__':
    client = ClientForConsoleApi(
        ak = "*",#替换为您的 AK
        sk ="*" ,#替换为您的 SK
        host="vikingdb.cn-beijing.volcengineapi.com", #替换为您所在地区的域名
        region="cn-beijing"
    )
    http_code, _, result_json = client.request(
        method="POST",
        action="AccessOpenVikingApiKey",#action替换为当前操作
        body={
            "ResourceID": "ov-xxx",
            "UserID": "user1"
        }
    )
    print("req http status code: ", http_code)
    print("req result: \n", result_json)

响应示例

{
    "ResponseMetadata": {
        "RequestId": "20250609xxxxxxxxxxxxxxxx",
        "Action": "AccessOpenVikingApiKey",
        "Version": "2025-06-09",
        "Service": "vikingdb",
        "Region": "cn-beijing"
    },
    "Result": {
        "UserID": "user1",
        "Role": "user",
        "ApiKey": "sk-abc123def456ghi789jkl0"
    }
}
最近更新时间:2026.09.11 16:21:09
这个页面对您有帮助吗?
有用
有用
无用
无用