开发函数计算的正确姿势 —— 部署 API 网关

简介: 前言 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。

前言

首先介绍下在本文出现的几个比较重要的概念:

函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。函数计算更多信息参考。

Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API 网关、日志服务等资源。它通过一个资源配置文件(template.yml),协助您进行开发、构建、部署操作。Fun 的更多文档 参考。

Api 网关: API 网关(API Gateway)提供高性能、高可用的 API 托管服务,帮助用户对外开放其部署在 ECS、容器服务等阿里云产品上的应用,提供完整的 API 发布、管理、维护生命周期管理。用户只需进行简单的操作,即可快速、低成本、低风险地开放数据或服务。

函数计算提供了 HTTP 触发器,并且支持本地调试,使得通过函数计算开发一个 web 应用十分的方便。

但也存在一些场景,比如已经存在了一个 API 网关 + 函数计算的应用,想要将该应用部署到不同的 region。如果通过手工操作,这个过程会十分的繁琐,且容易出错。而通过 Fun 可以较容易的实现一键部署 API 网关 + 函数计算到所有 region。

本文,主要介绍如何通过 Fun 发布 Api 网关 + 函数计算应用。

在读本文前,建议阅读 Fun 工具相关的基础知识。

注意: 本文只会附上核心的代码或配置,如果想要完整的例子,可以参考。

简单的例子

编写函数代码

首先需要编写函数的代码,函数可以是一个简单的 helloworld:

exports.handler = function(event, context, callback) {
  var response = {
      isBase64Encoded: false,
      statusCode: 200,
      body: 'hellow wrold'
  };
  callback(null, response);
};

也可以是一段更复杂的程序,比如 这里 涉及到的代码。

配置 Api 网关

HelloworldGroup: # Api Group
  Type: 'Aliyun::Serverless::Api'
  Properties:
    StageName: RELEASE
    DefinitionBody:
      '/': # request path
        get: # http method
          x-aliyun-apigateway-api-name: hello_get # api name
          x-aliyun-apigateway-fc: # 当请求该 api 时,要触发的函数,
            arn: acs:fc:::services/${fc.Arn}/functions/${helloworld.Arn}/
            timeout: 3000

其中 x-aliyun-apigateway-fc 配置项中的 fc 以及 helloworld,分别为服务名、函数名,需要根据实际配置的函数进行修改。

发布

通过 Fun deploy 即可发布:

打开提示的 url 即可进行访问。

更多例子

在 Fun 项目中,提供了很多 API 网关的 demo 和文档,可以参考。

使用进阶

如果已有的文档无法满足需求,比如想要配置 https、超时时间,必须按可选等参数,可以根据 API 网关的 API 文档 进行更多的配置,Fun 支持的参数包括但不限于 ApiName、Visibility、RequestConfig、RequestParameters、ServiceParameters、ServiceParametersMap 等。

如果想要通过 API 文档 编写 Fun 配置文件,就需要了解 API 与 Fun 配置的映射关系。映射规则如下:

将参数名小写,并将原来的驼峰用 - 连接,然后加上 x-aliyun-apigateway 前缀。

举例,比如对于一下几个 API 参数,映射关系分别为:

ApiName => x-aliyun-apigateway-api-name
Visibility => x-aliyun-apigateway-visibility
RequestParameters => x-aliyun-apigateway-request-parameters
ServiceParametersMap => x-aliyun-apigateway-service-parameters-map

另外,针对每一个参数,可以进一步进行更细粒度的配置,比如在 API 文档 上介绍了 RequestParameters 其实是一个 RequestParameter 的数组的字符串表示,而 RequestParameter 可进行的配置有 ApiParameterName、LocationParameterType、Required 等。

转换成 Fun 配置,只需要将首字母小写即可,比如:

ApiParameterName => apiParameterName
Location => location

映射示例

对于 RequestParameters 的配置,转换成 Fun 配置为:

x-aliyun-apigateway-request-parameters:
  - apiParameterName: 'token'
    location: 'Query'
    parameterType: 'String'
    required: 'REQUIRED'
  - apiParameterName: 'token2'
    location: 'Query'
    parameterType: 'String'
    required: 'REQUIRED'

在上面的例子中,配置了两个 Query 类型的必须按参数,其中,第一个参数名为 token,第二个为 token2。

常量参数、系统参数

根据 API 网关的文档,以及上面的映射规则,可以写出常量参数的配置如下:

x-aliyun-apigateway-request-parameters:
  - apiParameterName: 'token'
    location: 'Query'
    parameterType: 'String'
    required: 'REQUIRED'
    defaultValue: 'e'
x-aliyun-apigateway-service-parameters:
  - serviceParameterName: 'token'
    location: 'Query'
    parameterCatalog: 'CONSTANT'

同样可以写出系统参数的配置如下:

x-aliyun-apigateway-request-parameters:
  - apiParameterName: 'CaClientIp'
    location: 'Query'
    parameterType: 'String'
    required: 'REQUIRED'
x-aliyun-apigateway-service-parameters:
  - serviceParameterName: 'CaClientIp'
    location: 'Query'
    parameterCatalog: 'SYSTEM'  

改造已有的 API

