適用対象:
Azure Data Factory
Azure Synapse Analytics
ヒント
Data Factory in Microsoft Fabric は、よりシンプルなアーキテクチャ、組み込みの AI、および新機能を備えた次世代のAzure Data Factoryです。 データ統合を初めて使用する場合は、Fabric Data Factory から始めます。 既存の ADF ワークロードをFabricにアップグレードして、データ サイエンス、リアルタイム分析、レポートの新機能にアクセスできます。
Azure Data Factoryのイベント トリガーを使用すると、データ ソースで発生する特定のイベントに基づいてパイプラインの実行を自動化できます。 これはイベント ドリブン アーキテクチャの重要な機能であり、リアルタイムのデータ統合と処理を可能にするものです。
イベントドリブン アーキテクチャ は、イベントの運用、検出、使用、およびリアクションを伴う、データ統合の共通的なパターンです。 データ統合シナリオでは、多くの場合、特定のイベントが発生したときにAzure Data Factory顧客がパイプラインをトリガーする必要があります。 Data Factory がAzure Event Gridとネイティブに統合され、カスタムトピックをサポートします。 Azure Event Grid トピックにイベントを送信します。 Data Factory では、トピックをサブスクライブしてリッスンし、それに応じてパイプラインをトリガーします。
この記事で説明する統合は、Azure Event Gridによって異なります。 サブスクリプションが Event Grid リソース プロバイダーに登録されていることを確認してください。 詳細については、「リソース プロバイダーと種類」を参照してください。
Microsoft.EventGrid/eventSubscriptions/ アクションを実行できる必要があります。 このアクションは、EventGrid EventSubscription 共同作成者の組み込みロールの一部です。
重要
Azure Synapse Analyticsでこの機能を使用している場合は、サブスクリプションが Data Factory リソース プロバイダーにも登録されていることを確認します。 これ以外では、"イベント サブスクリプション が作成できませんでした" というメッセージが表示されます。
パイプライン パラメーターとカスタム イベント トリガーを組み合わせると、パイプラインの実行でカスタム data ペイロードを解析して参照できます。 カスタム イベント ペイロードの data フィールドは自由形式の JSON キー値構造なので、イベント駆動型パイプラインの実行を制御できます。
重要
パラメーター化で参照されるキーがカスタム イベント ペイロードに存在しない場合、trigger run は失敗します。
keyName プロパティが存在しないため、式を評価できないことを示すメッセージが表示されます。 この場合、イベントによって nopipeline run がトリガーされます。
イベントとトリガーのユース ケース
トリガーは、次のようなさまざまなイベントによって起動される可能性があります。
Blob Created: 指定したコンテナーに新しいファイルがアップロードされたとき。 Blob Deleted: コンテナーからファイルが削除されたとき。 Blob Modified: 既存のファイルが更新されたとき。
イベントを使用して、パイプラインの実行を動的にコントロールできます。 たとえば、新しいデータ ファイルがAzure Blob Storageの "受信" フォルダーにアップロードされると、トリガーはデータを処理するパイプラインを自動的に開始し、タイムリーなデータ統合を確保できます。
Event Grid でカスタム トピックを設定する
Data Factory でカスタム イベント トリガーを使用するには、"まず" Event Grid でカスタム トピックを設定する必要があります。
Event Grid に移動し、自分でトピックを作成します。 カスタム トピックの作成方法の詳細については、Event Grid portal チュートリアル および Azure CLI チュートリアルを参照してください。
注
このワークフローは、ストレージ イベント トリガーとは異なります。 ここでは、トピックは Data Factory によって設定されません。
Data Factory は、イベントが Event Grid イベント スキーマに従うことを想定しています。 イベント ペイロードに、次のフィールドがあることを確認してください。
[
{
"topic": string,
"subject": string,
"id": string,
"eventType": string,
"eventTime": string,
"data":{
object-unique-to-each-publisher
},
"dataVersion": string,
"metadataVersion": string
}
]
Data Factory を使用してカスタム イベント トリガーを作成する
Data Factory に移動してサインインします。
[編集] タブに切り替えます。鉛筆アイコンを探します。
メニューの [トリガー] を選択し、 [新規作成/編集] を選択します。
[トリガーの追加] ページで、[トリガーの選択] を選択した後、[+ 新規] を選択します。
[種類] に [カスタム イベント] を選択します。
Azure サブスクリプションドロップダウン リストからカスタム トピックを選択するか、イベント トピックスコープを手動で入力します。
注
Data Factory でカスタム イベント トリガーを作成または変更するには、適切なAzureロールベースのアクセス制御 (Azure RBAC) を持つAzure アカウントを使用する必要があります。 他のアクセス許可は必要ありません。 Data Factory のサービス プリンシパルでは、Event Grid に対する特別なアクセス許可は必要ありません。 アクセス制御の詳細については、「ロールベースのアクセス制御」セクションを参照してください。
Subject begins withプロパティとSubject ends withプロパティを使用すると、トリガー イベントをフィルター処理できます。 これらのプロパティは両方とも省略可能です。[+ New] を使用して、フィルターするための [イベントの種類] を追加します。 カスタム イベント トリガーの一覧では、OR リレーションシップが使用されます。
eventTypeプロパティを持つカスタム イベントが一覧上の 1 つと一致すると、パイプラインの実行がトリガーされます。 イベントの種類では大文字と小文字が区別されます。 たとえば、次のスクリーンショットでは、トリガーは、サブジェクトがcopycompletedで始まるすべてのcopysucceededまたは イベントと一致します。
カスタム イベント トリガーを使用して、カスタム
dataペイロードを解析し、パイプラインに送信できます。 パイプライン パラメーターを作成し、[パラメーター] ページで値を入力します。 形式@triggerBody().event.data._keyName_を使用してデータ ペイロードを解析し、パイプラインのパラメーターに値を渡します。詳細については、次を参照してください。
パラメーターを入力したら、[OK] を選択します。
高度なフィルター処理
カスタム イベント トリガーでは、Event Grid の高度なフィルター処理と同様の高度なフィルター処理機能がサポートされています。 これらの条件付きフィルターを使用すると、イベント ペイロードの値に基づいてパイプラインをトリガーできます。 たとえば、イベント ペイロードに Department という名前のフィールドがあり、Department が Finance である場合にのみ、パイプラインをトリガーする必要があるとします。 date フィールドがリスト [1, 2, 3, 4, 5] に含まれていること、month フィールドがリスト [11, 12] に含まれていないこと、そして tag フィールドには [Fiscal Year 2021、FiscalYear2021 または FY2021] のいずれかが含まれていることなどの複雑なロジックを指定することもできます。
カスタム イベント トリガーでは現在、高度なフィルター処理演算子の一部が Event Grid でサポートされています。 次のフィルター条件がサポートされています。
NumberInNumberNotInNumberLessThanNumberGreaterThanNumberLessThanOrEqualsNumberGreaterThanOrEqualsBoolEqualsStringContainsStringBeginsWithStringEndsWithStringInStringNotIn
[+ 新規] を選択して、新しいフィルター条件を追加します。
カスタム イベント トリガーは、Event Grid と同じ制限にも従います。次に例を示します。
- カスタム イベント トリガーごとに、すべてのフィルターで 5 つの高度なフィルターと 25 のフィルター値。
- 文字列値あたり 512 文字。
-
in演算子とnot in演算子の 5 つの値。 -
.など、キーにjohn.doe@contoso.com(ドット) 文字を含めることはできません。 現時点では、エスケープ文字を含むキーはサポートされていません。 - 複数のフィルターで同じキーを使用できます。
Data Factory は、Event Grid API の最新の一般提供 (GA) バージョンに依存します。 新しい API バージョンが GA 段階になると、Data Factory では、より高度なフィルター処理演算子のサポートが拡張されます。
JSON スキーマ
次の表に、カスタム イベント トリガーに関連するスキーマ要素の概要を示します。
| JSON 要素 | 説明 | タイプ | 使用できる値 | 必須 |
|---|---|---|---|---|
scope |
Event Grid トピックのAzure Resource Manager リソース ID。 | 糸 | Azure Resource Manager ID | はい。 |
events |
このトリガーを起動するイベントの種類。 | 文字列の配列 | はい。少なくとも 1 つの値が必要です。 | |
subjectBeginsWith |
subject フィールドは、トリガーを起動するために指定されたパターンで始まる必要があります。 たとえば、factories は、factories で始まるイベント サブジェクトに対してのみトリガーを発動させます。 |
糸 | いいえ。 | |
subjectEndsWith |
subject フィールドは、トリガーを起動するために指定されたパターンで終わる必要があります。 |
糸 | いいえ。 | |
advancedFilters |
それぞれフィルター条件を指定する JSON BLOB のリスト。 各 BLOB は key、operatorType、values を指定します。 |
JSON BLOB のリスト | いいえ。 |
ロールベースのアクセス制御
Data Factory では、Azure RBAC を使用して、承認されていないアクセスを禁止します。 正常に機能するには、Data Factory で、以下を行うためのアクセス権が必要です。
- イベントをリッスンする。
- イベントの更新情報を受け取るために登録する。
- カスタム イベントにリンクされているパイプラインをトリガーする。
カスタム イベント トリガーを正常に作成または更新するには、適切なアクセス権を持つAzure アカウントを使用して Data Factory にサインインする必要があります。 それ以外の場合、"アクセスが拒否されました" というメッセージで操作が失敗します。
Data Factory では、Event Grid のインスタンスに対する特別なアクセス許可は必要ありません。 また、操作のために特別なAzure RBAC ロールのアクセス許可を Data Factory サービス プリンシパルに割り当てる必要はありません。
具体的には、Microsoft.EventGrid/EventSubscriptions/Write に対する /subscriptions/####/resourceGroups//####/providers/Microsoft.EventGrid/topics/someTopics アクセス許可が必要です。
- データ ファクトリ (開発環境など) で作成する場合、サインインしたAzure アカウントには、上記のアクセス許可が必要です。
- 継続的インテグレーションと継続的デリバリーを使用して発行する場合、Azure Resource Manager テンプレートをテストまたは運用ファクトリに発行するために使用されるアカウントには、上記のアクセス許可が必要です。
関連するコンテンツ
- トリガー実行に関する詳細情報を取得する。
- パイプライン実行でのトリガー メタデータの参照方法について学ぶ。