執行環境套件管理器打包器測試執行器程式碼檢查格式化指南參考部落格意見回饋

在 AWS Lambda 上部署 Bun 應用

AWS Lambda 是一項無伺服器計算服務,允許您無需設定或管理伺服器即可執行程式碼。

本指南使用 Dockerfile 將 Bun HTTP 伺服器部署到 AWS Lambda。


  1. 建立新的 Dockerfile

    在專案根目錄中建立一個新的 Dockerfile。此檔案包含初始化容器、將本地專案檔案複製到容器中、安裝相依項以及啟動應用的指令。

    Dockerfile
    # Use the official AWS Lambda adapter image to handle the Lambda runtime
    FROM public.ecr.aws/awsguru/aws-lambda-adapter:1.0.1 AS aws-lambda-adapter
    
    # 使用官方 Bun 映象來執行應用
    FROM oven/bun:debian AS bun_latest
    
    # 將 Lambda 介面卡複製到容器中
    COPY --from=aws-lambda-adapter /lambda-adapter /opt/extensions/lambda-adapter
    
    # 設定埠為 8080,AWS Lambda 介面卡需要此埠
    ENV PORT=8080
    
    # 設定工作目錄為 `/var/task`,這是 Lambda 的預設工作目錄
    WORKDIR "/var/task"
    
    # 複製 package.json 和 bun.lock 到容器中
    COPY package.json bun.lock ./
    
    # 安裝相依
    RUN bun install --production --frozen-lockfile
    
    # 複製其餘應用檔案到容器中
    COPY . /var/task
    
    # 執行應用
    CMD ["bun", "index.ts"]
    

    在專案根目錄中建立一個新的 .dockerignore 檔案。此檔案列出要從容器映像中_排除_的檔案和目錄,例如 node_modules。排除這些檔案和目錄可以加快建置速度並減小映像體積:

    .dockerignore
    node_modules
    Dockerfile*
    .dockerignore
    .git
    .gitignore
    README.md
    LICENSE
    .vscode
    .env
    # 任何其他想排除的檔案或目錄
    
  2. 建置 Docker 映象

    確保您位於包含 Dockerfile 的目錄中,然後建置 Docker 映象。本範例將映象命名為 bun-lambda-demo,並將標籤設定為 latest。

    terminal
    # cd /path/to/your/app
    docker build --provenance=false --platform linux/amd64 -t bun-lambda-demo:latest .
    
  3. 建立 ECR 儲存庫

    推送映象之前,請建立一個用於存放映象的 ECR 儲存庫。

    以下命令:

    • 在 us-east-1 區域中建立名為 bun-lambda-demo 的 ECR 儲存庫
    • 將儲存庫 URI 匯出為環境變數。匯出是可選的,但可以讓後續步驟更加簡單。
    terminal
    export ECR_URI=$(aws ecr create-repository --repository-name bun-lambda-demo --region us-east-1 --query 'repository.repositoryUri' --output text)
    echo $ECR_URI
    
    Text
    [id].dkr.ecr.us-east-1.amazonaws.com/bun-lambda-demo
    
  4. 認證登入 ECR 儲存庫

    登入到 ECR 儲存庫:

    terminal
    aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin $ECR_URI
    
    Text
    Login Succeeded
    
  5. 標記 Docker 映象並將其推送到 ECR 儲存庫

    確保您位於包含 Dockerfile 的目錄中,然後使用 ECR 儲存庫 URI 為 Docker 映象新增標籤。

    terminal
    docker tag bun-lambda-demo:latest ${ECR_URI}:latest
    

    接著,將映象推送到 ECR 儲存庫。

    terminal
    docker push ${ECR_URI}:latest
    
  6. 建立 AWS Lambda 函式

    開啟 AWS 控制台 > Lambda > 建立函式 > 選擇 容器映像

    建立函式

    為函式命名,例如 my-bun-function。

  7. 選擇容器映像

    前往 容器映像 URI 部分,然後點選 瀏覽映像。選擇您推送到 ECR 儲存庫的映象。

    選擇容器儲存庫

    然後選擇 latest 映象並點選 選擇映像。

    選擇容器映像

  8. 設定函式

    要獲取函式的公共 URL,請前往 其他設定 > 網路 > 函式 URL。

    將其設定為 啟用,認證型別選擇 NONE。

    設定函式 URL

  9. 建立函式

    點選頁面底部的 建立函式。

    建立函式

  10. 獲取函式 URL

    函式建立完成後,您會被重定向到其頁面。函式 URL 位於 “函式 URL” 部分。

    函式 URL

  11. 測試函式

    您的應用現在已經上線。要測試該函式,可以前往 測試 選項卡,或直接呼叫函式 URL。

    terminal
    curl -X GET https://[your-function-id].lambda-url.us-east-1.on.aws/
    
    Text
    Hello from Bun on Lambda!