すべてのプロダクト
Search
ドキュメントセンター

Function Compute:コードパッケージのデプロイ

最終更新日:Oct 24, 2025

このトピックでは、Node.js コードのサードパーティの依存関係をインストールし、コードをパッケージ化して Function Compute にデプロイする方法について説明します。このトピックでは、サードパーティの emoji 依存関係ライブラリを例として使用します。

準備

  1. テスト用のコードディレクトリを作成し、ディレクトリの名前を指定します。この例では、mycode を使用します。

    • Linux および macOS

      mkdir -p /tmp/mycode コマンドを実行してディレクトリを作成します。

    • Windows

      フォルダを作成し、mycode という名前を付けます。

  2. mycode ディレクトリに index.mjs または index.js ファイルを作成します。

    次のコードは例を示しています。

    ECMAScript モジュール

    説明

    この例は、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 を使用して依存関係をインストールし、プロジェクトをデプロイすることをお勧めします。詳細については、「WebIDE を使用して関数のサードパーティ依存関係をパッケージ化する」および「Serverless Devs を使用して依存関係をインストールし、プロジェクトをデプロイする」をご参照ください。

Serverless Devs を使用して依存関係をインストールし、コードをデプロイする

前提条件

  • Serverless Devs と依存関係がインストールされていること。詳細については、「クイックスタート」をご参照ください。

  • 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 にデプロイできます。

重要な注意

Node.js のカスタムランタイムを使用し、コンパイル済みの実行可能ファイルを起動コマンドとして指定する場合、WebIDE で直接ソースコードを修正しても効果はありません。これは、関数が以前にコンパイルされた実行可能ファイルを実行し続けるためです。コードの変更を適用するには、ソースコードをローカルで更新し、実行可能ファイルを再コンパイルしてパッケージ化し、更新されたパッケージを WebIDE にアップロードしてから、関数を再実行する必要があります。

詳細情報

コードパッケージが大きすぎる場合は、依存関係を分離し、レイヤーをビルドして、ビジネスコードのみをアップロードできます。詳細については、次のトピックをご参照ください。