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,那就说明装好了。
sudo。或者,我建议你用 nvm 管理Node版本,这样能避免很多权限的坑。
4.2 配置云平台凭证
工具装好了,但它还不知道你要操作哪个云平台。你得给它一把“钥匙”——也就是云平台的访问凭证。
以阿里云为例,你需要先登录阿里云控制台,进入RAM访问控制,创建一个子用户,然后给它授权(比如AliyunFCFullAccess权限)。最后拿到AccessKey ID和AccessKey Secret。
配置凭证有两种方式:
- 环境变量方式(推荐):直接在终端里设置,临时有效,适合开发环境。
- 配置文件方式:写入本地文件,长期有效。
我个人习惯用环境变量,因为更安全,不会把密钥不小心提交到代码仓库里。
export ALIBABA_CLOUD_ACCESS_KEY_ID=你的AccessKeyId
export ALIBABA_CLOUD_ACCESS_KEY_SECRET=你的AccessKeySecret
如果你用的是腾讯云,对应的环境变量是:
export TENCENT_SECRET_ID=你的SecretId
export TENCENT_SECRET_KEY=你的SecretKey
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函数跑起来了。
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 的配置细节,看看怎么定义更复杂的函数和触发器。