Heroku第三方服务接入指南(二)

上文我们讲了第三方服务、Heroku、用户三者的关系,这一篇进入正题,了解第三方厂商(下文简称厂商)如何为Heroku开发服务。这里只做简单介绍,了解heroku大致是怎么做的,如果你的平台,希望接入第三方服务,你正在犯愁,这个流程要怎么做,那么本文对你将有所启发。如果你希望实操接入heroku,请进一步查阅heroku官方文档。

本文主要概述了接入到heroku前要做的三个事情:创建配置(heroku和服务的协议),实现配置指定的接口,测试;简单介绍了提高接入效率相关的工具。

一、工具

1.kensa。heroku提供了一个命令行的工具,它可以生成接入heroku所需的配置、测试接口。

2.Logplex.日志组件,第三方服务商可以将日志输出到这里,然后heroku用户就能在heroku平台看到日志。

3.foreman.heroku推荐的一个本地web运行容器,让你在本地可以启动并访问服务。

二、创建接口配置

heroku和第三方厂商是通过一份配置文件来对接的。heroku拿到这个配置文件后,才能知道服务的地址,资源接口。这份配置,可以通过kensa来生成。有两个相关的命令,kensa init、kensa create。两者都能生成前文所述的配置文件--addon-manifest.json,不同之处在于,后者还能生成一个空的项目模版。

让我们来看一份addon-manifest.json例子

{
  "id": "errorbucket",
  "api": {
    "config_vars": [
      "ERRORBUCKET_URL"
    ],
    "password": "GqAGAmdrnkDFcvR9",
    "sso_salt": "7CwqmJLEjv8YZTXK",
    "regions": ["us","eu"],
    "requires": ["log_input"],
    "production": {
      "base_url": "https://errorbucket.com/heroku/resources",
      "sso_url": "https://errorbucket.com/sso/login"
    },
    "test": {
      "base_url": "http://localhost:4567/heroku/resources",
      "sso_url": "http://localhost:4567/sso/login"
    }
  }
}

id:服务名。用户可以通过heroku addons:add [id]来添加这个第三方服务

api/config_vars:创建资源时,返回的参数名列表。例如用户希望创建mysql服务,这时要返回参数,参数名是这里定义的config_vars,参数值是对应的资源唯一url

api/password:heroku发送请求给第三方服务器时,都会带上这个密码。

api/sso_salt:用于支持sso登录

api/regions:服务区域。只允许这里指定的区域访问服务。主要考虑到对时延高要求的服务,对地域要求较高。如果没办法给所有地区的用户都提供高质量服务,那就限制一下吧。

api/production/base_url:生产环境的

api/test/:测试环境

三、实现接口

接口的具体实现,heroku是不关注的。主要关注以下约定

1、约定:

1、所有的接口都要使用http basic auth认证

2、如果接口不可用,应当返回422

3、如果status是422或者503,返回中的message(出错信息)可能会直接展示给用户。如果是其他异常状态码,则展示统一的出错信息

4、rest api。资源的增删改,都对应为同一个url,如https://username:[email protected]/heroku/resources,请求类型为Post表示创建,DELETE表示删除(需带上id,如https://username:[email protected]/heroku/resources/:id),PUT表示修改(带上id)

5、请求参数名已由heroku定死,例如heroku_id表示用户id等。如果有自定义字段,组装成一个options对象。

6、请求返回,可以将一些备注信息放到message字段

2、接口实例

增加资源

Request: POST https://username:[email protected]/heroku/resources
Request Body: {
  "heroku_id": "[email protected]",
  "plan": "basic",
  "region": "amazon-web-services::us-east-1",
  "callback_url": "https://api.heroku.com/vendor/apps/app123%40heroku.com",
  "log_input_url": "https://token:[email protected]/logs",
  "options": {}
}
Response Body: {
  "id": "your-internal-unique-id",
  "config": {"MYADDON_URL": "http://myaddon.com/52e82f5d73"},
  "message": "your message here"
}

删除资源

Request: PUT https://username:[email protected]/heroku/resources/:id
Request Body: {"heroku_id": "[email protected]", "plan": "premium"}
Response Body: {"config": { ... }, "message": "your message here"}

修改资源

Request: DELETE https://username:[email protected]/heroku/resources/:id
Request Body: none
Response Status: 200

四、测试

还是借助于kensa这个工具,它提供了两个层级的测试能力。

1、服务端测试

模拟heroku服务器访问第三方服务接口的过程

kensa test provision,可以测试”test“环境,创建资源接口

 kensa test provision
Testing POST /heroku/resources
  Check response [PASS]
  Check valid JSON [PASS]
  Check authentication [PASS]
Testing response
  Check contains an id [PASS]
Testing config data
  Check is a hash [PASS]
  Check all config keys were previously defined in the manifest [PASS]
  Check all config values are strings [PASS]
done.

测试输出如上,可以看到它依次做了以下测试:验证有结果返回,验证是否做了权限验证(强制要求带权限验证),返回信息校验(包含了指定信息)

还可以通过kensa test deprovision测试”删除资源“,kensa test planchange测试资源信息变更

2、客户端测试

模拟heroku用户访问第三方服务接口的过程。

首先你要实现一份代码demo,通过环境变量的方式获取资源url,然后再执行kensa run demo。run的过程,实际包含了以下步骤:调用接口创建资源,将资源url注入到环境变量中,运行你的demo(因为前面已经注入了环境变量,这时候你的demo应当能拿到资源并做操作),最后是调用接口删除资源

五、其他

1、heroku提供了api,第三方服务通过api查询服务的用户信息等。

