服务部署后,您必须先调用初始化接口对后端设置进行初始化,才能调用后续的应用接口。本文介绍三种初始化模式(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}