全部产品
云市场

公网地址调用

更新时间:2020-04-28 20:27:08

一、概述

本文将为您介绍EAS服务在公网(普通公共网络,区别于VPC网络环境)调用的两种方式:

  • 通用公网调用
  • 通过API网关的公网调用

无特殊要求的用户选择通用公网调用即可

如用户需通过阿里云API网关(了解API网关)创建API并生成公网调用地址,则可选择API网关公网调用,注意,该方式可能会产生对应的API网关费用,详情请参考API网关定价

二、通用公网调用

在您的EAS在线服务部署完成后,系统会自动帮您生成一个可供公网访问调用的服务地址。

您即可通过上述调用信息进行调用测试:

  1. $ curl http://1664081855183111.cn-hangzhou.pai-eas.aliyuncs.com/api/predict/heart_predict_online -H 'Authorization: ZGI1YWYxNmQwYjMzMDM1YTNlMmFmNmEzYjIzZTVlZGQ0NDJhYTRmNw==' -d '[{"sex":0,"cp":0,"fbs":0,"restecg":0,"exang":0,"slop":0,"thal":0,"age":0,"trestbps":0,"chol":0,"thalach":0,"oldpeak":0,"ca":0}]'

测试链路通畅后,即可开始编写代码调用程序了。

这里EAS为了方便用户的调用,将该调用逻辑进行了封装,并提供了应用较广的Python及Java的官方SDK。

  • 我们推荐您使用官方SDK方式进行调用,可有效节约您的服务调用逻辑编写的时间并提升调用稳定性。

  • 若您需要使用其他语言或希望自己编写实现调用逻辑,我们也在2.3节提供了调用Demo示例,供您参考。此外,自行实现调用逻辑需要根据不同的框架进行服务请求构造,具体请参见《通用processor服务请求数据构造》章节。

2.1 官方SDK调用(Python)

Python SDK使用指南

(1)、安装

  1. pip install -U eas-prediction --user

该Python SDK调用接口详细说明请参见GitHub链接

(2)、编写调用程序

示例(此处以字符串为输入输出的程序为例,更多格式的输入输出的程序Demo(TF、PyTorch等)请参见GitHub链接):

  1. #!/usr/bin/env python
  2. from eas_prediction import PredictClient
  3. from eas_prediction import StringRequest
  4. if __name__ == '__main__':
  5. client = PredictClient('http://1664081855183111.cn-hangzhou.pai-eas.aliyuncs.com','heart_predict_online')
  6. # 注意上面的client = PredictClient()内填入的信息,是通过对调用信息窗口(下图)中获取的访问地址的拆分
  7. client.set_token('ZGI1YWYxNmQwYjMzMDM1YTNlMmFmNmEzYjIzZTVlZGQ0NDJhYTRmNw==')
  8. # Token信息在“EAS控制台—服务列表—服务—调用信息—公网地址调用—Token”中获取
  9. client.init()
  10. request = StringRequest('[{"sex":0,"cp":0,"fbs":0,"restecg":0,"exang":0,"slop":0,"thal":0,"age":0,"trestbps":0,"chol":0,"thalach":0,"oldpeak":0,"ca":0}]')
  11. # 输入请求请根据模型进行构造,此处仅以字符串为输入输出的程序示例
  12. for x in range(0, 1):
  13. resp = client.predict(request)
  14. print(resp)

注意上面的client = PredictClient()内填入的信息,是通过对调用信息窗口(下图)中获取的访问地址的拆分,例:

调用链接:

http://1664081855183111.cn-hangzhou.pai-eas.aliyuncs.com/api/predict/heart_predict_online

转PredictClient:

client = PredictClient('http://1664081855183111.cn-hangzhou.pai-eas.aliyuncs.com','heart_predict_online')

(3)、调用程序执行

编写完程序后,即可执行,如该python程序文件名为:heart_predict.py

运行:

  1. $ python heart_predict.py

即可得到预测结果:

  1. IT-C02YJ0V8JHD2:Desktop wowei$ python heart_predict.py
  2. [{"p_0":0.9941226679708888,"p_1":0.005877332029111252}]

2.2 官方SDK调用(Java)

Java SDK使用指南

(1)、添加依赖包

编写Java客户端代码使用Maven管理项目,用户需在pom.xml文件中添加客户端所需的依赖包,名为eas-sdk,目前最新release版本为1.1.4,具体代码如下:

  1. <dependency>
  2. <groupId>com.aliyun.openservices.eas</groupId>
  3. <artifactId>eas-sdk</artifactId>
  4. <version>2.0.1</version>
  5. </dependency>

该Java SDK调用接口详细说明请参见GitHub链接

(2)、编写调用程序

