クイック スタート: Visual Studio を使用して Azure で初めての C# 関数を作成する

Azure Functions を使用すると、Azure のサーバーレス環境で C# コードを実行できます。

この記事では、次のことについて説明します。

  • Visual Studio を使用して、.NET 6.0 の C# クラス ライブラリ プロジェクトを作成します。
  • HTTP 要求に応答する関数を作成します。
  • コードをローカル環境で実行して、関数の動作を確認します。
  • コード プロジェクトを Azure Functions にデプロイします。

この記事では、次の 2 種類のコンパイル済み C# 関数の作成をサポートしています。

実行モデル 説明
インプロセス 関数コードは、Functions ホスト プロセスと同じプロセスで実行されます。 .NET Core 3.1 と .NET 6.0 の両方をサポートします。 詳細については、「Azure Functions を使用する C# クラス ライブラリ関数を開発する」を参照してください。
分離プロセス 関数コードは、別の .NET ワーカー プロセスで実行されます。 .NET 5.0 と .NET 6.0 の両方をサポートします。 詳細については、C# での分離プロセス関数の開発に関する記事を参照してください。

このクイックスタートを完了すると、ご利用の Azure アカウントでわずかな (数セント未満の) コストが発生します。

また、この記事の Visual Studio Code ベースのバージョンも存在します。

前提条件

関数アプリ プロジェクトを作成する

Visual Studio の Azure Functions プロジェクト テンプレートを使用すると、Azure の関数アプリに発行できる C# クラス ライブラリ プロジェクトを作成できます。 関数アプリを使用すると、リソースの管理、デプロイ、スケーリング、および共有を容易にするための論理ユニットとして関数をグループ化できます。

  1. Visual Studio メニューで、 [ファイル] > [新規] > [プロジェクト] を選択します。

  2. [新しいプロジェクトの作成] の検索ボックスに「functions」と入力し、Azure Functions テンプレートを選択してから、 [次へ] を選択します。

  3. [新しいプロジェクトの構成] で、プロジェクトの プロジェクト名 を入力し、 [作成] を選択します。 関数アプリ名は、C# 名前空間として有効である必要があります。そのため、アンダースコア、ハイフン、その他の英数字以外の文字は使用しないでください。

  4. [新しい Azure Functions アプリケーションの作成] 設定で、次の表の値を使用します。

    設定 説明
    .NET のバージョン .NET 6 この値により、Azure Functions ランタイムのバージョン 4.x でインプロセスを実行する関数プロジェクトが作成されます。 [.NET 6 (isolated)](.NET 6 (分離)) を選択して、別のワーカー プロセスで実行されるプロジェクトを作成することもできます。 Azure Functions 1.x では、.NET Framework がサポートされます。 詳細については、「Azure Functions ランタイム バージョンをターゲットにする方法」をご覧ください。
    関数テンプレート HTTP トリガー この値は、HTTP 要求によってトリガーされる関数を作成します。
    ストレージ アカウント (AzureWebJobsStorage) ストレージ エミュレーター Azure の関数アプリにはストレージ アカウントが必要であるため、プロジェクトを Azure に発行する際に割り当てられるか、作成されます。 HTTP トリガーによって、Azure Storage アカウントの接続文字列が使用されることはありません。その他のすべてのトリガーの種類には、有効な Azure Storage アカウントの接続文字列が必要です。 このオプションを選択すると、Azurite エミュレーターが使用されます。
    承認レベル Anonymous 作成される関数を、すべてのクライアントがキーを使用せずにトリガーできます。 この承認設定により、新しい関数のテストが容易になります。 キーと承認の詳細については、「承認キー」と HTTP と Webhook のバインドに関するページをご覧ください。

    Azure Functions プロジェクトの設定

    [承認レベル][匿名] に設定していることを確認します。 関数 の既定のレベルを選択した場合、関数エンドポイントにアクセスする要求で、関数キーを提示する必要があります。

  5. [作成] を選択して、関数プロジェクトと HTTP トリガー関数を作成します。

