开发函数计算的正确姿势 —— 依赖安装方法一览

本文涉及的产品
函数计算FC,每月15万CU 3个月
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介: 1. 前言 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。

1. 前言

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

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

如何在函数计算中安装依赖,一直是一个困扰用户的难题。我们写过很多文章,也推出很多功能,都是为了解决用户安装依赖“痛”的问题。

*备注:请确保 Fun 工具版本在 3.0.0+

2. 依赖安装方法一览

我们曾写过一系列文章介绍如何安装函数依赖,这次,我们从用户需求的视角对这些安装方式进行简单分类,以便于用户可以根据自己的需求,寻找到正确的解决方法。

2.1 用户需求一:我就想安装一个库到函数,能不能不让我理解 pip、apt-get 等包管理工具的复杂概念?

fun install 支持这种安装方式,使用方法为,安装到某个函数下代码目录下,只需要在 template.yml 所在的目录执行:

  1. 安装 apt-get 依赖:fun install -f functionName -p apt libzbar0 
  2. 安装 pip 依赖:fun install -f functionName -p pip flask 

-p 指的是安装的库类型,现在支持 pip、apt 两种。因为这两种类型的库安装难度是比较大的。那么对于 npm、maven 这些库,怎么装?往下看

另外,-f functionName 指的是会将依赖安装到这个函数目录下。如果想安装依赖到当前目录也是支持的,可以通过 fun install -h 查看更多帮助信息或者阅读《开发函数计算的正确姿势 —— 安装第三方依赖》

2.2 用户需求二:我想装的库,安装步骤比较复杂,我只知道怎么在 linux 服务器上装,函数计算能否提供相同的安装体验?

通过 Fun 3.0 提供的 fun innstall sbox 可以做到这一点。

使用方法为,在 template.yml 所在的目录,执行如下命令:

fun install sbox -f pyzbar-fun -i

其中 -f pyzbar-fun 指的是 template.yml 声明的一个函数。

执行完成后,就会进入一个用于安装依赖的交互式环境。这个交互式环境其实是一个函数计算的模拟环境,在这个环境上装的依赖,可以在最大程度上保证,部署后,不会出现因为环境差异导致的兼容问题。

在这个环境里,常见的 linux 命令都是可以使用的,比如 apt-get、pip、npm 等等。只不过,在安装 apt-get 以及 pip 库时,需要添加 fun-install 前缀。比如原先装一个包的步骤为 pip install flask,那在这个环境中,只需要添加 fun-install 前缀就好了,也就是 fun-install pip install flask。

注意: 直接在交互环境使用 pip 也是可以的,只不过,通过原生命令 pip 安装的依赖都会被安装到系统目录里,退出交互式环境时,这些依赖不会保留下来。而通过 fun-install 安装的依赖会被安装到代码目录,退出交互式命令时,可以被保留下来。

交互式安装依赖的更多帮助信息,请参考《开发函数计算的正确姿势——使用交互模式安装依赖》

2.3 用户需求三:我是 node/java/php/c# 用户,我想装一些库,怎么装?

npm 的库安装本身就比 python、apt-get 的库容易很多。原因是 npm install 后,会直接安装在项目目录的 node_modules 里,只要打包的时候,也就是将 template.yml 中的 CodeUri 指向 node_modules 所在的目录就好了。更多信息参考

java 库安装思路为在 maven 声明依赖,然后在打包时,将所有依赖都打包到同一个 jar 中,然后部署就可以了。更多信息参考

php 以及 c# 的思路其实都是类似的,可以参考 php 的文档以及 c# 的文档

2.4 用户需求四:装完后,有没有办法“录制”下来,再次需要的时候,可以一键安装?

请参考我们的 Funfile 文档

2.5 用户需求五:我的安装比较复杂,即使在本地,我也不知道要怎么装,你们有什么方案吗?

这种场景,其实并没有统一的解决方案,只能 case by case 的解决。目前,我们已经积累了一些解决方案,基本上都是“开箱即用”的。可以参考 Fun 主页的“第三方模板”章节。

可以阅读下我们的 《函数计算安装依赖库方法小结》,这个是原理性文章,包括我们推出的一些功能,都是基于这里介绍的原理来实现的。

