Visual Studio Code を使用して Azure Functions を開発する

Visual Studio Code 用 Azure Functions 拡張機能を使用すると、関数をローカルで開発して、Azure にデプロイすることができます。 Azure Functions を初めて使用する場合は、詳細について、「Azure Functions の概要」を参照してください。

Azure Functions 拡張機能には、次のような利点があります。

  • ローカル開発用コンピューターで関数を編集、作成、および実行できます。
  • Azure に直接 Azure Functions プロジェクトを発行できます。
  • Visual Studio Code の利点を活用しながら、さまざまな言語で関数を作成できます。

この記事の C# バージョンが表示されています。 記事の冒頭で、必ず好みの Functions のプログラミング言語を選択してください。

Functions を始めて使用する場合は、まず Visual Studio Code のクイックスタートに関する記事を完了する必要があります。

この記事の Java バージョンが表示されています。 記事の冒頭で、必ず好みの Functions のプログラミング言語を選択してください。

Functions を始めて使用する場合は、まず Visual Studio Code のクイックスタートに関する記事を完了する必要があります。

この記事の JavaScript バージョンが表示されています。 記事の冒頭で、必ず好みの Functions のプログラミング言語を選択してください。

Functions を始めて使用する場合は、まず Visual Studio Code のクイックスタートに関する記事を完了する必要があります。

この記事の PowerShell バージョンが表示されています。 記事の冒頭で、必ず好みの Functions のプログラミング言語を選択してください。

Functions を始めて使用する場合は、まず Visual Studio Code のクイックスタートに関する記事を完了する必要があります。

この記事の Python バージョンが表示されています。 記事の冒頭で、必ず好みの Functions のプログラミング言語を選択してください。

Functions を始めて使用する場合は、まず Visual Studio Code のクイックスタートに関する記事を完了する必要があります。

この記事の TypeScript バージョンが表示されています。 記事の冒頭で、必ず好みの Functions のプログラミング言語を選択してください。

Functions を始めて使用する場合は、まず Visual Studio Code のクイックスタートに関する記事を完了する必要があります。

重要

1 つの関数アプリにローカル開発とポータル開発を混在させないでください。 ローカル プロジェクトから関数アプリに発行すると、ポータルで開発した関数がデプロイ プロセスによって上書きされます。

前提条件

これらの前提条件は、関数をローカルで実行およびデバッグするためにも必要です。 プロジェクトの作成、または Azure Functions への発行のみの場合は必要ありません。

  • Azure Functions Core Tools、統合されたローカル デバッグ エクスペリエンスを有効にします。 Azure Functions 拡張機能がインストールされている場合、Core Tools をインストールまたは更新する最も簡単な方法は、コマンド パレットから Azure Functions: Install or Update Azure Functions Core Tools コマンドを実行することです。

Azure Functions プロジェクトを作成する

Functions の拡張機能により、最初の関数を作成すると共に必要な関数アプリ プロジェクトを作成できます。 これらの手順を用いて、HTTP によってトリガーされる関数を新しいプロジェクトに作成します。 HTTP トリガーは、実演する最も単純な関数トリガー テンプレートです。

  1. アクティビティ バーの [Azure] アイコンを選択します。 [ワークスペース (ローカル)] 領域で、+ の一覧を開き、[関数の作成] を選択します。

    [新しいプロジェクトの作成] ウィンドウのスクリーンショット。

  2. 確認を求められたら [新しいプロジェクトの作成] を選択します。 プロジェクト ワークスペースのディレクトリの場所を選択し、[選択] を選択します。

    プロジェクト ワークスペースには、新しいフォルダーを作成するか、空のフォルダーを選択することができますが、既にワークスペースの一部であるプロジェクト フォルダーは選択しないでください。

  3. 確認のメッセージが表示されたら、プロジェクトの言語を選択します。 必要に応じて、特定の言語バージョンを選択します。

  4. HTTP トリガー関数テンプレートを選択するか、 [Skip for now](今はしない) を選択して、関数なしでプロジェクトを作成できます。 後でいつでも、プロジェクトに関数を追加できます。

    HTTP トリガーの選択を示すスクリーンショット。

    ヒント

    [テンプレート フィルターの変更] オプションを選択して、値を [コア] または [すべて] に設定することで、その他のテンプレートを表示できます。

  5. 関数名には、HttpExample を入力して Enter キーを選択してから、[関数] の承認を選択します。

    この承認レベルでは、関数エンドポイントを呼び出すときに関数キーを指定する必要があります。

    関数の認可の作成を示すスクリーンショット。

  6. ドロップダウン リストから [ワークスペースに追加] を選びます。

    ワークプレースへの [追加] の選択を示すスクリーンショット。

  7. [このフォルダー内のファイルの作成者を信頼しますか?] ウィンドウで、[はい] を選択します。

    ファイルの作成者の信頼を確認するスクリーンショット。

Visual Studio Code では、選択した言語と HTTP によってトリガーされる関数のテンプレートで関数が作成されます。

生成されたプロジェクト ファイル