示例(此处以字符串为输入输出的程序为例,更多格式的输入输出的程序Demo(TF、PyTorch等)请参见GitHub链接):

  1. import com.aliyun.openservices.eas.predict.http.PredictClient;
  2. import com.aliyun.openservices.eas.predict.http.HttpConfig;
  3. public class Test_String {
  4. public static void main(String[] args) throws Exception{
  5. //启动并初始化客户端
  6. PredictClient client = new PredictClient(new HttpConfig());
  7. client.setToken("ZGI1YWYxNmQwYjMzMDM1YTNlMmFmNmEzYjIzZTVlZGQ0NDJhYTRmNw==");
  8. // Token信息在“EAS控制台—服务列表—服务—调用信息—公网地址调用—Token”中获取
  9. client.setEndpoint("http://1664081855183111.cn-hangzhou.pai-eas.aliyuncs.com");
  10. // 注意上面endpoint信息,是通过对调用信息窗口(下图)中获取的访问地址的拆分
  11. client.setModelName("heart_predict_online");
  12. // 填入服务名称
  13. //输入字符串定义
  14. String request = "[{\"sex\":0,\"cp\":0,\"fbs\":0,\"restecg\":0,\"exang\":0,\"slop\":0,\"thal\":0,\"age\":0,\"trestbps\":0,\"chol\":0,\"thalach\":0,\"oldpeak\":0,\"ca\":0}]";
  15. // 输入请求请根据模型进行构造,此处仅以字符串为输入输出的程序示例
  16. System.out.println(request);
  17. //通过eas返回字符串
  18. try {
  19. String response = client.predict(request);
  20. System.out.println(response);
  21. } catch(Exception e) {
  22. e.printStackTrace();
  23. }
  24. //关闭客户端
  25. client.shutdown();
  26. return;
  27. }
  28. }

注意上面的client.setEndpoint()、client.setModelName()内填入的信息,是通过对调用信息窗口(下图)中获取的访问地址的拆分,例:

调用链接:

http://1664081855183111.cn-hangzhou.pai-eas.aliyuncs.com/api/predict/heart_predict_online

拆分转换:

client.setEndpoint("http://1664081855183111.cn-hangzhou.pai-eas.aliyuncs.com")

client.setModelName("heart_predict_online")

(3)、调用程序执行

编写完程序后,即可执行,得到结果:

  1. [{"p_0":0.9941226679708888,"p_1":0.005877332029111252}]

2.3 自行实现调用

如您希望自己编写实现调用逻辑,可参考以下调用Demo示例进行编写:

  1. import requests
  2. url = 'http://1664081855183111.cn-hangzhou.pai-eas.aliyuncs.com/api/predict/heart_predict_online'
  3. # URL信息在“EAS控制台—服务列表—服务—调用信息—公网地址调用—调用地址”中获取
  4. headers = {"Authorization": 'ZGI1YWYxNmQwYjMzMDM1YTNlMmFmNmEzYjIzZTVlZGQ0NDJhYTRmNw=='}
  5. # header信息在“EAS控制台—服务列表—服务—调用信息—公网地址调用—token”中获取
  6. data = '[{"sex":0,"cp":0,"fbs":0,"restecg":0,"exang":0,"slop":0,"thal":0,"age":0,"trestbps":0,"chol":0,"thalach":0,"oldpeak":0,"ca":0}]'
  7. # 这里请按照具体的模型要求的数据格式进行构造,此处仅为字符串为输入输出的程序示例,具体请参考《通用processor服务请求数据构造》文档
  8. resp = requests.post(url, data=data, headers=headers)
  9. print resp
  10. print resp.content

注意,上述代码中的请求数据需按照具体的模型要求的数据格式进行构造,此处仅为字符串为输入输出的程序示例,具体请参考《通用processor服务请求数据构造》文档

三、通过API网关的公网调用

3.1 调用准备

通过API网关的公网调用需要先开通阿里云API网关产品,阿里云API网关为您的公网API提供了生命周期管理的托管服务,费用详情请访问API网关定价

3.2 调用方式

开通好API网关之后,点击下方的“自动创建”按钮:

之后,EAS系统就会自动帮您将该服务在API网关创建为API,并生成一个API网关层面的公网地址,您可以直接作为您的服务请求地址进行调用:

至此,就完成了托管在API网关的API创建工作,下面即可开始进行调用,您可自行实现调用代码,或参考下述指引:

  • 进入API网关控制台—API列表(注意选择您服务所在的Region),找到对应的API,并查看其所在分组。
  • 进入API网关控制台—SDK/文档自动生成(注意选择您服务所在的Region),找到对应的分组,并下载对应语言的SDK,以帮助您进行对应语言的调用程序开发。

更多调用问题,请查看API网关调用文档

3.3 调用Demo

JAVA:https://help.aliyun.com/document_detail/94247.html

3.4 更多API高级功能(基于API网关)

(1)查看API信息

进入API网关控制台—API列表(注意选择您服务所在的Region),找到对应的API,单击右侧操作管理**,查看API的详细配置信息。

(2)API授权

单击上图右侧操作栏下的授权,对该API进行授权。只有授权成功的用户才可以访问您的API,这样的一个用户身份称为一个APP,没有被授权过APP身份的用户无权限访问您的API,保证了API操作的安全性。(EAS在自动创建API时,已经自动创建了APP身份并完成了授权,如您需创建其他APP身份并授权则可参考此步骤。)

更多详情请参考文档:API网关—应用(APP)

(3) API分组与域名绑定

每个被创建的API都隶属一个API分组,可以通过分组来对该组的API进行统一管理。

  • 进入API网关控制台—API列表(注意选择您服务所在的Region),找到对应的API,并查看其所在分组。
  • 单击“分组管理”Tab,再单击您API所在的分组名称,查看该API所在分组的二级域名。API分组默认分配的是二级域名,二级域名仅供测试使用,有每天1000次的访问限制。

  • 如果您有更大需求,请在分组管理绑定域名**,对该API所在的分组进行域名绑定。


    更多详细信息请参阅API网关产品帮助文档