全部產品
Search
文件中心

Function Compute:部署程式碼封裝

更新時間:Jul 06, 2024

本文以安裝第三方依賴emoji為例,介紹如何為您的Node.js代碼安裝依賴,打包並部署代碼至Function Compute

準備工作

  1. 建立一個用於測試的代碼目錄,如mycode

    • Linux或macOS系統

      您可以執行mkdir -p /tmp/mycode建立。

    • Windows系統

      在任意位置建立檔案夾,並將其命名為mycode即可。

  2. 在mycode目錄下,建立index.mjs或者index.js代碼檔案。

    程式碼範例如下。

    ES模組

    說明

    此樣本僅支援運行在Node.js 18及以上版本的運行時環境。

    // index.mjs
    'use strict';
    import * as emoji from 'node-emoji'
    
    export const handler = async (event, context) => {
      console.log('hello world');
      return emoji.get(':unicorn:');
    }
    

    CommonJS模組

    // index.js
    'use strict';
    var emoji = require('node-emoji')
    
    exports.handler = (event, context, callback) => {
      console.log('hello world');
      callback(null, emoji.get(':unicorn:'));
    }
    

使用npm安裝依賴並部署代碼

前提條件

操作步驟

  1. mycode目錄下執行npm install node-emoji安裝emoji依賴庫到目前的目錄。

  2. 打包mycode目錄下的所有檔案。

    • Linux或macOS系統

      進入mycode目錄,執行zip code.zip -r ./*

      說明

      請確保您具有該目錄的讀寫權限。

    • Windows系統

      進入mycode目錄,選中所有檔案,單擊滑鼠右鍵,選擇打包為ZIP包。

    說明

    請確保您建立的index.js檔案位於包的根目錄。

  3. Function Compute控制台找到目標函數,然後在函數詳情頁面的右上方,單擊上傳代碼上傳您上一步打包的ZIP包。

    上傳完成後,您可以在代碼頁簽,單擊測試函數驗證代碼正確性。

重要

由於Function Compute的運行環境是Linux系統,您在Windows系統或macOS系統安裝emoji依賴庫時如果帶有二進位檔案,會導致您的程式碼封裝上傳到Function Compute後運行失敗。因此,建議您使用WebIDE打包函數第三方依賴或者使用Serverless devs工具安裝依賴並部署專案

使用Serverless devs工具安裝依賴並部署專案

前提條件

操作步驟

  1. 執行cd /tmp/mycode進入mycode目錄。

  2. 新增s.yaml檔案。

    編寫檔案內容樣本如下。

    edition: 3.0.0
    name: fcDeployApp
    access: "default"
    
    vars: # 全域變數
      region: "cn-hangzhou"
    
    resources:
      hello_world:
        component: fc3 # 組件名稱
        props:
          region: ${vars.region}              # 關於變數的使用方法,可以參考:https://docs.serverless-devs.com/serverless-devs/yaml#%E5%8F%98%E9%87%8F%E8%B5%8B%E5%80%BC
          functionName: "emoji"
          description: 'this is emoji'
          runtime: "nodejs18"
          code: ./
          handler: index.handler
          memorySize: 128
          timeout: 30
  3. 新增package.json檔案。

    編寫檔案內容如下。

    {
      "dependencies": {
        "node-emoji": "^1.11.0"
      }
    }
  4. 執行sudo s build --use-docker安裝依賴。

    執行完成後,會在mycode目錄下產生一個.s目錄,依賴被安裝到.s/build/artifacts/{functionName}目錄下。

  5. 執行sudo s deploy部署專案。

    執行完成後,即可部署函數到Function Compute

更多資訊

如果您的程式碼封裝過大,可以將依賴分離出來,構建層掛載,上傳的代碼只保留業務代碼即可。具體操作,請參見以下文檔。