EventBridge API 端点:让服务集成触手可及|学习笔记(二)

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: 快速学习 EventBridge API 端点:让服务集成触手可及

开发者学堂课程事件总线EventBridge生态集成课程EventBridge API 端点:让服务集成触手可及学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/1235/detail/18405


EventBridge API 端点:让服务集成触手可及


2. Connection 访问合法性校验:API Key

image.png

API key 是其中最简单的授权认证方式,用户可以自定义 API访问的一个Key name 和 key value。eventbridge 会将其通过 http header的方式,传输到端进行认证,这种方式缺点也很明显,就是安全性不足,尤其是在一些非 HTTPS 的一些场景下,明文传输是容易引起一些安全问题的,但是对一些内部网络或者安全等级要求不高的场景下,这是一种非常容易理解,非常好用的方式。

3. Connection 访问合法性校验:Basic

image.png 

Basic是一种被很多 saas 产品支持的一种轻量级的方案,尤其是在用户内部网络访问认证的一些场景下被用的很多,那在这种模式下 username 和 password 会被 base64 进行编码,然后加上 basic 空格前缀,作为 header value 一起发送到目标服务,目标服务端会进行解码并进行认证,如果认证通过,会响应 eventbridge 的一个请求,如果失败会直接打回。当然它存在缺点,就是它的安全性其实也是不足的,因为 base64很容易被解码,甚至它不需要解码,也可以直接复用。

4. Connection 访问合法性校验:OAuth 2

image.png

OAuth 2 其实是一种相对来说更加安全可靠的授权认证方式,尤其是在一些公网等一些非可信的网络,目前很多产品尤其网络上的一些不同产品之间的相互授权都会被采用,面对不同的场景 oauth2 有四种授权方式。

第一种授权码这种主要是用于后端的外部应用,隐藏式的授权是主要是适用一些应用,密码主要是用一些内部网络高度性的的两个应用。对客户端品质是用于那些没有全单的服务间的调用。

那对于 eventbridge 事件驱动场景适合的是客户端凭证,这种授权方式,那在这种模式上用户需要在 eventbridge 配置,获取客户端凭证所需要的一些信息,这里包括 oauth service 地址、client id、client secret,支持通过get和post两种方式去获取客户端凭证,当 eventbridge  拿到客户的凭证之后,会在每次推送事件到目标服务的时候带上这个凭证信息,并且在凭证到期之前会自动的更新获取最新的凭证,详细大家也可以参考 oauth 2 的官方定义。

5.API 端点:有效管理事件目标

image.png 

有了刚才提到的 connection,eventbridge 就可以顺利的与目标服务进行连通了,但是为了访问最终的服务,其实还需要知道微服务 api 的具体定义,也就是刚才提到 api 端点,但是这里有一点需要注意的是 api 端点里只是定义了 API的原数据,具体的事件推送给目标端服务的时候,传递的一些参数以及每个参数传递什么内容是事件规则在选择 api 端点之后进行配置的时候定义的。可以这样去理解,api 端点是对 api 的描述,规则 api 端点则是对api 参数的每个值如何传递进行了定义。有的时候存在多个规则会往同一个目标服务 api 进行事件投递的场景,那如果这个时候没有 api 端点,一旦需要修改某一个API的参数,那需要修改所有的规则,这个是相当麻烦的,但是如果将这个目标服务的 api 定义成一个 api 端点,那只需要去修改 api 端点的一个配置,那么所有依赖这个 api 端点的规则都会同步自动更新,这里本质上是因为制定的事件的规则的目标,对api的依赖是一个引诱。

6.面向 API 端点的产品间集成

image.png

有了api端点,相当于是建了一条与微服务之间的一个快速通道,那就可以与事件中心轻松地对服务进行集成编排,可以将需要的事件实时同步给微服务,也可以通过事件的方式去驱动微服务的运行。尤其是对一些 saas 的服务,因为可能并没有二次开发能力去修改saas 服务里面的代码,这是非常困难的。但是一般 saas 服务都会暴露 API 可以通过 eventbridge 将事件通过 API 端点的方式推送给对应的 saas服务,这个是比较容易的。最后一起看一下api端点的应用场景。

 

四、应用场景案例

1.与内部微服务集成:将 OSS 事件推送到内部微服务

image.png

回到一开始的例子,如何将 oss 事件推送到用户内部的微服务。如果使用 api,首先得创建一个 connection,用来定义这个微服务所需要的连接信息,这里定义创建的 connection 名称为 Micro service connection,选择进程配置 api Key,api key name 选择 token,api key value选择 event bridge,点击确定,这样的话,连接配置就创建完了。

再创建一个 API端点,输入端点的名称,目标地址输入之前的web hook 作为模拟的后台微服务,Http method 选择post。Connection 选择刚刚创建的配置信息。点击确定。这样 api 端点的服务就已经创建完了。

