search
LoginSignup
1

More than 3 years have passed since last update.

posted at

updated at

Organization

FunctionComputeで.NET Coreが使える話 (2)

前回はこちら

今回は、実際に.NET Core2.1ランタイムを使って、Function ComputeでC#が使えるか試してみました。
公式ドキュメントの内容に沿って、Httpトリガーを作成し「hello world」が表示されるまでです。

事前に準備したもの

Step.1

HTTPトリガーの関数を作成するため、Visual Studioで空のコンソールアプリプロジェクトを作成します。
公式ドキュメント内ではHttpハンドラーの例を読んでいくとASP.NET Core WebアプリケーションのAPIプロジェクトを作成すると記載がありますが、今回はSingle関数を使用するためコンソールアプリ(.NET Core)で進めていきます。
FunctionCompute2.PNG

Step.2

Aliyun.Serverless.CoreAliyun.Serverless.Core.HttpをNuget経由で導入します。
操作手順の2に記載のある.csprojのへの手動での追加は不要となりますが、導入後確認してみてください。

FunctionCompute5.PNG
※画像は導入後のため↓アイコンが付いています

Step.3

FcRemoteEntrypoint.csをプロジェクトに追加。
公式ドキュメントのSingle関数の例をコピーして貼り付ける。
その際、namespaceまで変更しないように注意してください。
このサンプルコードでは、

  • LogにmethodrequestPathrequestBodyが出力
  • Headerにcustomheaderが追加されその値としてv1を出力
  • Bodyにhello worldが出力

されます。

Step.4

ビルド構成を「Release」にしてビルドが通ったら、プロジェクトを発行します。
プロジェクトを右クリックして「発行」を選択します。
今回は発行先をローカルのフォルダに設定して発行します。

発行が上手くいくと、プロジェクトのディレクトリにbin\Release\netcoreapp2.1\publishができ、その中にdllファイル等が生成されます。
この時に、プロジェクト名(もしくはソリューション名).dllが作成されていることを確認してください。

Step.5

ここでは、作成した関数のzipファイルを作成します。
私は地味にここで躓いていました・・・。
公式ドキュメントではコマンドで作成しているのですが、Windows上でzipを作成する場合は階層が深くなってしまったりするため注意が必要です。
publishディレクトリを表示している状態で、全ファイルを選択し、右クリックでzipを作成しました。
私は7-Zipを使っているので右クリック後に「"〇〇〇.zip"に圧縮」を選択してzipファイルを作成しました。
作成されたzipファイルの中を見ると、直下にdllファイル等が置かれている状態かを確認してください。
階層がずれたものを使用すると、502エラーでdllファイルがありませんとなります。

Step.6

ここからAlibaba Cloudのコンソールに戻ります。
Http関数を選択して「次へ」を押します。
以下の設定に注意してください。(お試し用なので承認などは適宜変更してください)

  • ランタイム:dotnetcore2.1
  • 関数コード:zipファイルのアップロードを選択し、Step.5で作成したzipファイルを指定
  • 関数ハンドラ:公式ドキュメントにも記載がありますが、'プロジェクト名(もしくはソリューション名).dllファイル名::namespace名.クラス名::関数名'を設定します。  例)FunctionComputeDemo.dllの場合、FunctionComputeDemo::FunctionComputeDemo.FcRemoteEntrypoint::HandleRequest
  • 承認:anonymous
  • メソッド:GETとPOST

名称などは適宜設定をして、関数を作成します。

Step.7

関数が作成出来たら、デバッグしてみましょう。
Alibaba Cloudのポータル画面でデバッグが出来ます。
画像はPOSTで確認したものです。
StatusBodyLogsの値を確認してみましょう。

FunctionCompute6.PNG
FunctionCompute7.PNG

customheaderの値はポータル画面では見えなかったのでPostmanを使って確認してみました。
FunctionCompute8.PNG

まとめ

zipファイルを作るところ以外はシンプルに出来た印象です。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
1