次の方法で共有


データをコピーし、成功および失敗に関するメール通知を送信する

適用対象: Azure Data Factory Azure Synapse Analytics

ヒント

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

このチュートリアルでは、いくつかの制御フロー機能を紹介する Data Factory パイプラインを作成します。 このパイプラインは、Azure Blob Storage内のコンテナーから同じストレージ アカウント内の別のコンテナーへの単純なコピーを実行します。 コピー アクティビティが成功した場合、成功したコピー操作の詳細 (書き込まれたデータの量など) がパイプラインによって成功電子メールで送信されます。 コピー アクティビティが失敗した場合、コピー失敗の詳細 (エラー メッセージなど) がパイプラインによって失敗電子メールで送信されます。 チュートリアル全体を通じて、パラメーターを渡す方法が示されます。

シナリオの概要: Diagram はAzure Blob Storageを示しています。これはコピーのターゲットであり、成功した場合は詳細を含む電子メールを送信するか、失敗した場合はエラーの詳細を含む電子メールを送信します。

このチュートリアルでは、以下の手順を実行します。

  • データ ファクトリを作成します。
  • Azure Storageリンクされたサービスを作成します。
  • Azure BLOB データセットを作成する
  • Copy アクティビティと Web アクティビティを含むパイプラインを作成する
  • アクティビティの出力を後続のアクティビティに送信します。
  • パラメーターの引き渡しとシステム変数を利用します。
  • パイプラインの実行を開始します。
  • パイプラインとアクティビティの実行を監視します。

このチュートリアルでは、Azureポータルを使用します。 他のメカニズムを使用してAzure Data Factoryを操作できます。目次の「クイック スタート」を参照してください。

前提条件

  • Azure サブスクリプション。 Azure サブスクリプションをお持ちでない場合は、開始する前に free アカウントを作成してください。
  • Azure Storage アカウント。 BLOB ストレージをソース データ ストアとして使用します。 Azureストレージ アカウントがない場合は、ストレージ アカウントの作成に関する記事を参照してください。
  • Azure SQL Database。 データベースをシンク データ ストアとして使用します。 Azure SQL Databaseにデータベースがない場合は、 Azure SQL Databaseに関する記事を参照してください。

BLOB テーブルを作成する

  1. メモ帳を起動します。 次のテキストをコピーし、input.txt ファイルとしてディスクに保存します。

    John,Doe
    Jane,Doe
    
  2. Azure Storage Explorer次の手順を実行します。

    1. adfv2branch コンテナーを作成します。
    2. adfv2branch コンテナーに input フォルダーを作成します。
    3. input.txt ファイルをコンテナーにアップロードします。

電子メール ワークフロー エンドポイントを作成する

パイプラインからの電子メールの送信をトリガーするには、Azure Logic Apps を使用してワークフローを定義します。 ロジック アプリ ワークフローの作成の詳細については、「従量課金ロジック アプリ ワークフローの例を作成する」を参照してください。

メールワークフローの成功

CopySuccessEmail という名前の、従量課金ロジック アプリ ワークフローを作成します。 HTTP 要求が受信されたらという名前の要求トリガーを追加し、Send an email という名前の Office 365 Outlook アクションを追加します。 メッセージが表示されたら、Office 365 Outlook アカウントにサインインします。

成功メール ワークフローのスクリーンショットを示します。

要求トリガーの [要求本文の JSON スキーマ] ボックスに、次の JSON を入力します。

{
    "properties": {
        "dataFactoryName": {
            "type": "string"
        },
        "message": {
            "type": "string"
        },
        "pipelineName": {
            "type": "string"
        },
        "receiver": {
            "type": "string"
        }
    },
    "type": "object"
}

ワークフロー デザイナーでの [要求] トリガーは、次の図のようになります。

[要求] トリガーがあるワークフロー デザイナーのスクリーンショットが示されています。

[メールの送信] アクションに対しては、[要求本文の JSON スキーマ] で渡されるプロパティを利用して、メールの書式設定をカスタマイズします。 たとえば次のようになります。

[メールの送信] という名前のアクションがあるワークフロー デザイナーのスクリーンショットが示されています。

ワークフローを保存します。 成功電子メール ワークフローの HTTP Post 要求 URL をメモしておきます。

