亚马逊云科技-使用API网关构建GenAI微服务

亚马逊云科技-使用API网关构建GenAI微服务

关键字: [yt, Amazon API Gateway, Api Gateway, Microservices, Serverless Architecture, Amazon Lambda, Api Management]

本文字数: 1600, 阅读完需: 8 分钟

导读

在一场亚马逊云科技的网络研讨会上,演讲者介绍了”利用亚马逊 API Gateway 构建 API 驱动的微服务”。在这场演示中,演讲者探讨了如何借助亚马逊云科技的服务(如 API Gateway、Lambda 和 Cognito User Pools)来构建和管理 API 与微服务。具体而言,他阐释了 API Gateway 能够与各种后端服务(如 Lambda、EC2、ECS 以及其他亚马逊云科技服务)集成,而 Cognito User Pools 则可用于身份验证和授权。该演示重点介绍了亚马逊云科技服务(如 API Gateway、Lambda 和 Cognito User Pools)如何实现构建可扩展、安全且性价比高的 API 和微服务,并具备最小的管理开销、自动扩展以及内置的高可用性和容错能力。

演讲精华

以下是小编为您整理的本次演讲的精华,共1300字,阅读时间大约是6分钟。

在软件开发不断演进的领域中,微服务和API的概念已成为推动力量,重塑了应用程序的设计、构建和部署方式。网络研讨会”使用Amazon API Gateway构建API驱动的微服务”深入探讨了这种范式转变的复杂性,来自Chris Munds的见解和实践指导具有指导意义。Chris Munds是亚马逊云科技无服务器领域的开发者代言人,在该公司拥有超过六年的经验。

根据维基百科的定义,微服务是一种软件架构风格,应用程序由小型、独立的进程组成,这些进程通过与语言无关的API进行通信。这些服务高度解耦,执行特定任务或操作,目的是将它们组合成一个更大的整体。近年来,这种方法普及程度飙升,一位风险投资家马克·安德森创造的”软件正在吞噬世界”这一短语,概括了专业化软件在各行各业无处不在的性质。

来自Red Hat的Steve Wilmont博士进一步强调了API在这种背景下的重要性,他说:“而且API正在吞噬软件设计。”这种观点在亚马逊云科技的客户中也有所呼应,他们不断寻求构建和管理API的指导和解决方案,使其成为一个重要的话题。超过1,000本书探讨了API的复杂性,为那些希望掌握这一领域的人提供了丰富的知识和最佳实践。同样,虽然微服务的概念相对较新,但已有大约164部出版作品涉及到它,凸显了它在行业中的重要性。

这些主题的增长和普及还体现在它们在亚马逊云科技年度会议上的日益突出的地位。从2012年和2013年没有专门的会议,到2017年API和微服务的讲座数量分别达到8场和10场,这一趋势反映了行业对这些架构模式日益浓厚的兴趣和采用程度。

定义”微”服务的”微”这一方面一直存在着持续的争论,存在着不同的观点和方法。事实上,微服务的实现和设计通常取决于具体的用例、技术堆栈和业务需求。然而,Chris Munds建议Sam Newman的《Building Microservices》一书作为理解这种架构风格的深度和细微差别的主要资源。

在构建和支持API方面,Chris Munds概述了三个常见的需要考虑的领域:表现层(API服务器)、API后端和数据库或数据存储。最常见的微服务模式涉及每个组件的一个实例,形成了一个全新的三层堆栈。

在解决API服务器方面,Chris Munds强调了管理API所面临的几个挑战。亚马逊云科技API Gateway作为一种强大的解决方案应运而生,提供了诸如全球分布(超过100个全球存在点)、2017年引入的区域端点、缓存功能、CloudWatch集成以及对各种后端技术的支持等优势。

API Gateway支持与亚马逊云科技Lambda、EC2实例、基于容器的应用程序、其他亚马逊云科技服务以及公共HTTPS端点集成,为选择合适的后端提供了灵活性。Chris Munds深入探讨了使用Lambda作为计算后端的细节,解释了无服务器概念,如自动扩展、高可用性、按使用付费定价以及跨亚马逊云科技区域内多个可用区的内置容错能力。

