このトピックでは、プログラムのコードをコンパイルする方法について説明します。. NETランタイムを実行し、コードをとしてパッケージ化します。zipパッケージ。 コードをコンパイルしてパッケージ化した後、Function ComputeコンソールまたはServerless Devsを使用してコードパッケージをアップロードできます。
C# ランタイムの依存関係ライブラリ
Function Computeは、C# ランタイムの次の依存関係ライブラリを提供します。
Aliyun.Serverless.Core: イベントハンドラーインターフェイスやリクエストハンドラーで使用されるコンテキストオブジェクトなどの情報を定義します。 このライブラリが必要です。
Aliyun.Serverless.Core.Http: HTTPハンドラーのインターフェイスを定義します。
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 Core CLI
A. NET Core展開パッケージには、関数のコンパイル済みアセンブリとすべてのアセンブリの依存関係が含まれている必要があります。 使用できます。. NET Core CLIを使用してプログラムをコンパイルおよびデプロイします。 使用する。. NET Core CLIを作成できます。プラットフォーム間でFunction ComputeのNETアプリケーション。 詳細については、「」をご参照ください。ダウンロード. NET.
始める前に
ステップ1: 作成します。NETプロジェクト
次のコマンドを実行して、. NETプロジェクト
dotnet new console -o HelloFcApp -f netcoreapp3.1
前述のコマンドでは:
new console: コンソールアプリケーションテンプレート (推奨) 。
-o | -- output: プロジェクトの出力パス。 この例では、プロジェクトコンテンツを格納するためにHelloFcAppディレクトリが作成されています。
-f | -- framework: . NETバージョン 実行時のバージョンが NET Core 3.1、netcoreapp3.1が使用されます。
次のサンプルコードは、プロジェクト作成後のプロジェクトディレクトリを示しています。
HelloFcApp ├── HelloFcApp.csproj ├── Program.cs └── obj
プロジェクトディレクトリで、ビジネス要件に基づいてパラメーターを変更します。
HelloFcApp.csprojファイル
このファイルは、の構成ファイルです。. NETプロジェクト ファイルには、プロジェクトのターゲットフレームワークやアセンブリ依存関係ライブラリなどの情報が含まれています。 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>
Program.csファイル
このファイルは、リクエストハンドラのコードです。 詳細については、「Event handler」または「HTTP handler」をご参照ください。 このセクションでは、例としてStream型のイベント要求ハンドラーを使用します。
System.IOを使用した
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: コンパイルします。NETプロジェクト
次のコマンドを実行してプロジェクトディレクトリに移動し、プロジェクト内のプログラムをコンパイルして、結果をtargetディレクトリにエクスポートします。
cd HelloFcApp && dotnet publish -c Release -o ./target
次のコマンドを実行して、ターゲットディレクトリにプログラムをパッケージ化します。zipパッケージ:
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
重要HelloFcApp.dllおよびその他のファイルが、のルートディレクトリにパッケージ化されていることを確認します。zipファイル。
手順3: プロジェクトコードをデプロイして検証を実行する
Function Computeコンソールにログインします。 左側のナビゲーションウィンドウで、[サービスと機能] をクリックします。
上部のナビゲーションバーで、リージョンを選択します。 [サービス] ページで、目的のサービスをクリックします。
[関数] ページで、[関数の作成] をクリックします。
On the関数の作成ページを選択します。組み込みランタイムの使用関数の関連パラメーターを設定し、作成.
説明に従って、次のパラメーターを設定します。 他のパラメーターのデフォルト値を保持します。
ハンドラータイプ: [イベントハンドラー] を選択します。
ランタイム: を選択. NET Core 3.1.
コードのアップロード方法: [ZIPのアップロード] を選択し、C# ランタイム依存関係ライブラリによってパッケージ化されたzipファイル。
リクエストハンドラ: 値を
HelloFcApp::Example.Hello::StreamHandler
に設定します。 ハンドラーの形式については、「ハンドラー」をご参照ください。
関数の作成後、関数の詳細ページの [コード] タブに移動します。
機能の詳細ページのコードタブをクリックし、テスト機能 をクリックします。
関数の実行後、次の結果が返されます。
{ "key1": "value1", "key2": "value2", "key3": "value3" }
[ログ出力] タブをクリックして、詳細なログを表示することもできます。