このプロジェクト テンプレートは、選択した言語でプロジェクトを作成し、必要な依存関係をインストールします。 どの言語の場合も、新しいプロジェクトには次のファイルが含まれます。

  • host.json:Functions のホストを構成できます。 これらの設定は、関数をローカルで実行している場合と、Azure で実行している場合に適用されます。 詳細については、host.json のリファレンスを参照してください。

  • local.settings.json: 関数をローカルで実行するときに使用される設定を保持します。 これらの設定は、関数をローカルで実行するときにのみ使用されます。 詳細については、「ローカル設定ファイル」を参照してください。

    重要

    local.settings.json ファイルにはシークレットを含めることができるため、それをプロジェクト ソース管理から除外してください。

言語に応じて、次のような他のファイルが作成されます。

HttpExample.cs クラス ライブラリ ファイル。その内容は、プロジェクトが分離ワーカー プロセスで実行されるか、Functions ホストのインプロセスで実行されているかによって異なります。

  • ルート フォルダー内の pom.xml ファイル。プロジェクトの依存関係や Java のバージョンなど、プロジェクトおよびデプロイのパラメーターを定義します。 pom.xml には、デプロイ中に作成される Azure リソースに関する情報も含まれます。

  • src パス内の Functions.java ファイル。関数を実装します。

生成されるファイルは、Functions に対して選択した Node.js プログラミング モデルによって異なります。

  • ルート フォルダー内の package.json ファイル。

  • src\functions フォルダー内の名前付き .js ファイル。これには、関数定義と関数コードの両方が含まれます。

HttpExample フォルダーには次が含まれます。

生成されるファイルは、Functions に対して選択した Python プログラミング モデルによって異なります。

  • Functions に必要なパッケージをリストするプロジェクトレベルの requirements.txt ファイル。

  • 関数定義とコードの両方を含む function_app.py ファイル。

この時点で、HTTP トリガー関数をローカルで実行できます

プロジェクトに関数を追加する

定義済みの Functions トリガー テンプレートのいずれかに基づいて、既存のプロジェクトに新しい関数を追加できます。 新しい関数トリガーを追加するには、F1 キーを選択してコマンド パレットを開き、次にコマンド Azure Functions: Create Function を検索して実行します。 プロンプトに従ってトリガーの種類を選択し、そのトリガーの必要な属性を定義します。 トリガーで、サービスに接続するためのアクセス キーまたは接続文字列が必要な場合は、関数トリガーを作成する前にその項目を準備しておいてください。

このアクションにより、新しい C# クラス ライブラリ (.cs) ファイルがプロジェクトに追加されます。

このアクションにより、新しい Java (.java) ファイルがプロジェクトに追加されます。

このアクションの結果は、Node.js モデルのバージョンによって異なります。

  • ルート フォルダー内の package.json ファイル。

  • src\functions フォルダー内の名前付き .js ファイル。これには、関数定義と関数コードの両方が含まれます。

このアクションにより、プロジェクトで新しいフォルダーが作成されます。 このフォルダーには、新しい function.json ファイルと新しい PowerShell コード ファイルが含まれます。

このアクションの結果は、Python モデルのバージョンによって異なります。

Visual Studio Code では、新しい関数コードは、function_app.py ファイル (既定のビヘイビアー)、または選択した別の Python ファイルに追加されます。

サービスへの接続

入力および出力バインドを追加すると、関数を他の Azure サービスに接続できます。 バインドを使用すると、接続コードを作成する必要なく、関数を他のサービスに接続できます。

たとえば、ストレージ キューにデータを書き込む出力バインディングを定義する方法は、プロセス モデルによって異なります。

  1. 必要に応じて、バインド拡張機能をサポートするパッケージへの参照を追加してください

  2. キュー出力バインドの QueueOutput のように、バインディング パラメーターを定義する属性を追加するように関数メソッドを更新します。 MultiResponse オブジェクトを使用して、複数のメッセージまたは複数の出力ストリームを返すことができます。

たとえば、ストレージ キューにデータを書き込む出力バインディングを追加するには、注釈の QueueOutput を使用して定義されたバインディング パラメーターを追加するように関数メソッドを更新します。 OutputBinding<T> オブジェクトは、関数の完了時に出力バインディングに書き込まれるメッセージを表します。

たとえば、ストレージ キューにデータを書き込む出力バインディングを定義する方法は、Node.js モデルのバージョンによって異なります。

Node.js v4 モデルを使用する場合は、output オブジェクトの storageQueue 関数を使用して、return 出力を書き込むストレージ キューを定義する return: オプションを関数定義に手動で追加する必要があります。 関数が完了すると、出力が書き込まれます。

Visual Studio Code では、便利な一連のプロンプトに従って、function.json ファイルにバインドを追加できます。

バインドを追加するには、コマンド パレット (F1) を開き、「Azure Functions: バインドの追加... 」と入力します。次に、新しいバインドの関数を選択して、プロンプトに従います。プロンプトは、関数に追加されているバインドの種類によって異なります。

以下は、新しいストレージ出力バインドを定義するためのプロンプト例です。

Prompt 説明
Select binding direction (バインド方向を選択する) out バインドは出力バインドです。
方向を使用してバインドを選択してください Azure Queue Storage バインドは Azure Storage キュー バインドです。
コードでこのバインドの特定に使用する名前 msg コードで参照されているバインド パラメーターを識別する名前。
メッセージの送信先のキュー outqueue バインドが書き込むキューの名前。 queueName が存在しない場合は、バインドによって最初に使用されるときに作成されます。
"local.settings.json" から設定を選択してください MyStorageConnection ストレージ アカウントの接続文字列を含むアプリケーション設定の名前。 AzureWebJobsStorage 設定には、関数アプリで作成したストレージ アカウントの接続文字列が含まれています。

