次の方法で共有


Azure Data FactoryまたはAzure Synapse Analyticsを使用して HTTP エンドポイントからデータをコピーする

適用対象: Azure Data Factory Azure Synapse Analytics

ヒント

Data Factory in Microsoft Fabric は、よりシンプルなアーキテクチャ、組み込みの AI、および新機能を備えた次世代のAzure Data Factoryです。 データ統合を初めて使用する場合は、Fabric Data Factory から始めます。 既存の ADF ワークロードをFabricにアップグレードして、データ サイエンス、リアルタイム分析、レポートの新機能にアクセスできます。

この記事では、Azure Data FactoryとAzure Synapseでコピー アクティビティを使用して HTTP エンドポイントからデータをコピーする方法について説明します。 この記事は、Copy アクティビティの概要を説明する Copy アクティビティに関する記事に基づいています。

この HTTP コネクタ、REST コネクタおよび Web テーブル コネクタの違いは次のとおりです。

  • REST コネクタでは、具体的には RESTful API からのデータのコピーがサポートされます。
  • HTTP コネクタでは一般的に、HTTP エンドポイントからデータを取得します (たとえば、ファイルをダウンロードします)。 REST コネクタが使用可能になる前に、HTTP コネクタを使用して RESTful API からデータをコピーする場合があります。これはサポートされますが、REST コネクタと比べると機能は低くなります。
  • Web テーブル コネクタでは、HTML Web ページからテーブルの内容を抽出します。

サポートされる機能

この HTTP コネクタは、次の機能でサポートされます。

サポートされる機能 IR
コピー アクティビティ (ソース/-) (1) (2)
ルックアップ アクティビティ (1) (2)

(1) Azure統合ランタイム (2) セルフホステッド統合ランタイム

ソースおよびシンクとしてサポートされているデータ ストアの一覧については、「サポートされているデータ ストア」を参照してください。

この HTTP コネクタは、以下のために使用できます。

  • HTTP の GET または POST メソッドを使用して、HTTP/S エンドポイントからデータを取得する。
  • 次のいずれかの認証を使用してデータを取得します:AnonymousBasicDigestWindows、または ClientCertificate
  • HTTP 応答をそのままコピーするか、サポートされているファイル形式と圧縮コーデックを使用して解析する。

ヒント

HTTP コネクタを構成する前に、データ取得のために HTTP 要求をテストするには、ヘッダーおよび本文の要件に関する API 仕様を確認してください。 検証には、Visual Studio、PowerShell の Invoke-RestMethod、Web ブラウザーなどのツールを使用できます。

前提条件

データ ストアがオンプレミス ネットワーク、Azure仮想ネットワーク、または Amazon Virtual Private Cloud 内にある場合は、自身がホストする統合ランタイム を構成して接続する必要があります。

データ ストアがマネージド クラウド データ サービスの場合は、Azure Integration Runtimeを使用できます。 アクセスがファイアウォール規則で承認されている IP に制限されている場合は、許可リストに Azure Integration Runtime IP を追加できます。

Azure Data Factoryの 管理された仮想ネットワーク統合ランタイム機能を使用して、セルフホステッド統合ランタイムをインストールして構成することなく、オンプレミス ネットワークにアクセスすることもできます。

Data Factory によってサポートされるネットワーク セキュリティ メカニズムやオプションの詳細については、「データ アクセス戦略」を参照してください。

概要

パイプラインでコピー アクティビティを実行するには、次のいずれかのツールまたは SDK を使用できます。

UI を使用して HTTP ソースのリンク サービスを作成する

Azure ポータル UI で HTTP ソースへのリンクされたサービスを作成するには、次の手順に従います。

  1. Azure Data Factoryまたは Synapse ワークスペースの [管理] タブを参照し、[リンクされたサービス] を選択し、[新規] をクリックします。

    Azure Data Factory UI を使用した新しいリンク サービスの作成のスクリーンショット

  2. HTTP を検索し、HTTP コネクタを選択します。

    HTTP コネクタのスクリーンショット。

  3. サービスの詳細を構成し、接続をテストして、新しいリンク サービスを作成します。

    HTTP のリンク サービスの構成のスクリーンショット。