如果依旧没能解决问题,可以去我们的博客里扒一扒,也许有意外收获。

3. 总结

上面介绍了一些常见的依赖安装的问题以及相关的解决方案。

如果上面的解决方案不能解决您的业务场景问题,可以加入钉钉群 11721331 进行反馈。

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
19天前
|
监控 安全 Serverless
"揭秘D2终端大会热点技术:Serverless架构最佳实践全解析,让你的开发效率翻倍,迈向技术新高峰!"
【10月更文挑战第23天】D2终端大会汇聚了众多前沿技术,其中Serverless架构备受瞩目。它让开发者无需关注服务器管理,专注于业务逻辑,提高开发效率。本文介绍了选择合适平台、设计合理函数架构、优化性能及安全监控的最佳实践,助力开发者充分挖掘Serverless潜力,推动技术发展。
41 1
|
1月前
|
监控 Serverless 云计算
探索Serverless架构:开发的未来趋势
【10月更文挑战第5天】Serverless架构,即无服务器架构,正逐渐成为云计算领域的热点。它允许开发者构建和运行应用程序而无需管理底层服务器。本文介绍了Serverless架构的基本概念、核心优势及挑战,并展示了其在事件驱动编程、微服务架构和数据流处理等场景中的应用。通过优化冷启动、使用外部存储等实战技巧,开发者可以更好地利用Serverless架构提升开发效率和应用性能。随着技术的成熟,Serverless将在未来软件开发中扮演重要角色。
|
3月前
|
缓存 运维 Serverless
函数计算产品使用问题之如何在Custom Runtime中引用层中的依赖
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
3月前
|
小程序 Serverless 开发工具
小程序开发问题之在小程序中安装并初始化小程序Serverless客户端SDK如何解决
小程序开发问题之在小程序中安装并初始化小程序Serverless客户端SDK如何解决
|
3月前
|
前端开发 大数据 数据库
🔥大数据洪流下的决战:JSF 表格组件如何做到毫秒级响应?揭秘背后的性能魔法!💪
【8月更文挑战第31天】在 Web 应用中,表格组件常用于展示和操作数据,但在大数据量下性能会成瓶颈。本文介绍在 JavaServer Faces(JSF)中优化表格组件的方法,包括数据处理、分页及懒加载等技术。通过后端分页或懒加载按需加载数据,减少不必要的数据加载和优化数据库查询,并利用缓存机制减少数据库访问次数,从而提高表格组件的响应速度和整体性能。掌握这些最佳实践对开发高性能 JSF 应用至关重要。
70 0
|
3月前
|
存储 设计模式 运维
Angular遇上Azure Functions:探索无服务器架构下的开发实践——从在线投票系统案例深入分析前端与后端的协同工作
【8月更文挑战第31天】在现代软件开发中,无服务器架构因可扩展性和成本效益而备受青睐。本文通过构建一个在线投票应用,介绍如何结合Angular前端框架与Azure Functions后端服务,快速搭建高效、可扩展的应用系统。Angular提供响应式编程和组件化能力,适合构建动态用户界面;Azure Functions则简化了后端逻辑处理与数据存储。通过具体示例代码,详细展示了从设置Azure Functions到整合Angular前端的全过程,帮助开发者轻松上手无服务器应用开发。
29 0
|
3月前
|
运维 Serverless PyTorch
函数计算产品使用问题之ComfyUI除了通过WebUI页面进行,还有什么其他方法部署
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
3月前
|
运维 Serverless 数据处理
函数计算产品使用问题之Animatediff插件怎么安装
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
3月前
|
NoSQL Serverless 数据库连接
Serverless 架构实现弹幕场景问题之initializer方法在执行过程中遇到错误如何解决
Serverless 架构实现弹幕场景问题之initializer方法在执行过程中遇到错误如何解决
36 0
|
3月前
|
存储 Serverless API
Serverless 架构实现弹幕场景问题之在initializer方法中初始化数据库实例如何解决
Serverless 架构实现弹幕场景问题之在initializer方法中初始化数据库实例如何解决
28 0

热门文章

最新文章

相关产品

  • 函数计算