文档首页 > > AI工程师用户指南> 部署模型> 在线服务> 访问在线服务(APP认证)

访问在线服务(APP认证)

分享
更新时间:2020/09/21 GMT+08:00

部署在线服务支持开启APP认证,即ModelArts会为服务注册一个支持APP认证的接口,为此接口配置APP授权后,用户可以通过调用该接口将预测结果推送至授权的应用。

针对在线服务的APP认证,具体操作流程如下。

  • 开启支持APP认证功能:开启支持APP认证并创建应用。
  • 在线服务授权管理:对创建的应用进行管理,包括查看、重置或删除应用,绑定或解绑应用对应的在线服务,获取“AppKey/AppSecret”“AppCode”
  • APP认证鉴权:调用支持APP认证的接口需要进行认证鉴权,支持两种鉴权方式,您可以选择其中一种进行认证鉴权。
  • 以Python语言为例准备环境:在APP认证鉴权完成之后,您可以准备调用环境进行接口调用。
  • 调用API示例:调用该接口将预测结果推送至授权的应用。

前提条件

  • 数据已完成准备:已在ModelArts中创建状态“正常”可用的模型。
  • 由于在线运行需消耗资源,确保账户未欠费。

开启支持APP认证功能

在部署为在线服务时,您可以开启支持APP认证功能。或者针对已部署完成的在线服务,您可以修改服务,开启支持APP认证功能。

  1. 登录ModelArts管理控制台,在左侧菜单栏中选择“部署上线 > 在线服务”,进入在线服务管理页面。
  2. 开启支持APP认证功能。
    • 在部署为在线服务时,即“部署”页面,填写部署服务相关参数时,开启支持APP认证功能。
    • 针对已部署完成的在线服务,进入在线服务管理页面,单击目标服务名称“操作”列的“修改”按钮,进入修改服务页面开启支持APP认证功能。
      图1 部署页面开启支持APP认证功能
  3. 选择APP授权配置。从下拉列表中选择您需要配置的APP应用,如果没有可选项,您可以通过如下方式创建应用。
    • 单击右侧“创建应用”,填写应用名称和描述之后单击“确定”完成创建。其中应用名称默认以“app_”开头,您也可以自行修改。
    • 进入在线服务管理页面,单击“授权管理”,进入“在线服务授权管理”页面,选择“创建应用”,详请参见在线服务授权管理
  4. 开启支持APP认证功能后,将支持APP认证的服务授权给应用,用户可以使用创建的“AppKey/AppSecret”“AppCode”调用服务的支持APP认证的接口。

在线服务授权管理

如果您需要使用支持APP认证功能,建议您在部署在线服务之前进行授权管理操作完成应用创建。进入在线服务管理页面,单击“授权管理”,进入“在线服务授权管理”页面。在此页面您可以实现应用的创建和管理,包括查看、重置或删除应用,解绑应用对应的在线服务,获取“AppKey/AppSecret”“AppCode”

图2 在线服务授权管理
  • 创建应用

    选择“创建应用”,填写应用名称和描述之后单击“确定”完成创建。其中应用名称默认以“app_”开头,您也可以自行修改。

  • 查看、重置或删除应用

    您可以单击目标应用名称操作列的按钮完成应用的查看、重置或删除。创建完成后自动生成“AppKey/AppSecret”以供您后续调取接口进行APP鉴权使用。

  • 解绑服务

    您可以单击目标应用名称前方的,在下拉列表中展示绑定的服务列表,即该应用对应的在线服务列表。单击操作列的“解绑”取消绑定,将不再支持调用该接口。

  • 获取AppKey/AppSecret或AppCode

    调用接口需要进行APP鉴权,在创建应用时自动生成“AppKey/AppSecret”“AppCode”也可以通过单击“+添加AppCode”自动生成。

    图3 添加AppCode

APP认证鉴权

当支持APP认证功能的在线服务运行成功处于“运行中”状态,就可以对服务进行调用 。在调用之前您需要进行APP认证鉴权。

调用支持APP认证的接口有如下两种认证方式,您可以选择其中一种进行认证鉴权。推荐使用AppKey/AppSecret认证,其安全性比AppCode认证要高。

  • AppCode认证:通过AppCode认证通用请求。
  • AppKey/AppSecret认证:通过AppKey(APP访问密钥ID)与AppSecret(APP私有访问密钥),对请求进行加密签名,可标识发送方,并防止请求被修改。
你可以在服务详情页的调用指南页签(如图4)或者在线服务授权管理页面(如图2)获取AppKey/AppSecret和AppCode。
图4 获取API的接口地址