コネクタの構成の詳細

以下のセクションでは、HTTP コネクタに固有のエンティティの定義に使用できるプロパティについて詳しく説明します。

リンクされたサービスのプロパティ

HTTP のリンクされたサービスでは、次のプロパティがサポートされます。

プロパティ 内容 必須
type プロパティを HttpServer に設定する必要があります。 はい
url Web サーバーへのベース URL はい
サーバー証明書の検証を有効にする HTTP エンドポイントに接続するときに、サーバーの TLS/SSL 証明書の検証を有効にするかどうかを指定します。 HTTPS サーバーが自己署名証明書を使用している場合は、このプロパティを false に設定します。 いいえ
(既定値は true です)。
認証タイプ 認証の種類を指定します。 使用できる値は AnonymousBasicDigestWindows、および ClientCertificateauthHeader プロパティで認証ヘッダーを追加で構成することもできます。 このような認証の種類のその他のプロパティと JSON サンプルについては、この表の後のセクションを参照してください。 はい
authHeaders (認証ヘッダー) 追加の認証用 HTTP 要求ヘッダー。
たとえば、API キー認証を使うには、認証の種類として "匿名" を選択し、ヘッダーに API キーを指定します。
いいえ
connectVia データ ストアへの接続に使用するIntegration Runtime。 詳細については、「前提条件」セクションを参照してください。 指定しない場合は、既定のAzure Integration Runtimeが使用されます。 いいえ

Basic、Digest、または Windows 認証 の使用

authenticationType プロパティを Basic, Digest, or Windows に設定します。 前のセクションで説明した汎用的なプロパティに加えて、次のプロパティを指定します。

プロパティ 内容 必須
userName HTTP エンドポイントにアクセスするために使用するユーザー名。 はい
パスワード ユーザー (userName 値) のパスワード。 安全に保存するには、このフィールドを SecureString 型としてマークします。 Azure Key Vaultに格納されているシークレットを参照することもできます。 はい

