Alibaba Cloud Function Compute

Alibaba Cloud Function Compute 是一款全托管的、事件驱动的计算服务。使用 Function Compute,你可以专注于编写和上传代码,而无需管理服务器等基础设施。

本指南使用第三方适配器 rwv/hono-alibaba-cloud-fc3-adapter 来在 Alibaba Cloud Function Compute 上运行 Hono。

1. 设置

npmyarnpnpmbun

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

2. Hello World

编辑 src/index.ts

  1. import { Hono } from 'hono'
  2. import { handle } from 'hono-alibaba-cloud-fc3-adapter'
  3. const app = new Hono()
  4. app.get('/', (c) => c.text('Hello Hono!'))
  5. export const handler = handle(app)

3. 配置 serverless-devs

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

添加 Alibaba Cloud 的 AccessKeyID 和 AccessKeySecret:

  1. npx s config add
  2. # 请选择一个云厂商: Alibaba Cloud (alibaba)
  3. # 输入你的 AccessKeyID 和 AccessKeySecret

编辑 s.yaml

  1. edition: 3.0.0
  2. name: my-app
  3. access: 'default'
  4. vars:
  5. region: 'us-west-1'
  6. resources:
  7. my-app:
  8. component: fc3
  9. props:
  10. region: ${vars.region}
  11. functionName: 'my-app'
  12. description: 'Hello World by Hono'
  13. runtime: 'nodejs20'
  14. code: ./dist
  15. handler: index.handler
  16. memorySize: 1024
  17. timeout: 300

编辑 package.json 中的 scripts 部分:

  1. {
  2. "scripts": {
  3. "build": "esbuild --bundle --outfile=./dist/index.js --platform=node --target=node20 ./src/index.ts",
  4. "deploy": "s deploy -y"
  5. }
  6. }

4. 部署

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

  1. npm run build # 将 TypeScript 代码编译为 JavaScript
  2. npm run deploy # 将函数部署到 Alibaba Cloud Function Compute