开发函数计算的正确姿势 —— 使用 Fun Build 构建函数

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

前言

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

函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。函数计算更多信息 参考
Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API 网关、日志服务等资源。它通过一个资源配置文件(template.yml),协助您进行开发、构建、部署操作。Fun 的更多文档 参考

备注: 本文介绍的技巧需要 Fun 版本大于等于 3.0.0+。

Fun Build 是什么,为什么需要 Fun Build?

在很多场景,源码距离交付物其实是有一定的距离,比如 java,写完 java 代码后,还要考虑如何编译、打包的问题。而对于函数计算来说,由于其只能接受一个 zip 或 jar 包,我们还要想一些方法,将我们的代码编译产物及其依赖一同打包的一个 jar 中,然后交付。

Fun Build 的职责就是完成从源码到交付产物的构建过程。

Fun Build 功能介绍

使用 fun build -h 可以查看 build 的帮助文档:

$ fun build -h
Usage: fun build [options] [[service/]function]

Build the dependencies.

Options:
  -u, --use-docker           Use docker container to build functions
  -t, --template [template]  path of fun template file.
  -h, --help                 output usage information

最简单的使用方法是直接使用 fun build,如果想编译某个函数,可以使用 fun build serviceName/functionName 或者 fun build functionName。

默认情况下,fun build 构建时,是直接在宿主机上构建的,如果想避免因为环境差异带来的部署后的不兼容问题,可以在 build 时,指定 -u 或者 --use-docker 参数,表示会在本地使用函数计算模拟环境进行编译。

如果 template.yml 不在当前目录,可以通过 fun build -t templatePath 的方式指定。

Fun Build 的行为是将 template.yml 中列出的函数进行构建(不指定具体函数,则默认编译所有函数)。

使用示例

# 使用 fun build 对所有函数进行构建
fun build 

# 使用 fun build 并且以本地模拟环境对所有函数进行构建
fun build --use-docker

# 使用 fun build 进行构建,构建完成后,立刻进行调用
fun build && fun local invoke

# 使用 fun build 进行构建,构建完成后,立刻进行部署
fun build && fun deploy

Fun Build 构建流程

Fun Build 的构建流程可以理解为,去函数代码目录查找特定的 manifest 文件(清单文件),然后根据这些 manifest 文件进行特定的构造、依赖下载、编译等操作。

目前 Fun 针对不同的语言分别提供了一些其主流的包管理器 manifest 文件的支持

  1. Fun 本身定义的不限语言的 [Funfile]()
  2. java maven 包管理器的 pom.xml
  3. node npm 包管理器的 package.json
  4. python pip 包管理器的 requirements.txt
  5. php composer 包管理器的 composer.json

比如,我这里有一个包含 php7.2、python2.7、python3、nodejs6、nodejs8、java8 的示例 template.yml 。

// 省略部分属性配置 ... ...
Resources:
  localdemo:
    Type: 'Aliyun::Serverless::Service'
    php72:
      Type: 'Aliyun::Serverless::Function'
      Properties:
        Runtime: php7.2
                // 省略其它属性配置 ... ...
    python27:
      Type: 'Aliyun::Serverless::Function'
      Properties:
        Runtime: python2.7
                // 省略其它属性配置 ... ...
    python3:
      Type: 'Aliyun::Serverless::Function'
      Properties:
        Runtime: python3
                // 省略其它属性配置 ... ...
    nodejs6:
      Type: 'Aliyun::Serverless::Function'
      Properties:
        Runtime: nodejs6
                // 省略其它属性配置 ... ...
    nodejs8:
      Type: 'Aliyun::Serverless::Function'
      Properties:
        Runtime: nodejs8
        // 省略其它属性配置 ... ...
    java8:
      Type: 'Aliyun::Serverless::Function'
      Properties:
        Runtime: java8
        // 省略其它属性配置 ... ...

当执行 fun build 时,会对这些函数依次进行构建,构建的产物,会被存放到项目根目录的 .fun/build/artifacts/ 目录。

Build 示例

Java 示例

下面是一个初始化、构建、运行、修改、构建、运行的 java 示例:

总结

使用 Fun Build 可以直接实现从源码到交付产物的构建过程,节省用户的配置成本。

