faas函数使用

article/2025/9/5 15:46:22

faas-cli 是一款 OpenFaaS 官方工具,在faas项目中使用频繁,作为与API GateWay沟通的桥梁工具,相当重要。它用于创建、部署OpenFaas函数应用 ,支持从多种语言模板构建 (例如 Node.js, Python, CSharp and Ruby).,在实际开发中,我们只需实现模板中的handler即可,其余的构建工作交给faas-cli,此外faas-cli 也作为监控角色起作用,例如:函数调用的发起、函数运行日志查看等。这里对官方文档做一些整理、梳理常用的命令及概念。
faas功能框图

安装

你可以通过 curl 工具或者下载发行版的二进制文件安装,安装完成后也可以为 faas-cli 命令创建个别名faas ,以后就可以使用faas来代替faas-cli.

curl -sSL https://cli.openfaas.com | sudo sh

Windows安装

window下需要安装powerShell等工具,不方便。

常用命令

帮助命令 faas-cli --help

  • faas-cli new - 在当前目录下通过模板创建函数,模板可以通过openfaas github获取
  • faas-cli login - 登录操作,连接网关、查看部署的函数信息等需要提前登录
#登录例子
cat /var/lib/faasd/secrets/basic-auth-password | faas-cli login -s
  • faas-cli logout - 登出操作
  • faas-cli up - 一个复合命令,包含创建、发布、部署命令集合
  • faas-cli build - 创建模板function的docket镜像
  • faas-cli push - 推送docker镜像到仓库,主要是因为k8s部署是从仓库拉取的
  • faas-cli deploy - 部署函数应用到本地或者远程的openfaas网关
  • faas-cli publish - 创建和发布交叉系统架构镜像如ARM、树莓派之类的,服务器很少用
  • faas-cli remove - 从openfaas网关删除函数应用
  • faas-cli invoke - 通过命令行发起函数请求,请求参数在STDIN中输入
root@lishuangliang-VirtualBox:/home/lishuangliang/openfaas/faastemplate# faas invoke shasum
Reading from STDIN - hit (Control + D) to stop.
hello faas
290856bb392e40b30455375608fe419c70d2abd62c7f01922e8a2479d04813a254d647ed3f75e730d8a174e36dd729c882e86a81d02f4b4d24c96ad5c98919f3  -
  • faas-cli store - 可以查看、部署openFaas仓库的函数
  • faas-cli secret - 管理函数的密钥
  • faas-cli auth - (alpha) 初始化 OAuth2 认证以获取取cookie
  • faas-cli registry-login - 通过用户名、密码生成docker/ecr/self仓库的认证文件

其他拓展命令:

  • faas-cli template pull - 从远端仓库拉取模板 Detailed Documentation

默认模板仓库地址 of https://github.com/openfaas/templates.git 也可以通过下面的配置自定义

  • 通过faas-cli 指定,优先级最高
  • 通过环境变量 OPENFAAS_TEMPLATE_URL 配置,优先级次之

Note:openFaas默认网关地址为 127.0.0.1:8080 可以通过下面三种方式配置自定义地址

  • --gateway 参数指定,优先级最高
  • --yaml / -f flag or stack.yml 通过当前目录yml文件指定,优先级次之
  • OPENFAAS_URL 环境变量指定,优先级再次之

使用 Kubernetes部署openfaas的可以通过 .bash_rc file文件配置:

export OPENFAAS_URL=http://127.0.0.1:31112

模板仓库

通过模板仓库可以很方便地获取官方的、第三方社区模板。

  • 查找

模板查找命令: faas-cli template store list

Note: You can set your own custom store location with --url flag or set OPENFAAS_TEMPLATE_STORE_URL environmental variable

  • 拉取

从模板仓库拉取模板仅需要指定模板的名字即可,例如: faas-cli template store pull go 。当然也可以加上仓库名,例如: faas-cli template store pull openfaas/go

  • 详情

可以通过 template store describe 命令来指定获取模板的详细信息,比如刚才的 go 模板: faas-cli template store describe go

Note: This feature is still in experimental stage and in the future the CLI verbs might be changed

模板构建

构建命令:

faas-cli new FUNCTION_NAME --lang python/node/go/ruby/Dockerfile/etc

当然也可以在 YAML 配置文件中指定编程语言 lang: node/python/go/csharp/ruby

使用模板构建优势

  • openfaas支持非常多常用的语言
  • 非常简单 - 仅需要更改一个文件
  • 通过 Gemfile / requirements.txt or package.json 等,指定依赖
  • 模板可自定义

Note:Python 模板可能需要 gcc 编译器或者其他依赖 ? 这完全没问题。你可以对任意的模板的Dockerfile 或者代码进行自定义.。创建自己的文件夹,然后从模板仓库中把复制模板过来,接着进行修改就可以了。See also: faas-cli new --help

第三方社区模板

