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

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

最終更新日:Sep 10, 2026

C#/.NET プロジェクトをローカルでコンパイルし、ZIP ファイルにパッケージ化して、コンソールまたは Serverless Devs を使用して Function Compute (FC) にデプロイします。

依存ライブラリ

FC は、C# ランタイム用に Aliyun.Serverless.Core ライブラリを提供します。これを使用して、ハンドラーインターフェイス、コンテキストオブジェクト、および関連する型を定義します。

NuGet からライブラリを取得し、<YourProjectName>.csproj に追加します:

<ItemGroup>
  <PackageReference Include="Aliyun.Serverless.Core" Version="1.0.1" />
  <PackageReference Include="Aliyun.Serverless.Core.Http" Version="1.0.3" />
</ItemGroup>

サポート対象ランタイム

.NET バージョン

-f フラグ値

.NET Core 3.1

netcoreapp3.1

.NET Core 2.1

netcoreapp2.1

デプロイ方法の選択

方法

最適な用途

.NET Core CLI + コンソール

1 回限りのデプロイ、プラットフォームの学習

Serverless Devs

反復可能なデプロイ、CI/CD パイプライン

.NET Core CLI を使用したデプロイ

.NET Core CLI を使用して、クロスプラットフォームの .NET アプリケーションをビルドし、FC にデプロイします。インストール手順については、「.NET」をご参照ください。

ステップ 1: .NET プロジェクトの作成

  1. 新しいコンソールプロジェクトを作成します。

    パラメーター

    説明

    新しいコンソール

    コンソールアプリケーションテンプレートを使用します

    -o HelloFcApp

    プロジェクト用に HelloFcApp ディレクトリを作成します

    -f netcoreapp3.1

    .NET Core 3.1 を対象としており、.NET Core 2.1 には netcoreapp2.1 を使用します。

    dotnet new console -o HelloFcApp -f netcoreapp3.1

    このコマンドは、次の構造を作成します:

    HelloFcApp
    ├── HelloFcApp.csproj   # プロジェクト設定:ターゲットフレームワークと依存関係
    ├── Program.cs          # ハンドラーコード
    └── obj                 # 中間ビルドファイル
  2. HelloFcApp.csproj を更新して、Function Compute 依存関係ライブラリを含めます:

    <Project Sdk="Microsoft.NET.Sdk">
    
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>netcoreapp3.1</TargetFramework>
      </PropertyGroup>
    
      <ItemGroup>
        <PackageReference Include="Aliyun.Serverless.Core" Version="1.0.1" />
        <PackageReference Include="Aliyun.Serverless.Core.Http" Version="1.0.3" />
      </ItemGroup>
    
    </Project>
  3. Program.cs の内容をハンドラーコードに置き換えます。 次の例では、Stream タイプのイベントハンドラーを使用します。 他のハンドラータイプについては、「ハンドラー」をご参照ください。

    using System.IO;
    using System.Threading.Tasks;
    using Aliyun.Serverless.Core;
    using Microsoft.Extensions.Logging;
    
    namespace Example
    {
        public class Hello
        {
            public async Task<Stream> StreamHandler(Stream input, IFcContext context)
            {
                IFcLogger logger = context.Logger;
                logger.LogInformation("Handle request: {0}", context.RequestId);
                MemoryStream copy = new MemoryStream();
                await input.CopyToAsync(copy);
                copy.Seek(0, SeekOrigin.Begin);
                return copy;
            }
    
            static void Main(string[] args){}
        }
    }

ステップ 2: コンパイルとパッケージ化

  1. プロジェクトをコンパイルし、出力を target ディレクトリに書き込みます:

    cd HelloFcApp && dotnet publish -c Release -o ./target
  2. コンパイルされた出力を ZIP ファイルにパッケージ化します。

    重要

    zip -r HelloFcApp.zip * は、親ディレクトリからではなく、target ディレクトリ内から実行します。target フォルダのコンテンツではなくフォルダ自体を zip 圧縮すると、Function Compute は予期されるルートパスで HelloFcApp.dll を見つけることができず、関数の起動に失敗します。

    cd target && zip -r HelloFcApp.zip *

    ZIP ファイルには次のファイルが含まれます:

    HelloFcApp.zip
    ├── Aliyun.Serverless.Core.dll
    ├── HelloFcApp.deps.json
    ├── HelloFcApp.dll
    ├── HelloFcApp.pdb
    ├── HelloFcApp.runtimeconfig.json
    └── Microsoft.Extensions.Logging.Abstractions.dll