相关实践学习
【AI破次元壁合照】少年白马醉春风,函数计算一键部署AI绘画平台
本次实验基于阿里云函数计算产品能力开发AI绘画平台,可让您实现“破次元壁”与角色合照,为角色换背景效果,用AI绘图技术绘出属于自己的少年江湖。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
目录
相关文章
|
1月前
|
人工智能 运维 安全
加速智能体开发:从 Serverless 运行时到 Serverless AI 运行时
在云计算与人工智能深度融合的背景下,Serverless 技术作为云原生架构的集大成者,正加速向 AI 原生架构演进。阿里云函数计算(FC)率先提出并实践“Serverless AI 运行时”概念,通过技术创新与生态联动,为智能体(Agent)开发提供高效、安全、低成本的基础设施支持。本文从技术演进路径、核心能力及未来展望三方面解析 Serverless AI 的突破性价值。
数据采集 Web App开发 人工智能
166 0
|
2月前
|
数据采集 Web App开发 人工智能
基于函数计算FC构建 Browser Tool Sandbox 详解与实操
本文介绍了如何基于阿里云函数计算(FC)构建一个安全、可控的 Browser Tool Sandbox,支持多种浏览器自动化操作方式,包括 Playwright、Puppeteer、Browser Use 和 REST API 等,为 AI Agent 安全高效地操作浏览器提供了完整的技术方案。
|
4月前
|
分布式计算 Serverless OLAP
实时数仓Hologres V3.1版本发布,Serverless型实例从零开始构建OLAP系统
Hologres推出Serverless型实例,支持按需计费、无需独享资源,适合新业务探索分析。高性能查询内表及MaxCompute/OSS外表,弹性扩展至512CU,性能媲美主流开源产品。新增Dynamic Table升级、直读架构优化及ChatBI解决方案,助力高效数据分析。
实时数仓Hologres V3.1版本发布,Serverless型实例从零开始构建OLAP系统
|
6月前
|
JSON 安全 Serverless
MCP Server 之旅第 2 站: 从 0 到 1 - MCP Server 市场构建与存量 OpenAPI 转 MCP Server
本文聚焦MCP协议在企业应用中的两大核心痛点:如何将社区主流STDIO MCP Server一键转为可插拔Remote MCP Server,以及如何实现存量OpenAPI向MCP Server的智能化转型。文章通过具体示例,展示了基于函数计算和协议转译Adapter的解决方案,支持npm/pip生态,实现零改造一键迁移,大幅降低成本。
|
6月前
|
JSON 安全 Serverless
MCP Server On FC之旅2: 从0到1-MCP Server市场构建与存量OpenAPI转MCP Server
本文介绍了将社区主流STDIO MCP Server一键转为企业内可插拔Remote MCP Server的方法,以及存量API智能化重生的解决方案。通过FunctionAI平台模板实现STDIO MCP Server到SSE MCP Server的快速部署,并可通过“npx”或“uvx”命令调试。同时,文章还探讨了如何将OpenAPI规范数据转化为MCP Server实例,支持API Key、HTTP Basic和OAuth 2.0三种鉴权配置。该方案联合阿里云百练、魔搭社区等平台,提供低成本、高效率的企业级MCP Server服务化路径,助力AI应用生态繁荣。
1017 40
|
6月前
|
人工智能 运维 安全
阿里云 Serverless 助力海牙湾构建弹性、高效、智能的 AI 数字化平台
海牙湾(G-Town)是一家以“供应链+场景+技术+AI”为核心驱动力的科技公司,致力于为各行业提供数字化转型解决方案。通过采用阿里云Serverless架构,解决了弹性能力不足、资源浪费与运维低效的问题。SAE全托管特性降低了技术复杂度,并计划进一步探索Serverless与AI结合,推动智能数字化发展。海牙湾业务覆盖金融、美妆、能源等领域,与多家知名企业建立战略合作,持续优化用户体验和供应链决策能力,保障信息安全并创造可量化的商业价值。未来,公司将深化云原生技术应用,助力更多行业实现高效数字化转型。
476 19
|
7月前
|
自然语言处理 安全 数据挖掘
Hologres+函数计算+Qwen3,对接MCP构建企业级数据分析 Agent
本文介绍了通过阿里云Hologres、函数计算FC和通义千问Qwen3构建企业级数据分析Agent的解决方案。大模型在数据分析中潜力巨大,但面临实时数据接入与跨系统整合等挑战。MCP(模型上下文协议)提供标准化接口,实现AI模型与外部资源解耦。方案利用SSE模式连接,具备高实时性、良好解耦性和轻量级特性。Hologres作为高性能实时数仓,支持多源数据毫秒级接入与分析;函数计算FC以Serverless模式部署,弹性扩缩降低成本;Qwen3则具备强大的推理与多语言能力。用户可通过ModelScope的MCP Playground快速体验,结合TPC-H样例数据完成复杂查询任务。
|
7月前
|
分布式计算 运维 搜索推荐
立马耀:通过阿里云 Serverless Spark 和 Milvus 构建高效向量检索系统,驱动个性化推荐业务
蝉妈妈旗下蝉选通过迁移到阿里云 Serverless Spark 及 Milvus,解决传统架构性能瓶颈与运维复杂性问题。新方案实现离线任务耗时减少40%、失败率降80%,Milvus 向量检索成本降低75%,支持更大规模数据处理,查询响应提速。
375 57
|
8月前
|
人工智能 运维 NoSQL
Dify x Tablestore 构建低成本、Serverless 知识库
本文介绍如何基于Dify与阿里云Tablestore构建检索增强生成(RAG)系统,解决大模型知识时效性和领域适配性问题,该方案具备低代码、Serverless免运维、高可靠、弹性扩展及低成本等优势。文章通过答疑助手的案例,详细说明了创建Tablestore实例、配置Dify、构建与验证知识库的步骤。
1042 11
Dify x Tablestore 构建低成本、Serverless 知识库

热门文章

最新文章