{
    "name": "HttpLinkedService",
    "properties": {
        "type": "HttpServer",
        "typeProperties": {
            "authenticationType": "Basic",
            "url" : "<HTTP endpoint>",
            "userName": "<user name>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

クライアント証明書認証の使用

ClientCertificate 認証を使用するには、authenticationType プロパティを ClientCertificate に設定します。 前のセクションで説明した汎用的なプロパティに加えて、次のプロパティを指定します。

プロパティ 内容 必須
embeddedCertData Base64 でエンコードされた証明書データ。 embeddedCertData または certThumbprint のいずれかを指定します。
certThumbprint 自己ホスト Integration Runtime コンピューターの証明書ストアにインストールされている証明書のフィンガープリント。 Integration Runtimeのセルフホステッド型が connectVia プロパティで指定されている場合にのみ適用されます。 embeddedCertData または certThumbprint のいずれかを指定します。
パスワード 証明書に関連付けられているパスワード。 安全に保存するには、このフィールドを SecureString 型としてマークします。 Azure Key Vaultに格納されているシークレットを参照することもできます。 いいえ

認証に certThumbprint を使用し、証明書がローカル コンピューターの個人用ストアにインストールされている場合は、セルフホステッド Integration Runtimeに読み取りアクセス許可を付与します。

  1. Microsoft 管理コンソール (MMC) を開きます。 ローカル コンピューターを対象とする [証明書] スナップインを追加します。
  2. [証明書]>[個人] を展開し、 [証明書] を選択します。
  3. 個人用ストアの証明書を右クリックし、 [すべてのタスク]>[秘密キーの管理] の順に選択します。
  4. Security タブで、Integration Runtime ホスト サービス (DIAHostService) が実行されているユーザー アカウントを追加し、証明書への読み取りアクセスを許可します。
  5. HTTP コネクタは、信頼できる証明書のみを読み込みます。 自己署名証明書または統合されていない CA 発行の証明書を使用している場合、信頼を有効にするには、次のいずれかのストアに証明書もインストールする必要があります。
    • 信頼されたユーザー
    • [サード パーティ ルート証明機関]
    • 信頼されたルート証明機関

例 1: certThumbprint の使用

{
    "name": "HttpLinkedService",
    "properties": {
        "type": "HttpServer",
        "typeProperties": {
            "authenticationType": "ClientCertificate",
            "url": "<HTTP endpoint>",
            "certThumbprint": "<thumbprint of certificate>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

例 2: embeddedCertData の使用

{
    "name": "HttpLinkedService",
    "properties": {
        "type": "HttpServer",
        "typeProperties": {
            "authenticationType": "ClientCertificate",
            "url": "<HTTP endpoint>",
            "embeddedCertData": "<Base64-encoded cert data>",
            "password": {
                "type": "SecureString",
                "value": "password of cert"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

認証ヘッダーの使用

また、組み込みの認証の種類と共に、認証用の要求ヘッダーを構成できます。

例: API キー認証の使用

{
    "name": "HttpLinkedService",
    "properties": {
        "type": "HttpServer",
        "typeProperties": {
            "url": "<HTTP endpoint>",
            "authenticationType": "Anonymous",
            "authHeader": {
                "x-api-key": {
                    "type": "SecureString",
                    "value": "<API key>"
                }
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

データセットのプロパティ

データセットを定義するために使用できるセクションとプロパティの完全な一覧については、データセットに関する記事をご覧ください。

Azure Data Factoryでは、次のファイル形式がサポートされています。 形式ベースの設定については、各記事を参照してください。

HTTP では、形式ベースのデータセットの location 設定において、次のプロパティがサポートされています。

プロパティ 内容 必須
データセットの location の type プロパティは、HttpServerLocation に設定する必要があります。 はい
relativeUrl データを含むリソースへの相対 URL。 HTTP コネクタは、次の結合された URL からデータをコピーします。[URL specified in linked service][relative URL specified in dataset] いいえ

Note

サポートされる HTTP 要求のペイロード サイズは約 500 KB です。 Web エンドポイントに渡すペイロード サイズが 500 KB を超える場合は、より小さなチャンクにペイロードをまとめることを検討してください。

例:

{
    "name": "DelimitedTextDataset",
    "properties": {
        "type": "DelimitedText",
        "linkedServiceName": {
            "referenceName": "<HTTP linked service name>",
            "type": "LinkedServiceReference"
        },
        "schema": [ < physical schema, optional, auto retrieved during authoring > ],
        "typeProperties": {
            "location": {
                "type": "HttpServerLocation",
                "relativeUrl": "<relative url>"
            },
            "columnDelimiter": ",",
            "quoteChar": "\"",
            "firstRowAsHeader": true,
            "compressionCodec": "gzip"
        }
    }
}

コピー アクティビティのプロパティ

このセクションでは、HTTP ソースでサポートされているプロパティの一覧を示します。

アクティビティの定義に利用できるセクションとプロパティの完全な一覧については、パイプラインに関する記事を参照してください。

ソースとしての HTTP

Azure Data Factoryでは、次のファイル形式がサポートされています。 形式ベースの設定については、各記事を参照してください。

HTTP では、形式ベースのコピー ソースの storeSettings 設定において、次のプロパティがサポートされています。

プロパティ 内容 必須
storeSettings の type プロパティは HttpReadSettings に設定する必要があります。 はい
requestMethod HTTP メソッド。
使用できる値は、Get (既定値) と Post です。
いいえ
additionalHeaders 追加の HTTP 要求ヘッダー。 いいえ
requestBody HTTP 要求の本文。 いいえ
HTTPリクエストタイムアウト HTTP 要求が応答を取得する際のタイムアウト (TimeSpan 値)。 この値は、応答データの読み取りのタイムアウトではなく、応答の取得のタイムアウトです。 既定値は 00:01:40 です。 いいえ
最大同時接続数(maxConcurrentConnections) アクティビティの実行中にデータ ストアに対して確立されたコンカレント接続数の上限。 コンカレント接続を制限する場合にのみ、値を指定します。 いいえ

例:

"activities":[
    {
        "name": "CopyFromHTTP",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Delimited text input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "DelimitedTextSource",
                "formatSettings":{
                    "type": "DelimitedTextReadSettings",
                    "skipLineCount": 10
                },
                "storeSettings":{
                    "type": "HttpReadSettings",
                    "requestMethod": "Post",
                    "additionalHeaders": "<header key: header value>\n<header key: header value>\n",
                    "requestBody": "<body for POST HTTP request>"
                }
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Lookup アクティビティのプロパティ

プロパティの詳細については、Lookup アクティビティに関するページを参照してください。

レガシ モデル

Note

次のモデルは、下位互換性のために引き続きそのままサポートされます。 今後は、上記のセクションで説明した新しいモデルを使用することをお勧めします。作成 UI は、新しいモデルを生成するように切り替えられています。

レガシ データセット モデル

プロパティ 内容 必須
データセットの type プロパティを HttpFile に設定する必要があります。 はい
relativeUrl データを含むリソースへの相対 URL。 このプロパティが指定されていない場合は、リンクされたサービス定義に指定されている URL のみが使用されます。 いいえ
requestMethod HTTP メソッド。 使用できる値は、Get (既定値) と Post です。 いいえ
additionalHeaders 追加の HTTP 要求ヘッダー。 いいえ
requestBody HTTP 要求の本文。 いいえ
フォーマット データを解析せずにデータを HTTP エンドポイントからそのまま取得し、ファイル ベースのストアにデータをコピーする場合は、入力と出力の両方のデータセット定義で format セクションをスキップします。

コピー中に HTTP 応答の内容を解析する場合に、サポートされるファイル形式の種類は、TextFormatJsonFormatAvroFormatOrcFormatParquetFormatformattype プロパティをいずれかの値に設定します。 詳細については、JSON 形式Text 形式Avro 形式Orc 形式Parquet 形式の各セクションを参照してください。
いいえ
圧縮 データの圧縮の種類とレベルを指定します。 詳細については、サポートされるファイル形式と圧縮コーデックに関する記事を参照してください。

サポートされる種類は、GZipDeflateBZip2ZipDeflate です。
サポートされるレベルは、OptimalFastest です。
いいえ

Note

サポートされる HTTP 要求のペイロード サイズは約 500 KB です。 Web エンドポイントに渡すペイロード サイズが 500 KB を超える場合は、より小さなチャンクにペイロードをまとめることを検討してください。

例 1: Get メソッド (既定値) を使用する

{
    "name": "HttpSourceDataInput",
    "properties": {
        "type": "HttpFile",
        "linkedServiceName": {
            "referenceName": "<HTTP linked service name>",
            "type": "LinkedServiceReference"
        },
        "typeProperties": {
            "relativeUrl": "<relative url>",
            "additionalHeaders": "Connection: keep-alive\nUser-Agent: Mozilla/5.0\n"
        }
    }
}

例 2: Post メソッドを使用する

{
    "name": "HttpSourceDataInput",
    "properties": {
        "type": "HttpFile",
        "linkedServiceName": {
            "referenceName": "<HTTP linked service name>",
            "type": "LinkedServiceReference"
        },
        "typeProperties": {
            "relativeUrl": "<relative url>",
            "requestMethod": "Post",
            "requestBody": "<body for POST HTTP request>"
        }
    }
}

レガシ コピー アクティビティ ソース モデル

プロパティ 内容 必須
コピー アクティビティのソースの type プロパティを HttpSource に設定する必要があります。 はい
HTTPリクエストタイムアウト HTTP 要求が応答を取得する際のタイムアウト (TimeSpan 値)。 この値は、応答データの読み取りのタイムアウトではなく、応答の取得のタイムアウトです。 既定値は 00:01:40 です。 いいえ

"activities":[
    {
        "name": "CopyFromHTTP",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<HTTP input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "HttpSource",
                "httpRequestTimeout": "00:01:00"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

コピー アクティビティでソースおよびシンクとしてサポートされているデータ ストアの一覧については、「サポートされるデータ ストアと形式」を参照してください。