Visual Studio for Mac での Azure Functions の概要

重要

Visual Studio for Mac は、Microsoft の モダン ライフサイクル ポリシーに従って、2024 年 8 月 31 日に廃止される予定です。 引き続き Visual Studio for Mac を使用できますが、VS Code 用の新しい C# 開発キット拡張機能のプレビュー バージョンなど、Mac 上の開発者向けの他のいくつかのオプションがあります。

サポートタイムラインと代替方法の詳細をご確認ください

Azure Functions を利用すると、クラウドでイベント ドリブンのコード スニペットつまり関数を作成できます。インフラストラクチャを明示的にプロビジョニングまたは管理する必要はありません。 Azure Functions について詳しくは、Azure Functions のドキュメントをご覧ください。

必要条件

Azure 関数ツールは Visual Studio for Mac 7.5 以降に付属しています。

関数を作成して展開するには、Azure サブスクリプションも必要です。 Azure アカウントをお持ちでない場合は、今すぐ無料でサインアップすることができます。サインアップすると、人気のあるサービスへの 12 か月間無料のアクセス、200 ドル分の無料クレジット、25 以上のサービスへの常時無料のアクセスの特典を受けることができます ->https://azure.com/free

初めての Azure Functions プロジェクトの作成

  1. Visual Studio for Mac で [ファイル] > [新しいソリューション] を選びます。

  2. [新しいプロジェクト] ダイアログで、[クラウド] > [全般] から Azure Functions テンプレートを選び、[次へ] をクリックします。

    New Project dialog showing Azure Functions option

  3. 使用する最初の Azure Functions テンプレートを選択し、関数名を入力し、 [次へ] をクリックします。

    New Project dialog showing Azure Functions templates

    ヒント

    バンドルされている Azure Functions のランタイムとテンプレート (CLI) は可能な限り最新であるようにしていますが、必ず古くなります。 新しい Functions プロジェクトを作成する場合、Visual Studio for Mac は CLI の更新プログラムを確認して、次の画像のとおり通知を行います。 更新されたテンプレートをダウンロードするには、単純にボタンをクリックします。 New project dialog showing Azure Functions updates are available

    次のページでは、選択した関数の種類に応じて、次の図のようにアクセス権などの入力が求められます。

    New Project dialog showing additional option

    さまざまな種類の Azure Functions テンプレート、および各テンプレートの構成に必要なバインド用のプロパティについては、「使用可能な関数テンプレート」のセクションを参照してください。 この例では、アクセス権が匿名に設定された HTTP トリガーを使用しています。

  4. パラメーターを設定したら、プロジェクトの場所を選択し、 [作成] をクリックします。

Visual Studio for Mac によって、既定の関数が含まれる .NET Standard プロジェクトが作成されます。 また、さまざまな AzureWebJobs パッケージと、Newtonsoft.Json パッケージへの NuGet 参照も含まれます。

Visual Studio for Mac editor displaying a brand new Azure function from template

新しいプロジェクトには次のファイルが含まれています。

  • お使いの関数名.cs: このクラスには、選択した関数の定型コードが含まれます。 関数名を保持する FunctionName 属性と、何が関数をトリガーするかを指定するトリガー属性 (例: HTTP 要求) が含まれます。 関数のメソッドについて詳しくは、「Azure Functions C# 開発者向けリファレンス」をご覧ください。
  • host.json – このファイルでは、Functions ホストのグローバル構成オプションが記述されています。 ファイルの例と、このファイルで使用可能な設定については、「Azure Functions の host.json のリファレンス」をご覧ください。
  • local.settings.json – このファイルには、関数をローカルで実行するためのすべての設定が含まれます。 これらの設定は、Azure Functions Core Tools によって使用されます。 詳しくは、Azure Functions Core Tools に関する記事の「ローカル設定ファイル」をご覧ください。

Visual Studio for Mac で新しい Azure Functions プロジェクトが作成されたので、ローカル コンピューターから既定の HTTP によってトリガーされる関数をテストできます。

関数のローカルなテスト

Visual Studio for Mac での Azure Functions のサポートを使うと、開発用のローカル コンピューター上で関数をテストおよびデバッグすることができます。

  1. 関数をローカルにテストするには、Visual Studio for Mac で [実行] ボタンをクリックします。

    Start debugging button in Visual Studio for mac

  2. プロジェクトを実行すると、Azure 関数でのローカルなデバッグが開始し、次の図に示すように、新しいターミナル ウィンドウを開きます。

    terminal window showing function output

    出力から URL をコピーします。

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

    HTTP request in browser

プロジェクトへの別の関数の追加

関数テンプレートを使用すると、最も一般的なトリガーとテンプレートを使って、新しい関数をすばやく作成できます。 別の種類の関数を作成するには、次のようにします。

  1. 新しい関数を追加するには、プロジェクト名を右クリックして、[追加] > [関数の追加] を選びます。

    context action for adding new function

  2. [新しい Azure Function ] ダイアログで、必要な関数を選びます。

    new Azure function dialog

    使用可能な関数テンプレート」のセクションには、Azure 関数のテンプレート一覧があります。

関数アプリ プロジェクトに関数をさらに追加するには、前述の手順を使用します。 プロジェクトの各関数のトリガーは異なる場合があります。しかし、1 つの関数には、トリガーは正確に 1 つしか持たせることができません。 詳細については、「Azure Functions でのトリガーとバインドの概念」を参照してください。

