开发函数计算的正确姿势 —— 使用 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
AI 代码解读

最简单的使用方法是直接使用 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
AI 代码解读

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
        // 省略其它属性配置 ... ...
AI 代码解读

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

Build 示例

Java 示例

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

总结

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

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
通义灵码 x 函数计算:构建高效开发流程,加速项目交付
通义灵码 x 函数计算:构建高效开发流程,加速项目交付
53 10
美的楼宇科技基于阿里云 EMR Serverless Spark 构建 LakeHouse 湖仓数据平台
美的楼宇科技基于阿里云 EMR Serverless Spark 建设 IoT 数据平台,实现了数据与 AI 技术的有效融合,解决了美的楼宇科技设备数据量庞大且持续增长、数据半结构化、数据价值缺乏深度挖掘的痛点问题。并结合 EMR Serverless StarRocks 搭建了 Lakehouse 平台,最终实现不同场景下整体性能提升50%以上,同时综合成本下降30%。
在FaaS中,如何设计无状态的函数来确保数据处理的一致性?
在FaaS中,如何设计无状态的函数来确保数据处理的一致性?
云端问道8期方案教学-基于Serverless计算快速构建AI应用开发
本文介绍了基于Serverless计算快速构建AI应用开发的技术和实践。内容涵盖四个方面:1) Serverless技术价值,包括其发展趋势和优势;2) Serverless函数计算与AI的结合,探讨AIGC应用场景及企业面临的挑战;3) Serverless函数计算AIGC应用方案,提供一键部署、模型托管等功能;4) 业务初期如何低门槛使用,介绍新用户免费额度和优惠活动。通过这些内容,帮助企业和开发者更高效地利用Serverless架构进行AI应用开发。
尽享红利,Serverless构建企业AI应用方案与实践
本次课程由阿里云云原生架构师计缘分享,主题为“尽享红利,Serverless构建企业AI应用方案与实践”。课程分为四个部分:1) Serverless技术价值,介绍其发展趋势及优势;2) Serverless函数计算与AI的结合,探讨两者融合的应用场景;3) Serverless函数计算AIGC应用方案,展示具体的技术实现和客户案例;4) 业务初期如何降低使用门槛,提供新用户权益和免费资源。通过这些内容,帮助企业和开发者快速构建高效、低成本的AI应用。
125 12
函数计算产品使用问题之在同一地域同一时刻最多可以同时运行多少个函数实例
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
通义灵码 x 函数计算:构建高效开发流程,加速项目交付
本方案基于通义大模型的通义灵码,提供代码生成、补全、优化及单元测试生成等能力,提升编码效率和质量。结合云效和函数计算 FC 进行代码管理、持续集成、部署发布,加速项目交付,为开发者提供智能编码、CI/CD、部署上线体验,加快产品迭代速度。
基于阿里云函数计算(FC)x 云原生 API 网关构建生产级别 LLM Chat 应用方案最佳实践
本文带大家了解一下如何使用阿里云Serverless计算产品函数计算构建生产级别的LLM Chat应用。该最佳实践会指导大家基于开源WebChat组件LobeChat和阿里云函数计算(FC)构建企业生产级别LLM Chat应用。实现同一个WebChat中既可以支持自定义的Agent,也支持基于Ollama部署的开源模型场景。
1201 31
云大使 X 函数计算 FC 专属活动上线!享返佣,一键打造 AI 应用
如今,AI 技术已经成为推动业务创新和增长的重要力量。但对于许多企业和开发者来说,如何高效、便捷地部署和管理 AI 应用仍然是一个挑战。阿里云函数计算 FC 以其免运维的特点,大大降低了 AI 应用部署的复杂性。用户无需担心底层资源的管理和运维问题,可以专注于应用的创新和开发,并且用户可以通过一键部署功能,迅速将 AI 大模型部署到云端,实现快速上线和迭代。函数计算目前推出了多种规格的云资源优惠套餐,用户可以根据实际需求灵活选择。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等