Serverless AI训练营:课时4:函数的开发与配置(一)
课时4:函数的开发与配置(一)
内容介绍
一、课程概述
二、基本概念
三、开发流程
四、操作演示
五、课程总结
一、课程概述
本节课介绍函数计算的开发与配置,通过今天的学习,希望可以基于函数计算开发自己的应用。
本节课主要分为三个部分,基本概念中介绍了函数计算最核心的概念包括服务、函数、触发器,版本联名以及相关的配置。开发流程介绍了基于函数计算开发的完整开发部署的流程,操作演示会带着大家在控制台进行操作,搭建一个基于函数计算的应用,并且进行更新和迭代。
二、基本概念
1、服务
(1)基本介绍
服务是函数计算资源管理的单位,同一个服务下有很多函数,这些函数共享服务的网络配置、权限配置、存储配置、日志配置。服务可以对应成一个微服务的概念,这个微服务下面由很多函数共同组成,这些函数具有相同的访问权限,网络配置,日志也会进入到相同的 Log Store 中去,但是这些函数本身的配置可以各不相同。
比如同一个服务下面有的函数内存是3G,有的函数内存是512M,有的函数用Python写。应用比较复杂,同一个应用可以对应多个服务,这是没有强制的绑定关系的。
(2)服务配置
接下来就介绍服务的几个核心配置。
①日志配置 Log Config
设置日志服务的日志项目和日志仓库,用于存储和分析函数运行的日志。
开发者的代码在函数计算平台运行,如何查看函数运行产生的日志。比如在 ECS 上或者是在传统的服务器上开发日志都会打到统一的文件里面,通过日志收集工具收集到用户自己的 elastic search中,并且通过这种可视化工具来查看日志或者指标,但是函数计算里面运行代码的机器是由函数计算动态分配的,开发者无法自己收集日志了,函数计算需要帮助开发者投递日志,日志配置就是起到这个作用。
设置日志服务的 project,函数计算会将函数运行中产生的日志投递到开发者的 Log Store 中。但是为了成功投递日志,单单配置 Log Store 还不够,函数计算是没有权限向开发者的 Log Store 里面投递日志的,还需要开发者的授予函数计算向指定的 Log Store 写数据的权限。有了这个权限以后,函数计算就可以名正言顺的向开发者投递日志的。
在这里总结一下日志配置,就是为了让用户有地方配置 Log Store 和 project,允许函数计算向其中去投递函数日志,然后用户可以在 Log Store 中进行进一步的分析。
②文件存储配置 NASConfig
配置 NAS,让函数访问 NAS 文件系统时如同访问本地文件系统一样。
函数计算的每个函数都是独立的,都在不同的执行环境里运行。可以把执行环境理解成是一个容器。如果用户有一些公共文件,希望通过函数共享的话,在传统 Solo 化的开发方式中就是将公共文件放到磁盘里面,各个函数都在磁盘里面的同一个位置读,但是函数计算的机器是函数计算动态分配的,同一个函数的不同实例可能不在同一个主机上面。开发者也没有办法相信这些文件存入磁盘,因为这个机器也是函数计算的。
为解决这个问题函数计算推出了挂载 master 的功能,在服务中挂载了 master 后,函数就可以像访问本地文件系统一样访问 master 上的文件。然后用户是可以在 master 控制台上去对文件进行操作。
③网络配置
网络配置顾名思义就是设置网络的访问能力,函数的网络访问能力主要有两种:一个是函数是否可以访问,有的不需要访问公网,以免产生一些预期之外的公网流量费用。函数计算设置了一个布尔型的开关,默认是开启的,如果不需要访问公网就可以关闭开关。
另一个是函数是否可以访问指定VPC,VPC 是专有网络。专有网络中的数据比较机密是不能通过公共网络访问的,如果需要函数访问 VPC 的资源,比如希望函数来访问 VPC 中的 RDS,那就需要授予函数计算访问指定 VPC 的能力。原理是用户授权赋予弹性网卡 INI访问VPC,函数计算将 INI 插入到 XC 中执行用户函数的机器上,从而就可以使函数访问 VPC 中的资源。
④权限
函数计算是云原生的架构,和云上很多服务都会产生交互,阿里云有非常严格的权限限制,函数计算是没有能力访问开发者的其他云资源的。当开发者需要函数计算访问其他云服务的时候,就像显示的授予函数计算权限。权限主要有两个应用场景,一个是授予函数计算访问其他服务的权限,比如刚才提到的授权函数计算访问开发者的日志服务,授权函数创建 INI;另一个是授权函数可以访问开发者的云资源,第一个是授予函数计算,第二个是授权函数。
举个例子是函数代码中需要访问 OSS 获取对象,当然可以把 AK 写在函数代码里面或者是通过环境变量传入 AK。因为 AK 非常机密所以并不想暴露,开发者可以配置服务中的 role,role 具有访问 OSS 的权限。在函数执行的过程当中,函数计算是会生成一个临时 AK,也可以一起将这个 AK 存储到函数的上下文 contest中,这就是函数代码执行当中的一个输入参数叫 contest,开发者在代码中就可以来使用contest 键和credential 键还有 token,然后来建立一个 OSS Client,这个client就可以访问 OSS 中的资源了。这一页主要是介绍了服务的主要配置,包括日志配置、权限,NAS 还有网络配置。这些配置是服务当中所有函数共享的。