如果已经存在了一个 API 网关的 API,如何快速的用 Fun 描述出来?

这里介绍一个技巧,打开 API 网关控制台,选择想要改造的 API,点击编辑,然后不做任何修改直接保存。

然后找到 ModifyApi.json 请求,可以看到 RequestParamters 等参数的配置:

image

将其按照上面的映射规则进行改写即可。

总结

本文介绍了通过 Fun 部署 API 网关以及函数计算的例子,如果应用比较简单可以直接复制这些例子的配置使用,如果提供的示例无法满足需求,可以通过本文介绍的映射规则进行自定义配置。

利用 Fun 配置 API 网关具有重复部署、多 region 部署、协同开发、版本控制管理等优点,推荐优先使用 Fun 部署 Api 网关。

目录
相关文章
|
人工智能 安全 API
20 万奖金池就位!Higress AI 网关开发挑战赛参赛指南
本次赛事共设三大赛题方向,参赛者可以任选一个方向参赛。本文是对每个赛题方向的参赛指南。
803 87
|
人工智能 安全 API
Agent 工程师绕不开的必修课:API 网关 vs API 管理
本文探讨了“API管理”与“API网关”的起源、发展及差异,二者分别服务于API生命周期的不同阶段。API网关从流量网关演进至AI网关,承担运行时请求控制;API管理则从接口文档化发展到商业化平台,关注全生命周期治理。两者在实际应用中协同工作,通过分层架构和策略联动实现高效运营。未来,随着大模型应用的兴起,AI网关和MCP Server管理将成为新趋势,推动API技术迈入智能化和服务化的新阶段。
Agent 工程师绕不开的必修课:API 网关 vs API 管理
|
数据采集 机器学习/深度学习 搜索推荐
利用通义大模型构建个性化推荐系统——从数据预处理到实时API部署
本文详细介绍了基于通义大模型构建个性化推荐系统的全流程,涵盖数据预处理、模型微调、实时部署及效果优化。通过采用Qwen-72B结合LoRA技术,实现电商场景下CTR提升58%,GMV增长12.7%。文章分析了特征工程、多任务学习和性能调优的关键步骤,并探讨内存优化与蒸馏实践。最后总结了大模型在推荐系统中的适用场景与局限性,提出未来向MoE架构和因果推断方向演进的建议。
1981 11
|
人工智能 运维 安全
函数计算支持热门 MCP Server 一键部署
云上托管 MCP 搭建 AI Agent 将成为趋势。函数计算 FC 目前已经支持开源 MCP Server 一键托管,欢迎体验。
1793 113
|
存储 监控 安全
132_API部署:FastAPI与现代安全架构深度解析与LLM服务化最佳实践
在大语言模型(LLM)部署的最后一公里,API接口的设计与安全性直接决定了模型服务的可用性、稳定性与用户信任度。随着2025年LLM应用的爆炸式增长,如何构建高性能、高安全性的REST API成为开发者面临的核心挑战。FastAPI作为Python生态中最受青睐的Web框架之一,凭借其卓越的性能、强大的类型安全支持和完善的文档生成能力,已成为LLM服务化部署的首选方案。
1543 3
|
Serverless Python
借助 serverless 将 MCP 服务部署到云端
本文介绍了如何将 MCP 服务通过 SSE 协议部署到云端,避免本地下载和启动的麻烦。首先,使用 Python 实现了一个基于 FastMCP 的网络搜索工具,并通过设置 `transport='sse'` 启用 SSE 协议。接着,编写客户端代码测试服务功能,确保其正常运行。随后,利用阿里云函数计算服务(FC 3.0)以 Serverless 方式部署该服务,包括创建函数、配置环境变量、添加依赖层以及部署代码。最后,提供了客户端测试方法和日志排查技巧,并展示了如何在不同工具(如 Cherry-Studio、Cline 和 Cursor)中配置云端 MCP 服务。
2192 11
借助 serverless 将 MCP 服务部署到云端
|
人工智能 运维 安全
函数计算支持热门 MCP Server 一键部署
MCP(Model Context Protocol)自2024年发布以来,逐渐成为AI开发领域的实施标准。OpenAI宣布其Agent SDK支持MCP协议,进一步推动了其普及。然而,本地部署的MCP Server因效率低、扩展性差等问题,难以满足复杂生产需求。云上托管成为趋势,函数计算(FC)作为Serverless算力代表,提供一键托管开源MCP Server的能力,解决传统托管痛点,如成本高、弹性差、扩展复杂等。通过CAP平台,用户可快速部署多种热门MCP Server,体验高效灵活的AI应用开发与交互方式。
4350 10
|
安全 搜索推荐 Serverless
HarmonyOS5云服务技术分享--Serverless抽奖模板部署
本文详细介绍了如何使用华为HarmonyOS的Serverless模板快速搭建抽奖活动,手把手教你完成从前期准备到部署上线的全流程。内容涵盖账号注册、云函数配置、参数调整、托管上线及个性化定制等关键步骤,并附带常见问题解答和避坑指南。即使是零基础用户,也能轻松上手,快速实现抽奖活动的开发与部署。适合希望高效构建互动应用的开发者参考学习。

热门文章

最新文章

相关产品

  • 函数计算