ステップ 3: デプロイと検証

  1. FC コンソールにログインします。左側メニューで、[Functions] をクリックします。

  2. 上部メニューで、リージョンを選択します。[Functions] ページで、[Create Function] をクリックします。

  3. [Create Function] ページで [Event Function] を選択し、次のパラメーターを設定して [Create] をクリックします。関数が作成されると、[Function Details] ページの [Code] タブが自動的に開きます。

    パラメーター

    値

    [Runtime]

    [.NET Core 3.1]

    [Code Upload Method]

    [ZIP のアップロード] ー ステップ 2 の HelloFcApp.zip ファイルを選択します

    [Handler]

    HelloFcApp::Example.Hello::StreamHandler — ハンドラーの形式については、「ハンドラー」をご参照ください。

  4. [Code] タブで、[Test Function] をクリックします。実行が成功すると、次の結果が返されます:

    {
        "key1": "value1",
        "key2": "value2",
        "key3": "value3"
    }

    実行ログを表示するには、[Log Output] タブをクリックします。

Serverless Devs を使用したデプロイ

Serverless Devs はビルドとデプロイのステップを自動化するため、反復可能なワークフローや CI/CD パイプラインに適しています。

前提条件

開始する前に、以下が完了していることを確認してください。

デプロイと検証

  1. プロジェクトを初期化します。

    s init

    プロンプトが表示されたら、クラウドプロバイダーとして Alibaba Cloud を選択し、.NET テンプレートを選択して、ランタイム、リージョン、および関数名を指定します。

  2. プロジェクトディレクトリに移動します。

    cd start-fc3-dotnetcore

    プロジェクトは次の構造になっています:

    start-fc3-dotnetcore
    ├── HelloFcApp
    │   ├── bin                    # コンパイル済みバイナリ
    │   ├── obj                    # 中間ビルドファイル
    │   ├── target                 # パブリッシュ出力
    │   ├── HelloFcApp.csproj      # プロジェクト設定
    │   └── Program.cs             # ハンドラーコード
    ├── readme
    └── s.yaml                     # Serverless Devs 設定
  3. プロジェクトをデプロイします。

    s deploy

    デプロイが成功すると、関数の設定が出力されます:

    s.yaml: /root/start-fc3-dotnetcore/s.yaml
    Downloading[/v3/packages/fc3/zipball/0.0.24]...
    Download fc3 successfully
      Steps for [deploy] of [hello-fc-app]
    ====================
    Microsoft (R) Build Engine version 16.7.3+2f374e28e for .NET
    Copyright (C) Microsoft Corporation. All rights reserved.
    
      Determining projects to restore...
      Restored /root/start-fc3-dotnetcore/HelloFcApp/HelloFcApp.csproj (in 154 ms).
      HelloFcApp -> /root/start-fc3-dotnetcore/HelloFcApp/bin/Release/netcoreapp3.1/HelloFcApp.dll
      HelloFcApp -> /root/start-fc3-dotnetcore/HelloFcApp/target/
    
     [hello_fc_app] completed (2.66s)
    
     Result for [deploy] of [hello-fc-app]
    ====================
    region:         cn-hangzhou
    description:    hello world by serverless devs
    functionName:   start-dotnetcore-xxxx
    handler:        HelloFcApp::Example.Hello::StreamHandler
    internetAccess: true
    memorySize:     128
    role:
    runtime:        dotnetcore3.1
    timeout:        10
    
    A complete log of this run can be found in: /root/.s/logs/0327105651
  4. 関数をテストします。

    s invoke

    呼び出しが成功すると、次の結果が返されます:

    Steps for [invoke] of [hello-fc-app]
    ====================
    ========= FC invoke Logs begin =========
    FunctionCompute dotnetcore3.1 runtime inited.
    FC Invoke Start RequestId: 1-6603951e-157f3f32-7fe6f248d7d0
    {"key1":"value1","key2":"value2","key3":"value3"}
    FC Invoke End RequestId: 1-6603951e-157f3f32-7fe6f248d7d0
    
    Duration: 117.33 ms, Billed Duration: 118 ms, Memory Size: 128 MB, Max Memory Used: 13.16 MB
    ========= FC invoke Logs end =========
    
    Invoke instanceId: c-6603951e-15f440b6-2df37e4bf046
    Code Checksum: 13273801077182424526
    Qualifier: LATEST
    RequestId: 1-6603951e-157f3f32-7fe6f248d7d0
    
    Invoke Result:
    {
        "key1": "value1",
        "key2": "value2",
        "key3": "value3"
    }
    ✔ [hello_fc_app] completed (0.72s)
    
    A complete log of this run can be found in: /root/.s/logs/0327114013