4. 开发环境搭建:安装Serverless Framework、配置云平台凭证、创建第一个Hello World函数

好,咱们正式开始动手了。

前面聊了那么多概念和架构,说实话,光说不练假把式。这一章,我带你把开发环境搭起来,然后跑通第一个Serverless函数。你想想看,当你在终端里看到那个“Hello World”被成功调用时,那种感觉,嗯,挺踏实的。

4.1 安装Serverless Framework

Serverless Framework是目前最主流的工具之一。它帮我们把云平台那些复杂的API调用、资源编排、部署流程,全都封装成了简单的命令行操作。说白了,它就是一把瑞士军刀。

安装方式很简单,前提是你得先装好Node.js(建议用LTS版本,我一般用16或18)。我个人习惯用npm全局安装:

npm install -g serverless

装完之后,验证一下:

serverless --version
# 或者用简写
sls --version

如果看到版本号,比如 Framework Core: 3.x.x,那就说明装好了。

小提示: 如果你在macOS或Linux上遇到权限问题,记得加 sudo。或者,我建议你用 nvm 管理Node版本,这样能避免很多权限的坑。

4.2 配置云平台凭证

工具装好了,但它还不知道你要操作哪个云平台。你得给它一把“钥匙”——也就是云平台的访问凭证。

以阿里云为例,你需要先登录阿里云控制台,进入RAM访问控制,创建一个子用户,然后给它授权(比如AliyunFCFullAccess权限)。最后拿到AccessKey ID和AccessKey Secret。

配置凭证有两种方式:

  1. 环境变量方式(推荐):直接在终端里设置,临时有效,适合开发环境。
  2. 配置文件方式:写入本地文件,长期有效。

我个人习惯用环境变量,因为更安全,不会把密钥不小心提交到代码仓库里。

export ALIBABA_CLOUD_ACCESS_KEY_ID=你的AccessKeyId
export ALIBABA_CLOUD_ACCESS_KEY_SECRET=你的AccessKeySecret

如果你用的是腾讯云,对应的环境变量是:

export TENCENT_SECRET_ID=你的SecretId
export TENCENT_SECRET_KEY=你的SecretKey
注意: 千万不要把AccessKey硬编码到代码里!我曾经见过有人把密钥直接写在 serverless.yml 里,然后上传到GitHub公开仓库……嗯,那后果很严重。建议把密钥加入 .gitignore 或者用环境变量管理。

4.3 创建第一个Hello World函数

好,环境搭好了,凭证也配好了。现在我们来创建第一个函数。

打开终端,进入你想放项目的目录,然后执行:

serverless create --template hello-world --path my-first-serverless

这个命令会从官方模板库拉取一个最简单的Hello World模板,放到 my-first-serverless 文件夹里。

进去看看:

cd my-first-serverless
ls -la

你会看到两个核心文件:

  • serverless.yml:配置文件,定义了函数、触发器、资源等。
  • index.js(或 handler.py):函数代码。

打开 index.js,内容大概是这样:

module.exports.handler = async (event, context) => {
  return {
    statusCode: 200,
    body: JSON.stringify({
      message: 'Hello, Serverless!'
    })
  };
};

嗯,很简单。就是一个返回JSON的HTTP函数。

接下来,部署到云端:

serverless deploy

你会看到终端里刷刷刷地输出一堆日志。部署完成后,它会返回一个HTTP终结点(Endpoint)。

用浏览器或者curl访问这个地址:

curl https://xxxxxxxxx.cn-hangzhou.fc.aliyuncs.com/2016-08-15/proxy/xxx/hello

如果看到:

{"message": "Hello, Serverless!"}

恭喜你!你的第一个Serverless函数跑起来了。

核心要点: 从安装到部署,整个过程不到5分钟。这就是Serverless的魅力——你不需要关心服务器在哪,不需要配置Nginx,不需要考虑扩容。你只需要写代码,然后 sls deploy,剩下的交给平台。

4.4 本地调试(可选但推荐)

每次改代码都部署到云端调试,太慢了。我建议你装一个本地模拟工具,比如 serverless-offline

在项目目录下安装:

npm install --save-dev serverless-offline

然后在 serverless.yml 里加上插件配置:

plugins:
  - serverless-offline

启动本地服务:

serverless offline

它会启动一个本地HTTP服务,默认监听 http://localhost:3000。你可以在本地修改代码、测试,确认没问题了再部署到云端。

避坑指南: 我曾经在本地调试时一切正常,一上云端就报错。后来发现是环境变量没配全。所以,本地调试时尽量模拟云端的运行环境,比如把云平台的环境变量也配到本地。

4.5 清理资源

测试完了,别忘了把云上的资源删掉,不然会一直计费。

serverless remove

这个命令会删除你刚才部署的所有云资源,包括函数、API网关、日志项目等。嗯,干干净净。

好了,现在你已经亲手跑通了第一个Serverless函数。从安装工具到配置凭证,再到部署和调试,这一套流程你以后会反复用到。下一章,我们会深入 serverless.yml 的配置细节,看看怎么定义更复杂的函数和触发器。