//Success Request Url
https://prodxxx.eastus.logic.azure.com:443/workflows/000000/triggers/manual/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=000000

失敗したメール処理のワークフロー

同じ手順に従って、CopyFailEmail という名前の、別のロジック アプリ ワークフローを作成します。 要求トリガーでは、[要求本文の JSON スキーマ] の値は同じです。 Subject のように電子メールの書式を変更し、失敗電子メールになるように調整します。 たとえば次のようになります。

失敗メールのワークフローがあるワークフロー デザイナーのスクリーンショットが示されています。

ワークフローを保存します。 失敗電子メール ワークフローの HTTP Post 要求 URL をメモしておきます。

//Fail Request Url
https://prodxxx.eastus.logic.azure.com:443/workflows/000000/triggers/manual/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=000000

2 つのワークフローの URL を取得できました。

//Success Request Url
https://prodxxx.eastus.logic.azure.com:443/workflows/000000/triggers/manual/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=000000

//Fail Request Url
https://prodxxx.eastus.logic.azure.com:443/workflows/000000/triggers/manual/paths/invoke?api-version=2016-10-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=000000

Data Factory の作成

  1. Microsoft EdgeまたはGoogle Chrome Web ブラウザーを起動します。 現在、Data Factory UI は、Microsoft Edgeおよび Google Chrome Web ブラウザーでのみサポートされています。

  2. 左上のメニューを展開し、[リソースの作成] を選択します。 次に、 [Analytics>Data Factory] を選択します。

    [新規] ウィンドウの [Data Factory] の選択のスクリーンショットを示します。

  3. [新しいデータ ファクトリ] ページで、 [名前] に「ADFTutorialDataFactory」と入力します。

    [新しいデータ ファクトリ] ページ

    Azure データ ファクトリの名前は、グローバルに一意である必要があります。 次のエラーが発生した場合は、データ ファクトリの名前を変更して (yournameADFTutorialDataFactory など) 作成し直してください。 Data Factory アーティファクトの名前付け規則については、Data Factory の名前付け規則に関する記事を参照してください。

    データ ファクトリ名 "ADFTutorialDataFactory" は利用できません。

  4. データ ファクトリを作成するAzure サブスクリプションを選択します。

  5. [リソース グループ] について、次の手順のいずれかを行います。

    • [Use existing (既存のものを使用)] を選択し、ドロップダウン リストから既存のリソース グループを選択します。

    • [新規作成] を選択し、リソース グループの名前を入力します。

      リソース グループの詳細については、「リソース グループを使用してAzure リソースを管理するを参照してください。

  6. バージョンとして [V2] を選択します。

  7. データ ファクトリの 場所 を選択します。 サポートされている場所のみがドロップダウン リストに表示されます。 データ ファクトリで使用されるデータ ストア (Azure Storage、Azure SQL Databaseなど) とコンピューティング (HDInsight など) は、他のリージョンに存在できます。

  8. [ダッシュボードにピン留めする] を選びます。

  9. Create をクリックしてください。

  10. 作成が完了すると、図に示されているような [Data Factory] ページが表示されます。

    Data Factory ホーム ページのスクリーンショットを示します。

  11. [Open Azure Data Factory Studio タイルをクリックして、別のタブでAzure Data Factoryユーザー インターフェイス (UI) を起動します。

パイプラインを作成する

この手順では、1 つのCopy アクティビティと 2 つの Web アクティビティを含むパイプラインを作成します。 このパイプラインの作成には次の機能を使用します。

  • データセットによってアクセスされるパイプラインのパラメーター。
  • 成功/失敗電子メールを送信するロジック アプリ ワークフローを呼び出す Web アクティビティ。
  • (成功および失敗に基づいた) あるアクティビティと別のアクティビティの接続
  • アクティビティからの出力を後続のアクティビティへの入力として使用する
  1. Data Factory UI のホーム ページで [調整] タイルをクリックします。

    データファクトリーのホームページのスクリーンショットで、[オーケストレーション] タイルが強調表示されています。

  2. パイプラインのプロパティ ウィンドウで [パラメーター] タブに切り替え、 [新規] ボタンを使用して、種類が文字列の 3 つのパラメーター (sourceBlobContainer、sinkBlobContainer、receiver) を追加します。

    • sourceBlobContainer - ソース BLOB データセットによって使用されるパイプライン内のパラメーターです。
    • sinkBlobContainer - シンク BLOB データセットによって使用されるパイプライン内のパラメーターです。
    • receiver - このパラメーターは、このパラメーターによって電子メール アドレスが指定されている受信者に成功または失敗の電子メールを送信するパイプライン内の 2 つの Web アクティビティによって使用されます。

    [新しいパイプライン] メニューのスクリーンショットを示します。

  3. [アクティビティ] ツールボックスで [Copy] を見つけ、パイプライン デザイナー画面に [Copy] アクティビティをドラッグ アンド ドロップします。

    コピー アクティビティをパイプライン デザイナーにドラッグ アンド ドロップする方法を示すスクリーンショットです。

  4. パイプライン デザイナーのサーフェスにドラッグした [Copy] アクティビティを選択します。 下部にある [コピー] アクティビティのプロパティ ウィンドウで、 [ソース] タブに切り替えて [+ 新規] をクリックします。 この手順でコピー アクティビティのソース データセットを作成します。

    [Copy] アクティビティのソース データセットを作成する方法を示すスクリーンショット。

  5. New Dataset ウィンドウで、上部にある Azure タブを選択し、 Azure Blob Storageを選択し、 Continue を選択します。

    選択Azure Blob Storageボタンのスクリーンショットが表示されます。

  6. [書式の選択] ウィンドウで、[DelimitedText] を選択し、[続行] を選択します。

    DelimitedText 形式が強調表示された [書式の選択] ウィンドウのスクリーンショットを示します。

  7. [プロパティの設定] という新しいタブが表示されます。 データセットの名前を「SourceBlobDataset」に変更します。 [リンク サービス] ドロップダウンを選択し、[+ 新規] を選択して、ソース データセットに新しいリンク サービスを作成します。

    データセットの [プロパティの設定] ウィンドウで、[リンク サービス] ドロップダウンの [+ 新規] ボタンが強調表示されたスクリーンショットを示します。**

  8. [新しいリンク サービス] ウィンドウが表示され、リンク サービスに必要なプロパティを入力できます。

    [新しいリンク サービス] ボタンが強調表示されたデータセット接続ウィンドウのスクリーンショットを示します。

  9. [New Linked Service](新しいリンクされたサービス) ウィンドウで、次の手順を完了します。

    1. [名前] に「AzureStorageLinkedService」と入力します。
    2. Storage アカウント名」の Azure ストレージアカウントを選択してください。
    3. Create をクリックしてください。
  10. 次に表示される [プロパティの設定] ウィンドウで、[このデータセットを開く] を選択して、ファイル名のパラメーター化された値を入力します。

    データセット [プロパティの設定] ウィンドウで、[このデータセットを開く] リンクが強調表示されたスクリーンショットを示します。

  11. フォルダーには「@pipeline().parameters.sourceBlobContainer」、ファイル名には「emp.txt」と入力します。

    ソース データセット設定のスクリーンショットを示します。

  12. [パイプライン] タブに戻り (または左側のツリービューでパイプラインをクリック)、デザイナーで [Copy] アクティビティを選択します。 ソース データセットとして新しいデータセットが選択されていることを確認します。

    ソース データセットのスクリーンショットを示します。

  13. プロパティ ウィンドウで [シンク] タブに切り替えて、 [Sink Dataset](シンク データセット)[+ 新規] をクリックします。 ソース データセットの作成と同様のこの手順では、コピー アクティビティのシンク データセットを作成します。

    新しい [シンク データセット] ボタンのスクリーンショットを示します

  14. New Dataset ウィンドウで、Azure Blob Storage Continueをクリックし、DelimitedText をもう一度 Select format ウィンドウで選択し、 Continue を再度クリックします。

  15. データセットの [プロパティの設定] ページで、[名前]SinkBlobDataset を入力し、LinkedServiceAzureStorageLinkedService を選択します。

  16. プロパティ ページの [詳細] セクションを展開し、[このデータセットを開く] を選択します。

  17. データセットの [接続] タブで、[ファイル のパス] を編集します。 フォルダーには「@pipeline().parameters.sinkBlobContainer」、ファイル名には「@concat(pipeline().RunId, '.txt')」と入力します。 この式では、ファイル名に現在のパイプライン実行の ID を使用します。 サポートされているシステム変数および式の一覧については、システム変数に関するページと式言語に関するページを参照してください。

    シンク データセット設定のスクリーンショットを示します。

  18. 上部にあるパイプラインのタブに切り替えて戻ります。 検索ボックスで Web を検索し、[Web] アクティビティをパイプライン デザイナー画面にドラッグ アンド ドロップします。 アクティビティの名前を「SendSuccessEmailActivity」に設定します。 Web アクティビティでは、任意の REST エンドポイントを呼び出すことができます。 このアクティビティの詳細については、Web アクティビティに関する記事を参照してください。 このパイプラインでは、Web アクティビティを使用して Logic Apps 電子メール ワークフローを呼び出します。

    最初の [Web] アクティビティをドラッグ アンド ドロップする方法を示すスクリーンショットを示します。

  19. [General](一般) タブから [設定] タブに切り替えて、次の手順を実行します。

    1. [URL] で、成功電子メールを送信するロジック アプリ ワークフローの URL を指定します。

    2. [メソッド][POST] を選択します。

    3. [ヘッダー] セクションにある + [ヘッダーの追加] リンクをクリックします。

    4. [コンテンツの種類] というヘッダーを追加し、それを application/json に設定します。

    5. Body に次の JSON を指定してください。

      {
          "message": "@{activity('Copy1').output.dataWritten}",
          "dataFactoryName": "@{pipeline().DataFactory}",
          "pipelineName": "@{pipeline().Pipeline}",
          "receiver": "@pipeline().parameters.receiver"
      }
      

      メッセージの本文には次のプロパティが含まれます。

      • メッセージ - @{activity('Copy1').output.dataWritten の値を渡す。 前のコピー アクティビティのプロパティにアクセスし、dataWritten の値を渡します。 失敗の場合、@{activity('CopyBlobtoBlob').error.message の代わりにエラー出力を渡します。

      • Data Factory Name - @{pipeline().DataFactory} から渡される値。これはシステム変数であり、対応するデータ ファクトリ名へのアクセスを可能にします。 サポートされているシステム変数の一覧については、「システム変数」の記事を参照してください。

      • パイプライン名 - @{pipeline().Pipeline} の値を渡す。 これもシステム変数であり、対応するパイプライン名へのアクセスを可能にします。

      • Receiver - "@pipeline().parameters.receiver" の値を渡す。 パイプライン パラメーターにアクセスします。

        最初の [Web] アクティビティの設定のスクリーンショットを示します。

  20. Copy アクティビティを Web アクティビティに接続するには、Copy アクティビティの横にある緑色のチェックボックス ボタンをドラッグし、Web アクティビティにドロップします。

    最初の Web アクティビティとCopy アクティビティを接続する方法を示すスクリーンショットを示します。

  21. [アクティビティ] ツール ボックスからパイプライン デザイナー画面に別の [Web] アクティビティをドラッグ アンド ドロップし、 [名前] を「SendFailureEmailActivity」に設定します。

    2 番目の [Web] アクティビティの名前のスクリーンショットを示します。

  22. [設定] タブに切り替えて、次の手順を実行します。

    1. [URL] で、失敗電子メールを送信するロジック アプリ ワークフローの URL を指定します。

    2. [メソッド][POST] を選択します。

    3. [ヘッダー] セクションにある + [ヘッダーの追加] リンクをクリックします。

    4. [コンテンツの種類] というヘッダーを追加し、それを application/json に設定します。

    5. ボディ に次の JSON を指定します。

      {
          "message": "@{activity('Copy1').error.message}",
          "dataFactoryName": "@{pipeline().DataFactory}",
          "pipelineName": "@{pipeline().Pipeline}",
          "receiver": "@pipeline().parameters.receiver"
      }
      

      2 番目の [Web] アクティビティの設定のスクリーンショットを示します。

  23. パイプライン デザイナーで [Copy] アクティビティの右側にある赤い [X] ボタンを選択し、先ほど作成した SendFailureEmailActivity にドラッグ アンド ドロップします。

    パイプライン デザイナーのCopy アクティビティで [エラー] を選択する方法を示すスクリーンショット。

  24. パイプラインを検証するために、ツール バーの [検証] ボタンをクリックします。 >> ボタンをクリックして パイプライン検証出力ウィンドウを閉じます。

    [パイプラインの検証] ボタンのスクリーンショットを示します。

  25. エンティティ (データセットやパイプラインなど) を Data Factory サービスに発行するには、 [すべて公開] を選択します。 [正常に発行されました] というメッセージが表示されるまで待機します。

    データ ファクトリ ポータルの [公開] ボタンのスクリーンショットを示します。

成功するパイプラインの実行をトリガーする

  1. パイプラインの実行をトリガーするために、ツール バーの [トリガー] をクリックし、 [Trigger Now](今すぐトリガー) をクリックします。

    [今すぐトリガー] ボタンのスクリーンショットを示します。

  2. [Pipeline Run](パイプラインの実行) ウィンドウで、次の手順を実行します。

    1. sourceBlobContainer パラメーターに「adftutorial/adfv2branch/input」を入力します。

    2. sinkBlobContainer パラメーターに「adftutorial/adfv2branch/output」を入力します。

    3. receiverメール アドレスを入力します。

    4. [完了] をクリックします。

      パイプラインの実行のパラメーター

成功したパイプラインの実行を監視する

  1. パイプラインの実行を監視するには、左側の [監視] タブに切り替えます。 手動でトリガーしたパイプラインの実行が表示されます。 [最新の情報に更新] ボタンを使用して、一覧を更新します。

    成功したパイプラインの実行

  2. このパイプラインの実行に関連付けられているアクティビティの実行を表示するには、 [アクション] 列にある最初のリンクをクリックします。 上部の [パイプライン] をクリックすると、前のビューに戻ることができます。 [最新の情報に更新] ボタンを使用して、一覧を更新します。

    アクティビティ実行の一覧を表示する方法を示すスクリーンショット。

失敗するパイプラインの実行をトリガーする

  1. 左側で [編集] タブに切り替えます。

  2. パイプラインの実行をトリガーするために、ツール バーの [トリガー] をクリックし、 [Trigger Now](今すぐトリガー) をクリックします。

  3. [Pipeline Run](パイプラインの実行) ウィンドウで、次の手順を実行します。

    1. sourceBlobContainer パラメーターに「adftutorial/dummy/input」を入力します。 ダミー フォルダーが adftutorial コンテナーに存在しないことを確認します。
    2. sinkBlobContainer パラメーターに「adftutorial/dummy/output」を入力します。
    3. receiverメール アドレスを入力します。
    4. [完了] をクリックします。

失敗したパイプラインの実行を監視する

  1. パイプラインの実行を監視するには、左側の [監視] タブに切り替えます。 手動でトリガーしたパイプラインの実行が表示されます。 [最新の情報に更新] ボタンを使用して、一覧を更新します。

    失敗のパイプラインの実行

  2. エラーの詳細を表示するには、パイプラインの実行の [エラー] リンクをクリックします。

    パイプライン エラー

  3. このパイプラインの実行に関連付けられているアクティビティの実行を表示するには、 [アクション] 列にある最初のリンクをクリックします。 [最新の情報に更新] ボタンを使用して、一覧を更新します。 パイプライン内のCopy アクティビティが失敗していることに注意してください。 Web アクティビティによる指定された受信者への失敗電子メールの送信は成功しました。

    アクティビティの実行

  4. [アクション] 列の [エラー] リンクをクリックして、エラーの詳細を表示します。

    アクティビティの実行エラー

このチュートリアルでは、以下の手順を実行しました。

  • データ ファクトリを作成します。
  • Azure Storageリンクされたサービスを作成します。
  • Azure BLOB データセットを作成する
  • コピー アクティビティと Web アクティビティを含むパイプラインを作成します。
  • アクティビティの出力を後続のアクティビティに送信します。
  • パラメーターの引き渡しとシステム変数を利用します。
  • パイプラインの実行を開始します。
  • パイプラインとアクティビティの実行を監視します。

Azure Data Factoryの詳細については、「概念」セクションに進むことができます。