Azure Functions を使用すると、Visual Studio を使用してローカルの C# 関数プロジェクトを作成し、Azure のスケーラブルなサーバーレス環境で実行するために、このプロジェクトを簡単に発行することができます。 Visual Studio Code を使用して C# アプリをローカルで開発する場合は、この記事の Visual Studio Code ベースのバージョンを代わりに検討する必要があります。
既定では、この記事では分離ワーカー プロセスの .NET 8 で実行される C# 関数を作成する方法について説明します。 分離ワーカー プロセスで実行される関数アプリは、Functions でサポートされているすべてのバージョンの .NET でサポートされます。 詳細については、「サポート対象のバージョン」を参照してください。
この記事では、次の方法について説明します。
- Visual Studio を使用して、C# クラス ライブラリ プロジェクトを作成します。
- HTTP 要求に応答する関数を作成します。
- コードをローカル環境で実行して、関数の動作を確認します。
- コード プロジェクトを Azure Functions にデプロイします。
このクイックスタートを完了すると、ご利用の Azure アカウントでわずかな (数セント未満の) コストが発生します。
この動画では、Azure で C# 関数を作成する方法を示します。
ビデオの手順については、次のセクションでも説明します。
前提条件
Visual Studio 2022。 インストール時に必ず [Azure の開発] ワークロードを選択してください。
Azure サブスクリプション。 アカウントをまだお持ちでない場合は、始める前に無料で作成してください。
関数アプリ プロジェクトを作成する
Visual Studio の Azure Functions プロジェクト テンプレートを使用すると、Azure の関数アプリに発行できる C# クラス ライブラリ プロジェクトを作成できます。 関数アプリを使用すると、リソースの管理、デプロイ、スケーリング、および共有を容易にするための論理ユニットとして関数をグループ化できます。
Visual Studio メニューで、[ファイル]>[新規]>[プロジェクト] を選択します。
[新しいプロジェクトの作成] の検索ボックスに「functions」と入力し、Azure Functions テンプレートを選択してから、[次へ] を選択します。
[新しいプロジェクトの構成] で、プロジェクトのプロジェクト名を入力し、[次へ] を選択します。 関数アプリ名は、C# 名前空間として有効である必要があります。そのため、アンダースコア、ハイフン、その他の英数字以外の文字は使用しないでください。
残りの追加情報の設定については、以下を参照してください。
設定 値 説明 関数 worker .NET 8.0 分離 (長期サポート) 関数は、分離されたワーカー プロセスの .NET 8 で実行されます。 関数 HTTP トリガー この値は、HTTP 要求によってトリガーされる関数を作成します。 ランタイム ストレージ アカウント (AzureWebJobsStorage) にAzurite を使用します 有効化 Azure の関数アプリにはストレージ アカウントが必要であるため、プロジェクトを Azure に発行する際に割り当てられるか、作成されます。 HTTP トリガーによって、Azure Storage アカウントの接続文字列が使用されることはありません。その他のすべてのトリガーの種類には、有効な Azure Storage アカウントの接続文字列が必要です。 このオプションを選択すると、Azurite エミュレーターが使用されます。 承認レベル Anonymous 作成される関数を、すべてのクライアントがキーを使用せずにトリガーできます。 この承認設定により、新しい関数のテストが容易になります。 詳細については、「認可レベル」を参照してください。
[承認レベル] を [匿名] に設定していることを確認します。 関数の既定のレベルを選択した場合、Azure の関数エンドポイントにアクセスする要求で、関数キーを提示する必要があります。
[作成] を選択して、関数プロジェクトと HTTP トリガー関数を作成します。
Visual Studio によってプロジェクトとクラスが作成されます。クラスの中には、HTTP トリガー関数型のスケルトン コードが含まれています。 スケルトン コードは、要求本文またはクエリ文字列の値を含む HTTP 応答を送信します。
HttpTrigger属性は、関数が HTTP 要求によってトリガーされることを指定します。
フォルダーの名前を変更する
Function メソッド属性は、関数の名前を設定します。これは、既定では Function1 として生成されます。 このツールでは、プロジェクトを作成するときに既定の関数名をオーバーライドすることはできないため、ここで関数クラス、ファイル、およびメタデータに対してより適切な名前を指定します。
エクスプローラーで Function1.cs ファイルを右クリックし、
HttpExample.csという名前に変更します。コードで、Function1 クラスの名前を
HttpExampleに変更します。Runという名前のメソッドで、Functionメソッド属性の名前をHttpExampleに変更します。
関数の定義は次のコードのようになります。
[Function("HttpExample")]
public IActionResult Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")] HttpRequest req)
{
_logger. LogInformation("C# HTTP trigger function processed a request.");
return new OkObjectResult("Hello, functions");
}
関数の名前の変更が済んだので、この関数をローカル コンピューターでテストできるようになりました。
関数をローカルで実行する
完全な Azure Functions ランタイムを使用してローカルで関数をテストできるように、Visual Studio は Azure Functions Core Tools と統合されます。
関数を実行するには、Visual Studio で F5 キーを押します。 ツールで HTTP 要求を処理できるように、ファイアウォールの例外を有効にすることが必要になる場合があります。 承認レベルは、ローカルで関数を実行するときには適用されません。
Azure Functions のランタイムの出力から、関数の URL をコピーします。
HTTP 要求の URL をブラウザーのアドレス バーに貼り付けて、要求を実行します。 関数によって返されたローカルの GET 要求に対するブラウザーでの応答を次の図に示します。
デバッグを停止するには、Visual Studio で Shift+F5 キーを押します。
関数がローカル コンピューター上で正常に動作することを確認したら、プロジェクトを Azure に発行します。
Azure にプロジェクトを発行する
Visual Studio ではローカル プロジェクトを Azure に発行できます。 プロジェクトを発行するには、Azure サブスクリプションに関数アプリが存在する必要があります。 Azure に関数アプリがまだない場合は、プロジェクトを発行する前に Visual Studio で関数アプリを作成できます。 この記事では、Linux 上で実行される関数アプリを Flex Consumption プランで作成します。これは、イベントドリブンおよびセキュリティで保護されたサーバーレス関数の推奨プランです。
ソリューション エクスプローラーで、プロジェクトを右クリックし、[発行] を選択します。
[ 発行 ] ページで、次の選択を行います。
- [ターゲット] で [Azure] を選択し、[次へ] を選択します。
- [特定のターゲット] で、[Azure Function App] を選択し、[次へ] を選択します。
- Functions インスタンスで、[新規作成] を選択します。
次の表に示されている値を使用して、新しいインスタンスを作成します。
設定 値 説明 名前 グローバルに一意の名前 名前は、新しい関数アプリを一意に識別する必要があります。 推奨される名前をそのまま使用するか、新しい名前を入力します。 有効な文字は、 a-z、0-9、および-です。サブスクリプション名 サブスクリプションの名前 関数アプリは、Azure サブスクリプションに作成されます。 既定のサブスクリプションをそのまま使用するか、一覧から別のサブスクリプションを選択します。 リソース グループ リソース グループの名前 関数アプリはリソース グループに作成されます。 [新規作成] を選択して、新しいリソース グループを作成します。 一覧から既存のリソース グループを選択することもできます。 プランの種類 Flex Consumption Flex Consumption プランで実行されている関数アプリにプロジェクトを発行する場合、関数アプリの実行に対してのみ支払う場合があります。 その他のホスティング プランでは、コストが高くなる可能性があります。 重要:
Flex 従量課金プランを作成するときは、まず App Service プラン を選択してから 、Flex Consumption を再選択してダイアログの問題をクリアする必要があります。オペレーティング システム リナックス Flex 従量課金プランには現在、Linux が必要です。 場所 アプリ サービスの場所 Flex 従量課金プランでサポートされている Azure リージョン内の場所を選択します。 サポートされていないリージョンが選択されている場合、[ 作成 ] ボタンは淡色表示されます。 インスタンス メモリ サイズ 2048 アプリが実行される 仮想マシン インスタンスのメモリ サイズ は、Flex 従量課金プランに固有です。 Azure Storage 汎用ストレージ アカウント Functions ランタイムにはストレージ アカウントが必要です。 [新規] を選択して汎用ストレージ アカウントを構成します。 ストレージ アカウントの要件を満たす既存のアカウントを使用することもできます。 Application Insights Application Insights のインスタンス 関数アプリの Application Insights 統合を有効にする必要があります。 新規または既存の Log Analytics ワークスペースで、[新規作成] を選択して新しいインスタンスを作成します。 既存のインスタンスを使用することもできます。
[作成] を選択して、関数アプリとその関連リソースを Azure で作成します。 リソース作成の状態はウィンドウの左下に表示されます。
完了 を選択します。 [ 発行プロファイルの作成の進行状況 ] ウィンドウが表示されます。 プロファイルが作成されたら、[ 閉じる] を選択します。
[発行プロファイル] ページで、[ 発行 ] を選択して、プロジェクト ファイルを含むパッケージを Azure の新しい関数アプリにデプロイします。
デプロイが完了すると、Azure の関数アプリのルート URL が発行プロファイル ページに表示されます。
発行プロファイル ページで、[ ホスティング ] セクションに移動します。 省略記号 (...) を選択し、[ Azure portal で開く] を選択します。 新しい関数アプリの Azure リソースが Azure portal で開きます。
Azure 内で関数を確認する
Azure portal で、新しい関数アプリの [概要] ページが表示されます。
[関数] で、HttpExample という新しい関数を選び、関数ページで [関数の URL の取得] を選んでから、[クリップボードにコピー] アイコンを選びます。
ブラウザーのアドレス バーに、コピーした URL を貼り付けて要求を実行します。
HTTP トリガー関数を呼び出す URL は、次の形式になります。
https://<APP_NAME>.azurewebsites.net/api/HttpExample?name=Functionsこの URL に移動し、関数によって返されたリモート GET 要求に対する応答がブラウザーに表示されます。次の例のような内容です。
リソースをクリーンアップする
Azure の "リソース" とは、関数アプリ、関数、ストレージ アカウントなどのことを指します。 これらは "リソース グループ" に分類されており、グループを削除することでグループ内のすべてのものを削除できます。
このクイックスタートを完了するために Azure リソースを作成しました。 アカウントの状態とサービスの価格に応じて、これらのリソースの使用に対して課金される可能性があります。 このコレクションの他のクイックスタートは、このクイックスタートに基づいています。 クイック スタート、チュートリアル、またはこのクイック スタートで作成したサービスのいずれかでの作業を引き続き行う場合は、リソースをクリーンアップしないでください。
追加コストの発生を避けるために、次の手順に従って関数アプリとその関連リソースを削除してください。
Visual Studio の [発行] ダイアログの [ホスト処理] セクションで、[Azure portal で開く] を選択します。
関数アプリのページで、[概要] タブを選択してから、[リソース グループ] の下にあるリンクを選択します。
[リソース グループ] ページで、含まれているリソースの一覧を確認し、削除するものであることを確認します。
[リソース グループの削除] を選択し、指示に従います。
削除には数分かかることがあります。 実行されると、通知が数秒間表示されます。 ページの上部にあるベルのアイコンを選択して、通知を表示することもできます。
次のステップ
このクイックスタートでは、Visual Studio を使用して、シンプルな HTTP トリガー関数を含む C# 関数アプリを作成し、Azure に発行しました。
分離ワーカー プロセスで実行される C# 関数の操作の詳細については、「分離ワーカー プロセスにおける C# Azure Functions の実行のガイド」を参照してください。 分離ワーカー プロセスでサポートされている他の .NET バージョンを確認するには、.NET でサポートされているバージョンを確認してください。
次の記事に進み、Azure Storage キュー バインドを関数に追加する方法を学習してください。