服务部署后,您必须先调用初始化接口对后端设置进行初始化,才能调用后续的应用接口。本文介绍三种初始化模式(OSS模式、Elasticsearch模式及Public OSS模式)的接口详情,包括输入参数、输出参数及调用示例。

背景信息

初始化接口是对服务的后端设置进行初始化,分为以下三种模式:
  • OSS模式:需要您开通阿里云OSS对象存储,并提供相关配置。您上传的图像和特征数据库都会存储在配置的OSS服务中。初始化接口详情请参见初始化(OSS)
  • Elasticsearch模式:需要您开通阿里云Elasticsearch服务,并提供相关配置。您的特征数据库会存储在配置的Elasticsearch服务中。初始化接口详情请参见初始化(Elasticsearch)
  • Public OSS模式:您无需开通OSS和Elasticsearch,只需要在初始化时提供阿里云的uid,其他使用方式与OSS模式基本相同。与OSS模式的区别在于Public OSS模式的特征数据库数量上限为5个,每个数据库最多存储记录数为5000,且系统不为您存储任何数据。初始化接口详情请参见初始化(Public OSS)

初始化(OSS)

通过初始化(OSS)接口设置OSS后端的存储和检索,您需要提前开通OSS服务,并提供相关配置(包括AccessKey ID,、AccessKey Secret、Endpoint及Buckets)。初始化(OSS)接口的详细信息如下:
  • 输入参数说明
    参数 是否必选 描述 示例值 类型
    backend 后端标识符。使用OSS模式的初始化接口时,该参数为固定值"oss" "oss" STRING
    root_path 注册数据和特征的OSS存储地址。 "oss://ev-retrieval-data/xxx/" STRING
    oss_io_config OSS的相关配置。您需要保证该配置可以访问到root_path,且具有写权限。该参数的取值格式为oss_io_config = dict(ak_id='<yourAccessKeyId>',ak_secret='<yourAccessKeySecret>',hosts='<yourHost>',buckets=['<yourBucket>']),您需要将如下字段替换为实际值,其他部分使用上述的固定值:
    • <yourAccessKeyId>:阿里云账号的AccessKey ID。
    • <yourAccessKeySecret>:阿里云账号的AccessKey Secret。
    • <yourHost>:您OSS地域的Endpoint。OSS地域与Endpoint的对应关系,请参见公共云下OSS Region和Endpoint对照表
    • <yourBucket>:您创建的OSS存储空间(Bucket)的名称。
    oss_io_config = dict(ak_id='xxx',ak_secret='xxxx',hosts='oss-cn-zhangjiakou.aliyuncs.com',buckets=['ev-retrieval-data'])
    DICT
  • 输出参数说明
    参数 描述 示例值 类型
    request_id 请求的唯一标识。 da3056f6-ba5a-4601-a93b-bdcf8aaa**** STRING
    success 请求是否成功,取值包括:
    • true:请求成功。
    • false:请求失败。
    true BOOL
    status 初始化接口执行是否成功,取值包括:
    • true:初始化接口执行成功。
    • false:初始化接口执行失败。
    true BOOL
    info 请求成功后返回执行内容的相关提示。 oss backend success! STRING
    error_code 请求失败时,返回的错误码。 None INT
    error_msg 请求失败时,返回的错误信息。 None STRING
  • 调用示例
    以下为Python代码调用接口的示例。
    import requests, json
    our_oss_io_config = dict(ak_id='xxxxxx', 
                    ak_secret='xxxxxx', 
                    hosts='oss-cn-zhangjiakou.aliyuncs.com', 
                    buckets=['pai-vision-exp'])
    head = {
        "Authorization":"xxxxxx"  #head为部署服务后,PAI-EAS返回的服务调用密钥Token对应的字符串。
        }
    
    datas = json.dumps({   
                "function_name": "init",
                "function_params": {
                    "backend": "oss",
                    "root_path": "oss://pai-vision-exp/xxx",
                    "oss_io_config" : our_oss_io_config,
                },
            })
    hosts = "xxxxxx/test"
    r = requests.post(hosts, data=datas, headers=head)
  • 输出示例
    以下为请求成功的返回示例。
    {
      "request_id": "da3056f6-ba5a-4601-a93b-bdcf8aaa****",
      "success": true, 
      "info": "oss backend success!", 
      "status": true
    }

初始化(Elasticsearch)