Chris Munds分享了一个客户用例,其中移动应用程序或设备需要直接与亚马逊云科技服务(如DynamoDB)交互,但客户希望限制访问或提供一个自定义API来掩盩后端技术。在这种情况下,可以将API Gateway直接放置在DynamoDB前面,处理暴露的API与DynamoDB内部API之间的映射,同时还提供身份验证、授权和其他自定义机制。

安全性是构建API时的一个关键方面,Chris Munds探讨了API Gateway支持的各种机制。这些包括IAM权限、自定义授权者以及与Amazon Cognito User Pools集成以实现用户管理。Cognito User Pools是一项完全托管的服务,提供用户注册、登录、密码重置、多因素身份验证和个人资料管理等功能,简化了保护API的过程。

在实际构建API时,Chris Munds建议使用OpenAPI规范(Swagger),并强调了丰富的第三方工具和框架生态系统。他展示了流行的无服务器框架Claudia.js和Chalice的示例,演示了几行代码(大约5或6行)如何生成API Gateway、Lambda函数以及它们之间通信所需的配置。

对于更喜欢灵活方式的人,Chris Munds介绍了建立在CloudFormation之上的Amazon Serverless Application Model (SAM)。SAM提供了专门的资源,如Functions、APIs和Simple Tables,减少了配置和构建这些服务的复杂性。他逐步介绍了一个SAM模板示例,说明了它如何简化了定义和部署无服务器应用程序的过程。在一个公开的示例中,SAM模板的第9到25行对应于创建大约7个不同的亚马逊云科技资源,包括API Gateway、API Gateway阶段、部署、Lambda函数、权限和策略。

Chris Munds还介绍了Amazon Web Services SAM CLI,这是一个本地开发工具,允许从本地环境构建、调试和启动无服务器应用程序,进一步简化了开发过程。

还讨论了部署注意事项,API Gateway支持阶段和阶段变量,可以创建多个环境(例如dev、test、prod)并使用动态配置。Lambda版本和别名也有所涉及,允许在不同环境之间无缝升级代码。例如,如果当前生产版本是3,测试版本是6,则可以使用别名将API Gateway阶段映射到特定的Lambda版本或别名。

此外,Chris Munds探讨了金丝雀部署的概念,这种部署方式可以在不同版本的API之间控制流量转移。例如,可以将5%的流量引导到应用程序或API的新版本,从而实现测试和迁移场景,而不会一次影响所有客户端。这一功能还可用于将API从本地或其他云提供商迁移到亚马逊云科技,通过逐步转移方法或操作的流量来实现。

为了简化针对API的客户端开发,API Gateway提供了从Swagger定义生成SDK的功能,从而消除了客户端了解底层API实现细节的需求。Chris Munds概述了一个部署流水线,其中包含了这些概念,展示了一个简化的过程,用于构建、测试和部署跨多个环境的无服务器API,包括源、构建和三个环境阶段(例如,部署开发环境、部署预生产环境、部署生产环境)。

最后,Chris Munds强调,由于亚马逊云科技提供的工具和服务,构建和管理API变得更加简单。API Gateway简化了扩展、身份验证、授权、监控、日志记录和SDK生成,减轻了应用程序开发人员的负担。他鼓励与会者探索亚马逊云科技网站上的资源和文档,如aws.amazon.com/apigateway和aws.amazon.com/serverless,以进一步学习和实施。

在整个网络研讨会中,Chris Munds借鉴了他在亚马逊云科技的丰富经验,提供了实际见解和真实案例,以说明构建API驱动的微服务的概念和最佳实践。他的全面方法涵盖了整个生命周期,从定义微服务和API到使用亚马逊云科技服务和工具设计、构建、保护、部署和管理它们。

总之,这个网络研讨会为寻求拥抱微服务和API范式的开发人员和架构师提供了一个全面的指南。通过利用API Gateway、Lambda、Cognito User Pools等亚马逊云科技服务的强大功能,以及第三方框架和工具,与会者深入了解如何以无服务器的方式构建和管理可扩展、安全、高效的API驱动应用程序,使他们能够在软件开发领域中保持领先地位。

总结

在这个富有洞见的演讲中,亚马逊云科技开发者代言人 Chris Munds 带领观众深入探索了利用亚马逊云科技服务构建和管理 API 的广阔世界。他深入探讨了微服务和 API 日益流行的原因,强调了它们在当今软件领域的重要性。