由第三方社区创建、维护的模板也可以加进自己本地openfaas系统,使用命令 faas-cli template pull

更多第三方社区模板.

YAML stack file使用

快速指引

A YAML stack file 集合了不同函数。Read the YAML reference guide in the OpenFaaS docs.

你可以定义独立函数或者函数集合在一个 YAML 文件中, 这样 CLI 工具使用起来更加方便快捷。你也可以通过YAML文件来部署OpenFaaS 实例. faas-cli 会默认使用当前目录的 stack.yaml

这里是一个使用 stack.yml 文件的样例,它包含了镜像仓库的使用

provider:name: openfaasgateway: http://127.0.0.1:8080functions:url-ping:lang: pythonhandler: ./sample/url-pingimage: alexellis2/faas-urlping

这个url-ping 函数是由Python实现的一个ping工具. 我们仅仅需要实现 handler.py文件内容的编写,以及在 requirements.txt.罗列Python模块的依赖。

  • Build the files in the .yml file:
$ faas-cli build

-f yml文件或者yml文件的URL地址. 早期版本 -f flag is: --yaml.

yml文件还可以通过 HTTP(s)下载指定:

$ faas-cli build -f https://raw.githubusercontent.com/openfaas/faas-cli/master/stack.yml

接下来,通过Python 模板创建Docker 镜像将会生成,镜像名: alexellis2/faas-urlping.

  • 部署函数

你可以通过下面的命令部署函数:

$ faas-cli deploy

环境变量替换

faas-cli 工具支持使用环境变量替换模板内容,这样就可以做到使用一个模板文件实现多个不同账号、版本、环境的配置。

例如,,在项目中经常用到Docker 仓库的用户账号信息,对于持续集成的镜像经常是推送到 exampleco,但是在开发环境时,你可能更喜欢使用自己的账号推送,如 alexellis2.

functions:url-ping:lang: pythonhandler: ./sample/url-pingimage: ${DOCKER_USER:-exampleco}/faas-url-ping:0.2

使用默认配置:

$ faas-cli build
$ DOCKER_USER="" faas-cli build

覆盖默认配置,使用 “alexellis2”:

$ DOCKER_USER="alexellis2" faas-cli build

See also: envsubst package from Drone.

通过 curl调用函数

你可以通过 curl创建HTTP POST:

  • 通过 -d 指定数据例如 -d "my data here"
  • 或者通过 --data-binary @filename.txt 来发送文件
  • 还可以通过 --data-binary @-来传输标准输入输出
$ curl -d '{"hello": "world"}' http://127.0.0.1:8080/function/nodejs-echo
{ nodeVersion: 'v6.9.1', input: '{"hello": "world"}' }$ curl --data-binary @README.md http://127.0.0.1:8080/function/nodejs-echo$ uname -a | curl http://127.0.0.1:8080/function/nodejs-echo--data-binary @-

http://chatgpt.dhexx.cn/article/jABrJ45k.shtml

相关文章

Nodejs也能Serverless?从0开始用Nodejs打造一个FaaS服务

本篇文章并不是教你怎么用阿里云、谷歌云等等云框架的FaaS服务,而是教你如何从0开始打造一个自己的FaaS服务。 受限于人力及成本原因,现在的FaaS服务基本上可以说是“大厂玩物”,而网上鲜有相关代码的实现,因此我才打算写一篇文章…

OpenFaaS介绍

FaaS 云计算时代出现了大量XaaS形式的概念,从IaaS(Infrastructure as a Service)、PaaS(Platform as a Service)、SaaS(Software as a Service)到容器云引领的CaaS(Containers as a Service),再到火热的微服务架构,它们都在试着将各种软、硬…

深入理解无服务器架构(Faas/Serverless)

摘要 无服务器架构(Faas/Serverless),是软件架构领域的热门话题。 AWS,Google Cloud和Azure - 在无服务器上投入了大量资金,已经在看到了大量专门针对Faas/Serverless的文章、书籍,开源项目,会议。 但什么是无服务器&…

PaaS、IaaS 、SaaS、Bass、Fass、无服务的理解与区别

云计算(cloud computing) 关于云计算的定义有多种说法,现阶段广为接受的是美国国家标准与技术研究院(NIST)定义:云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问&…

云计算服务类型都是什么?IaaS、PaaS、SaaS、BaaS、FaaS