Visual Studio によってプロジェクトとクラスが作成されます。クラスの中には、HTTP トリガー関数型のスケルトン コードが含まれています。 スケルトン コードは、要求本文またはクエリ文字列の値を含む HTTP 応答を送信します。 HttpTrigger属性は、関数が HTTP 要求によってトリガーされることを指定します。

フォルダーの名前を変更する

FunctionName メソッド属性は、関数の名前を設定します。これは、既定では Function1 として生成されます。 このツールでは、プロジェクトを作成するときに既定の関数名をオーバーライドすることはできないため、ここで関数クラス、ファイル、およびメタデータに対してより適切な名前を指定します。

  1. エクスプローラー で Function1.cs ファイルを右クリックし、HttpExample.cs という名前に変更します。

  2. コードで、Function1 クラスの名前を HttpExample に変更します。

  3. Run という名前の HttpTrigger メソッドで、FunctionName メソッド属性の名前を HttpExample に変更します。

関数の定義は次のコードのようになります。

[FunctionName("HttpExample")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
    ILogger log)

関数の名前の変更が済んだので、この関数をローカル コンピューターでテストできるようになりました。

関数をローカルで実行する

完全な Azure Functions ランタイムを使用してローカルで関数をテストできるように、Visual Studio は Azure Functions Core Tools と統合されます。

  1. 関数を実行するには、Visual Studio で F5 キーを押します。 ツールで HTTP 要求を処理できるように、ファイアウォールの例外を有効にすることが必要になる場合があります。 承認レベルは、ローカルで関数を実行するときには適用されません。

  2. Azure Functions のランタイムの出力から、関数の URL をコピーします。

    Azure ローカル ランタイム

  3. HTTP 要求の URL をブラウザーのアドレス バーに貼り付けます。 この URL にクエリ文字列 ?name=<YOUR_NAME> を追加して、要求を実行します。 次の図は、関数によって返されるローカル GET 要求に対するブラウザーでの応答です。

    ブラウザーでの関数 localhost の応答

  4. デバッグを停止するには、Visual Studio で Shift+F5 キーを押します。

関数がローカル コンピューター上で正常に動作することを確認したら、プロジェクトを Azure に発行します。

Azure にプロジェクトを発行する

プロジェクトを発行するには、Azure サブスクリプションに関数アプリが存在する必要があります。 初めてプロジェクトを発行するときに、Visual Studio の発行機能によって、関数アプリが自動的に作成されます。

  1. ソリューション エクスプローラー でプロジェクトを右クリックし、 [発行] を選択します。 [ターゲット][Azure] を選択し、 [次へ] を選択します。

  2. [特定のターゲット] で、 [Azure Function App (Windows)](Azure 関数アプリ (Windows)) を選択します。これで、Windows で動作する関数アプリが作成されます。

  3. [Function Instance](関数インスタンス) で、 [Create a new Azure Function](新しい Azure 関数の作成) を選択します。

    新しい関数アプリ インスタンスの作成

  4. 次の表に示されている値を使用して、新しいインスタンスを作成します。

    設定 説明
    名前 グローバルに一意の名前 新しい関数アプリを一意に識別する名前。 この名前をそのまま使用するか、新しい名前を入力します。 有効な文字は、a-z0-9- です。
    サブスクリプション 該当するサブスクリプション 使用する Azure サブスクリプション。 このサブスクリプションを承諾するか、ドロップダウン リストから新しいものを選択します。
    リソース グループ リソース グループの名前 関数アプリを作成するリソース グループ。 ドロップダウン リストから既存のリソース グループを選択するか、または [新規] を選択して新しいリソース グループを作成します。
    プランの種類 従量課金 従量課金プランで実行される関数アプリにプロジェクトを発行する場合は、関数アプリの実行に対してのみお支払いください。 他のホスティング プランでは、コストが高くなります。
    場所 App Service の場所 最寄りの リージョンまたは関数がアクセスする他のサービスの近くのリージョン内の [場所] を選択します。
    Azure Storage 汎用ストレージ アカウント Functions Runtime には Azure Storage アカウントが必須です。 [新規] を選択して汎用ストレージ アカウントを構成します。 または、ストレージ アカウントの要件を満たす既存のアカウントを選択することもできます。

    [App Service の作成] ダイアログ

  5. [作成] を選択して、関数アプリとその関連リソースを Azure で作成します。 リソース作成のステータスがウィンドウの左下に表示されます。

  6. [Functions instance](関数インスタンス) に戻り、 [Run from package file](パッケージ ファイルから実行する) がオンになっていることを確認します。 関数アプリは、Zip Deploy を使用して、Run-From-Package モードが有効な状態でデプロイされます。 これは、パフォーマンスが向上するため、関数プロジェクトの推奨されるデプロイ方法です。

    プロファイル作成の完了

  7. [完了] を選択し、[発行] ページで [発行] を選択して、プロジェクト ファイルを含むパッケージを Azure の新しい関数アプリにデプロイします。

    デプロイが完了すると、 [発行] タブに Azure の関数アプリのルート URL が表示されます。

  8. [発行] タブで、 [Cloud Explorer で管理する] を選択します。 これにより、Cloud Explorer で新しい関数アプリ Azure リソースが開かれます。

    発行成功のメッセージ

    Cloud Explorer を使用すると、Visual Studio でサイトのコンテンツを表示し、関数アプリを開始および停止し、Azure の関数アプリ リソースを直接および Azure portal で参照できます。

