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 バインドには、すべてのバインドとトリガーで接続文字列に必須のプロパティがあります。 これらでは、その接続文字列を Microsoft.Data.SqlClient ライブラリに渡し、SqlClient ConnectionString のドキュメントの定義に従ってその接続文字列をサポートします。
重要
最適なセキュリティを実現するために、Functions と Azure SQL Database の間の接続には、マネージド ID と共に Microsoft Entra ID を使用する必要があります。 マネージド ID は、接続文字列の資格情報、サーバー名、使用されているポートなど、アプリケーションのデプロイからシークレットを排除することで、アプリの安全性を高めます。 マネージド ID の使用方法については、このチュートリアルの「 マネージド ID と SQL バインドを使用して関数アプリを Azure SQL に接続する。
注意が必要なキーワードは次のとおりです。
-
Authentication
: 関数が Microsoft Entra ID とマネージド ID を使用して Azure SQL に接続できるようにします。 詳細については、「 マネージド ID と SQL バインドを使用して関数アプリを 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 からデータを送信する