云函数使用

本文涉及的产品
函数计算FC,每月15万CU 3个月
简介: 云函数(FaaS)是一段运行在云端的、轻量的、无关联的、并且可重用的代码。无需管理服务器,只需编写和上传代码,即可获得对应的数据结果。使用云函数可以使企业和开发者不需要担心服务器或底层运维设施,可以更专注代码和业务本身,也可以使代码进一步解耦,增加其重用性。

云函数使用

云函数开发

云函数(FaaS)是一段运行在云端的、轻量的、无关联的、并且可重用的代码。无需管理服务器,只需编写和上传代码,即可获得对应的数据结果。使用云函数可以使企业和开发者不需要担心服务器或底层运维设施,可以更专注代码和业务本身,也可以使代码进一步解耦,增加其重用性。

云函数示例

云函数目录结构
在Serverless小程序工程的server/functions目录下创建云函数目录,其中index.js是云函数getImageList的入口文件。

└── server/
    └── functions
           └── getImageList
                   └── index.js

云函数代码结构
以下代码示例展示了如何从数据库images里面查出特定用户上传的图片记录。云函数里可以直接通过API调用数据存储,文件存储的服务资源以及其他云函数。

• 当云函数被客户端或者其他云函数调用时,可以通过ctx.args获得调用传来的参数。
• 可以通过ctx.logger方法打印不同类型的日志信息,然后在云函数控制台中查看执行日志。
• 在云函数内通过ctx.env来获取环境参数,例如SpaceId、调用来源、客户端源IP和客户端UserAgent等信息。ctx.env是一个object,它包含MP_SPACE_ID(SpaceId),MP_SOURCE(调用来源),MP_USER_AGENT(客户端User-agent),MP_CLIENT_IP(客户端IP)。
• 在云函数中,您可以直接调用同一环境(空间)的数据存储和文件存储服务以及获取当前请求用户的基本信息。ctx.mpserverless在云函数封装了小程序的基础服务, API使用方式和客户端一致。

  • 通过ctx.mpserverless.db调用云数据库能力,如ctx.mpserverless.db.collection('user').find({ uid: args.uid })。
  • 通过ctx.mpserverless.file调用文件存储能力,如ctx.mpserverless.file.deleteFile(args.filePathUrl)。
  • 通过ctx.mpserverless.user获取当前访问用户基本信息,如ctx.mpserverless.user.getInfo()。
  • 通过ctx.mpserverless.function调用云函数能力,如mpserverless.function.invoke('dataAnalytics', {range: 30})调用其他云函数。
  • 通过ctx.httpclient HTTP 请求方法,无需额外依赖,您就可以请求任何 HTTP 和 HTTPS 协议的 Web 服务。如ctx.httpclient.request('https://www.alipay.com/x/notFound.htm')。

module.exports = async (ctx) => {
  ctx.logger.info('%s %s', ctx.env.MP_SPACE_ID, ctx.args.username);
  const images = await ctx.mpserverless.db.collection('images').find({ owner: ctx.args.username });
  return { images };
};

创建云函数

在代码工程创建云函数
1.新建或打开小程序Serverless工程,点击server目录关联对应的云服务空间。
image.png

2.在functions目录上右键选择新建云函数。
image.png

在云控制台创建云函数
打开小程序云控制台,在云函数页面,点击新建云函数。在新建云函数框里输入云函数的函数名。
18.jpeg

部署云函数

编写云函数代码后,您需要将云函数代码在代码工程里或者在云控制台上传。
在代码工程部署云函数
编写云函数代码后,右键点击已创建的云函数,选择部署云函数。
19.png
在云控制台部署云函数
1.打开小程序云控制台,在云函数页面,单击已创建的函数名称链接。
2.在发布管理页签,单击上传js包更新js包,然后选择要上传的代码包。
上传的代码包必须满足以下要求:
• 代码包的名称必须和在控制台上创建的函数名称一致。
• 代码包必须是.zip文件。
• 上传的代码包必须包含index.js文件。
• 如果引用了第三方包,代码包里必须包含node_modules。

  1. 上传成功后,单击代码部署。
    20.jpeg

