RESTful エンドポイントを使用して Azure SQL Database にデータをインポートする
Azure SQL Database を使用すると、システム ストアド プロシージャ sp_invoke_external_rest_endpoint を通じて、外部 REST エンドポイントを使用してデータをインポートできます。 任意の HTTP REST エンドポイントを SQL クエリから直接呼び出すことができるので、Azure Functions、Azure Logic Apps、Azure App Service など、さまざまなサービスと統合できます。
また、許可リスト内にない REST サービスを呼び出す場合は、Azure API Management を使用して、目的のサービスを安全に公開し、sp_invoke_external_rest_endpoint で使用できるようにすることができます。
API の使用方法を調べる
この機能が役立つ主なユース ケースとシナリオをいくつか見てみましょう。
Azure Functions でのデータ処理:
sp_invoke_external_rest_endpointを使用して、データを処理する Azure 関数を呼び出すことができます。 たとえば、複雑な計算や変換のためにデータのバッチを Azure 関数に送信し、結果をデータベースに格納し直すことができます。Cognitive Services との統合: Cognitive Services APIs を呼び出して、感情分析、画像認識、言語翻訳などのタスクを実行できます。 たとえば、Text Analytics API にテキスト データを送信して、顧客からのフィードバックを分析し、センチメント スコアをデータベースに格納することができます。
イベント ドリブン ワークフロー:
sp_invoke_external_rest_endpointを使用して、Logic Apps または Power Automate でワークフローをトリガーします。 これは、データベースの変更に基づいて、通知の送信や他のシステムのレコードの更新などのビジネス プロセスを自動化する場合に役立ちます。データ エンリッチメント: 外部 API を呼び出してデータをエンリッチします。 たとえば、REST API を呼び出して製品や顧客に関する追加情報を取得し、データをデータベースに格納することができます。
API Management:
sp_invoke_external_rest_endpointを使用して、Azure API Management によって管理される API を操作します。 これにより、複雑な統合コードを記述しなくても、さまざまな機能に既存の API を使用できます。
セキュリティで保護された API 呼び出しを実装する
REST エンドポイントでは、多くの場合、認証が必要です。これは、クエリ文字列または HTTP ヘッダーのキーと値のペアを使用して実行できます。 認証データを渡す方法を指定する DATABASE SCOPED CREDENTIALS パラメーターと共に IDENTITY を使用して、このデータを安全に格納できます。
IDENTITY パラメーターは 4 つのオプションをサポートします: HTTPEndpointHeaders、HTTPEndpointQueryString 、マネージド ID、Shared Access Signature (SAS)。
作成された DATABASE SCOPED CREDENTIAL は、@credential ストアド プロシージャの sp_invoke_external_rest_endpoint パラメーターを介して使用できます。 認証情報は、フラット JSON 形式で SECRET パラメーターを介して提供する必要があります。
CREATE DATABASE SCOPED CREDENTIAL [https://.azurewebsites.net/api/]
WITH IDENTITY = 'HTTPEndpointHeaders', SECRET = '{"x-functions-key":"<your-function-key>"}';
REST エンドポイントを呼び出す
気象情報を提供する REST API からデータをインポートするシナリオを考えてみましょう。
WeatherData、City、Temperature、Condition 列を含む Timestamp テーブルが Azure SQL Database に既にあります。
sp_invoke_external_rest_endpoint ストアド プロシージャを使用して REST API を呼び出し、テーブルにデータを挿入します。
DECLARE @response NVARCHAR(MAX);
EXEC sp_invoke_external_rest_endpoint
@method = 'GET',
@url = 'https://api.weather.com/v3/wx/conditions/current?apiKey=your_api_key&format=json',
@response = @response OUTPUT;
INSERT INTO WeatherData (City, Temperature, Condition, Timestamp)
SELECT
JSON_VALUE(@response, '$.location.city'),
JSON_VALUE(@response, '$.temperature'),
JSON_VALUE(@response, '$.weatherCondition'),
GETDATE();
REST エンドポイントの使用を検討するときは、呼び出すエンドポイントが安全であり、機密データが適切に処理されていることを確認します。 特に、大規模なデータセットや頻度の高い更新を処理する場合は、頻繁な API 呼び出しがパフォーマンスに及ぼす影響に注意してください。 また、タイムアウトや無効な応答など、API 呼び出しに関する潜在的な問題を管理するためのエラー処理を実装します。