Skip to content

阿里云函数计算

阿里云函数计算 是一个全托管的事件驱动计算服务。函数计算让您专注于编写和上传代码,而无需管理服务器等基础设施。

本指南使用第三方适配器 rwv/hono-alibaba-cloud-fc3-adapter 在阿里云函数计算上运行 Hono。

1. 设置

sh
mkdir my-app
cd my-app
npm i hono hono-alibaba-cloud-fc3-adapter
npm i -D @serverless-devs/s esbuild
mkdir src
touch src/index.ts
sh
mkdir my-app
cd my-app
yarn add hono hono-alibaba-cloud-fc3-adapter
yarn add -D @serverless-devs/s esbuild
mkdir src
touch src/index.ts
sh
mkdir my-app
cd my-app
pnpm add hono hono-alibaba-cloud-fc3-adapter
pnpm add -D @serverless-devs/s esbuild
mkdir src
touch src/index.ts
sh
mkdir my-app
cd my-app
bun add hono hono-alibaba-cloud-fc3-adapter
bun add -D esbuild @serverless-devs/s
mkdir src
touch src/index.ts

2. 你好世界

编辑 src/index.ts

ts
import { Hono } from 'hono'
import { handle } from 'hono-alibaba-cloud-fc3-adapter'

const app = new Hono()

app.get('/', (c) => c.text('Hello Hono!'))

export const handler = handle(app)

3. 设置 serverless-devs

serverless-devs 是一个开源开放的无服务器开发者平台,致力于为开发者提供强大的工具链系统。通过该平台,开发者不仅可以一键体验多云无服务器产品并快速部署无服务器项目,还可以管理无服务器应用整个生命周期的项目,并且非常简单快速地将 Serverless Devs 与其他工具/平台结合,进一步提高研发、运维效率。

添加阿里云 AccessKeyID 和 AccessKeySecret

sh
npx s config add
# 请选择提供商:阿里云 (alibaba)
# 输入您的 AccessKeyID 和 AccessKeySecret

编辑 s.yaml

yaml
edition: 3.0.0
name: my-app
access: 'default'

vars:
  region: 'us-west-1'

resources:
  my-app:
    component: fc3
    props:
      region: ${vars.region}
      functionName: 'my-app'
      description: 'Hello World by Hono'
      runtime: 'nodejs20'
      code: ./dist
      handler: index.handler
      memorySize: 1024
      timeout: 300

编辑 package.json 中的 scripts 部分:

json
{
  "scripts": {
    "build": "esbuild --bundle --outfile=./dist/index.js --platform=node --target=node20 ./src/index.ts",
    "deploy": "s deploy -y"
  }
}

4. 部署

最后,运行命令进行部署:

sh
npm run build # 编译 TypeScript 代码为 JavaScript
npm run deploy # 部署函数到阿里云函数计算