Azure Functions における Azure SQL バインドの概要
この一連の記事では、Azure Functions で Azure SQL バインドを操作する方法について説明します。 Azure Functions では、Azure SQL および SQL Server 製品の入力バインディング、出力バインディング、関数トリガーがサポートされています。
アクション | Type |
---|---|
SQL テーブルで変更が検出されたときに関数をトリガーする | SQL トリガー |
データベースからデータを読み取る | 入力バインド |
データベースにデータを保存する | 出力バインド |
拡張機能のインストール
インストールする拡張機能 NuGet パッケージは、関数アプリで使用している C# モードによって異なります。
関数は分離された C# ワーカー プロセスで実行されます。 詳しくは、「分離ワーカー プロセスにおける C# Azure Functions の実行のガイド」をご覧ください。
この NuGet パッケージをインストールすることによって、プロジェクトに拡張機能を追加します。
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Sql
Microsoft.Azure.Functions.Worker.Extensions.Sql パッケージのプレビュー バージョンを使用するには、コマンドに --prerelease
フラグを追加します。 プレビュー機能は、 Azure Functions SQL 拡張機能のリリース ページで確認できます。
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Sql --prerelease
Note
Azure Functions の Azure SQL バインドのプレビュー リリース間の破壊的変更には、同じデータベースを対象とするすべての Functions で同じバージョンの SQL 拡張機能パッケージが使用されている必要があります。
バンドルのインストール
SQL バインド拡張機能は、host.json プロジェクト ファイルで指定される v4 の拡張機能バンドルの一部です。
拡張機能バンドルは、host.json
ファイル内の次のコードで指定されます。
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.*, 5.0.0)"
}
}
Functions ランタイム
バンドルのインストール
SQL バインド拡張機能は、host.json プロジェクト ファイルで指定される v4 の拡張機能バンドルの一部です。
拡張機能バンドルは、host.json
ファイル内の次のコードで指定されます。
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.*, 5.0.0)"
}
}
バンドルのインストール
SQL バインド拡張機能は、host.json プロジェクト ファイルで指定される v4 の拡張機能バンドルの一部です。
拡張機能バンドルは、host.json
ファイル内の次のコードで指定されます。
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.*, 5.0.0)"
}
}
パッケージの更新
次のスニペットに示すように、Java Azure Functions プロジェクトの pom.xml
ファイルを更新して、Functions プロジェクトに SQL バインド用の Java ライブラリを追加します。
<dependency>
<groupId>com.microsoft.azure.functions</groupId>
<artifactId>azure-functions-java-library-sql</artifactId>
<version>2.1.0</version>
</dependency>
次のスニペットに示すように、Java Azure Functions プロジェクトの pom.xml
ファイルを更新して、プレビュー拡張機能バンドルを使用できます。
<dependency>
<groupId>com.microsoft.azure.functions</groupId>
<artifactId>azure-functions-java-library-sql</artifactId>
<version>2.1.0-preview</version>
</dependency>
SQL 接続文字列
重要
azure Functions を使用して Azure SQL Database にアクセスするには、 管理 ID を使用することを強くお勧めします。 マネージド ID は、接続文字列の資格情報、サーバー名、使用されているポートなど、アプリケーションのデプロイからシークレットを排除することで、アプリの安全性を高めます。 マネージド ID の使用方法については、このチュートリアルの「 マネージド ID と SQL バインドを使用して関数アプリを Azure SQL に接続する。
Azure Functions の Azure SQL バインドには、すべてのバインドとトリガーで接続文字列に必須のプロパティがあります。 これらでは、その接続文字列を Microsoft.Data.SqlClient ライブラリに渡し、SqlClient ConnectionString のドキュメントの定義に従ってその接続文字列をサポートします。 注意が必要なキーワードは次のとおりです。
Authentication
を使用すると、関数で、Active Directory マネージド ID を含む Microsoft Entra の ID を使用して Azure SQL に接続できますCommand Timeout
を使用すると、関数で、指定された秒数 (既定値は 30 秒) だけ待ってから、クエリを終了できますConnectRetryCount
を使用すると、関数で、追加の再接続を自動的に試みることができます。特に、Azure SQL Database サーバーレス レベル (既定値は 1) に適用されますPooling
を使用すると関数はデータベースへの接続を再利用でき、パフォーマンスを向上させることができます (既定値true
)。 接続プールのその他の設定には、Connection Lifetime
、Max Pool Size
、Min Pool Size
があります。 ADO.NET のドキュメントで接続プールについて詳しく学ぶ
考慮事項
- Azure SQL バインドでは、バージョン 4.x 以降の Functions ランタイムがサポートされます。
- Azure SQL バインドのソース コードは、こちらの GitHub リポジトリにあります。
- このバインドでは、Azure SQL または SQL Server データベースに接続する必要があります。
- データ型
NTEXT
、TEXT
、IMAGE
の列を持つテーブルに対する出力バインディングはサポートされておらず、データのアップサートは失敗します。 これらの型は将来のバージョンの SQL Server で削除され、この Azure Functions バインドで使用されるOPENJSON
関数とは互換性がありません。 - ユーザー名とパスワードの代わりに管理 ID を使用します。
- Azure キー値を使用してアプリケーションの設定を格納します。
サンプル
Azure SQL バインド GitHub リポジトリで利用できる C#、Java、JavaScript、PowerShell、Python のサンプルに加えて、Azure のサンプルではさらに多くのものを利用できます。
- Azure SQL バインドを使用した C# ToDo API サンプル
- Azure Stream Analytics でSQL バインドを使用する
- Python を使用して Azure SQL からデータを送信する