クイック スタート: Visual Studio を使用して Azure で初めての C# 関数を作成する
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# 名前空間として有効である必要があります。そのため、アンダースコア、ハイフン、その他の英数字以外の文字は使用しないでください。
残りの追加情報の設定については、以下を参照してください。
設定 値 説明 Functions worker .NET 8.0 分離 (長期サポート) 関数は、分離されたワーカー プロセスの .NET 8 で実行されます。 Function HTTP トリガー この値は、HTTP 要求によってトリガーされる関数を作成します。 ランタイムストレージアカウント(AzureWebJobsStorage)にAzuriteを使用する 有効にする Azure の関数アプリにはストレージ アカウントが必要であるため、プロジェクトを Azure に発行する際に割り当てられるか、作成されます。 HTTP トリガーによって、Azure Storage アカウントの接続文字列が使用されることはありません。その他のすべてのトリガーの種類には、有効な Azure Storage アカウントの接続文字列が必要です。 このオプションを選択すると、Azurite エミュレーターが使用されます。 承認レベル 匿名 作成される関数を、すべてのクライアントがキーを使用せずにトリガーできます。 この承認設定により、新しい関数のテストが容易になります。 詳細については、「認可レベル」を参照してください。 [承認レベル] を [匿名] に設定していることを確認します。 関数の既定のレベルを選択した場合、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.AuthLevelValue, "get", "post")] HttpRequest req)
{
return new OkObjectResult("Welcome to Azure 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 の発行機能によって作成されます。 この記事では、関数アプリおよび関連する Azure リソースを作成します。
ソリューション エクスプローラーで、プロジェクトを右クリックし、 [発行] を選択します。 [ターゲット] で [Azure] を選択した後、[次へ] を選択します。
[特定のターゲット] で [Azure Function App (Windows)] を選択します。 Windows で実行される関数アプリが作成されます。 [次へ] を選択します。
[Functions インスタンス] で [新しい Azure 関数の作成] を選択します。
次の表に示されている値を使用して、新しいインスタンスを作成します。
設定 値 内容 名前 グローバルに一意の名前 新しい関数アプリを一意に識別する名前。 この名前をそのまま使用するか、新しい名前を入力します。 有効な文字は、 a-z
、0-9
、-
です。サブスクリプション 該当するサブスクリプション 使用する Azure サブスクリプション。 このサブスクリプションを承諾するか、ドロップダウン リストから新しいものを選択します。 リソース グループ リソース グループの名前 関数アプリを作成するリソース グループ。 [新規作成] を選択して、新しいリソース グループを作成します。 ドロップダウン リストの既存のリソース グループの使用を選択することもできます。 プランの種類 従量課金 従量課金プランで実行される関数アプリにプロジェクトを発行する場合は、関数アプリの実行に対してのみお支払いください。 他のホスティング プランでは、コストが高くなります。 場所 App Service の場所 自分または関数がアクセスするその他のサービスの近くの Azure リージョン内の場所を選択します。 Azure ストレージ 汎用ストレージ アカウント Functions の共通言語ランタイムでは、Azure ストレージ アカウントが必要です。 [新規] を選択して汎用ストレージ アカウントを構成します。 ストレージ アカウントの要件を満たす既存のアカウントを選択することもできます。 Application Insights Application Insights インスタンス 関数アプリの Azure Application Insights 統合を有効にする必要があります。 新規または既存の Log Analytics ワークスペースで、[新規作成] を選択して新しいインスタンスを作成します。 既存のインスタンスの使用を選択することもできます。 [作成] を選択して、関数アプリとその関連リソースを Azure で作成します。 リソース作成の状態はウィンドウの左下に表示されます。
[Functions インスタンス] で、[パッケージ ファイルから実行する] チェックボックスが選択されていることを確認します。 関数アプリは、Run-From-Package モードを有効にして Zip Deploy を使用することでデプロイされます。 Zip Deploy は関数プロジェクトの推奨されるデプロイ方法であり、高いパフォーマンスを実現できます。
[完了] を選択し、[発行] ペインで [発行] を選択して、プロジェクト ファイルを含むパッケージを 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 キュー バインドを関数に追加する方法を学習してください。