然后回到 default 总线创建一个规则。筛选出需要推送的 oss 事件,将oss 事件推送到刚刚创建的API端点上。这里面可以设置 http 一些额外参数,设置 header 为加一个 source,Value选择能clut evenst的 source 字段,还可以再增加一个body,可以再增加一个Query 设置为固定值,value 也是固定值,这样规则就创建完了,那相比原先的HTTP这里可以看到可以去灵活的去设置 HTTP 参数,包括 header、body、Query,这样的有个好处是可以模拟所有 API方式,那这里可能会有一个疑问,就是如果规则中配置的参数和connection中默认的参数冲突了。因为它默认方式也会通过 http 等方式进行,那一旦冲突,那这个会被覆盖吗?这里是这样的,就是认为 connection 是连接是第一优先级的。所以当两边的参数冲突时会以 CONNECTION 的配置的参数为准。

先把 web hook 之前的记录删掉,让整个服务出一个待起伏的状态,再往 Oss 事件里面上传一个文件,文件上传成功,这里面看到 query 就是刚才设的字段,然后可以看到 haeder 里面有 token 信息,还有 source 字段 oss 以及body 完整地记录了 clut events 中的 data 信息。

2. 与 saas 服务集成:通过 event 集成 jenkins 触发构建部署

image.png 

再来看一个例子,通过event去集成 jenkins服务,轻松的去触发jenkins 构建和部署,jenkins 大家已经很熟悉了很多公司都会通过Jenkins来去做实现代码的自动构建测试和部署,这里在demo上部署了 jenkins 服务,Jenkins api 默认支持 message 请求模式,所以在 jenkins 里面可以为自己的账号去申请一个 api token。

这里生成了一个密码串,回到event bridge里面创建一个jkenkins 的 connection,用户名输入 jenkins 账号名,密码就是刚才已经生成的密码串,点击确定,这样 jenkins 连接配置就创建完了。接着创建一个去触发 jenkins job构建的api。连接配置选择刚刚创建的conection,点击确定,创建完了。然后创建一个自定义事件总线,输入事件源名称,输入事件规则名称,默认可以过滤所有的事件,然后选择 api 端点,选择刚刚创建的api服务,这里同样可以设置一些对应的参数信息,然后点击创建,这样一个触发 jenkins构建部署规则就创建好了。

现在可以通过页面或者SDK往总线去发送一条事件,回到 jenkins 页面,看到 jenkins 收到了 eventbridge 事件,并且触发了一次构建部署。

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
25天前
|
API 数据库 数据安全/隐私保护
利用Django框架构建高效后端API服务
本文将介绍如何利用Django框架构建高效的后端API服务。通过深入分析Django框架的特性和优势,结合实际案例,探讨了如何利用Django提供的强大功能来构建高性能、可扩展的后端服务。同时,还对Django框架在后端开发中的一些常见问题进行了解决方案的探讨,并提出了一些建设性的建议。
40 3
|
1月前
|
JSON API 数据库
解释如何在 Python 中实现 Web 服务(RESTful API)。
解释如何在 Python 中实现 Web 服务(RESTful API)。
25 0
|
1月前
|
监控 网络协议 API
阿里云BssOpenAPI是一个基于阿里云开放API的服务
【2月更文挑战第24天】阿里云BssOpenAPI是一个基于阿里云开放API的服务
136 6
|
1月前
|
前端开发 关系型数据库 MySQL
IDEA集成Docker插件打包服务镜像与运行【附Docker命令汇总】
IDEA集成Docker插件打包服务镜像与运行【附Docker命令汇总】
|
1月前
|
弹性计算 负载均衡 网络协议
这种情况可能是由于阿里云的API服务出现了短暂的故障或者网络波动导致的
【2月更文挑战第20天】这种情况可能是由于阿里云的API服务出现了短暂的故障或者网络波动导致的
62 1
|
29天前
|
NoSQL Java Redis
小白版的springboot中集成mqtt服务(超级无敌详细),实现不了掐我头!!!
小白版的springboot中集成mqtt服务(超级无敌详细),实现不了掐我头!!!
231 1
|
1月前
|
SpringCloudAlibaba Dubbo Java
SpringCloud Alibaba集成Dubbo实现远程服务间调用
SpringCloud Alibaba集成Dubbo实现远程服务间调用
|
16天前
|
前端开发 Java API
构建RESTful API:Java中的RESTful服务开发
【4月更文挑战第3天】本文介绍了在Java环境中构建RESTful API的重要性及方法。遵循REST原则,利用HTTP方法处理资源,实现CRUD操作。在Java中,常用框架如Spring MVC简化了RESTful服务开发,包括定义资源、设计表示层、实现CRUD、考虑安全性、文档和测试。通过Spring MVC示例展示了创建RESTful服务的步骤,强调了其在现代Web服务开发中的关键角色,有助于提升互操作性和用户体验。
构建RESTful API:Java中的RESTful服务开发
|
22天前
|
安全 API 开发者
构建高效可扩展的RESTful API服务
在数字化转型的浪潮中,构建一个高效、可扩展且易于维护的后端API服务是企业竞争力的关键。本文将深入探讨如何利用现代后端技术栈实现RESTful API服务的优化,包括代码结构设计、性能调优、安全性强化以及微服务架构的应用。我们将通过实践案例分析,揭示后端开发的最佳实践,帮助开发者提升系统的响应速度和处理能力,同时确保服务的高可用性和安全。
25 3
|
1月前
|
XML JSON API
通过Flask框架创建灵活的、可扩展的Web Restful API服务
通过Flask框架创建灵活的、可扩展的Web Restful API服务