AppCode认证

当使用APP认证,且开启了简易认证模式,API请求既可以选择使用Appkey和AppSecret做签名和校验,也可以选择使用AppCode进行简易认证。ModelArts默认启用简易认证。

AppCode认证就是在调用API的时候,在HTTP请求头部消息增加一个参数“X-Apig-AppCode”(参数值为“AppCode”),而不需要对请求内容签名,API网关也仅校验AppCode,不校验请求签名,从而实现快速响应。示例代码如下:

GET https://iam.cn-north-1.myhuaweicloud.com/v3/auth/projects
Content-Type: application/json
X-Apig-AppCode: ABCDEFJ....

当APP不支持AppCode时,可使用AppKey进行简易认证,即在调用API的时候,在HTTP请求头部消息增加一个参数“apikey”(参数值为“AppKey”),实现快速认证。

AppKey/AppSecret认证

AppKey/AppSecret认证就是通过应用的AppKey和AppSecret进行签名认证。

  • AppKey:APP访问密钥ID。与私有访问密钥关联的唯一标识符;访问密钥ID和私有访问密钥一起使用,对请求进行加密签名。
  • AppSecret:与访问密钥ID结合使用的密钥,对请求进行加密签名,可标识发送方,并防止请求被修改。

使用AppKey/AppSecret认证时,您需要使用专门的签名SDK对请求进行签名。

以Python语言为例准备环境

在APP认证鉴权完成之后,您可以准备调用环境进行接口调用。此章节内容以Python语言为例介绍SDK使用方式,其他语言的SDK下载与使用示例请参见《API网关 APIG开发指南》

  1. 获取API的接口地址、请求方法、AppKey和AppSecret。获取方式请参见APP认证鉴权
  2. Python官网获取并安装Python安装包(支持使用2.7.9或3.X版本)。Python安装完成后,您可以执行命令pip install requests,通过Python通用包管理工具pip安装“requests”库。

    如果使用pip安装requests库遇到证书错误,请下载并使用Python执行此文件,升级pip,然后再执行以上命令安装。

  3. IntelliJ IDEA官网获取并安装IntelliJ IDEA。在IntelliJ IDEA中安装Python插件, 如图5所示。
    图5 安装Python插件
  4. 获取SDK。下载SDK,获取“ApiGateway-python-sdk.zip”压缩包,解压后目录结构如下:
    表1 SDK压缩包解压目录

    名称

    说明

    apig_sdk\__init__.py

    SDK代码

    apig_sdk\signer.py

    main.py

    示例代码

    backend_signature.py

    后端签名示例代码

    licenses\license-requests

    第三方库license文件

  5. 新建工程。
    1. 打开IDEA,选择菜单File > New > Project。在弹出的“New Project”对话框中选择“Python”,单击“Next”
      图6 新建工程
    2. 再次单击“Next”,弹出以下对话框。单击“...”,在弹出的对话框中选择解压后的SDK路径,单击“Finish”完成工程创建。
      图7 选择解压后的SDK路径
  6. 完成工程创建后,目录结构如下。其中“main.py”为示例代码,请根据实际情况修改参数后使用。具体代码说明请参考调用API示例
    图8 新建工程的目录结构

调用API示例

  1. 在工程中引入“apig_sdk”
    1
    2
    from apig_sdk import signer
    import requests
    
  2. 生成一个新的Signer,填入“AppKey”“AppSecret”,获取方式请参见APP认证鉴权
    1
    2
    3
    sig = signer.Signer()
    sig.Key = "4f5f626b-073f-402f-a1e0-e52171c6100c"
    sig.Secret = "******"
    
  3. 生成一个Request对象,指定方法名、请求uri、header和body。
    1
    2
    3
    4
    r = signer.HttpRequest("POST",
                           "https://1684994b180244de9d141c00d3e52c73.apig.exampleRegion.huaweicloudapis.com/v1/infers/exampleServiceId",
                           {"x-stage": "RELEASE"},
                           "body")
    
  4. 进行签名,执行此函数会在请求参数中添加用于签名的“X-Sdk-Date”头和“Authorization”头。
    1
    sig.Sign(r)
    
  5. 调用API,查看访问结果。
    1
    2
    3
    resp = requests.request(r.method, r.scheme + "://" + r.host + r.uri, headers=r.headers, data=r.body)
    print(resp.status_code, resp.reason)
    print(resp.content)
    
分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!非常感谢您的反馈,我们会继续努力做到更好!
反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问