当前位置: 首页 > 科技观察

开发云API连接器的最佳实践

时间:2023-03-19 18:39:04 科技观察

[.com快译]各种云服务提供商,如AmazonWebServices、MicrosoftAzure、GoogleComputeEngine等,其OpenStack平台、vCloud、OnApp等正在成为越来越受欢迎。通过API或Web服务实现的可编程服务越来越多。为了调用这些API和web服务,我们必须开发一个连接器(connector)。现在,我们已经积累了为几乎所有云平台或服务开发API连接器的经验。这篇博文旨在分享我们的经验,并提供一些在开发Web服务连接器以连接到云服务或平台时可以遵循的最佳实践。为什么需要API连接器以下是使用API连接器的几个原因:1.发现云资源2.管理资源3.自动化操作4.协调资源5.与工具和产品集成6.报告总结资源及其利用情况开发步骤API连接器以下是为云平台/服务开发高效实用的连接器所需的一系列步骤:1.了解API特征2.分析云平台/服务提供的API支持3.识别各个方面API4.验证API的各个端点5.验证API的授权6.检查配额7.分析云资源的定价8.API连接器的设计考虑API特性API的特性包括:API类型、身份验证机制和请求/响应类型。API的类型通常,API是通过REST(即表述性状态传输)或SOAP(即简单对象访问协议)发布的。其中,REST正在成为标准并取代旧的SOAPAPI。文末表格中的数据充分证明了这一点。API认证每个云平台使用不同类型的认证机制来访问API,因此了解这些认证机制非常重要。一些典型示例包括以下内容:·基本身份验证·基于令牌的身份验证·SSL身份验证·多因素身份验证示例:授权:Base64(用户名:密码)请求:标头:内容类型:application/xml授权:基本dG9ib3RyYXM6cTE=方法:GETAPI:http://api.xyzcloud.com:4465/paci/v1.0/veIPaddress|host-api.xyzcloud.comPortNo–4465Path–paci/v1.0/ve响应:token-basedauthentication(X-Auth-Token,Oauthtoken)token-basedAuthentication提供使用包含用户身份信息的临时令牌进行身份验证。当临时令牌过期时,需要由资源刷新。内部身份验证处理程序根据标头中提供的令牌信息执行身份验证。请求:标头:内容类型:application/jsonMethod:POSTAPI:https://api.myapplication.com/user/accessToken内容:{userName:'我的用户名',密码:'我的密码',token_type:'mac'}响应:{"access_token":"okKXxMWOEhnM78Rie02ZjWjP7eQqpp6V","mac_key":"vV6xEfVgQZv4ABJ6VZDHlQfCaqKgFZuN","mac_algorithm":"hmac-sha-1","token-type":"mac","expires_in",ken"refresh_token"":"nZSiH3L5K4febMlELguILucrWpjRud56"}SSL认证SecureSocketsLayer是一种标准的安全技术,它在服务器和客户端之间建立加密连接,典型场景是web服务器(网站)和浏览器。SSL认证需要将SSL证书上传到订阅它的平台。API的端点需要通过SSL证书进行身份验证。多重身份验证多重身份验证(MFA)在用户名和密码之上添加了一层保护。支持MFA的API需要用户名和密码作为第一因素;以及从MFA设备获得的验证码作为第二因素。这些多重因素为API的端点提供了更高的安全性。API响应类型在提供输入和使用输出时需要查看请求和响应API。API请求和响应都是XML或JSON类型,因此连接器需要根据接口要求转换相应的响应。API支持可以通过以下选项为云平台/服务开发API连接器。·使用您选择的编程语言,如:Python、Java、.Net、Ruby、GO、Node.JS等,直接调用REST和SOAPAPI。部分云平台/服务提供各种API特定的软件开发包(SDK),方便开发者使用平台/服务提供的可编程SDK,如特定的Python、Java、.Net、Ruby等。使用第三方库例如LibCloud(Python)、Fog(Ruby)、jCloud(Java)、Libretto(JavaScript)、pkgcloud(Node.JS)或gophercloud(GO),基于它们的支持。下表显示了每个领先的云服务提供商和平台的一些API支持。注意:这些云服务API的详细信息可以在Google表格中找到。并鼓励服务提供商和其他读者更新自己的各种云API端点,为开发者提供更方便的参考。API的各种操作浏览API文档,确定您要调用的操作,有助于您了解平台支持的各种API操作。在开始通过API进行调用之前,您希望通过管理门户或仪表板界面执行各种操作,以便了解其工作原理。要调用API,您要做的第一件事就是进行身份验证,然后您可以在执行各种创建选项之前尝试一些基本的读取操作。验证APIAPI端点的每个端点是否与云平台管理的URL相同。API端点通常包括主机、端口和路径。如果它是RESTAPI,它将包含一个访问密钥和一个私有密钥。可以使用POSTMAN、RESTClient等工具来验证API的每个端点对于平台或服务的可访问性。对于基于令牌的身份验证,我们需要生成一个令牌并将该令牌提供给RESTClient。API的授权在对API进行身份验证后,我们需要了解云平台或服务中给定用户的授权问题。例如,通过使用AWS身份和访问管理(IdentityandAccessManagementIAM),我们只能在身份验证成功后执行IAM授权给我们的操作。配额云平台/服务对用户账号可以调用的资源进行配额管理。因此,您最好提前了解配额限制的机制。例如,AWS将弹性IP地址(elasticIP)分配给单个账户的限制为5个。但是,这可以通过请求增加。OpenStack管理员可以为用户使用的每个项目定义资源限制。分析云资源定价检查云服务提供商的资源定价非常重要。由于云服务提供商是按月、按小时或按分钟收费的,所以在消费前了解定价很重要,否则我们收到账单时肯定会有“惊喜”。详细了解服务提供商提供的免费套餐也很重要,这将使我们能够避免那些所谓的“惊喜”。API连接器开发的设计注意事项?如果您只是为单个平台开发连接器,那么使用该平台提供的SDK是理想的选择。?如果平台没有提供所需语言的SDK,您可以使用API??Matic、AWSAPIGateway等工具,这些工具可以为API端点生成各种SDK。在连接器的开发过程中,使用SDK会减少很多开发工作量。?如果您想开发跨多个云的连接器,您可以考虑使用第三方SDK,这将有助于加快您的开发速度。但是,如果希望connector是动态的,随着平台或服务迭代,最好使用平台或服务提供的SDK,因为第三方SDK对一些新版本的支持可能需要一段时间的滞后。?您需要了解某些提供商和平台设置的API流量限制(即单个用户在一段时间内向API端点发出的API请求数),因为这将是我们能够的给定阀门调用单个端点值。?对于一些异步API(那些不是响应式API),请使用PUSH提供响应或POLL接收。“推送”模式使用回调类型端点,在可用时发送响应。在“POLL”模式下,请求重复调用API来检查其状态更新。当您需要轮询或重试API请求时,我们建议使用指数退避算法(backoffalgorithm)来计算API调用之间的休眠间隔(sleepinterval)。指数退避算法背后的想法是在连续错误响应的重试之间使用增加的等待时间。?一些云服务提供商/平台为每个服务调用发布不同的端点。因此,我们建议您维护一个包含多个API端点的服务目录,以确保您在使用过程中可以调用正确的服务。?端点有时会根据服务的云平台或子帐户而有所不同。因此,在调用之前需要保证每个端点都能根据不同的需求“连接”起来。希望以上最佳实践可以帮助到您,让您愉快地开发API连接器。【原标题】BestPracticesforDevelopingAPIConnectorsforClouds(作者:SabapathyArumugam)原文链接:https://dzone.com/articles/best-practices-for-developing-connectors-to-cloud【翻译,合作站点For转载请注明原译者和出处为.com]