通过初始化(Elasticsearch)接口设置阿里云Elasticsearch后端的存储和检索,您需要提前开通阿里云Elasticsearch服务,并提供相关配置(包括实例公网地址、访问的用户名和密码)。初始化(Elasticsearch)接口的详细信息如下:
  • 输入参数说明
    参数 是否必选 描述 示例值 类型
    backend 后端标识符。使用Elasticsearch模式的初始化接口时,该参数为固定值"elasticsearch" "elasticsearch" STRING
    elastic_host 阿里云Elasticsearch实例的公网访问地址。 "http://es-cn-xxxxxxxx.public.elasticsearch.aliyuncs.com" STRING
    elastic_auth 阿里云Elasticsearch的用户名和密码。 ('elastic', 'xxxxxx') LIST
  • 输出参数说明
    参数 描述 示例值 类型
    request_id 请求的唯一标识。 da3056f6-ba5a-4601-a93b-bdcf8aaa**** STRING
    success 请求是否成功,取值包括:
    • true:请求成功。
    • false:请求失败。
    true BOOL
    status 初始化接口执行是否成功,取值包括:
    • true:初始化接口执行成功。
    • false:初始化接口执行失败。
    true BOOL
    info 请求成功后返回执行内容的相关提示。 elasticsearch backend success! STRING
    error_code 请求失败时,返回的错误码。 None INT
    error_msg 请求失败时,返回的错误信息。 None STRING
  • 调用示例
    以下为Python代码调用接口的示例。
    import requests, json
    datas = json.dumps( {   
                "function_name": "init",
                "function_params": {
                    "backend": "elasticsearch",
                    "elastic_host": 'http://es-cn-xxxxxxxx.public.elasticsearch.aliyuncs.com',
                    "elastic_auth" : ('elastic', 'xxxxxx'),
                },
            })
    head = {
        "Authorization":"xxxxxx"  #head为部署服务后,PAI-EAS返回的服务调用密钥Token对应的字符串。
        }
    hosts = "xxxxxx/test"
    r = requests.post(hosts, data=datas, headers=head)
  • 输出示例
    以下为请求成功的返回示例。
    {
      "request_id": "da3056f6-ba5a-4601-a93b-bdcf8aaa****",
      "success": true, 
      "info": "elasticsearch backend success!", 
      "status": true
    }

初始化(Public OSS)

如果您没有开通OSS和Elasticsearch,则可以使用Public OSS模式进行初始化,即传入阿里云uid,接口返回相应的uid_key。您必须妥善保存该uid_key,以便后续调用其他接口时使用。初始化(Public OSS)接口的详细信息如下:
  • 输入参数说明
    参数 是否必选 描述 示例值 类型
    backend 后端标识符。使用Public OSS模式的初始化接口时,该参数为固定值"public_oss" "public_oss" STRING
    uid 阿里云唯一的账号ID,获取方式请参见如何查看主账号UID? "1234567" STRING
    uid_key 首次初始化时无需填写该参数。后续如果再次初始化,则需要填写首次初始化返回的uid_key None STRING
  • 输出参数说明
    参数 描述 示例值 类型
    request_id 请求的唯一标识。 da3056f6-ba5a-4601-a93b-bdcf8aaa**** STRING
    success 请求是否成功,取值包括:
    • true:请求成功。
    • false:请求失败。
    true BOOL
    status 初始化接口执行是否成功,取值包括:
    • true:初始化接口执行成功。
    • false:初始化接口执行失败。
    true BOOL
    info 请求成功后返回执行内容的相关提示。 oss backend success! STRING
    uid 初始化成功时,返回uid "1234567" STRING
    uid_key 初始化成功时,返回uid_key "a7b6d9d0f397c9****" STRING
    error_code 请求失败时,返回的错误码。 None INT
    error_msg 请求失败时,返回的错误信息。 None STRING
  • 调用示例
    以下为Python代码调用接口的示例。
    import requests, json
    datas2  = json.dumps( {   
                "function_name": "init",
                "function_params": {
                    "backend": "public_oss",
                    "uid": "1234567",
                    #"uid_key" : "xxxxcb1add304443ed4b"
                },
            })
    head = {
        "Authorization":"xxxxxx"  #head为部署服务后,PAI-EAS返回的服务调用密钥Token对应的字符串。
        }
    hosts = "xxxxxx/test"
    r = requests.post(hosts, data=datas, headers=head)
  • 输出示例
    以下为请求成功的返回示例。
    {"request_id": "c16b98d4-cfdf-4c8e-a4c9-69897800****", 
    "success": true, 
    "info": "public_oss init success,  uid : 12xxxx90 , uid_key : a7b6d9d0f397c9**** !", 
    "uid": "12xxxx90", 
    "uid_key": " a7b6d9d0f397c9**** ", 
    "status": true}