调用云函数

1.在小程序项目的根目录执行以下命令安装 SDK。

npm install @alicloud/mpserverless-sdk --save

2.在 app.js 中初始化SDK(全局只需初始化一次)。

// 1. 引入必要的 sdk
import MPServerless from '@alicloud/mpserverless-sdk';
 
// 2. 在 app.js 中对 sdk 进行初始化
// 2.1 初始化 MPServerless
my.serverless = my.serverless || new MPServerless({
  uploadFile: my.uploadFile,
  request: my.request,
  getAuthCode: my.getAuthCode,
}, {
  // 2.2 参数能在小程序云服务空间详情中获取
  appId: '',
  spaceId: '',
  clientSecret: '',
  endpoint: ''
});

3.在小程序页面您可以使用mpserverless.function.invoke方法调用上述定义的云函数。

// 调用云函数getImageList
my.serverless.function.invoke('getImageList', {     
  username: 'Vincent',
}).then((res) => {
  if (res.success && res.result) {
    this.setData({ imageList: res.result.images });
  }
}).catch(console.error);

课程作业

支付宝扫码登陆官方小程序【小程序云开发助手】,在 学习 > 训练营打卡作业 > 云函数使用 中提交作业。
image.png

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
7月前
|
JSON 安全 Serverless
在使用阿里云函数计算(FC)服务时,您可以通过自定义域名来访问部署好的云函数
在使用阿里云函数计算(FC)服务时,您可以通过自定义域名来访问部署好的云函数【1月更文挑战第23天】【1月更文挑战第112篇】
347 7
|
Serverless API 数据库
在阿里函数计算中,国内的云函数,海外调用有什么限制么?
在阿里函数计算中,国内的云函数,海外调用有什么限制么?
126 1
|
7月前
|
小程序 数据库
小程序云函数从云数据下载excal
该教程介绍了如何使用小程序云函数从云数据下载Excel文件。首先,创建名为`getexcal`的云函数,然后在终端中安装`node-xlsx`依赖。接着,编写云函数代码,从数据库中获取数据,利用`node-xlsx`生成Excel文件并上传至云端。在页面(index)中,提供下载和打开Excel的按钮。当点击“生成excel”时,调用云函数并获取文件下载地址,将其复制到剪贴板并弹出提示。最后,提醒注意每次更新云函数后需重新部署,并确保使用正确的云开发环境ID。
103 1
|
7月前
|
存储 运维 Java
一文带你了解云HIS
一文带你了解云HIS
267 1
|
7月前
|
存储 运维 大数据
云HIS是什么?HIS系统为什么要上云?云HIS有哪些优点?
云HIS是什么?HIS系统为什么要上云?云HIS有哪些优点?
151 0
云函数的使用
云函数的使用
238 0
|
中间件 测试技术 Serverless
云函数
云函数
3371 1
|
前端开发 数据可视化 小程序
云流化和云桌面有什么关系
云流化,也指实时云渲染,就是把非常重的图形计算放到云端,云端服务器可以配置较高端的GPU设备,通过云端服务器进行计算,进行实时编码,编码后将其“流化”,通过网络,把计算结果实时推送至终端(例如手机、PC、平板和XR设备)
云流化和云桌面有什么关系
|
开发工具 git Python
云函数网易云自动打卡
云函数网易云自动打卡
446 0
云函数网易云自动打卡
|
存储 运维 小程序
什么是小程序云&小程序云开通
小程序云是阿里云面向小程序场景提供的一站式云服务,帮助开发者实现一云多 端的业务战略。开发者可通过小程序云支撑各类小程序前端,在一朵云内实现统 一的资源管理、统一的数据运营和统一的业务设计。 小程序云提供小程序 Serverless 和小程序云应用服务,帮助小程序开发者降低 研发和运维成本。
1596 0
什么是小程序云&小程序云开通