2、支持SSO登录

3、服务供应商能通过Logplex将日志实时输出到heroku上。

时间: 2024-11-05 14:52:03

Heroku第三方服务接入指南(二)的相关文章

Heroku第三方服务接入指南(三)

将服务发布到Heroku上 一.将配置文件(addon-manifest.json)传到服务器 1.首先在Heroku上注册服务提供商帐号 2.依次执行 二.优化 为了保证第三方服务的质量,heroku定义了Alpha,Beta,GA三个阶段.每个服务都应经历这几个阶段迭代,才能上线

Heroku第三方服务接入指南(一)

Heroku,是业界领先的PaaS平台,用户能使用该平台提供的各种组件服务.这些组件服务第三方厂商提供的,Heroku与第三方服务之间有哪些约定,作为一个厂商,如何为Heroku开发第三方服务,是本文的主题. 概述 先举个例子说明第三方服务(addons)的作用:用户的应用需要MySQL,把数据保存在数据库中.如果没有Heroku,用户需要买一个服务器,搭建MySQL,配置帐号,在代码中配置这个服务器的地址,然后连接这个数据库.这时,数据库环境需要用户自己管理.维护,多么烦人.如果有了Herok

Heroku在第三方服务接入上,值得借鉴的地方

近期为了准备开发私有云,研究了heroku第三方服务的接入.这里总结下heroku在这一方面的亮点. 一.强大的接入工具 要把自己的服务集成到heroku上,你要和heroku定协议,按照协议开发,然后验证,最后还要发布到heroku.这个过程会很耗时,而heroku提供了一个叫kensa的命令行工具,能减轻不少工作量,特别是其中的测试功能,能够逐步验证接入的相关约定,相当方便,回想自己之前的项目,需要做机器接入,很多都是人工验证,相当原始落后.不过,如果能提供图形界面,我觉得会更加上流. 二.

云平台接入第三方服务的实践总结

前言 今年,我的任务是为公司的私有云平台( PaaS )开发对应的云服务平台(我们称之为插件平台),这个云服务平台的主要任务,是为云平台接入一些服务,服务包括但不限于mysql.redis.cdn等存储服务,天气预报等http服务.这个系列文章,希望总结本人在开发这个平台时的得与失. 下面将云服务平台简称为平台(插件平台),所接入的服务,简称为第三方服务(插件) 为什么需要统一接入方案 统一接入方案,是指可以帮助插件平台更快接入第三方服务的一种统一方案 首先要回答的第一个问题,是为什么需要插件平

C#微信公众号开发系列教程二(新手接入指南)

http://www.cnblogs.com/zskbll/p/4093954.html 此系列前面已经更新了两篇博文了,都是微信开发的前期准备工作,现在切入正题,本篇讲解新手接入的步骤与方法,大神可直接跳过,也欢迎大神吐槽. 目录 C#微信公众号开发系列教程一(调试环境部署) C#微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南) 微信公众平台消息接口的工作原理大概可以这样理解:从用户端到公众号端一个流程是这样的,用户发送消息到微信服务器,微

微信Android接入指南

注:本文为微信Android终端开发工具的新手使用教程,只涉及教授SDK的使用方法,默认读者已经熟悉IDE的基本使用方法(本文以Eclipse为例),以及具有一定的编程知识基础等. 1.申请你的AppID 请到 开发者应用登记页面 进行登记,登记并选择移动应用进行设置后,将该应用提交审核,只有审核通过的应用才能进行开发. 2.下载微信终端开发工具包 开发工具包主要包含3部分内容:(其中,只有libammsdk.jar是必须的) - libammsdk.jar(每个第三方应用必须要导入该sdk库,

Linux之Web服务(2)Httpd服务配置之二

Linux之Web服务(2)Httpd服务配置之二 前言 在上一篇通过一些简单的案例或说明来介绍了部分关于Httpd2.4中httpd.conf配置文件中的配置选项及对应的功能.主要是对访问控制和在处理对指定目录或文件进行访问控制的一些安全问题性的处理.但是一直没有提到访问控制的具体讲解,本篇列出访问控制的具体使用选项和功能,以及其它高级配置. 1.Httpd2.4 文档访问授权具体参数 前提:文档访问授权选项配置只适合在以下标签中生效: <Directory >  <FIles>

20160170002 微信公众平台开发接入指南

参考地址: http://mp.weixin.qq.com/wiki/17/2d4265491f12608cd170a95559800f2d.html 接入指南 目录 1 概述 2 第一步:填写服务器配置 3 第二步:验证服务器地址的有效性 4 第三步:依据接口文档实现业务逻辑 概述 接入微信公众平台开发,开发者需要按照如下步骤完成: 1.填写服务器配置 2.验证服务器地址的有效性 3.依据接口文档实现业务逻辑 下面详细介绍这3个步骤. 第一步:填写服务器配置 登录微信公众平台官网后,在公众平台

Jenkins+Maven动态工程构建--第三方服务依赖解耦的一种思路

持续集成是敏捷领域的一项基本实践,Jenkins是目前市面上主流的持续集成工具.关于持续集成和Jenkins可以讨论的话题很多,本文描述的是一种使用Jenkins结合Maven进行动态工程构建的思路,用于进行系统开发过程中对第三方服务依赖的解耦. 一.  场景 在系统设计和实现过程中,尤其是涉及到多方集成的系统开发,我们经常会遇到这样的场景:即目标系统需要依赖于某些第三方的服务实现,而这些第三方的服务实现通常有其进度安排,会和目标系统平行开发,也就是说在目标系统开发调试过程中,第三方服务往往还无