本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Web 函數範例應用程式
每個範例都會使用 index.js做為項目檔案,並從 監聽主機和連接埠AWS_LAMBDA_HTTP_ENDPOINT。使用其生產相依性封裝應用程式,並從版本控制的 Amazon S3 物件部署應用程式。
下表列出每個範例以及您可以從中學習的內容。
| 樣本 | 使用它來學習 |
|---|---|
| 最少Express的應用程式 | 使用 啟動 HTTP 伺服器Express。 |
| Hono API 和靜態檔案 | 使用 提供 API 路由和靜態檔案Hono。 |
| 伺服器傳送事件 | 串流伺服器傳送的事件,並在用戶端中斷連線時停止運作。 |
| 多區域驗證路由 | 驗證多區域路由時傳回服務區域。 |
最少Express的應用程式
此架構型範例是 所建立零相依性啟動器的替代方案--hello-world。如需入門部署,請參閱 部署和測試您的 Web 函數。
安裝 Express:
npm init -y npm install express
建立 index.js:
const express = require('express'); const app = express(); const [host, port] = (process.env.AWS_LAMBDA_HTTP_ENDPOINT || 'localhost:3000').split(':'); app.get('/', (request, response) => { response.send('Hello from Lambda Web Functions!'); }); app.listen(port, host);
如需封裝指引,請參閱 封裝和部署範例。
Hono API 和靜態檔案
安裝相依項:
npm init -y npm pkg set type=module npm install hono @hono/node-server
建立 index.js:
import { serve } from '@hono/node-server'; import { serveStatic } from '@hono/node-server/serve-static'; import { Hono } from 'hono'; import { secureHeaders } from 'hono/secure-headers'; const app = new Hono(); app.use(secureHeaders()); app.use('/static/*', serveStatic({ root: './' })); app.get('/api/health', (context) => context.json({ status: 'ok' })); app.notFound((context) => context.json({ error: 'not found' }, 404)); const [host, port] = (process.env.AWS_LAMBDA_HTTP_ENDPOINT || 'localhost:3000').split(':'); serve({ fetch: app.fetch, port: Number(port), hostname: host });
在 static目錄下放置靜態檔案,並在部署套件中包含 目錄。
伺服器傳送事件
將下列路由新增至Express應用程式:
app.get('/events', (request, response) => { response.setHeader('Content-Type', 'text/event-stream'); response.setHeader('Cache-Control', 'no-cache'); response.flushHeaders(); const interval = setInterval(() => { response.write(`data: ${JSON.stringify({ time: Date.now() })}\n\n`); }, 1000); response.on('close', () => { clearInterval(interval); }); });
請求會保持作用中狀態,直到應用程式結束回應或用戶端中斷連線為止。設定最大串流持續時間的修訂逾時。不支援 WebSocket 升級。
多區域驗證路由
新增路由,以傳回執行請求的區域:
app.get('/region', (request, response) => { response.json({ region: process.env.AWS_REGION, requestId: request.get('lambda-web-request-id') }); });
從對您應用程式很重要的用戶端位置呼叫路由。對於MultiRegion端點,選取的區域來自以延遲為基礎的路由,並且可能會變更。請勿將執行環境用作工作階段存放區。
封裝和部署範例
npm ci --omit=dev zip -r function.zip index.js package.json package-lock.json node_modules aws s3 cp function.zip s3://amzn-s3-demo-bucket/samples/function.zip
包含所選範例使用的其他檔案,例如Hono範例中的 static目錄。若要建立參考上傳物件的修訂,請參閱 從 Amazon S3 部署 Web 函數程式碼和 管理 Web 函數修訂。如需更高階的deploy工作流程,請參閱 建立 Web 函數 (AWS CLI)。在修訂版為 Active 且端點提供它之後,將請求傳送到端點網域,以確認範例回應。如需此煙霧測試以外的測試涵蓋範圍,請參閱測試 Lambda Web 函數。