Azure に発行する

  1. プロジェクト名を右クリックし、[発行] > [Azure に発行する] を選びます。Context menu with Publish > Publish to Azure... option highlighted

  2. 自分の Azure アカウントを既に Visual Studio for Mac に接続している場合、利用可能なアプリ サービスの一覧が表示されます。 ログインしていない場合、それを行うよう求められます。

  3. [Azure App Service に発行する] ダイアログでは、既存のアプリ サービスを選択するか、 [新規] をクリックして新しいものを作成することができます。

  4. [新しい App Service を作成する] ダイアログで設定を入力します。New App Service dialog, with fields for service name, subscription, resource group, and service plan settings.

    設定 説明
    App Service の名前 新しい関数アプリを識別する、グローバルに一意な名前。
    サブスクリプション 使用する Azure のサブスクリプション。
    リソース グループ 関数アプリを作成するリソース グループの名前。 新しいリソース グループを作成するには、 + を選択します。
    サービス プラン 既存のプランを選択するか、カスタム プランを作成します。 ご自分の近くのリージョン、またはご使用の関数がアクセスする他のサービスに近い場所を選択します。
  5. [次へ] をクリックし、ストレージ アカウントを作成します。 Functions Runtime には Azure Storage アカウントが必須です。 [カスタム] をクリックし、汎用のストレージ アカウントを作成するか、既存のものを使用します。

    New App Service dialog with prompt for storage account name.

  6. [作成] をクリックして、これらの設定で、Azure に関数アプリと関連リソースを作成し、ご自分の関数のプロジェクト コードをデプロイします。

  7. 発行時に "Azure で関数のバージョンを更新する" ことを求めるダイアログが表示される場合があります。 [はい] をクリックします。

    Prompt asking to

Function App の設定

local.settings.json に追加したすべての設定は、Azure の関数アプリに追加する必要があります。 これらの設定は、プロジェクトの発行時には自動的にアップロードされません。

アプリの設定にアクセスするには、https://ms.portal.azure.com/ の Azure portal にアクセスします。 [Functions アプリ][Functions アプリ] を選択し、関数名を強調表示します。

Azure Functions menu

[概要] タブで [構成済みの機能] の下から [アプリケーションの設定] を選択します。

Over tab of Azure function

ここから関数アプリのアプリケーション設定を行うことができます。ここでは、新しいアプリケーションの設定を追加したり、既存のものを変更することができます。

application settings area of Azure portal

設定する必要のある重要な設定の 1 つに、FUNCTIONS_EXTENSION_VERSION があります。 この値は、Visual Studio for Mac から発行する場合、beta に設定する必要があります。

使用可能な関数テンプレート

  • GitHub トリガー – GitHub リポジトリで発生するイベントに応答します。 詳しくは、GitHub についての Azure Functions の記事をご覧ください。

    • GitHub コメンター – この関数は、問題または pull request の GitHub webhook を受信してコメントを追加すると実行されます。
    • GitHub WebHook – この関数は、GitHub webhook を受信すると実行されます。
  • HTTP – HTTP 要求を使って、コードの実行をトリガーします。 次の HTTP トリガーに対する明示的なテンプレートがあります。

    • HTTP トリガー
    • HTTP GET の作成、読み取り、更新、および削除 (CRUD)
    • HTTP POST CRUD
    • パラメーター付き HTTP トリガー
  • タイマー: 定義されているスケジュールに基づいて、クリーンアップまたは他のバッチ タスクを実行します。 このテンプレートは名前とスケジュールの 2 つのフィールドを受け取ります。6 フィールドの CRON 式です。 詳しくは、タイマーについての Azure Functions の記事をご覧ください

  • キュー トリガー – これは、Azure Queue Storage キューに届いたメッセージに応答する関数です。 このテンプレートは、関数名だけでなく、パス (メッセージが読み取られるキューの名前) とストレージ アカウント接続 (ストレージ アカウント接続文字列を含むアプリ設定の名前) を受け取ります。 詳しくは、Queue Storage についての Azure Functions の記事をご覧ください。

  • BLOB トリガー – Azure Storage Blob がコンテナーに追加されるとそれを処理します。 このテンプレートは、関数名だけでなく、パスと接続のプロパティも受け取ります。 パス プロパティは、トリガーが監視するストレージ アカウント内のパスです。 接続アカウントは、ストレージ アカウント接続文字列が含まれるアプリ設定の名前です。 詳しくは、Blob Storage についての Azure Functions の記事をご覧ください。

  • 汎用 webhook – これは、webhook をサポートするサービスから要求を受信するたびに実行される単純な関数です。 詳細については、汎用 webhook についての Azure Functions の記事をご覧ください。

  • 永続関数オーケストレーション – 永続関数を使うと、サーバーレス環境でステートフル関数を記述できます。 この拡張機能は、状態、チェックポイント、および再起動を自動的に管理します。 詳細については、永続関数に関するガイドをご覧ください。

  • イメージ リサイザー – この関数は、コンテナーに BLOB が追加されるたびに異なるサイズのイメージを作成します。 このテンプレートは、トリガーに対するパスと接続文字列、小さいイメージ出力、および中くらいのイメージ出力を受け取ります。

  • SAS トークン – この関数は、特定の Azure Storage コンテナーおよび BLOB 名に対して SAS トークンを生成します。 このテンプレートは、関数名だけでなく、パスと接続のプロパティも受け取ります。 パス プロパティは、トリガーが監視するストレージ アカウント内のパスです。 接続アカウントは、ストレージ アカウント接続文字列が含まれるアプリ設定の名前です。 アクセス権も設定する必要があります。 承認レベルでは、関数に API キーが必要かどうか、および使用するキーを制御します。関数では関数キーが使用されます。管理者は、アカウント アクセス キーを使用します。 詳しくは、「C# Azure function for generating SAS tokens」(SAS トークンを生成するための C# Azure 関数) サンプルをご覧ください。