このクイック スタートでは、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# 拡張機能。
-
Node.js 18.x 以降。
node --versionコマンドを使用して、現在のバージョンを確認してください。
Azure Functions でサポートされているバージョンの Python。 詳細については、「Python のインストール方法」を参照してください。
Visual Studio Code 用の Python 拡張機能。
- Visual Studio Code 用 の Azure Developer CLI 拡張機能 。
- Visual Studio Code 用 SQL Server (mssql) 拡張機能。
プロジェクトを初期化する
コマンド パレットから azd init コマンドを使用して、テンプレートからローカルの Azure Functions コード プロジェクトを作成できます。
Visual Studio Code で、プロジェクトを作成するフォルダーまたはワークスペースを開きます。
F1 キーを押してコマンド パレットを開き、コマンド
Azure Developer CLI (azd): Initialize App (init)を検索して実行し、[テンプレートの選択] を選択します。メッセージが表示されたら、
Azure Functions with SQL Triggers and Bindingsを検索して選択します。メッセージが表示されたら、
sqldbchangesなどの一意の環境名を入力します。
このコマンドは、 テンプレート リポジトリ からプロジェクト ファイルをプルし、現在のフォルダーまたはワークスペース内のプロジェクトを初期化します。
azd では、環境はアプリの一意のデプロイ コンテキストを維持するために使用され、複数を定義できます。 また、Azure で作成するリソース グループの名前の一部でもあります。
このコマンドは、 テンプレート リポジトリ からプロジェクト ファイルをプルし、現在のフォルダーまたはワークスペース内のプロジェクトを初期化します。
azd では、環境はアプリの一意のデプロイ コンテキストを維持するために使用され、複数を定義できます。 また、Azure で作成するリソース グループの名前の一部でもあります。
このコマンドは、 テンプレート リポジトリ からプロジェクト ファイルをプルし、現在のフォルダーまたはワークスペース内のプロジェクトを初期化します。
azd では、環境はアプリの一意のデプロイ コンテキストを維持するために使用され、複数を定義できます。 また、Azure で作成するリソース グループの名前の一部でもあります。
アプリをローカルで実行する前に、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 に指示します。
このコマンドは、ローカル コード プロジェクトには影響しません。