重点一:Chris 强调了理解 API 设计原则和微服务架构的重要性,并推荐了 Sam Newman 的著作《Building Microservices》一书,以便进一步探索相关主题。

重点二:亚马逊云科技为 API 提供了多种后端选择,包括亚马逊云科技 Lambda、EC2 实例、基于容器的应用程序,以及与其他亚马逊云科技服务或公共 HTTPS 端点集成的能力。Chris 强调了无服务器架构的优点,尤其是亚马逊云科技 Lambda 和 API Gateway。

重点三:确保 API 的安全性是一个至关重要的方面,Chris 讨论了 API Gateway 支持的各种机制,如 IAM 权限、自定义授权者和 Cognito 用户池用于用户管理。他还涵盖了阶段变量和金丝雀部署在控制性推出和测试方面的重要性。

最后,Chris 强调了使用 Chalice、Claudia.js 和无服务器应用程序模型 (SAM) 等框架构建 API 的简易性。他强调了亚马逊云科技服务(如 API Gateway、Lambda 和 Cognito)在简化 API 管理、扩展、身份验证、授权和 SDK 生成方面的强大功能。

亚马逊云科技(Amazon Web Services)是全球云计算的开创者和引领者。提供200多类广泛而深入的云服务,服务全球245个国家和地区的数百万客户。亚马逊云科技致力于成为企业构建和应用生成式AI的首选,通过生成式AI技术栈,提供用于模型训练和推理的基础设施服务、构建生成式AI应用的大模型等工具、以及开箱即用的生成式AI应用。深耕本地、链接全球 – 在中国,亚马逊云科技通过安全、稳定、可信赖的云服务,助力中国企业加速数字化转型和创新,并深度参与全球化市场。

### 如何部署 GenAI 模型 (GenAI-Perf) 为了在 Amazon SageMaker 上成功完成 GenAI 模型(如 `genai-perf`)的部署,可以遵循以下方法论。Amazon SageMaker 提供了一个灵活的框架来支持模型的训练和推理服务化。 #### 使用 GPU 进行模型优化 当涉及到高性能计算需求时,GPU 是加速机器学习工作负载的关键资源之一。通过利用 Amazon SageMaker 的实例类型配置功能,可以选择适合特定任务的工作环境[^1]。对于像 `genai-perf` 这样的大型生成式人工智能模型来说,推荐选用带有 NVIDIA A10G 或 V100 显卡的支持 GPU 实例族(例如 p3.xlarge, g4dn.xlarge),这些硬件能够显著提升性能表现并降低延迟时间。 #### 创建自定义容器镜像 如果目标是部署一个预构建好的开源项目或者私有版本控制下的代码库,则可能需要创建自己的 Docker 容器映射文件,并将其上传至 ECR(弹性容器注册表) 中存储起来以便后续加载使用。此过程通常涉及以下几个方面: 1. **安装依赖项**: 确保所有必要的 Python 库已被正确导入到环境中。 2. **编写入口脚本**: 设计好用于接收 HTTP 请求并将它们转换成预测结果返回给客户端的应用逻辑部分。 下面是一个简单的例子展示如何设置 Flask Web Server 来处理 POST 方法请求的数据流传输操作: ```python from flask import Flask, request, jsonify app = Flask(__name__) @app.route('/predict', methods=['POST']) def predict(): data = request.get_json(force=True) # 假设我们有一个已经初始化完毕的 transformer pipeline 对象叫做 'model' prediction = model(data['input_text']) return jsonify({'output':prediction}) if __name__ == '__main__': app.run(host='0.0.0.0') ``` 请注意,在实际应用过程中还需要考虑安全性加固措施以及错误捕获机制等问题。 #### 设置超参数调整作业 SageMaker 支持自动化的 Hyperparameter Optimization(HPO),这可以帮助找到最佳组合从而进一步提高最终产品的质量水平。可以通过 SDK API 调用来启动此类实验运行序列。 有关更详细的指导文档链接如下所示: https://docs.aws.amazon.com/sagemaker/latest/dg/deploy-model.html 以上就是关于怎样把 genai-perf 类似的解决方案迁移到云端平台上的基本思路概述。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值