このクイック スタートでは、Visual Studio Code を使用して、Azure SQL Database テーブルの変更に応答するアプリを構築します。 コードをローカルでテストした後、Azure Functions の Flex Consumption プランで実行されている新しいサーバーレス関数アプリにコードをデプロイします。
プロジェクト ソースでは、Visual Studio Code で Azure Developer CLI (azd) 拡張機能を使用して、プロジェクト コードのローカルでの初期化と検証、および Azure へのコードのデプロイを簡略化します。 このデプロイは、セキュリティで保護されたスケーラブルな Azure Functions デプロイの最新のベスト プラクティスに従います。
Important
Azure SQL データベースの変更への対応はすべての言語でサポートされていますが、このクイック スタート シナリオには現在、C#、Python、TypeScript の例しかありません。 このクイック スタートを完了するには、この記事の上部にあるサポートされている言語のいずれかを選択します。
[前提条件]
アクティブなサブスクリプションを持つ Azure アカウント。 無料でアカウントを作成できます。
Visual Studio Code を 対応プラットフォーム のいずれかで使用する。
Visual Studio Code 用 Azure Functions 拡張機能。 この拡張機能には 、Azure Functions Core Tools が必要です。 このツールをローカルで使用できない場合、拡張機能はパッケージ ベースのインストーラーを使用してインストールを試みます。 コマンド パレットから
Azure Functions: Install or Update Azure Functions Core Toolsを実行して、Core Tools パッケージをインストールまたは更新することもできます。 ローカル コンピューターに npm または Homebrew がインストールされていない場合は、代わりに Core Tools を手動でインストールまたは更新する必要があります。
Visual Studio Code 用の C# 拡張機能。
-
- 別のサポートされているバージョンのJavaを使用する場合は、プロジェクト構成を更新する必要があります。
-
JAVA_HOME環境変数を、Java Development Kit (JDK) の正しいバージョンのインストール場所に設定します。
-
Node.js 22.x 以上です。
node --versionコマンドを使用して、現在のバージョンを確認してください。
Visual Studio Code の
PowerShell 拡張機能。
Azure Functions でサポートされているバージョンの Python。 詳細については、「Python のインストール方法」を参照してください。
Visual Studio Code 用の Python 拡張機能。
- Visual Studio Code 用 の Azure Developer CLI 拡張機能 。
- Visual Studio Code 用 SQL Server (mssql) 拡張機能。
プロジェクトを初期化する
Azure Developer CLI (azd) を使用して、テンプレートからローカル Azure Functions コード プロジェクトを作成します。
ターミナルから次の
azd initコマンドを実行して、テンプレートからローカル プロジェクトを作成します。azd init --template functions-quickstart-dotnet-azd-sql -e sqldbchangesこのコマンドは、template リポジトリからプロジェクト ファイルをプルし、新しいフォルダー内のプロジェクトを初期化します。
azdでは、環境はアプリの一意のデプロイ コンテキストを維持するために使用され、複数を定義できます。 また、Azure で作成するリソース グループの名前の一部でもあります。プロジェクト ディレクトリに移動します。
cd functions-quickstart-dotnet-azd-sql
ターミナルから次の
azd initコマンドを実行して、テンプレートからローカル プロジェクトを作成します。azd init --template functions-quickstart-python-azd-sql -e sqldbchangesこのコマンドは、template リポジトリからプロジェクト ファイルをプルし、新しいフォルダー内のプロジェクトを初期化します。
azdでは、環境はアプリの一意のデプロイ コンテキストを維持するために使用され、複数を定義できます。 また、Azure で作成するリソース グループの名前の一部でもあります。プロジェクト ディレクトリに移動します。
cd functions-quickstart-python-azd-sql
ターミナルから次の
azd initコマンドを実行して、テンプレートからローカル プロジェクトを作成します。azd init --template functions-quickstart-typescript-azd-sql -e sqldbchangesこのコマンドは、template リポジトリからプロジェクト ファイルをプルし、新しいフォルダー内のプロジェクトを初期化します。
azdでは、環境はアプリの一意のデプロイ コンテキストを維持するために使用され、複数を定義できます。 また、Azure で作成するリソース グループの名前の一部でもあります。プロジェクト ディレクトリに移動します。
cd functions-quickstart-typescript-azd-sql
ローカル オペレーティング システムに応じて、次のコマンドを実行して、構成スクリプトに必要なアクセス許可を付与します。
十分な特権で次のコマンドを実行します。
chmod +x ./infra/scripts/*.shVisual Studio Code でプロジェクトを開きます。
code .
アプリをローカルで実行する前に、Azure でリソースを作成する必要があります。
Azure リソースを作成する
このプロジェクトは、 azd provision コマンドを使用して、Flex Consumption プランで関数アプリを作成し、現在のベスト プラクティスに従うその他の必要な Azure リソースを作成するように構成されています。
Visual Studio Code で F1 キーを押してコマンド パレットを開き、コマンド
Azure Developer CLI (azd): Sign In with Azure Developer CLIを検索して実行し、Azure アカウントを使用してサインインします。F1 キーを押してコマンド パレットを開き、コマンド
Azure Developer CLI (azd): Provision Azure resources (provision)を検索して実行し、必要な Azure リソースを作成します。ターミナル ウィンドウでメッセージが表示されたら、次の必須のデプロイ パラメーターを指定します。
Prompt Description 使用する Azure サブスクリプションを選択する リソースを作成するサブスクリプションを選択します。 location deployment パラメーター 新しい Azure リソースを含むリソース グループを作成する Azure リージョン。 現在、Flex 従量課金プランをサポートしているリージョンのみが表示されます。 vnetEnabled デプロイ パラメーター テンプレートは仮想ネットワーク内でのリソースの作成をサポートしていますが、デプロイとテストを簡略化するために、 Falseを選択します。
azd provision コマンドは、最新のベスト プラクティスに従って、これらのプロンプトに対する応答と Bicep 構成ファイルを使用して、これらの必要な Azure リソースを作成および構成します。
- Flex 従量課金プランと関数アプリ
- Azure SQL Database (既定の名前: ToDo)
- Azure Storage (必須) と Application Insights (推奨)
- アカウントのアクセス ポリシーとロール
- マネージド ID を使用したサービス間接続 (格納されている接続文字列の代わり)
プロビジョニング後のフックでは、ローカルで実行するために必要な local.settings.json ファイルも生成されます。 このファイルには、Azure のデータベースに接続するために必要な設定が含まれています。
コードの確認 (省略可能)
このサンプルでは、次の 2 つの関数を定義します。
| 関数名 | コード ファイル | トリガーの種類 | Description |
|---|---|---|---|
httptrigger-sql-output |
sql_output_http_trigger.cs | HTTP トリガー | 適切に書式設定された JSON ペイロードを受け入れ、SQL 出力バインドを使用して、 ToDo テーブルに行としてオブジェクトを挿入します。 |
ToDoTrigger |
sql_trigger.cs | SQL トリガー |
ToDo テーブルで行レベルの変更をリッスンし、変更された行を表すオブジェクトを返します。 |
ToDoItem型は、ToDoItem.csで定義されます。
| 関数名 | コード ファイル | トリガーの種類 | Description |
|---|---|---|---|
http_trigger_sql_output |
function_app.py | HTTP トリガー | 適切に書式設定された JSON ペイロードを受け入れ、SQL 出力バインドを使用して、 ToDo テーブルに行としてオブジェクトを挿入します。 |
httptrigger-sql-output |
sql_trigger_todo | SQL トリガー |
ToDo テーブルで行レベルの変更をリッスンし、変更された行を表すオブジェクトを返します。 |
ToDoItem型は、todo_item.pyで定義されます。
| 関数名 | コード ファイル | トリガーの種類 | Description |
|---|---|---|---|
httpTriggerSqlOutput |
sql_output_http_trigger.ts | HTTP トリガー | 適切に書式設定された JSON ペイロードを受け入れ、SQL 出力バインドを使用して、 ToDo テーブルに行としてオブジェクトを挿入します。 |
sqlTriggerToDo |
sql_trigger.ts | SQL トリガー |
ToDo テーブルで行レベルの変更をリッスンし、変更された行を表すオブジェクトを返します。 |
ToDoItem型は、ToDoItem.tsで定義されます。
どちらの関数も、Microsoft Entra ID 認証を使用して Azure SQL Database インスタンスへの ID ベースの接続を定義するアプリ レベルの AZURE_SQL_CONNECTION_STRING_KEY_* 環境変数を使用します。 これらの環境変数は、 azd provision 操作中に Azure (関数アプリの設定) とローカル (local.settings.json) の両方で自動的に作成されます。
SQL データベースに接続する
Visual Studio Code の SQL Server (mssql) 拡張機能を使用して、新しいデータベースに接続できます。 この拡張機能は、SQL トリガー関数を実行するために、 ToDo テーブルで更新を行うのに役立ちます。
F1 キーを押し、コマンド パレットでコマンド
MS SQL: Add Connectionを検索して実行します。[ 接続] ダイアログで、[ 入力の種類 ] を [ Azure の参照 ] に変更し、残りのオプションを設定します。
Option 選択 Description サーバー あなたのSQL Server インスタンス 既定では、Azure アカウントからアクセスできるすべてのサーバーが表示されます。 サブスクリプション、リソース グループ、および場所を使用して、サーバーの一覧をフィルター処理します。 データベース ToDoプロビジョニング プロセス中に作成されたデータベース。 認証の種類 Microsoft Entra ID まだサインインしていない場合 は、[サインイン ] を選択して Azure アカウントにサインインします。 テナント ID 特定のアカウントのテナント。 アカウントに複数のテナントがある場合は、サブスクリプションに適したテナントを選択します。 [ 接続 ] を選択してデータベースに接続します。 接続ではローカル ユーザー アカウントが使用されます。このアカウントには、ホスティング サーバーの管理者アクセス許可が付与され、データベース内の
dboにマップされます。SQL Server ビューで、接続を見つけて展開し、その後、SQL Server エクスプローラーで新しいサーバーを見つけて展開します。 [ テーブル] を展開し、
ToDoテーブルが存在することを確認します。 存在しない場合は、azd provisionをもう一度実行し、エラーを確認する必要があります。
関数をローカルで実行する
Visual Studio Code は Azure Functions Core ツール と統合され、Azure で新しい関数アプリに発行する前に、ローカル開発コンピューターでこのプロジェクトを実行できます。
F1 キーを押し、コマンド パレットでコマンド
Azurite: Startを検索して実行します。関数をローカルで開始するには、F5 キーまたは、左側のアクティビティ バーの [実行とデバッグ] アイコンを押します。
ターミナル パネルに、Core Tools からの出力が表示されます。 アプリは ターミナル パネルで起動し、ローカルで実行されている関数の名前を確認できます。
アプリを実行すると、両方の関数トリガーを検証およびデバッグできます。
SQL 出力バインドに書き込む HTTP トリガー関数を確認するには:
この JSON オブジェクトをコピーします。これは、
test.httpプロジェクト ファイルでも確認できます。{ "id": "11111111-1111-1111-1111-111111111111", "order": 1, "title": "Test Todo Item", "url": "https://example.com", "completed": false }このデータは、HTTP エンドポイントを呼び出すときに SQL データベースに挿入する行を表します。 出力バインドは、データ オブジェクトをデータベース内の
INSERT操作に変換します。アプリが実行されている状態で、 Azure ビューの [ワークスペース ] で [ ローカル プロジェクト>Functions] を展開します。
HTTP 関数を右クリック (または macOS では Ctrl キーを押しながらクリック) し、[ 関数の実行] を選択し、コピーした JSON データを貼り付けて、 Enter キーを押します。
この関数は HTTP 要求を処理し、接続された SQL データベースに項目を書き込み、作成されたオブジェクトを返します。
SQL Server エクスプローラーに戻り、
ToDoテーブルを右クリックし (macOS では Ctrl キーを押しながらクリック)、[ 上位 1000 の選択] を選択します。 クエリを実行すると、挿入または更新された行が返されます。手順 3. を繰り返し、同じ ID の同じデータ オブジェクトを再送信します。 今回、出力バインドは
UPDATEではなくINSERT操作を実行し、データベース内の既存の行を変更します。
完了したら、ターミナルに 「Ctrl+C 」と入力して Core Tools プロセスを停止します。
Azure にデプロイ
Visual Studio Code から azd deploy コマンドを実行して、Azure で既にプロビジョニングされているリソースにプロジェクト コードをデプロイできます。
F1 キーを押してコマンド パレットを開き、コマンド
Azure Developer CLI (azd): Deploy to Azure (deploy)を検索して実行します。azd deployコマンドは、コードをパッケージし、デプロイ コンテナーにデプロイします。 その後、アプリが起動し、デプロイされたパッケージで実行されます。コマンドが正常に完了すると、アプリは Azure で実行されます。
Endpoint値 (Azure で実行されている関数アプリの URL) を書き留めます。
Azure 上の関数を呼び出す
Visual Studio Code で F1 キーを押し、コマンド パレットでコマンド
Azure: Open in portalを検索して実行し、Function appを選択して、新しいアプリを選択します。 必要に応じて、Azure アカウントでサインインします。左側のウィンドウで [ ログ ストリーム ] を選択すると、アプリの Application Insights ログに接続されます。
Visual Studio Code に戻り、Azure で両方の関数を実行します。
F1 キーを押してコマンド パレットを開き、コマンド
Azure Functions: Execute Function Now...を検索して実行します。一覧からリモート関数アプリを検索して選択し、HTTP トリガー関数を選択します。
前と同様に、JSON オブジェクト データを Enter ペイロード本文 に貼り付けて、 Enter キーを押します。
{ "id": "11111111-1111-1111-1111-111111111111", "order": 1, "title": "Test Todo Item", "url": "https://example.com", "completed": false }INSERTではなくUPDATEを実行するには、idを新しい GUID 値に置き換えます。ポータルに戻り、ログ ウィンドウで実行出力を表示します。
リソースをクリーンアップする
関数アプリと関連リソースの操作が完了したら、次のコマンドを使用して関数アプリとその関連リソースを Azure から削除し、それ以上のコストが発生しないようにすることができます。
azd down --no-prompt
注
--no-prompt オプションは、確認なしでリソース グループを削除するように azd に指示します。
このコマンドは、ローカル コード プロジェクトには影響しません。