Azure 内で関数を確認する

  1. Cloud Explorer では、新しい関数アプリが選択されているはずです。 そうでない場合は、自分のサブスクリプション > [App Services] の順に展開して、新しい関数アプリを選択します。

  2. 関数アプリを右クリックし、 [ブラウザーで開く] を選択します。 これにより、関数アプリのルートが既定の Web ブラウザーで開かれ、関数アプリが実行されていることを示すページが表示されます。

    実行されている関数アプリ

  3. ブラウザーのアドレス バーで、ベース URL に文字列 /api/HttpExample?name=Functions を追加し、要求を実行します。

    HTTP トリガー関数を呼び出す URL は、次の形式になります。

    http://<APP_NAME>.azurewebsites.net/api/HttpExample?name=Functions

  4. この URL に移動し、関数によって返されたリモート GET 要求に対する応答がブラウザーに表示されます。次の例のような内容です。

    ブラウザーでの関数の応答

リソースをクリーンアップする

このコレクションの他のクイックスタートは、このクイックスタートに基づいています。 クイック スタート、チュートリアル、またはこのクイック スタートで作成したサービスのいずれかでの作業を引き続き行う場合は、リソースをクリーンアップしないでください。

Azure の "リソース" とは、関数アプリ、関数、ストレージ アカウントなどのことを指します。 これらは "リソース グループ" に分類されており、グループを削除することでグループ内のすべてのものを削除できます。

これらのクイックスタートを完了するためにリソースを作成しました。 これらのリソースには、アカウントの状態サービスの価格に応じて課金される場合があります。

追加コストの発生を避けるために、次の手順に従って関数アプリとその関連リソースを削除してください。

  1. Cloud Explorer で、自分のサブスクリプション > [App Services] の順に展開し、関数アプリを右クリックして、 [ポータルで開く] を選択します。

  2. 関数アプリのページで、 [概要] タブを選択してから、 [リソース グループ] の下にあるリンクを選択します。

    関数アプリのページで削除するリソース グループを選択する

  3. [リソース グループ] ページで、含まれているリソースの一覧を確認し、削除するものであることを確認します。

  4. [リソース グループの削除] を選択し、指示に従います。

    削除には数分かかることがあります。 実行されると、通知が数秒間表示されます。 ページの上部にあるベルのアイコンを選択して、通知を表示することもできます。

次のステップ

このクイックスタートでは、Visual Studio を使用して、シンプルな HTTP トリガー関数を含む C# 関数アプリを作成し、Azure に発行しました。

次の記事に進み、Azure Storage キュー バインドを関数に追加する方法を学習してください。