云计算服务类型都是什么?IaaS、PaaS、SaaS、BaaS、FaaS 基本概念 云计算主要分为 4 种类型:私有云、公共云、混合云和多云。 同时,云计算服务主要有 3 种:基础架构即服务(IaaS)、平台即服务(P…

简单介绍一下Serverless和Faas

一、啥叫Serverless(无服务器) Like many trends in software, there’s no one clear view of what Serverless is. For starters, it encompasses two different but overlapping areas: (就是一般定义为两种不同但交叉的领域:Faas和Baas) Serverless was first…

Faas

文章介绍了Faas是什么,FaaS的特点、以及它的好处,和基于Kubernetes的FaaS框架Fission等,希望能对您有所帮助。 前言 云计算时代出现了大量XaaS形式的概念,从IaaS、PaaS、SaaS到容器云引领的CaaS,再到火热的微服务架构,以及现在越来越多被谈…

XaaS形式的概念,从IaaS、PaaS、SaaS到容器云引领的CaaS,Serverless和FaaS 概念

XaaS IaaS、PaaS、SaaS CaaS,Serverless 和FaaS 和lambda 前言 云计算时代出现了大量XaaS形式的概念,从IaaS、PaaS、SaaS到容器云引领的CaaS,再到火热的微服务架构,以及现在越来越多被谈起的Serverless和FaaS,我们正在经历?一个技术飞速变革的时代。 一、什么是…

IaaS, PaaS, SaaS, BaaS, Faas

aaS 是 As-a-Service 即为服务 的意思。 IaaS (Infrastructure as a Service) wikipedia:基础设施即服务 服务商提供底层/物理层基础设施资源(服务器,数据中心,环境控制,电源,服务器机房)&…

云原生:什么是 FaaS ?

概述 FaaS,Function as a Service,"功能即服务"(也译作“函数即服务”),是一种在无状态容器中运行的事件驱动型计算执行模型,这些功能将利用服务来管理服务器端逻辑和状态。 它允许开发人员以功…

【AI FaaS:NLaaS 自然语言即服务】设计一个自然语言生成 SQL 查询语句的 AI Faas API 系统

设计一个AI Faas API 系统,支持自然语言生成SQL,并查询数据源数据返回表数据。同时,支持API开发完成即可线上使用。给我详细系统设计说明和完整的Golang代码,解释说明。5000字以上。 文章目录 【AI FaaS:NLaaS 自然语言即服务】设计一个自然语言生成 SQL 查询语句的 AI Faa…

Serverless 是什么?BaaS 和 FaaS 是什么?

前言 本文隶属于专栏《大数据理论体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见大数据理论体系 概览 Serverless 是一个云原生开发模型,…

FatFs

FatFs FatFS是一个为小型嵌入式系统设计的通用FAT(File Allocation Table)文件系统模块。FatFs 的编写遵循ANSI C,并且完全与磁盘I/O层分开。因此,它独立(不依赖)于硬件架构。它可以被嵌入到低成本的微控制器中,如AVR, 8051, PIC, ARM, Z80…

【云计算】XaaS最全介绍(按24字母合集):AaaS、BaaS、CaaS、DaaS、EaaS、FaaS、GaaS、HaaS、IDaaS…

IT行业创造了XaaS,即“一切即服务”: “X as a service”、“anything as a service”或“everything as a service” 。 其本质就是服务理念,未曾止步于SPI(SaaS、PaaS、IaaS(传统就这三个))模…

Faas,又一个未来?

经同事独家授权,原创发表此文 作者说明: 苗立尧 易宝支付运维工程师,热爱Kubernetes,对容器生态圈具有浓厚兴趣 个人公众号:容器时代 前言 云计算时代出现了大量XaaS形式的概念,从IaaS、PaaS、SaaS到容器云引领的Ca…

IaaS、PaaS、SaaS、BaaS和FaaS, 这些区别你真的了解吗?

IaaS、PaaS、SaaS、BaaS、FaaS,这些名词后面都带着aas三个字母,aas 是 As-a-Service,即为服务的意思。我们看下面这个架构图: IaaS、PaaS、SaaS 云平台一般都会提供以上架构图中的三种云服务 IaaS:Infrastructure as…

FaaS介绍

FaaS介绍 云计算技术的核心是服务化,服务化就需要提供闭环和灵活的服务。而云计算也在持续发展中,从最初的基础设施服务化(IaaS),平台服务化(PaaS),软件服务化(SaaS)&…

什么是功能即服务(FaaS)?

功能即服务(或称为 FaaS)是一种云计算服务,它允许开发人员以功能的形式来构建、计算、运行和管理这些应用包,无需维护自己的基础架构。 FaaS 是一种在无状态容器中运行的事件驱动型执行模型,这些功能将利用 FaaS 提供商…

计算机预览不到桌面,电脑文件夹的文件预览显示没有预览怎么办?

有可能是更改了查看方式造成的。解决的方法很简单: 打开存放照片的文件夹,在空白处点击右键,可以看到弹出的对话框中总共有9个选项,分别是:超大图标、大图标、中等图标、小图标、列表、详细信息、平铺、内容和隐藏文件…

KKFileView(十一)——文件预览

2021SCSDUSC 上篇文章提到文件预览工厂以及实现具体文件预览功能的类,这篇报告着重于各个文件预览流程 一、文本文件预览 之前的报告中有提到DownloadUtils工具类,该类通过输入文件描述和文件名得到文件的真实路径,如果失败的话也会返回信息…