Visual Studio CodeAzure Functions拡張機能を使用すると>関数をローカルで開発し、Azureにデプロイできます。 Azure Functions を初めて使用する場合は、詳細について、「Azure Functions の概要」を参照してください。
Azure Functions拡張機能には、次の利点があります。
- ローカル開発用コンピューターで関数を編集、作成、および実行できます。
- Azure Functions プロジェクトをAzureに直接発行します。
- 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 つの関数アプリにローカル開発とポータル開発を混在させないでください。 ローカル プロジェクトから関数アプリに発行すると、ポータルで開発した関数がデプロイ プロセスによって上書きされます。
前提条件
Visual Studio Codeサポートされているプラットフォームのいずれかにインストールされます。
Azure Functions拡張機能。 Azure Tools 拡張機能パックをインストールすることもできます。これは、Azure リソースの操作に推奨されます。
アクティブな Azure サブスクリプション。 まだアカウントを持っていない場合は、Visual Studio Codeの拡張機能からアカウントを作成できます。
これらの前提条件は、関数をローカルで実行およびデバッグするためにも必要です。 プロジェクトを作成したり、Azure Functionsに発行したりする必要はありません。
-
Azure Functions Core Toolsは、統合されたローカルデバッグ体験を可能にします。 Azure Functions拡張機能がインストールされている場合、Core Tools をインストールまたは更新する最も簡単な方法は、コマンド パレットから
Azure Functions: Install or Update Azure Functions Core Toolsコマンドを実行することです。
Visual Studio Codeの C# 拡張機能。
.NET (CLI)。.NET SDK に含まれています。
Java用デバッガー拡張機能Debugger。
Maven 3 以降。
- Node.js (いずれかのサポート対象バージョン)。 コマンドを使用して、現在のバージョンを確認してください。
PowerShell 7.2 を推奨。 バージョン情報については、「PowerShell のバージョン」を参照してください。
Visual Studio Code の
PowerShell 拡張機能。
Visual Studio CodeのPython拡張機能。
Azure Functions プロジェクトを作成する
Functions の拡張機能により、最初の関数を作成すると共に必要な関数アプリ プロジェクトを作成できます。 これらの手順を用いて、HTTP によってトリガーされる関数を新しいプロジェクトに作成します。 HTTP トリガーは、実演する最も単純な関数トリガー テンプレートです。
Visual Studio Codeで、F1 を押してコマンド パレットを開きます。 コマンド
Azure Functions: Create New Project...を検索して実行します。 プロジェクト ワークスペースのディレクトリの場所を選択し、[選択] を 選択します。プロジェクト ワークスペースには、新しいフォルダーを作成するか、空のフォルダーを選択することができますが、既にワークスペースの一部であるプロジェクト フォルダーは選択しないでください。
代わりにコマンド
Azure Functions: Create New Containerized Project...を実行して、プロジェクト用に生成された Dockerfile も取得できます。確認のメッセージが表示されたら、プロジェクトの言語を選択します。 必要に応じて、特定の言語バージョンを選択します。
HTTP トリガー関数テンプレートを選択するか、[スキップ] を選択して関数なしでプロジェクトを作成します。 後でいつでも、プロジェクトに関数を追加できます。
ヒント
追加のテンプレートを表示するには、[ テンプレート フィルターの変更 ] オプションを選択し、値を [コア ] または [すべて] に設定します。
関数名として 「HttpExample」と入力し、Enter キーを押してから、[ 関数の 承認] を選択します。
この承認レベルでは、関数エンドポイントを呼び出すときに関数キーを指定する必要があります。
ドロップダウン リストから [ワークスペースに追加] を選びます。
[このフォルダー内のファイルの作成者を信頼しますか?] ウィンドウで、[はい] を選択します。
Visual Studio Codeは、選択した言語と、HTTP によってトリガーされる関数のテンプレートに関数を作成します。
生成されたプロジェクト ファイル
このプロジェクト テンプレートは、選択した言語でプロジェクトを作成し、必要な依存関係をインストールします。 どの言語の場合も、新しいプロジェクトには次のファイルが含まれます。
host.json:Functions のホストを構成できます。 これらの設定は、関数をローカルで実行しているときや、Azureで実行している場合に適用されます。 詳細については、host.json のリファレンスを参照してください。
local.settings.json: 関数をローカルで実行するときに使用される設定を保持します。 これらの設定は、関数をローカルで実行するときにのみ使用されます。 詳細については、「ローカル設定ファイル」を参照してください。
重要
local.settings.json ファイルにはシークレットを含めることができるため、それをプロジェクト ソース管理から除外してください。
Dockerfile (オプション): プロジェクトの承認された基本イメージを使って、プロジェクトからコンテナー化された関数アプリを作成できます。 このファイルは、コマンド
Azure Functions: Create New Containerized Project...を実行した場合にのみ取得します。 の コマンドを使用して、既存のプロジェクトに Dockerfile を追加できます。
HttpExample.cs クラス ライブラリ ファイル。その内容は、プロジェクトが分離ワーカー プロセスで実行されるか、Functions ホストのインプロセスで実行されているかによって異なります。
次のファイルが作成されます。
プロジェクトの依存関係と
Java バージョン 。 pom.xml には、デプロイ中に作成されたAzure リソースに関する情報も含まれています。src パス内の Functions.java ファイル。関数を実装します。
生成されるファイルは、Functions に対して選択した Node.js プログラミング モデルによって異なります。
- v4
- v3
ルート フォルダー内の package.json ファイル。
src\functions フォルダー内の名前付き .js ファイル。これには、関数定義と関数コードの両方が含まれます。
HttpExample フォルダーが作成され、次のものが含まれます。
- function.json 定義ファイル
- run.ps1 ファイル、関数コードを含みます。
生成されるファイルは、Functions の選択したPythonプログラミング モデルによって異なります。
- v2
- v1
Functions に必要なパッケージをリストするプロジェクトレベルの requirements.txt ファイル。
関数定義とコードの両方を含む function_app.py ファイル。
この時点で、 HTTP トリガー関数をローカルで実行できます。
プロジェクトに関数を追加する
定義済みの Functions トリガー テンプレートのいずれかを使用して、既存のプロジェクトに新しい関数を追加できます。 新しい関数トリガーを追加するには、F1 キーを押してコマンド パレットを開き、コマンド Azure Functions: 関数の作成 コマンドを見つけて実行します。 プロンプトに従ってトリガーの種類を選択し、そのトリガーの必要な属性を定義します。 トリガーでサービスに接続するためにアクセス キーまたはconnection stringが必要な場合は、関数トリガーを作成する前にその項目を準備します。
このアクションにより、新しい C# クラス ライブラリ (.cs) ファイルがプロジェクトに追加されます。
このアクションにより、新しいJava (.java) ファイルがプロジェクトに追加されます。
このアクションの結果は、Node.js モデルのバージョンによって異なります。
- v4
- v3
ルート フォルダー内の package.json ファイル。
src\functions フォルダー内の名前付き .js ファイル。これには、関数定義と関数コードの両方が含まれます。
このアクションにより、プロジェクトで新しいフォルダーが作成されます。 このフォルダーには、新しい function.json ファイルと新しい PowerShell コード ファイルが含まれます。
このアクションの結果は、Python モデルのバージョンによって異なります。
- v2
- v1
Visual Studio Codeは、function_app.py ファイル (既定の動作) または選択した別のPython ファイルに新しい関数コードを追加します。
サービスへの接続
入力バインドと出力バインドを追加することで、関数を他のAzure サービスに接続できます。 バインドを使用すると、接続コードを作成する必要なく、関数を他のサービスに接続できます。
たとえば、ストレージ キューにデータを書き込む出力バインディングを定義する方法は、プロセス モデルによって異なります。
- 分離プロセス
- インプロセス
必要に応じて、バインド拡張機能をサポートするパッケージへの参照を追加してください。
キュー出力バインドの のように、バインディング パラメーターを定義する属性を追加するように関数メソッドを更新します。 オブジェクトを使用して、複数のメッセージまたは複数の出力ストリームを返すことができます。
たとえば、ストレージ キューにデータを書き込む出力バインドを追加するには、関数メソッドを更新して、 注釈を使用して定義されたバインド パラメーターを追加します。 オブジェクトは、関数の完了時に出力バインディングに書き込まれるメッセージを表します。
たとえば、ストレージ キューにデータを書き込む出力バインディングを定義する方法は、Node.js モデルのバージョンによって異なります。
- v4
- v3
Node.js v4 モデルを使用するには、 オブジェクトの関数を使用して、 オプションを関数定義に手動で追加する必要があります。 この関数は、 出力を書き込むストレージ キューを定義します。 関数が完了すると、出力が書き込まれます。
Visual Studio Codeでは、便利な一連のプロンプトに従って、function.json ファイルにバインドを追加できます。
バインドを追加するには、コマンド パレット (F1) を開き、「Azure Functions: バインドの追加...」と入力します。、新しいバインドの関数を選択し、プロンプトに従います。これは、関数に追加されるバインドの種類によって異なります。
以下は、新しいストレージ出力バインドを定義するためのプロンプト例です。
| プロンプト | 価値 | 説明 |
|---|---|---|
| Select binding direction (バインド方向を選択する) | out |
バインドは出力バインドです。 |
| 方向を使用してバインドを選択してください | Azure Queue Storage |
バインドは、Azure Storage キュー バインドです。 |
| コードでこのバインドの特定に使用する名前 | msg |
コードで参照されているバインド パラメーターを識別する名前。 |
| メッセージの送信先のキュー | outqueue |
バインドが書き込むキューの名前。 queueName が存在しない場合は、バインドによって最初に使用されるときに作成されます。 |
| "local.settings.json" から設定を選択してください | MyStorageConnection |
ストレージ アカウントのconnection stringを含むアプリケーション設定の名前。
AzureWebJobsStorage設定には、関数アプリで作成したストレージ アカウントのconnection stringが含まれています。 |
また、関数フォルダー内の function.json ファイルを直接右クリック (macOS では Ctrl キーを押しながらクリック) して、 [バインドの追加] を選択し、同じプロンプトに従うこともできます。
この例では、次のバインドが function.json ファイルの 配列に追加されます。
{
"type": "queue",
"direction": "out",
"name": "msg",
"queueName": "outqueue",
"connection": "MyStorageConnection"
}
たとえば、ストレージ キューにデータを書き込む出力バインドを定義する方法は、Python モデルのバージョンによって異なります。
- v2
- v1
関数の デコレーターを使用して、ストレージ キューへの出力の名前付きバインド パラメーターを定義します。 パラメーターは、書き込まれる出力を定義します。
次の例は、キュー ストレージの出力バインドを HTTP によってトリガーされる関数に追加した後の関数の定義を示しています。
- 分離プロセス
- インプロセス
HTTP によってトリガーされる関数は HTTP 応答も返すため、この関数は、HTTP とキューの両方の出力を表す オブジェクトを返します。
[Function("HttpExample")]
public MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequest req)
{
この出力バインディングを含む オブジェクトの定義の例をこちらに示します。
public class MultiResponse
{
[QueueOutput("outqueue",Connection = "AzureWebJobsStorage")]
public string[] Messages { get; set; }
public IActionResult HttpResponse { get; set; }
}
この例では、ASP.NET Core integration を使用します。 ASP.NET Core統合を使用していない場合は、HttpRequest を HttpRequestData に、IActionResult を HttpResponseData に変更する必要があります。
メッセージは、関数が完了したときにキューに送信されます。 出力バインドを定義する方法は、プロセス モデルによって異なります。 参照できるバインド コードの例へのリンクなど、詳細については、「関数へのバインドの追加」を参照してください。
@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) {
参照できるバインド コードの例へのリンクなど、詳細については、「関数へのバインドの追加」を参照してください。
- v4
- v3
const { app, output } = require('@azure/functions');
const sendToQueue = output.storageQueue({
queueName: 'outqueue',
connection: 'AzureWebJobsStorage',
});
app.http('HttpExample', {
methods: ['GET', 'POST'],
authLevel: 'anonymous',
extraOutputs: [sendToQueue],
handler: async (request, context) => {
try {
context.log(`Http function processed request for url "${request.url}"`);
const name = request.query.get('name') || (await request.text());
context.log(`Name: ${name}`);
if (name) {
const msg = `Name passed to the function ${name}`;
context.extraOutputs.set(sendToQueue, [msg]);
return { body: msg };
} else {
context.log('Missing required data');
return { status: 404, body: 'Missing required data' };
}
} catch (error) {
context.log(`Error: ${error}`);
return { status: 500, body: 'Internal Server Error' };
}
},
});
出力バインドを定義する方法は、Node.js モデルのバージョンによって異なります。 参照できるバインド コードの例へのリンクなど、詳細については、「関数へのバインドの追加」を参照してください。
$outputMsg = $name
Push-OutputBinding -name msg -Value $outputMsg
参照できるバインド コードの例へのリンクなど、詳細については、「関数へのバインドの追加」を参照してください。
- v2
- v1
@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 モデルのバージョンによって異なります。 参照できるバインド コードの例へのリンクなど、詳細については、「関数へのバインドの追加」を参照してください。
- v4
- v3
import {
app,
output,
HttpRequest,
HttpResponseInit,
InvocationContext,
StorageQueueOutput,
} from '@azure/functions';
const sendToQueue: StorageQueueOutput = output.storageQueue({
queueName: 'outqueue',
connection: 'AzureWebJobsStorage',
});
export async function HttpExample(
request: HttpRequest,
context: InvocationContext,
): Promise<HttpResponseInit> {
try {
context.log(`Http function processed request for url "${request.url}"`);
const name = request.query.get('name') || (await request.text());
context.log(`Name: ${name}`);
if (name) {
const msg = `Name passed to the function ${name}`;
context.extraOutputs.set(sendToQueue, [msg]);
return { body: msg };
} else {
context.log('Missing required data');
return { status: 404, body: 'Missing required data' };
}
} catch (error) {
context.log(`Error: ${error}`);
return { status: 500, body: 'Internal Server Error' };
}
}
app.http('HttpExample', {
methods: ['GET', 'POST'],
authLevel: 'anonymous',
handler: HttpExample,
});
出力バインドを定義する方法は、Node.js モデルのバージョンによって異なります。 参照できるバインド コードの例へのリンクなど、詳細については、「関数へのバインドの追加」を参照してください。
Azureにサインインする
Azureリソースを作成したり、アプリを発行したりする前に、Azureにサインインする必要があります。
まだサインインしていない場合は、Activity バーで、Azure アイコンを選択します。 次に、Resources で Sign in to Azure を選択します。
Visual Studio Code の Azure ウィンドウへのサインイン画面のスクリーンショット 既にサインインしていて、既存のサブスクリプションを確認できる場合は、次のセクションに進みます。 Azure アカウントをまだお持ちでない場合は、Azure アカウントの作成 を選択>。 学生は[学生アカウントのAzureを作成するを選択できます。
ブラウザーでメッセージが表示されたら、Azure アカウントを選択し、Azure アカウントの資格情報を使用してサインインします。 新しいアカウントを作成した場合は、アカウントの作成後にサインインできます。
正常にサインインしたら、新しいブラウザー ウィンドウを閉じてかまいません。 Azure アカウントに属しているサブスクリプションがサイド バーに表示されます。
Azure リソースを作成する
Azureに Functions プロジェクトを発行する前に、コードを実行するには、Azure サブスクリプションに関数アプリと関連リソースが必要です。 関数アプリは、関数の実行コンテキストを提供します。 Visual Studio CodeからAzureの関数アプリに発行すると、プロジェクトがパッケージ化され、Azure サブスクリプション内の選択した関数アプリにデプロイされます。
Azureで関数アプリを作成する場合は、既定値を使用してクイック関数アプリの作成パスを選択するか、既存のAzure リソースの使用などの高度なオプションを提供するパスを選択できます。 このようにすることで、作成されるリモート リソースをより細かく制御できます。
- 簡易作成
- 詳細オプション
このセクションでは、Flex 従量課金プランで、Azure サブスクリプションの関連リソースと共に関数アプリを作成します。 リソース作成に関する決定の多くは、既定の動作に基づいて自動的に行われます。 作成されたリソースをより細かく制御するには、代わりに高度なオプションを使って関数アプリを作成する必要があります。
Visual Studio Codeで F1 キーを押してコマンド パレットを開きます。 プロンプト (
>) で、「Azure Functions: Create Function App in Azure」と入力して選択します。プロンプトで、次の情報を指定します。
プロンプト アクション サブスクリプションを選択してください 使用するAzure サブスクリプションを選択します。 [リソース] に表示されるサブスクリプションが 1 つだけのときは、このプロンプトは表示されません。 新しい関数アプリ名を入力する URL パスで有効なグローバルに一意の名前を入力します。 入力した名前は、Azure Functionsで一意であることを確認するために検証されます。 Select a location for new resources (新しいリソースの場所を選択してください) Azureリージョンを選択します。 パフォーマンスを向上させるために、お近くのリージョンを選択してください。 Flex 従量課金プランでサポートされているリージョンのみが表示されます。 ランタイム スタックを選択してください 現在ローカルで実行している言語バージョンを選択してください。 リソース認証の種類を選択する 既定のホスト ストレージ アカウントに接続するための最も安全なオプションであるマネージド ID を選択します。 Azure: アクティビティ ログ パネルで、Azure拡張機能に、Azureで作成された個々のリソースの状態が表示されます。
関数アプリが作成されると、Azure サブスクリプションに次の関連リソースが作成されます。 リソースの名前は、関数アプリに入力した名前に基づいて決まります。
- リソース グループ。関連リソースの論理コンテナーです。
- 関数アプリ。関数コードを実行するための環境となります。 関数アプリを使用すると、同じホスティング プランに含まれるリソースの管理、デプロイ、共有を容易にするための論理ユニットとして関数をグループ化できます。
- Azure App Service プラン。関数アプリの基になるホストを定義します。
- 標準Azure Storage アカウント。関数アプリに関する状態やその他の情報を維持するために Functions ホストによって使用されます。
- 関数アプリに接続された Application Insights インスタンス。アプリ内の関数の使用を追跡します。
- 新しい既定のホスト ストレージ アカウントの ストレージ BLOB データ共同作成者 ロールに追加されるユーザー割り当てマネージド ID。
関数アプリが作成され、展開パッケージが適用されると、通知が表示されます。
ヒント
既定では、関数アプリに必要なAzure リソースは、関数アプリに入力した名前に基づいて作成されます。 既定では、関数アプリによって、同じ新しいリソース グループにリソースが作成されます。 関連付けられているリソースの名前をカスタマイズする、または既存のリソースを再利用する必要がある場合は、高度な作成オプションを使用してプロジェクトを発行します。
Azure Container Appsのデプロイを作成する
重要
Azure Container Appsで直接Azure Functionsを実行するための新しいホスティング方法が利用できるようになりました。 「Azure Container Apps での Native Azure Functions のサポート を参照。」 この統合により、Azure Container Appsのすべての機能を使用できます。 また、関数プログラミング モデルと、Azure Functionsによって提供される自動スケールの簡略化のメリットもあります。
ほとんどの新しいワークロードには、このアプローチをお勧めします。 詳細については、Azure Container Apps 上の Azure Functions を参照してください。
Visual Studio Codeを使用して、コンテナー化されたコード プロジェクトのAzure リソースを作成します。 拡張機能は、リソースの作成時に Dockerfile の存在を検出すると、コードだけでなくコンテナー イメージをデプロイするかどうかを確認します。 Visual Studio Codeは、Azure Functionsと統合されたコンテナー化されたコード プロジェクトのAzure Container Apps環境を作成します。 詳細については、「Azure Functions の Azure Container Apps におけるホスティング」を参照してください。
注
コンテナーのデプロイには、Visual Studio Code の
作成プロセスは、クイック作成を選ぶか、詳細オプションを使う必要があるかによって異なります。
- 簡易作成
- 詳細オプション
Visual Studio Codeで、F1 を押してコマンド パレットを開きます。 コマンド
Azure Functions: Create Function App in Azure...を検索して実行します。メッセージが表示されたら、[ コンテナー イメージ] を選択します。
プロンプトで、次の情報を入力します。
プロンプト [選択] サブスクリプションの選択 (省略可能) 使用するサブスクリプションを選択します。 [リソース] に表示されるサブスクリプションが 1 つだけのときは、このプロンプトは表示されません。 新しい関数アプリの名前を入力します URL パスで有効な名前を入力します。 入力した名前は、Functions でグローバルに一意であることを確認するために検証されます。 リソース認証の種類を選択する 管理 ID を選択すると、セキュリティが低い共有シークレット (接続文字列とキー) を使用する代わりに、Microsoft Entra ID認証を使用してリモート リソースに接続できます。 Select a location for new resources (新しいリソースの場所を選択してください) パフォーマンスを向上させるために、お近くのリージョンを選択してください。 メッセージが表示されたら、 コンテナー アプリ環境の名前を入力します。
拡張機能は、Azure: アクティビティ ログ パネルのAzureで作成されている個々のリソースの状態を示します。
Container Apps でコンテナー化された関数を実行するために必要なリソースについて詳しくは、「必要なリソース」をご覧ください。
注
現在、Visual Studio Codeを使用して、コンテナー化された関数アプリをAzure Functions統合 Container Apps 環境にデプロイすることはできません。 代わりに、コンテナー イメージをコンテナー レジストリに発行してから、そのレジストリ イメージを Container Apps でホストされる関数アプリのデプロイ ソースとして設定する必要があります。 詳しくは、「コンテナーでの関数アプリを作成する」と「レジストリ内のイメージを更新する」をご覧ください。
プロジェクト ファイルのデプロイ
Azureで連続デプロイメントを設定し、接続されたソースの場所にあるソース ファイルを更新すると、Azureの関数アプリが更新されるようにします。 Visual Studio Codeからプロジェクト ファイルを配置することもできます。 Visual Studio Codeから発行する場合は、Zip デプロイ テクノロジを利用できます。
重要
既存の関数アプリにデプロイすると、常にAzure内のアプリの内容が上書きされます。
コマンド パレットで、「Azure Functions: Function App にデプロイするを入力して選択します。
作成したばかりの関数アプリを選びます。 前のデプロイの上書きを求められたら、[デプロイ] を選択して、関数コードを新しい関数アプリ リソースにデプロイします。
デプロイが完了したら、View Output を選択して、作成したAzure リソースを含む作成とデプロイの結果を表示します。 通知を見逃した場合は、右下隅にあるベル アイコンを選択して、再度確認します。
[出力の表示] ウィンドウのスクリーンショット。
Azureで HTTP によってトリガーされる関数の URL を取得する
HTTP によってトリガーされる関数をクライアントから呼び出すには、関数アプリにデプロイされた後に使用できる関数の URL が必要です。 この URL には、必要なすべての関数キーが含まれています。 デプロイした関数のこれらの URL を取得するには、拡張機能を使用できます。 Azureでリモート関数を実行するだけの場合は、拡張機能の execute 関数機能を使用します。
F1 キーを押してコマンド パレットを開き、コマンド Azure Functions: 関数の URL のコピーを見つけて実行します。
プロンプトに従って、Azureで関数アプリを選択し、呼び出す特定の HTTP トリガーを選択します。
クエリ パラメーターで渡された必要なキーとともに、関数の URL がクリップボードにコピーされます。 HTTP ツールを使って POST 要求を送信するか、ブラウザーを使って GET 要求をリモート関数に送信します。
拡張機能は、Azure内の関数の URL を取得すると、Azure アカウントを使用して、関数の開始に必要なキーを自動的に取得します。 関数のアクセス キーの詳細を参照してください。 HTTP によってトリガーされない関数を開始するには、管理キーを使用する必要があります。
関数を実行する
Azure Functions拡張機能を使用すると、個々の関数を実行できます。 関数は、ローカル開発コンピューターまたは Azure サブスクリプションのプロジェクトで実行できます。
HTTP トリガー関数の場合、拡張機能により、HTTP エンドポイントが呼び出されます。 その他の種類のトリガーの場合は、拡張機能で管理者 API が呼び出されて関数が開始されます。 関数に送信される要求のメッセージ本文は、トリガーの種類によって異なります。 トリガーにテスト データが必要な場合、データを特定の JSON 形式で入力するように求められます。
Azureで関数を実行する
Visual Studio CodeからAzureで関数を実行するには、次の手順に従います。
コマンド パレットで、「Azure Functions: Execute function now」と入力し、Azure サブスクリプションを選択します。
一覧から、Azureで関数アプリを選択します。 ご使用の関数アプリが表示されない場合、適正なサブスクリプションにサインインしているかどうか確認してください。
一覧から、実行する関数を選択します。 [Enter request body]\(要求本文を入力してください\) で、要求のメッセージ本文を入力し、Enter キーを押してこの要求メッセージを関数に送信します。
[Enter request body]\(要求本文を入力してください\) 内の既定のテキストは、本文の形式を示します。 関数アプリに関数が含まれていない場合、このエラーと共に通知エラーが表示されます。
関数がAzureで実行され、応答を返すと、Visual Studio Codeに通知が表示されます。
Azure: Functions 領域から関数を実行することもできます。そのためには、Azure サブスクリプションで関数アプリから実行する関数のショートカット メニューを開き、 [関数を今すぐ実行]を選択します。。
Visual Studio CodeからAzureで関数を実行すると、拡張機能はAzure アカウントを使用して、関数の開始に必要なキーを自動的に取得します。 関数のアクセス キーの詳細を参照してください。 HTTP によってトリガーされない関数を開始するには、管理キーを使用する必要があります。
関数をローカルで実行する
ローカル ランタイムは、Azureで関数アプリをホストするのと同じランタイムです。 ランタイムは、 local.settings.json ファイルからローカル設定を読み取ります。 Functions プロジェクトをローカルで実行するには、追加要件を満たす必要があります。
ローカルで実行するようにプロジェクトを構成する
Functions ランタイムは、HTTP と webhook を除くすべてのトリガーの種類に対して、Azure Storage アカウントを内部的に使用します。 Values.AzureWebJobsStorage キーを有効なAzure Storage アカウント connection stringに設定します。
このセクションでは、Visual Studio Code の Azure Storage 拡張機能とAzure Storage Explorerを使用して、ストレージの接続文字列に接続し、取得します。
ストレージ アカウントのconnection stringを設定するには:
Visual Studioで、Cloud Explorer を開き、Storage Account>Your Storage Account を展開し、Properties を選択して、Primary Connection String の値をコピーします。
プロジェクトで local.settings.json ファイルを開き、AzureWebJobsStorage キーの値をコピーしたconnection stringに設定します。
前の手順を繰り返し、関数に必要なその他のすべての接続について、Values 配列に一意のキーを追加します。
詳細については、「ローカル設定ファイル」を参照してください。
関数をローカルでデバッグする
関数をデバッグするには、F5 キーを選択します。 Core Tools が利用可能でない場合は、これをインストールするように求められます。 Core Tools がインストールされて実行されると、ターミナルに出力が表示されます。 この手順は、 Core Tools コマンドをターミナルから実行するのと同じですが、追加のビルド タスクと、接続されたデバッガーが含まれます。
プロジェクトが実行中の場合は、Execute 関数を今すぐ使用できます。...プロジェクトをAzureに配置する場合と同様に、関数をトリガーする拡張機能の機能。 プロジェクトをデバッグ モードで実行すると、期待どおりにブレークポイントがVisual Studio Codeにヒットします。
コマンド パレットで、「Azure Functions: execute function now」と入力し、Local project を選択します。
プロジェクトで実行する関数を選択して、 [Enter request body](要求本文を入力してください) に要求のメッセージ本文を入力します。 Enter キーを押して、この要求メッセージを関数に送信します。 [Enter request body](要求本文を入力してください) 内の既定のテキストは、本文の形式を示します。 関数アプリに関数が含まれていない場合、このエラーと共に通知エラーが表示されます。
関数がローカルで実行され、応答を受信した後、Visual Studio Codeで通知が発生します。 関数の実行に関する情報は、 [ターミナル] パネルに表示されます。
ローカルで実行する場合、キーは必要ありません。 この規則は、ファンクション キーと管理者レベルのキーの両方に適用されます。
ローカルでアプリの設定を操作する
関数アプリをAzureで実行すると、関数に必要な設定はアプリ設定に暗号化されて格納されます。 ローカル開発時に、これらの設定は代わりにlocal.settings.jsonファイルの コレクションに追加されます。 local.settings.json ファイルには、ローカル開発ツールで使用される設定も格納されます。
プロジェクトの Values ファイルの コレクション内の項目は、Azureの関数アプリのアプリケーション設定内の項目をミラーリングすることを目的としています。
既定では、プロジェクトをAzureに発行しても、これらの設定は自動的には移行されません。 発行が完了したら、Azureで local.settings.json から関数アプリに設定を発行することを選択できます。 詳細については、「アプリケーション設定を発行する」を参照してください。
ConnectionStrings 内の値は発行されません。
- 分離プロセス
- インプロセス
コードでは、関数アプリケーションの設定値を環境変数として読み取ることができます。 詳細については、「環境変数」を参照してください。
- コードでは、関数アプリの設定値を環境変数として読み取ることができます。 詳細については、「環境変数」を参照してください。
- コードでは、関数アプリの設定値を環境変数として読み取ることができます。 詳細については、「環境変数」を参照してください。
- コードでは、関数アプリの設定値を環境変数として読み取ることができます。 詳細については、「環境変数」を参照してください。
- コードでは、関数アプリの設定値を環境変数として読み取ることができます。 詳細については、「環境変数」を参照してください。
Azureのアプリケーション設定
プロジェクトの local.settings.json ファイルの設定は、Azureの関数アプリのアプリケーション設定と一致している必要があります。 Azureの local.settings.json と関数アプリの両方に新しい設定を追加する必要があります。 プロジェクトを発行するときに、これらの設定は自動的にアップロードされません。 同様に、 ポータル で関数アプリで作成した設定をローカル プロジェクトにダウンロードする必要があります。
アプリケーション設定を発行する
Azureで必要な設定を関数アプリに発行する最も簡単な方法は、プロジェクトの発行後に表示される Upload settings リンクを使用することです。
アプリケーション設定をアップロードするスクリーンショット。
コマンド パレットの Azure Functions: Upload Local Setting コマンドを使用して設定を発行することもできます。 Azureのアプリケーション設定に個別の設定を追加するには、[Azure Functions: 新しい設定の追加 コマンドを使用します。
ヒント
発行する前に local.settings.json ファイルを必ず保存してください。
ローカル ファイルが暗号化されている場合、プロセスによって暗号化が解除され、発行され、再び暗号化されます。 競合する値が 2 つの場所に存在する場合は、続行する方法を選択するように求められます。
サブスクリプション、関数アプリ、アプリケーション設定を展開して、Azure: Functions 領域に既存のアプリ設定を表示します。
&lgt;c1>&lgt;c0>&lgt;sb0> Visual Studio Codeで関数アプリの設定を表示するためのスクリーンショットです。</sb0>&lgt;/c0>&lgt;/c1>
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>
は、必要なバインドが含まれているパッケージの名前に置き換えます。 対象のバインディングのリファレンス記事は、サポートされるバインディングの一覧で見つけることができます。
例の中の を などの特定のバージョンのパッケージに置き換えます。 有効なバージョンは、NuGet.org の個々のパッケージ ページに記載されています。現在の Functions ランタイムに対応する主要なバージョンは、バインデイングのリファレンス記事に示されています。
ヒント
C# Dev Kit の NuGet コマンドを使用して、バインド拡張機能パッケージをインストールすることもできます。
C# スクリプトでは拡張機能バンドルが使用されます。
バインド拡張機能をインストールする最も簡単な方法は、拡張機能のバンドルを有効にすることです。 バンドルを有効にすると、事前定義された一連の拡張機能パッケージが自動的にインストールされます。
拡張機能のバンドルを有効にするには、host.json ファイルを開き、その内容を次のコードに合わせて更新します。
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[3.*, 4.0.0)"
}
}
何らかの理由で拡張機能バンドルを使用してプロジェクトのバインディング拡張機能をインストールできない場合は、「拡張機能を明示的にインストールする」を参照してください。
監視機能
関数を ローカルで実行すると、Core Tools はターミナル コンソールにログ データをストリーム配信します。 Azureの関数アプリで Functions プロジェクトを実行するときにログ データを取得することもできます。 Azureのストリーミング ログに接続して、ほぼリアルタイムのログ データを表示できます。 関数アプリの動作をより完全に理解するには、Application Insights を有効にする必要があります。
ストリーミング ログ
アプリケーションを開発しているとき、ログ情報をほぼリアルタイムで参照すると役立つことがよくあります。 関数によって生成されたログ ファイルのストリームを表示できます。
Azure Functions: Start streaming logs コマンドを使用して、コマンド パレットからログをオンにします。 この出力は、HTTP によってトリガーされた関数への要求のストリーミング ログの例です。
HTTP トリガーのストリーミング ログ出力を示すスクリーンショット。
詳細については、「ストリーミング ログ」を参照してください。
Application Insights
関数アプリを Application Insights と統合することによって、関数の実行を監視することをお勧めします。 Azure ポータルで関数アプリを作成すると、この統合は既定で行われます。 Visual Studio発行中に関数アプリを作成する場合は、Application Insights を自分で統合する必要があります。 方法については、「Application Insights との統合を有効にする」を参照してください。
Application Insights を使用した監視の詳細については、「Monitor Azure Functionsを参照してください。
C# スクリプト プロジェクト
既定では、すべての C# プロジェクトは C# コンパイル済みクラス ライブラリ プロジェクトとして作成されます。 代わりに C# スクリプト プロジェクトを使用する場合は、Azure Functions拡張機能の設定で既定の言語として C# スクリプトを選択する必要があります。
[ファイル][設定][環境設定] を選択します。
User Settings>Extensions>Azure Functions に移動します。
Azure Function: Project Language から を選択します。C#Script
これらの手順を完了した後、基盤となる Core Tools への呼び出しには、C# スクリプト (.csx) プロジェクト ファイルを生成して発行する オプションが含まれます。 この既定の言語を指定すると、作成するすべてのプロジェクトが既定で C# スクリプト プロジェクトになります。 既定が設定されているときは、プロジェクト言語を選択するよう求められません。 他の言語でプロジェクトを作成するには、この設定を変更するか、ユーザーの settings.json ファイルからこの設定を削除する必要があります。 この設定を削除すると、プロジェクトを作成するときに、言語を選択するよう再び求められます。
コマンド パレットのリファレンス
Azure Functions拡張機能は、Azureで関数アプリと対話するための便利なグラフィカル インターフェイスを提供します。 同じ機能が、コマンド パレット (F1) のコマンドとしても使用できます。 次のAzure Functionsコマンドを使用できます。
| Azure Functions コマンド | 説明 |
|---|---|
| 新しい設定を追加 | Azureに新しいアプリケーション設定を作成します。 詳細については、「アプリケーション設定を発行する」を参照してください。 また、この設定をローカル設定にダウンロードする必要がある場合もあります。 |
| 展開元を構成する | Azureの関数アプリをローカル Git リポジトリに接続します。 詳細については、Azure Functions の Continuous デプロイメントに関するページを参照してください。 |
| GitHub リポジトリに接続 | 関数アプリをGitHub リポジトリに接続します。 |
| 機能URLをコピー | Azureで実行されている HTTP によってトリガーされる関数のリモート URL を取得します。 詳細については、デプロイされた関数の URL の取得に関するセクションを参照してください。 |
| Azureのサブスクリプションに新しい関数アプリを作成します。 詳細については、Azure で新しい関数アプリに |
|
| 設定の暗号化解除 | |
| 関数アプリの削除 | Azureのサブスクリプションから関数アプリを削除します。 App Service プランに他のアプリがない場合は、そのプランも削除できます。 ストレージ アカウントやリソース グループなどの他のリソースは削除されません。 すべてのリソースを削除するには、代わりにリソース グループを削除してください。 ローカル プロジェクトには影響はありません。 |
| Delete 関数 | Azureの関数アプリから既存の関数を削除します。 この削除はローカル プロジェクトに影響を与えないため、代わりに、関数をローカルで削除してから、プロジェクトを再発行することを検討してください。 |
| プロキシの削除 | Azureの関数アプリからAzure Functions プロキシを削除します。 プロキシの詳細については、「Azure Functions プロキシを使用した作業を参照してください。 |
| 設定を削除 | Azureの関数アプリ設定を削除します。 この削除は、local.settings.json ファイルの設定には影響を与えません。 |
| リポジトリの接続を解除 | Azureの関数アプリとソース管理リポジトリの間の継続的デプロイメント接続を削除します。 |
| リモート設定をダウンロード | Azureで選択した関数アプリから local.settings.json ファイルに設定をダウンロードします。 ローカル ファイルが暗号化されている場合は、復号化され、更新されて、再び暗号化されます。 2 つの場所で値が競合する設定がある場合は、続行する方法を選択するように求められます。 このコマンドを実行する前に local.settings.json ファイルに変更を必ず保存してください。 |
| 設定の編集 | Azureの既存の関数アプリ設定の値を変更します。 このコマンドは、local.settings.json ファイルの設定に影響を与えません。 |
| 設定の暗号化 | ローカル設定で 配列の個別の項目を暗号化します。 このファイルでは、 も に設定されます。これは、ローカル ランタイムが設定を使用する前に復号化することを指定します。 貴重な情報が漏洩するリスクを減らすために、ローカル設定を暗号化します。 Azureでは、アプリケーション設定は常に暗号化されて格納されます。 |
| 関数を今すぐ実行する | 管理者 API を使用して関数を手動で開始します。 このコマンドは、デバッグ中にローカルでテストする場合と、Azureで実行されている関数に対してテストする場合に使用します。 Azureの関数が起動すると、拡張機能は最初に管理者キーを自動的に取得します。これは、Azureで関数を開始するリモート管理者 API を呼び出すために使用されます。 API に送信されるメッセージの本文は、トリガーの種類によって異なります。 タイマー トリガーでは、データを渡す必要はありません。 |
| VS Codeで使用するためのプロジェクトを初期化する | 必要なVisual Studio Code プロジェクト ファイルを既存の Functions プロジェクトに追加します。 このコマンドは、Core Tools を使用して作成したプロジェクトを操作するために使用します。 |
| Azure Functions Core Tools をインストールまたは更新 | 関数をローカルで実行するために使用Azure Functions Core Tools をインストールまたは更新します。 |
| 再 デプロイ | 接続されている Git リポジトリから Azure 内の特定のデプロイにプロジェクト ファイルを再デプロイできます。 Visual Studio Codeからローカル更新プログラムを再発行するには、プロジェクトを再発行します。 |
| 設定の名前を変更 | Azureの既存の関数アプリ設定のキー名を変更します。 このコマンドは、local.settings.json ファイルの設定に影響を与えません。 Azureで設定の名前を変更したら、ローカル プロジェクトにそれらの変更をダウンロードする必要があります。 |
| 再起動 | Azureで関数アプリを再起動します。 更新をデプロイしても関数アプリが再起動されます。 |
| AzureWebJobsStorage の設定 | アプリケーション設定の値を設定します。 この設定は、Azure Functionsで必要です。 Azureで関数アプリが作成されるときに設定されます。 |
| 始める | Azureで停止した関数アプリを起動します。 |
| ストリーミングログの開始 | Azureで関数アプリのストリーミング ログを開始します。 ログ情報をほぼリアルタイムで表示する必要がある場合は、Azureのリモート トラブルシューティング中にストリーミング ログを使用します。 詳細については、「ストリーミング ログ」を参照してください。 |
| 止める | Azureで実行されている関数アプリを停止します。 |
| ログのストリーミングを停止する | Azureの関数アプリのストリーミング ログを停止します。 |
| スロット設定として切り替える | 有効になっている場合は、指定したデプロイ スロットに対してアプリケーション設定が保持されるようにします。 |
| Azure Functions Core Tools をアンインストールする | 拡張機能で必要とするAzure Functionsコアツールを削除します。 |
| ローカル設定をアップロード | local.settings.json ファイルから、Azureで選択した関数アプリに設定をアップロードします。 ローカル ファイルが暗号化されている場合は、復号化され、アップロードされて、再び暗号化されます。 2 つの場所で値が競合する設定がある場合は、続行する方法を選択するように求められます。 このコマンドを実行する前に local.settings.json ファイルに変更を必ず保存してください。 |
| 関数アプリがリポジトリに接続されているとき、特定のデプロイでの最新のコミットを表示します。 | |
| デプロイ ログの表示 | Azureの関数アプリへの特定のデプロイのログが表示されます。 |
次のステップ
Azure Functions Core Tools の詳細については、「Work with Azure Functions Core Tools」を参照>。
.NET クラス ライブラリとしての関数の開発の詳細については、Azure Functions C# 開発者向けリファレンスを参照してください。 この記事では、属性を使用して、Azure Functionsでサポートされるさまざまな種類のバインドを宣言する方法の例へのリンクも示します。