Tous les produits
Search
Centre de documentation

Function Compute:Compiler et déployer un package de code

Dernière mise à jour :Aug 12, 2026

Compilez votre projet C#/.NET localement, empaquetez-le dans un fichier ZIP, puis déployez-le sur Function Compute via la console ou Serverless Devs.

Bibliothèque de dépendances

Function Compute fournit la bibliothèque Aliyun.Serverless.Core pour le runtime C#. Elle permet de définir l'interface du handler, l'objet de contexte ainsi que les types associés.

Récupérez cette bibliothèque depuis NuGet et ajoutez-la au fichier <YourProjectName>.csproj :

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

Runtimes pris en charge

Version .NET

Valeur de l'indicateur -f

.NET Core 3.1

netcoreapp3.1

.NET Core 2.1

netcoreapp2.1

Choisir une méthode de déploiement

Méthode

Cas d'usage recommandé

CLI .NET Core + console

Déploiements ponctuels, prise en main de la plateforme

Serverless Devs

Déploiements répétables, pipelines CI/CD

Déployer avec la CLI .NET Core

La CLI .NET Core permet de créer des applications .NET multiplateformes et de les déployer sur Function Compute. Pour les instructions d'installation, consultez .NET.

Étape 1 : Créer un projet .NET

  1. Créez un projet console :

    Paramètre

    Description

    new console

    Utilise le modèle d'application console

    -o HelloFcApp

    Crée un dossier HelloFcApp pour le projet

    -f netcoreapp3.1

    Cible .NET Core 3.1. Utilisez netcoreapp2.1 pour .NET Core 2.1

    dotnet new console -o HelloFcApp -f netcoreapp3.1

    Cette commande génère la structure suivante :

    HelloFcApp
    ├── HelloFcApp.csproj   # Project configuration: target framework and dependencies
    ├── Program.cs          # Handler code
    └── obj                 # Intermediate build files
  2. Mettez à jour le fichier HelloFcApp.csproj pour inclure la bibliothèque de dépendances 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. Remplacez le contenu du fichier Program.cs par votre code de handler. L'exemple ci-dessous utilise un handler d'événement de type Stream. Pour les autres types de handlers, reportez-vous à Handlers.

    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){}
        }
    }

Étape 2 : Compiler et empaqueter

  1. Compilez le projet et écrivez la sortie dans le répertoire target :

    cd HelloFcApp && dotnet publish -c Release -o ./target
  2. Empaquetez le résultat de la compilation dans un fichier ZIP :

    Important

    Exécutez la commande zip -r HelloFcApp.zip * depuis l'intérieur du répertoire target, et non depuis son parent. Si vous compressez le dossier target lui-même au lieu de son contenu, Function Compute ne trouvera pas HelloFcApp.dll au chemin racine attendu, ce qui empêchera le démarrage de la fonction.

    cd target && zip -r HelloFcApp.zip *

    Le fichier ZIP contient les éléments suivants :

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

Étape 3 : Déployer et vérifier

  1. Connectez-vous à la console Function Compute. Dans le volet de navigation de gauche, cliquez sur Functions.

  2. Dans la barre de navigation supérieure, sélectionnez une région. Sur la page Functions, cliquez sur Create Function.

  3. Sur la page Create Function, sélectionnez Event Function, configurez les paramètres suivants, puis cliquez sur Create. Une fois la fonction créée, l'onglet Code de la page Function Details s'ouvre automatiquement.

    Paramètre

    Valeur

    Runtime

    .NET Core 3.1

    Code Upload Method

    Upload ZIP — sélectionnez le fichier HelloFcApp.zip obtenu à l'étape 2

    Handler

    HelloFcApp::Example.Hello::StreamHandler — pour le format du handler, consultez Handlers

  4. Dans l'onglet Code, cliquez sur Test Function. Une exécution réussie retourne le résultat suivant :

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

    Pour consulter les journaux d'exécution, cliquez sur l'onglet Log Output.

Déployer avec Serverless Devs

Serverless Devs automatise les étapes de compilation et de déploiement, ce qui le rend adapté aux workflows répétables et aux pipelines CI/CD.

Prérequis

Avant de commencer, assurez-vous d'avoir :

Déployer et vérifier

  1. Initialisez le projet :

    s init

    Lorsque vous y êtes invité, sélectionnez Alibaba Cloud comme fournisseur cloud, choisissez un modèle .NET, puis spécifiez le runtime, la région et le nom de la fonction.

  2. Accédez au répertoire du projet :

    cd start-fc3-dotnetcore

    Le projet présente la structure suivante :

    start-fc3-dotnetcore
    ├── HelloFcApp
    │   ├── bin                    # Compiled binaries
    │   ├── obj                    # Intermediate build files
    │   ├── target                 # Publish output
    │   ├── HelloWorldApp.csproj   # Project configuration
    │   └── Program.cs             # Handler code
    ├── readme
    └── s.yaml                     # Serverless Devs configuration
  3. Déployez le projet :

    s deploy

    Un déploiement réussi affiche la configuration de la fonction :

    s.yaml: /root/start-fc3-dotnetcore/s.yaml
    Downloading[/v3/packages/fc3/zipball/0.0.24]...
    Download fc3 successfully
      Steps for [deploy] of [hello-world-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/HelloWorldApp/HelloWorldApp.csproj (in 154 ms).
      HelloWorldApp -> /root/start-fc3-dotnetcore/HelloWorldApp/bin/Release/netcoreapp3.1/HelloWorldApp.dll
      HelloWorldApp -> /root/start-fc3-dotnetcore/HelloWorldApp/target/
    
     [hello_world] completed (2.66s)
    
     Result for [deploy] of [hello-world-app]
    ====================
    region:         cn-hangzhou
    description:    hello world by serverless devs
    functionName:   start-dotnetcore-p6jp
    handler:        HelloWorldApp::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. Testez la fonction :

    sudo s invoke

    Une invocation réussie retourne le résultat suivant :

    Steps for [invoke] of [hello-world-app]
    ====================
    ========= FC invoke Logs begin =========
    FunctionCompute dotnetcore3.1 runtime inited.
    FC Invoke Start RequestId: 1-6603951e-157f3f32-7fe6f248d7d0
    hello world!
    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:
    hello world!
    ✔ [hello_world] completed (0.72s)
    
    A complete log of this run can be found in: /root/.s/logs/0327114013