また、関数フォルダー内の function.json ファイルを直接右クリック (macOS では Ctrl キーを押しながらクリック) して、 [バインドの追加] を選択し、同じプロンプトに従うこともできます。

この例では、次のバインドが function.json ファイルの bindings 配列に追加されます。

{
    "type": "queue",
    "direction": "out",
    "name": "msg",
    "queueName": "outqueue",
    "connection": "MyStorageConnection"
}

たとえば、ストレージ キューにデータを書き込む出力バインディングを定義する方法は、Python モデルのバージョンによって異なります。

関数の @queue_output デコレーターを使用して、ストレージ キューへの出力の名前付きバインディング パラメーターを定義します。ここでは、func.Out によって書き込まれる出力を定義します。

次の例は、キュー ストレージの出力バインドHTTP によってトリガーされる関数に追加した後の関数の定義を示しています。

HTTP によってトリガーされる関数は HTTP 応答も返すため、この関数は、HTTP とキューの両方の出力を表す MultiResponse オブジェクトを返します。

[Function("HttpExample")]
public static MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequest req,
    FunctionContext executionContext)
{

この出力バインディングを含む MultiResponse オブジェクトの定義の例をこちらに示します。

public class MultiResponse
{
    [QueueOutput("outqueue",Connection = "AzureWebJobsStorage")]
    public string[] Messages { get; set; }
    public IActionResult HttpResponse { get; set; }
}

この例を独自のプロジェクトに適用する際には、ASP.NET Core 統合を使用しているかどうかによって、HttpRequestHttpRequestData に、IActionResultHttpResponseData に変更する必要がある場合があります。

メッセージは、関数が完了したときにキューに送信されます。 出力バインドを定義する方法は、プロセス モデルによって異なります。 参照できるバインド コードの例へのリンクなど、詳細については、「関数へのバインドの追加」を参照してください。

@FunctionName("HttpExample")
public HttpResponseMessage run(
        @HttpTrigger(name = "req", methods = {HttpMethod.GET, HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS) 
        HttpRequestMessage<Optional<String>> request, 
        @QueueOutput(name = "msg", queueName = "outqueue", 
        connection = "AzureWebJobsStorage") OutputBinding<String> msg, 
        final ExecutionContext context) {

参照できるバインド コードの例へのリンクなど、詳細については、「関数へのバインドの追加」を参照してください。

Node.js モデル v4 のバインド例は、まだ提供されていません。

出力バインドを定義する方法は、Node.js モデルのバージョンによって異なります。 参照できるバインド コードの例へのリンクなど、詳細については、「関数へのバインドの追加」を参照してください。

$outputMsg = $name
Push-OutputBinding -name msg -Value $outputMsg

参照できるバインド コードの例へのリンクなど、詳細については、「関数へのバインドの追加」を参照してください。

@app.route(route="HttpExample")
@app.queue_output(arg_name="msg", queue_name="outqueue", connection="AzureWebJobsStorage")
def HttpExample(req: func.HttpRequest, msg: func.Out [func.QueueMessage]) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')

出力バインドを定義する方法は、Python モデルのバージョンによって異なります。 参照できるバインド コードの例へのリンクなど、詳細については、「関数へのバインドの追加」を参照してください。

Node.js モデル v4 のバインド例は、まだ提供されていません。

出力バインドを定義する方法は、Node.js モデルのバージョンによって異なります。 参照できるバインド コードの例へのリンクなど、詳細については、「関数へのバインドの追加」を参照してください。

Azure へのサインイン

Azure リソースを作成したり、アプリを発行したりする前に、Azure にサインインする必要があります。

  1. まだサインインしていない場合は、[アクティビティ] バーの Azure アイコンを選択します。 次に、[リソース] 領域で [Azure にサインイン...] を選択します。

    VS Code 内の [Azure にサインイン] ウィンドウのスクリーンショット。

    既にサインインしていて、既存のサブスクリプションを確認できる場合は、次のセクションに進みます。 まだ Azure アカウントがない場合は、[Azure アカウントの作成] を選択します。学生の方は [Microsoft Azure for Students アカウントの作成] を選択してください。

  2. ブラウザーでプロンプトが表示されたら、ご利用の Azure アカウントを選択し、その Azure アカウントの資格情報を使用してサインインします。 新しいアカウントを作成した場合は、アカウントの作成後にサインインできます。

  3. 正常にサインインしたら、新しいブラウザー ウィンドウを閉じてかまいません。 ご利用の Azure アカウントに属しているサブスクリプションがサイド バーに表示されます。

Azure リソースを作成する

Functions プロジェクトを Azure に発行するには、コードを実行する Azure サブスクリプションに関数アプリおよび関連リソースがあらかじめ存在する必要があります。 関数アプリは、関数の実行コンテキストを提供します。 Visual Studio Code から Azure 内の関数アプリに発行すると、プロジェクトがパッケージ化されて、Azure サブスクリプション内の選択された関数アプリにデプロイされます。

Azure に関数アプリを作成する場合、既定値を使用した関数アプリのクイック作成パス、または高度なパスのいずれかを選択できます。 このようにすることで、作成されるリモート リソースをより細かく制御できます。

関数アプリのクイック作成

このセクションでは、Azure サブスクリプションに関数アプリと関連リソースを作成します。

  1. アクティビティ バーの Azure アイコンを選択します。 次に、[リソース] 領域の + アイコンを選択し、[Azure に関数アプリを作成] オプションを選択します。

    Azure サブスクリプションでリソースを作成する

  2. プロンプトで、次の情報を入力します。

    Prompt [選択]
    サブスクリプションを選択してください 使用するサブスクリプションを選択します。 [リソース] に表示されるサブスクリプションが 1 つだけのときは、このプロンプトは表示されません。
    関数アプリのグローバルに一意の名前を入力してください URL パスに有効な名前を入力します。 入力した名前は、Azure Functions 内での一意性を確保するために検証されます。
    ランタイム スタックを選択してください ローカルで実行している言語バージョンを選択してください。
    Select a location for new resources (新しいリソースの場所を選択してください) パフォーマンスを向上させるために、お近くのリージョンを選択してください。

    この拡張機能は、Azure に作成されている個々のリソースの状態を [Azure: アクティビティ ログ] パネルに表示します。

    Azure リソース作成のログ

  3. 作成が完了すると、次の Azure リソースがサブスクリプションに作成されます。 リソースは、関数アプリの名前に基づいて命名されます。

    • リソース グループ。関連リソースの論理コンテナーです。
    • Standard Azure ストレージ アカウント。プロジェクトについての状態とその他の情報を保持します。
    • 関数アプリ。関数コードを実行するための環境となります。 関数アプリを使用すると、同じホスティング プランに含まれるリソースの管理、デプロイ、共有を容易にするための論理ユニットとして関数をグループ化できます。
    • App Service プラン。関数アプリの基になるホストを定義します。
    • 関数アプリに接続された Application Insights インスタンス。アプリ内の関数の使用を追跡します。

    関数アプリが作成され、展開パッケージが適用されると、通知が表示されます。

    ヒント

    既定では、関数アプリに必要な Azure リソースが、指定した関数アプリ名に基づいて作成されます。 また、既定では、関数アプリを含んだ同じ新しいリソース グループがその作成先となります。 それらのリソースの名前をカスタマイズしたり、既存のリソースを再利用したりする場合は、高度な作成オプションを使用してプロジェクトを発行する必要があります。

高度なオプションを使用して Azure の新しい関数アプリにプロジェクトを発行する

次の手順では、高度な作成オプションを使用して作成された新しい関数アプリにプロジェクトを発行します。

  1. コマンド パレットに「Azure Functions: Create function app in Azure...(Advanced)」と入力します。

  2. サインしていない場合は、Azure にサインインするよう求められます。 無料の Azure アカウントを作成することもできます。 ブラウザーからサインインしたら、Visual Studio Code に戻ります。

  3. プロンプトに従って、次の情報を入力します。

    Prompt [選択]
    関数アプリにグローバルで一意の名前を入力します。 新しい関数アプリを識別するグローバルに一意の名前を入力し、Enter キーを選択します。 関数アプリ名の有効な文字は、a-z0-9- です。
    ランタイム スタックを選択してください ローカルで実行している言語バージョンを選択してください。
    OS を選択します。 Linux または Windows を選択してください。 Python アプリは Linux で実行する必要があります。
    新しいリソース用のリソース グループの選択。 [新しいリソース グループの作成] を選択して、リソース グループ名 (myResourceGroup など) を入力します。 既存のリソース グループを選択することもできます。
    新しいリソースの場所の選択。 自分の近く、または関数がアクセスする他のサービスの近くのリージョン内の場所を選択します。
    Select a hosting plan. (ホスティング プランを選択してください。) サーバーレスの従量課金プラン ホスティングの場合は [Consumption] (従量課金プラン) を選択します。この場合、関数が実行されているときにのみ課金されます。
    ストレージ アカウントを選択します。 [新しいストレージ アカウントの作成] を選択し、プロンプトで、関数アプリで使用する新しいストレージ アカウントのグローバルに一意の名前を入力します。 ストレージ アカウント名の長さは 3 文字から 24 文字で、数字と小文字のみを使用できます。 既存のアカウントを選択することもできます。
    アプリの Application Insights のリソースを選択してください [Application Insights リソースの新規作成] を選択し、プロンプトで、関数の実行時データを格納するためのインスタンスの名前を入力します。

    関数アプリが作成され、展開パッケージが適用されると、通知が表示されます。 作成済みの Azure リソースなど、作成とデプロイの結果を表示するには、この通知の [View Output]\(出力の表示\) を選択します。

Azure で HTTP によってトリガーされる関数の URL を取得する

HTTP によってトリガーされる関数をクライアントから呼び出すには、関数アプリにデプロイされた後に使用できる関数の URL が必要です。 この URL には、必要なすべての関数キーが含まれています。 デプロイした関数のこれらの URL を取得するには、拡張機能を使用できます。 Azure でリモート関数を実行するだけの場合は、拡張機能の [Execute function now](今すぐ関数を実行) 機能を使用します。

  1. F1 キーを選択してコマンド パレットを開き、コマンド Azure Functions: Copy Function URL を検索して実行します。

  2. プロンプトに従って、Azure で関数アプリを選択し、次に、起動する特定の HTTP トリガーを選択します。

code クエリ パラメーターで渡された必要なキーとともに、関数の URL がクリップボードにコピーされます。 HTTP ツールを使って POST 要求を送信するか、ブラウザーを使って GET 要求をリモート関数に送信します。

拡張機能が Azure で関数の URL を取得する場合、拡張機能で Azure アカウントを使用して、関数を開始するために必要なキーが自動的に取得されます。 関数のアクセス キーの詳細を参照してください。 HTTP によってトリガーされない関数を開始するには、管理キーを使用する必要があります。

プロジェクト ファイルのデプロイ

接続されているソースの場所にあるソース ファイルを更新したときに Azure 内の関数アプリが更新されるよう、継続的デプロイを設定することをお勧めします。 Visual Studio Code からプロジェクト ファイルをデプロイすることもできます。 Visual Studio Code から発行するときには、ZIP デプロイ テクノロジを利用できます。

重要

既存の関数アプリにデプロイすると、Azure にあるそのアプリの内容が常に上書きされます。

  1. Azure アクティビティの [リソース] 領域で、先ほど作成した関数アプリ リソースを見つけて、リソースを右クリックし、[関数アプリにデプロイ] を選択します。

  2. 前のデプロイの上書きを求められたら、[デプロイ] を選択して、関数コードを新しい関数アプリ リソースにデプロイします。

  3. デプロイの完了後、[View Output] (出力の表示) を選択すると、作成済みの Azure リソースなど、作成とデプロイの結果が表示されます。 通知を見逃した場合は、右下隅にあるベル アイコンを選択して、再度確認します。

    [出力の表示] ウィンドウのスクリーンショット。

関数を実行する

Azure Functions 拡張機能を使用すると、個々の関数を実行できます。 ローカルの開発用コンピューター上のプロジェクト内、または Azure サブスクリプション内の関数を実行できます。

HTTP トリガー関数の場合、拡張機能により、HTTP エンドポイントが呼び出されます。 その他の種類のトリガーの場合は、拡張機能で管理者 API が呼び出されて関数が開始されます。 関数に送信される要求のメッセージ本文は、トリガーの種類によって異なります。 トリガーにテスト データが必要な場合、データを特定の JSON 形式で入力するように求められます。

Azure で関数を実行する

Visual Studio Code から Azure 内で関数を実行する場合は、次の手順に従ってください。

  1. コマンド パレットで、「Azure Functions: Execute function now」と入力し、Azure サブスクリプションを選択します。

  2. 一覧から、Azure 内の関数アプリを選択します。 ご使用の関数アプリが表示されない場合、適正なサブスクリプションにサインインしているかどうか確認してください。

  3. 一覧から、実行する関数を選択します。 [Enter request body]\(要求本文を入力してください\) で、要求のメッセージ本文を入力し、Enter キーを押してこの要求メッセージを関数に送信します。

    [Enter request body]\(要求本文を入力してください\) 内の既定のテキストは、本文の形式を示します。 関数アプリに関数が含まれていない場合、このエラーと共に通知エラーが表示されます。

    Azure で関数を実行し、応答が返されると、Visual Studio Code に通知が表示されます。

[Azure: Functions] 領域から関数を実行することもできます。このためには、Azure サブスクリプション内の関数アプリから実行する関数のショートカット メニューを開き、[Execute function now...] (今すぐ関数を実行...) を選択します。

Visual Studio Code から Azure で関数を実行する場合、拡張機能により、Azure アカウントを使用して、関数を開始するために必要なキーが自動的に取得されます。 関数のアクセス キーの詳細を参照してください。 HTTP によってトリガーされない関数を開始するには、管理キーを使用する必要があります。

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

ローカル ランタイムは、Azure で関数アプリをホストしているのと同じランタイムです。 ローカル設定は、local.settings.json ファイルから読み取られます。 Functions プロジェクトをローカルで実行するには、追加要件を満たす必要があります。

ローカルで実行するようにプロジェクトを構成する

Functions ランタイムは、HTTP と Webhook を除くすべてのトリガーの種類に対して内部で Azure Storage アカウントを使用します。 したがって、Values.AzureWebJobsStorage キーを、有効な Azure Storage アカウントの接続文字列に設定する必要があります。

このセクションでは、Visual Studio Code 用の Azure Storage 拡張機能Azure Storage Explorer と共に使用して、ストレージ接続文字列の接続と取得を行います。

ストレージ アカウントの接続文字列を設定するには、次のようにします。

  1. Visual Studio で Cloud Explorer を開き、[ストレージ アカウント]>[Your Storage Account]\(自分のストレージ アカウント\) を展開し、[プロパティ] を選択し、[プライマリ接続文字列] 値をコピーします。

  2. プロジェクトで、local.settings.json ファイルを開き、コピーした接続文字列に AzureWebJobsStorage キーの値を設定します。

  3. 前の手順を繰り返し、関数に必要なその他のすべての接続について、Values 配列に一意のキーを追加します。

詳細については、「ローカル設定ファイル」を参照してください。

関数をローカルでデバッグする

関数をデバッグするには、F5 キーを選択します。 Core Tools が利用可能でない場合は、これをインストールするように求められます。 Core Tools がインストールされて実行されると、ターミナルに出力が表示されます。 この手順は、func start Core Tools コマンドをターミナルから実行するのと同じですが、追加のビルド タスクと、接続されたデバッガーが含まれます。

プロジェクトが実行されている場合、プロジェクトが Azure にデプロイされている場合と同様に、拡張機能の [Execute function now](今すぐ関数を実行) 機能を使用して関数をトリガーできます。 プロジェクトがデバッグ モードで実行されている場合は、予期したとおりに Visual Studio Code でブレークポイントがヒットします。

  1. コマンド パレットで 「Azure Functions: Execute function now」と入力し、[ローカル プロジェクト] を選択します。

  2. プロジェクトで実行する関数を選択して、 [Enter request body](要求本文を入力してください) に要求のメッセージ本文を入力します。 Enter キーを押して、この要求メッセージを関数に送信します。 [Enter request body](要求本文を入力してください) 内の既定のテキストは、本文の形式を示します。 関数アプリに関数が含まれていない場合、このエラーと共に通知エラーが表示されます。

  3. 関数をローカルで実行する場合、応答を受け取ると、Visual Studio Code で通知が発生します。 関数の実行に関する情報は、 [ターミナル] パネルに表示されます。

ローカルで実行する場合、キーは必要ありません。これは、関数キーと管理者レベルのキーの両方に適用されます。

ローカルでアプリの設定を操作する

Azure の関数アプリで実行する場合、関数に必要な設定はアプリ設定に安全に保存されます。 ローカル開発中は、これらの設定は代わりに local.settings.json ファイルの Values コレクションに追加されます。 local.settings.json ファイルには、ローカルの開発ツールによって使用される設定も格納されます。

プロジェクトの local.settings.json ファイルの Values コレクションにある項目は、Azure の関数アプリのアプリケーション設定にある項目をミラー化するためのものです。

既定では、プロジェクトが Azure に発行されても、これらの設定は自動的に移行されません。 発行が完了すると、local.settings.json から Azure の関数アプリに設定を発行するオプションが提供されます。 詳細については、「アプリケーション設定を発行する」を参照してください。

ConnectionStrings 内の値は発行されません。

関数アプリケーションの設定値は、コード内で環境変数として読み取ることもできます。 詳細については、「環境変数」を参照してください。

  • 関数アプリの設定値は、コードの中で環境変数として読み込むこともできます。 詳細については、「環境変数」を参照してください。
  • 関数アプリの設定値は、コードの中で環境変数として読み込むこともできます。 詳細については、「環境変数」を参照してください。
  • 関数アプリの設定値は、コードの中で環境変数として読み込むこともできます。 詳細については、「環境変数」を参照してください。
  • 関数アプリの設定値は、コードの中で環境変数として読み込むこともできます。 詳細については、「環境変数」を参照してください。

Azure のアプリケーション設定

プロジェクトでの local.settings.json ファイルの設定は、Azure の関数アプリのアプリケーション設定と同じである必要があります。 local.settings.json に追加したすべての設定は、Azure の関数アプリにも追加する必要があります。 プロジェクトを発行するときに、これらの設定は自動的にアップロードされません。 同様に、ポータル内の関数アプリで作成する設定はすべて、ローカル プロジェクトにダウンロードする必要があります。

アプリケーション設定を発行する

Azure の関数アプリに必要な設定を発行する最も簡単な方法は、プロジェクトが発行された後に表示される [Upload settings](設定のアップロード) リンクを使用することです。

アプリケーション設定をアップロードするスクリーンショット。

設定を発行するには、Azure Functions: Upload Local Setting コマンド (コマンド パレット) を使用することもできます。 Azure のアプリケーション設定に個々の設定を追加するには、Azure Functions: Add New Setting コマンドを使用します。

ヒント

発行する前に local.settings.json ファイルを必ず保存してください。

ローカル ファイルが暗号化されている場合は、復号化され、発行されて、再び暗号化されます。 2 つの場所で値が競合する設定がある場合は、続行する方法を選択するように求められます。

既存のアプリ設定を Azure: Functions 領域で表示するには、サブスクリプション、関数アプリ、 [アプリケーション設定] を展開します。

Visual Studio Code で関数アプリの設定を表示するスクリーンショット。

Azure から設定をダウンロードする

Azure でアプリケーション設定を作成した場合は、 コマンド「Azure Functions:Download Remote Settings」を使用してそれらを local.settings.json ファイルにダウンロードできます。

アップロードと同様に、ローカル ファイルが暗号化されている場合は、復号化され、更新されて、再び暗号化されます。 2 つの場所で値が競合する設定がある場合は、続行する方法を選択するように求められます。

バインディング拡張機能をインストールする

HTTP トリガーとタイマー トリガーを除き、バインドは拡張機能パッケージで実装されます。

拡張機能パッケージは、それらを必要とするトリガーおよびバインディング用のものを明示的にインストールする必要があります。 インストールする特定のパッケージは、プロジェクトのプロセス モデルによって異なります。

ターミナル ウィンドウで dotnet add package コマンドを実行して、プロジェクトに必要な拡張機能パッケージをインストールします。 次のテンプレートは、分離プロセス クラス ライブラリのバインディングを追加する方法を示しています。

dotnet add package Microsoft.Azure.Functions.Worker.Extensions.<BINDING_TYPE_NAME> --version <TARGET_VERSION>

<BINDING_TYPE_NAME> は、必要なバインドが含まれているパッケージの名前に置き換えます。 対象のバインディングのリファレンス記事は、サポートされるバインディングの一覧で見つけることができます。

例の中の <TARGET_VERSION>3.0.0-beta5 などの特定のバージョンのパッケージに置き換えます。 有効なバージョンは、NuGet.org の個々のパッケージ ページに記載されています。現在の Functions ランタイムに対応する主要なバージョンは、バインデイングのリファレンス記事に示されています。

C# スクリプトでは拡張機能バンドルが使用されます。

バインド拡張機能をインストールする最も簡単な方法は、拡張機能のバンドルを有効にすることです。 バンドルを有効にすると、事前定義された一連の拡張機能パッケージが自動的にインストールされます。

拡張機能のバンドルを有効にするには、host.json ファイルを開き、その内容を次のコードに合わせて更新します。

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[3.*, 4.0.0)"
    }
}

何らかの理由で拡張機能バンドルを使用してプロジェクトのバインディング拡張機能をインストールできない場合は、「拡張機能を明示的にインストールする」を参照してください。

関数の監視

関数をローカルで実行しているときは、ログ データがターミナル コンソールにストリーミングされます。 また、Functions プロジェクトが Azure の関数アプリで実行されているときにもログ データを取得できます。 Azure 内のストリーミング ログに接続すると、ほぼリアルタイムのログ データを確認できます。 関数アプリの動作をより完全に把握するために Application Insights を有効にすることをお勧めします。

ストリーミング ログ

アプリケーションを開発しているとき、ログ情報をほぼリアルタイムで参照すると役立つことがよくあります。 関数によって生成されているログ ファイルのストリームを表示できます。 Azure Functions: Start streaming logs コマンドを使用して、コマンド パレットからログをオンにします。 この出力は、HTTP によってトリガーされた関数への要求のストリーミング ログの例です。

HTTP トリガーのストリーミング ログ出力を示すスクリーンショット。

詳細については、「ストリーミング ログ」を参照してください。

Application Insights

関数アプリを Application Insights と統合することによって、関数の実行を監視することをお勧めします。 Azure portal で関数アプリを作成する場合、この統合は、既定で行われます。 Visual Studio の発行中に関数アプリを作成する場合は、Application Insights を自分で統合する必要があります。 方法については、「Application Insights との統合を有効にする」を参照してください。

Application Insights を使用した監視の詳細については、「Azure Functions を監視する」を参照してください。

C# スクリプト プロジェクト

既定では、すべての C# プロジェクトは C# コンパイル済みクラス ライブラリ プロジェクトとして作成されます。 代わりに C# スクリプト プロジェクトを操作したい場合は、Azure Functions 拡張機能設定で、既定言語として C# スクリプトを選択する必要があります。

  1. [ファイル]>[Preferences]\(ユーザー設定\)>[設定] を選択します。

  2. [ユーザー設定]>[拡張機能]>[Azure Functions] にアクセスします。

  3. C#ScriptAzure Function: Project Language から選択します。

これらの手順を完了した後、基盤となる Core Tools への呼び出しには、C# スクリプト (.csx) プロジェクト ファイルを生成して発行する --csx オプションが含まれます。 この既定の言語を指定すると、作成するすべてのプロジェクトは既定で C# スクリプト プロジェクトになります。 既定が設定されているときは、プロジェクト言語を選択するよう求められません。 他の言語でプロジェクトを作成するには、この設定を変更するか、ユーザーの settings.json ファイルからこの設定を削除する必要があります。 この設定を削除すると、プロジェクトを作成するときに、言語を選択するよう再び求められます。

コマンド パレットのリファレンス

Azure Functions 拡張機能には、Azure の関数アプリと対話するための領域に便利なグラフィカル インターフェイスが用意されています。 同じ機能が、コマンド パレット (F1) のコマンドとしても使用できます。 これらの Azure Functions コマンドを使用できます。

Azure Functions のコマンド 説明
Add New Settings Azure に新しいアプリケーション設定を作成します。 詳細については、「アプリケーション設定を発行する」を参照してください。 また、この設定をローカル設定にダウンロードする必要がある場合もあります。
Configure Deployment Source Azure の関数アプリをローカル Git リポジトリに接続します。 詳細については、「Azure Functions の継続的なデプロイ」をご覧ください。
Connect to GitHub Repository 関数アプリを GitHub リポジトリに接続します。
Copy Function URL Azure で実行されている、HTTP によってトリガーされる関数のリモート URL を取得します。 詳細については、デプロイされた関数の URL の取得に関するセクションを参照してください。
Create function app in Azure Azure のサブスクリプションに新しいアプリを作成します。 詳細については、Azure で新しい関数アプリを発行する方法に関するセクションを参照してください。
Decrypt Settings ローカル設定を復号化します。これは、Azure Functions: Encrypt Settings によって暗号化されています。
Delete Function App Azure のサブスクリプションから関数アプリを削除します。 App Service プランに他のアプリがない場合は、それも削除することを選択できます。 ストレージ アカウントやリソース グループなどの他のリソースは削除されません。 すべてのリソースを削除するには、代わりにリソース グループを削除してください。 ローカル プロジェクトには影響はありません。
Delete Function Azure の関数アプリから既存の関数を削除します。 この削除はローカル プロジェクトに影響を与えないため、代わりに、関数をローカルで削除してから、プロジェクトを再発行することを検討してください。
Delete Proxy Azure の関数アプリから Azure Functions プロキシを削除します。 プロキシについて詳しくは、「Azure Functions プロキシの操作」をご覧ください。
Delete Setting Azure の関数アプリの設定を削除します。 この削除は、local.settings.json ファイルの設定には影響を与えません。
Disconnect from Repo Azure の関数アプリとソース管理リポジトリの間の継続的デプロイ接続を削除します。
Download Remote Settings Azure の選択した関数アプリから local.settings.json ファイルに設定をダウンロードします。 ローカル ファイルが暗号化されている場合は、復号化され、更新されて、再び暗号化されます。 2 つの場所で値が競合する設定がある場合は、続行する方法を選択するように求められます。 このコマンドを実行する前に local.settings.json ファイルに変更を必ず保存してください。
Edit settings Azure の既存の関数アプリ設定の値を変更します。 このコマンドは、local.settings.json ファイルの設定に影響を与えません。
Encrypt settings ローカル設定で Values 配列の個別の項目を暗号化します。 このファイルでは、IsEncryptedtrue に設定されます。これは、ローカル ランタイムが設定を使用する前に復号化することを指定します。 貴重な情報が漏洩するリスクを減らすために、ローカル設定を暗号化します。 Azure では、アプリケーション設定は常に、暗号化されて格納されます。
Execute Function Now 管理 API を使用して関数を手動で開始します。 このコマンドは、デバッグ中のローカルでのテスト、および Azure で実行されている関数に対するテストの両方に使用されます。 Azure 内の関数が作動すると、まず、拡張機能により、管理キーが自動的に取得されます。これは、Azure で関数を開始するリモート管理 API を呼び出すために使用されます。 API に送信されるメッセージの本文は、トリガーの種類によって異なります。 タイマー トリガーでは、データを渡す必要はありません。
Initialize Project for Use with VS Code 必要な Visual Studio Code プロジェクト ファイルを既存の Functions プロジェクトに追加します。 このコマンドは、Core Tools を使用して作成したプロジェクトを操作するために使用します。
Install or Update Azure Functions Core Tools ローカルで関数を実行するために使用される Azure Functions Core Tools をインストールまたは更新します。
Redeploy 接続された Git リポジトリから Azure の特定のデプロイにプロジェクト ファイルを再デプロイできます。 Visual Studio Code からローカル更新を再発行するには、プロジェクトを再発行します。
Rename Settings Azure の既存の関数アプリ設定のキー名を変更します。 このコマンドは、local.settings.json ファイルの設定に影響を与えません。 Azure で設定の名前を変更したら、それらの変更をローカル プロジェクトにダウンロードする必要があります。
Restart Azure で関数アプリを再起動します。 更新をデプロイしても関数アプリが再起動されます。
Set AzureWebJobsStorage AzureWebJobsStorage アプリケーション設定の値を設定します。 この設定は、Azure Functions によって必要になります。 これは、Azure で関数アプリが作成されるときに設定されます。
Start Azure の停止された関数アプリを起動します。
Start Streaming Logs Azure の関数アプリのストリーミング ログを開始します。 ログ情報をほぼリアルタイムで確認する必要がある場合は、Azure でのリモート トラブルシューティング中にストリーミング ログを使用します。 詳細については、「ストリーミング ログ」を参照してください。
Stop Azure で実行されている関数アプリを停止します。
Stop Streaming Logs Azure の関数アプリのストリーミング ログを停止します。
Toggle as Slot Setting 有効になっている場合は、指定したデプロイ スロットに対してアプリケーション設定が保持されるようにします。
Uninstall Azure Functions Core Tools 拡張機能に必要な Azure Functions Core Tools を削除します。
Upload Local Settings local.settings.json ファイルから、選択した Azure の関数アプリに設定をアップロードします。 ローカル ファイルが暗号化されている場合は、復号化され、アップロードされて、再び暗号化されます。 2 つの場所で値が競合する設定がある場合は、続行する方法を選択するように求められます。 このコマンドを実行する前に local.settings.json ファイルに変更を必ず保存してください。
View Commit in GitHub 関数アプリがリポジトリに接続されているとき、特定のデプロイでの最新のコミットを表示します。
View Deployment Logs Azure の関数アプリへの具体的なデプロイ用のログを表示します。

次のステップ

Azure Functions Core Tools の詳細については、「Azure Functions Core Tools の操作」を参照してください。

.NET クラス ライブラリとしての関数の開発の詳細については、「Azure Functions C# developer reference (Azure Functions C# 開発者向けリファレンス)」を参照してください。 この記事は、Azure Functions でサポートされる各種バインドを宣言するための属性の使用例へのリンクも提供しています。