Azure Logic Apps でワークフローに変換用のマップを追加する
適用対象: Azure Logic Apps (従量課金プラン + Standard)
XML の変換や Liquid などのワークフロー アクションでは、タスクを実行するためにマップが必要です。 たとえば、XML の変換アクションでは、XML を形式間で変換するマップが必要です。 マップとは、データを XML から別の形式に変換する方法を Extensible Stylesheet Language Transformation (XSLT) 言語を使用して記述した XML ドキュメントであり、そのファイル名拡張子は .xslt です。 このマップは、入力としてのソース XML スキーマと、出力としてのターゲット XML スキーマで構成されています。 あるドキュメントから別のドキュメントに名前と住所をコピーするといった、基本的な変換を設定できます。 または、設定不要なマップ操作を使用して、より複雑な変換を作成することができます。 文字列操作、条件付き割り当て、算術式、日時フォーマッタや、ループ構造の操作など、さまざまな組み込み関数を使用してデータを操作および制御できます。
たとえば、YearMonthDay の年月日形式 (YYYYMMDD) を使用している顧客から、B2B の注文書または請求書を定期的に受け取るとします。 自分の組織では、MonthDayYear の年月日形式 (MMDDYYYY) を使用しています。 YYYYMMDD 形式を MMDDYYYY 形式に変換するマップを用意してこれを適用してから、注文書や請求書の詳細を顧客アクティビティ データベースに保存することができます。
このガイドでは、使用するワークフローのマップを追加する方法について説明します。 マップは、リンクされた統合アカウントに追加することも、ロジック アプリ リソースに直接マップを追加することもできます (Standard ロジック アプリがある場合)。
前提条件
Azure アカウントとサブスクリプション。 サブスクリプションをまだお持ちでない場合には、無料の Azure アカウントにサインアップしてください。
追加するマップ。 マップを作成するには、次のツールのいずれかを使用できます。
Visual Studio Code と Data Mapper 拡張機能。 ご自分のワークフローから Data Mapper ツールで作成されたマップを呼び出すには、XML の変換 という名前の XML 操作ではなく、Data Mapper XSLT を使用した変換という名前の Data Mapper 操作アクションを使用する必要があります。 詳細については、Visual Studio Code を使用したデータ変換用マップの作成に関する記事を参照してください。
Visual Studio 2019 と Microsoft Azure Logic Apps Enterprise Integration Tools 拡張機能。
Visual Studio 2015 と Microsoft Azure Logic Apps Enterprise Integration Tools for Visual Studio 2015 2.0 拡張機能。
Note
Microsoft Azure Logic Apps Enterprise Integration Tools 拡張機能は BizTalk Server 拡張機能と共にインストールしないでください。 両方の拡張機能をインストールすると、予期しない動作が発生する可能性があります。 これらの拡張機能のいずれかのみがインストールされていることを確認してください。
高解像度モニターでは、Visual Studio のマップ デザイナーで表示の問題が発生することがあります。 この表示の問題を解決するには、Visual Studio を DPI 非対応モードで再起動するか、DPIUNAWARE レジストリ値を追加します。
詳細については、この記事の「マップを作成する」セクションを参照してください。
従量課金制または Standard ロジック アプリ ワークフローのどちらを使用しているかに基づいて、統合アカウント リソースが必要になります。 通常、このリソースは、エンタープライズ統合と B2B ワークフローで使用するために成果物を定義して格納する場合に必要です。
重要
連携するには、統合アカウントとロジック アプリ リソースの両方が、同じ Azure サブスクリプションと Azure リージョンに存在する必要があります。
従量課金ロジック アプリ ワークフローで作業している場合は、ロジック アプリ リソースにリンクされた統合アカウントが必要です。
Standard ロジック アプリ ワークフローで作業している場合は、次のシナリオに基づいて、統合アカウントをロジック アプリ リソースにリンクするか、マップをロジック アプリ リソースに直接アップロードするか、またはその両方を行うことができます。
必要なまたは使用したい成果物を含む統合アカウントが既にある場合は、成果物を使用する場所になる複数の Standard ロジック アプリ リソースに統合アカウントをリンクできます。 こうすることで、個々のロジック アプリにマップをアップロードする必要がありません。 詳細については、ロジック アプリ リソースの統合アカウントへのリンクに関するページを参照してください。
Liquid 組み込みコネクタを使用すると、ロジック アプリ リソースまたはリンクされた統合アカウントに以前にアップロードしたマップを選択できますが、両方は選択できません。
そのため、統合アカウントがないか、または必要としない場合は、アップロード オプションを使用できます。 それ以外の場合は、リンク オプションを使用できます。 どちらの方法でも、同じロジック アプリ リソース内のすべての子ワークフローで、これらの成果物を使用できます。
従量課金ワークフローと Standard ワークフローでは、外部アセンブリを参照する XSLT マップをサポートしており、XSLT マップからカスタム .NET コードへの直接呼び出しが可能になります。 この機能をサポートするために、従量課金ワークフローには以下の要件もあります。
64 ビットのアセンブリが必要です。 変換サービスでは 64 ビット プロセスが実行されるため、32 ビット アセンブリはサポートされていません。 32 ビット アセンブリ用のソース コードがある場合は、コードを 64 ビット アセンブリとして再コンパイルします。 ソース コードがなくても、サードパーティのプロバイダーからバイナリを取得した場合は、そのプロバイダーから 64 ビット バージョンを取得します。 たとえば、一部のベンダーからは、32 ビットと 64 ビット両方のバージョンのアセンブリがパッケージで提供されています。 オプションがある場合は、代わりに 64 ビット バージョンを使用してください。
統合アカウントに、特定の順序で、アセンブリとマップの両方をアップロードする必要があります。 最初にアセンブリをアップロードし、その後、そのアセンブリを参照するマップをアップロードするようにしてください。
アセンブリまたはマップが 2 MB 以下 であれば、Azure portal から統合アカウントにアセンブリとマップを "直接" 追加できます。
アセンブリが 2 MB を超えているが、アセンブリのサイズ制限以下である場合は、Azure ストレージ アカウントと、アセンブリをアップロードできる BLOB コンテナーが必要です。 後で統合アカウントにアセンブリを追加する際に、そのコンテナーの場所を指定できます。 このタスクのために必要な項目について次の表に示します。
Item 説明 Azure Storage アカウント このアカウントには、アセンブリの Azure BLOB コンテナーを作成します。 ストレージ アカウントの作成方法を確認してください。 BLOB コンテナー このコンテナーに、アセンブリをアップロードできます。 統合アカウントにアセンブリを追加するときは、このコンテナーのコンテンツ URI の場所も必要です。 BLOB コンテナーの作成方法についてはこちらを参照してください。 Azure 記憶域エクスプローラー このツールを使用すると、ストレージ アカウントと BLOB コンテナーをより簡単に管理できます。 Storage Explorer を使用するには、Azure Storage Explorer をダウンロードしてインストールします。 次に、「Storage Explorer の概要」の手順に従って Storage Explorer をストレージ アカウントに接続します。 詳しくは、「クイック スタート: Azure Storage Explorer を使用してオブジェクト ストレージ内に BLOB を作成する」を参照してください。
または、Azure portal で、自分のストレージ アカウントを選択します。 ストレージ アカウント メニューから [Storage Explorer] を選択します。より大きいマップを追加するには、Azure Logic Apps REST API - マップを使用します。 Standard ワークフローでは、Azure Logic Apps REST API は現在利用できません。
制限事項
制限は、統合アカウントごとの成果物 (マップなど) の数に適用されます。 詳細については、Azure Logic Apps の制限と構成の情報に関する記事を参照してください。
従量課金と Standard ロジック アプリ ワークフローのどちらで作業しているかに基づいて、次の制限が適用されます。
Standard ワークフロー
XSLT 1.0、2.0、3.0 がサポートされています。
マップのファイル サイズに制限は適用されません。
従量課金ワークフロー
Azure Logic Apps では、XML 変換の処理に割り当てるメモリに上限があります。 従量課金ワークフローを作成し、マップまたはペイロードの変換でメモリ消費量が多い場合、このような変換は失敗し、メモリ不足エラーが発生するおそれがあります。 このシナリオを回避するには、次のオプションを検討します。
マップまたはペイロードを編集して、メモリ消費量を減らします。
Standard ロジック アプリ ワークフローを作成します。これはシングルテナントの Azure Logic Apps で実行され、コンピューティング リソースとメモリ リソースに専用の柔軟なオプションが提供されます。
マップを作成する
Data Mapper 拡張機能を使用した Visual Studio Code または Microsoft Azure Logic Apps Enterprise Integration Tools 拡張機能を使用した Visual Studio のいずれかを使用してマップを作成できます。
Visual Studio Code
Visual Studio Code と Data Mapper 拡張機能を使用してマップを作成する場合は、ワークフローからこれらのマップを呼び出すことができますが、XML の変換という名前の XML 操作アクションではなく、Data Mapper XSLT を使用した変換という名前の Data Mapper 操作アクションでのみ呼び出すことができます。 詳細については、Visual Studio Code を使用したデータ変換用マップの作成に関する記事を参照してください。
Visual Studio
Visual Studio を使用してマップを作成する場合は、次のいずれかのツールを使用して統合プロジェクトを作成する必要があります。
Visual Studio 2019 と Microsoft Azure Logic Apps Enterprise Integration Tools 拡張機能。
Visual Studio 2015 と Microsoft Azure Logic Apps Enterprise Integration Tools for Visual Studio 2015 2.0 拡張機能。
その統合プロジェクトで、統合マップ ファイルを作成できます。これにより、2 つの XML スキーマ ファイルの間で項目を視覚的にマップできます。 これらのツールは、次のマップ機能を提供します。
マップをグラフィカルに表示して作業します。これにより、作成するすべてのリレーションシップやリンクが表示されます。
マップの作成に使用する XML スキーマ間でデータを直接コピーできます。 Visual Studio 用の Enterprise Integration SDK には、ソースの XML スキーマの要素とターゲットの XML スキーマの要素を線でつなぐだけでこのタスクを実行できるマッパーが含まれています。
複数のマップに対する操作または文字列関数、日時関数などの関数を使用できます。
マップ テスト機能を使用して、XML メッセージのサンプルを追加できます。 1 回のジェスチャだけで作成したマップをテストし、生成される出力を確認できます。
プロジェクトをビルドすると、XSLT ドキュメントが生成されます。
マップには、次に挙げる属性と、アセンブリのコードへの呼び出しを含む CDATA
セクションが必要です。
name
はカスタム アセンブリの名前です。namespace
はカスタム コードを含むアセンブリの名前空間です。
次の例では、XslUtilitiesLib という名前のアセンブリを参照し、そのアセンブリから circumference
メソッドを呼び出すマップを示しています。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:user="urn:my-scripts">
<msxsl:script language="C#" implements-prefix="user">
<msxsl:assembly name="XsltHelperLib"/>
<msxsl:using namespace="XsltHelpers"/>
<![CDATA[public double circumference(int radius){ XsltHelper helper = new XsltHelper(); return helper.circumference(radius); }]]>
</msxsl:script>
<xsl:template match="data">
<circles>
<xsl:for-each select="circle">
<circle>
<xsl:copy-of select="node()"/>
<circumference>
<xsl:value-of select="user:circumference(radius)"/>
</circumference>
</circle>
</xsl:for-each>
</circles>
</xsl:template>
</xsl:stylesheet>
参照先アセンブリを追加する
従量課金ロジック アプリ リソースでは、マップから外部アセンブリへの参照がサポートされています。これにより、XSLT マップからカスタム .NET コードへの直接呼び出しが可能になります。
Azure portal の検索ボックスに「統合アカウント」と入力し、[統合アカウント] を選びます。
アセンブリを追加する統合アカウントを選択します。
統合アカウントのメニューで、 [概要] を選択します。 [設定] で [アセンブリ] を選択します。
[アセンブリ] ペインのツール バーで、 [追加] を選択します。
アセンブリ ファイルのサイズに基づいて、最大 2 MB、または 2 MB を超える最大 8 MB のアセンブリをアップロードする手順を実行します。 統合アカウントでのアセンブリの数に関する制限については、Azure Logic Apps の制限と構成に関するページで確認してください。
Note
アセンブリを変更する場合、マップに変更があるかどうかに関わらず、マップも更新する必要があります。
最大 2 MB のアセンブリを追加する
[アセンブリの追加] で、アセンブリの名前を入力します。 [小さいファイル] を選択したままにします。 [アセンブリ] ボックスの横にあるフォルダー アイコンを選択します。 アップロードするアセンブリを見つけて選択します。
アセンブリを選択した後、 [アセンブリ名] プロパティにはアセンブリのファイル名が自動的に表示されます。
終了したら、 [OK] を選択します。
アセンブリ ファイルのアップロードが完了すると、 [アセンブリ] の一覧にアセンブリが表示されます。 統合アカウントの [概要] ペインの [成果物] には、アップロードしたアセンブリも表示されます。
2 MB 以上のアセンブリを追加する
より大きなアセンブリを追加するには、アセンブリを Azure ストレージ アカウントの Azure BLOB コンテナーにアップロードします。 アセンブリを追加する手順は、お使いの BLOB コンテナーにパブリック読み取りアクセス権が与えられているかどうかによって変わります。 そのため、まず最初に BLOB コンテナーがパブリック読み取りアクセス権を持っているかどうかを確認します。このとき、「BLOB コンテナーのパブリック アクセス レベルを設定する」の手順に従います。
コンテナーのアクセス レベルを確認する
Azure ストレージ エクスプローラーを開きます。 Explorer ウィンドウで、Azure サブスクリプションがまだ展開されていない場合は展開します。
[ストレージ アカウント]> {自分のストレージ アカウント} >[BLOB コンテナー] の順に展開します。 BLOB コンテナーを選択します。
BLOB コンテナーのショートカット メニューから [Set Public Access Level](パブリック アクセス レベルの設定) を選択します。
BLOB コンテナーに少なくともパブリック アクセス権がある場合は、 [キャンセル] を選択し、このページで後述する「パブリック アクセス権を持つコンテナーにアップロードする」の手順に従います
BLOB コンテナーにパブリック アクセス権がない場合は、 [キャンセル] を選択し、このページで後述する「パブリック アクセス権を持たないコンテナーにアップロードする」の手順に従います
パブリック アクセス権を持つコンテナーにアップロードする
ストレージ アカウントにアセンブリをアップロードします。 右側のウィンドウで、 [アップロード] を選択します。
アップロードを完了したら、アップロードしたアセンブリを選択します。 ツール バーで [URL のコピー] を選択し、アセンブリの URL をコピーします。
[アセンブリの追加] ウィンドウが開いている Azure portal に戻ります。 アセンブリの名前を入力します。 [大きいファイル (2 MB 超)] を選択します。
[アセンブリ] ボックスではなく、 [コンテンツ URI] ボックスが表示されます。
[コンテンツ URI] ボックスに、アセンブリの URL を貼り付けます。 アセンブリの追加を完了します。
アセンブリのアップロードが完了すると、 [アセンブリ] の一覧にそのアセンブリが表示されます。 統合アカウントの [概要] ペインの [成果物] には、アップロードしたアセンブリも表示されます。
パブリック アクセス権を持たないコンテナーにアップロードする
ストレージ アカウントにアセンブリをアップロードします。 右側のウィンドウで、 [アップロード] を選択します。
アップロードが完了したら、アセンブリの共有アクセス署名 (SAS) を生成します。 アセンブリのショートカット メニューから [Get Shared Access Signature](Shared Access Signature の取得) を選択します。
[Shared Access Signature] ウィンドウで [Generate container-level shared access signature URI](コンテナーレベルの共有アクセス署名 URI の生成)>[作成] の順に選択します。 SAS URL が生成されたら、 [URL] ボックスの横にある [コピー] を選択します。
[アセンブリの追加] ウィンドウが開いている Azure portal に戻ります。 アセンブリの名前を入力します。 [大きいファイル (2 MB 超)] を選択します。
[アセンブリ] ボックスではなく、 [コンテンツ URI] ボックスが表示されます。
[コンテンツ URI] ボックスに、前に生成した SAS URI を貼り付けます。 アセンブリの追加を完了します。
アセンブリのアップロードが完了すると、 [アセンブリ] の一覧にそのアセンブリが表示されます。 統合アカウントの [概要] ページの [成果物] には、アップロードしたアセンブリも表示されます。
マップを追加する
従量課金ワークフローで作業している場合は、リンクされた統合アカウントにマップを追加する必要があります。
Standard ワークフローで作業している場合は、次のオプションがあります。
リンクされた統合アカウントにマップを追加します。 マップと統合アカウントは、複数の Standard ロジック アプリ リソースとその子ワークフローで共有できます。
ロジック アプリ リソースに直接マップを追加します。 ただし、そのマップは、同じロジック アプリ リソース内の子ワークフロー間でのみ共有できます。
統合アカウントにマップを追加する
Azure アカウントの資格情報で Azure portal にサインインします。
Azure portal の検索ボックスに「統合アカウント」と入力し、[統合アカウント] を選択します。
統合アカウントを探して選択します。
統合アカウントのナビゲーション メニューで、[設定] の [マップ] を選択します。
[Maps] ペインのツール バーで、 [追加] を選択します。
従量課金ワークフローの場合、ここで、マップのファイル サイズに基づいて、最大 2 MB、または 2 MB を超えるマップをアップロードする手順に従います。
最大 2 MB のマップを追加する
[マップの追加] ペインで、マップの一意の名前を入力します。
[マップの種類] で、種類を選択します。例:Liquid、XSLT、XSLT 2.0、XSLT 3.0。
[マップ] ボックスの横にあるフォルダー アイコンを選択します。 アップロードするマップを選択します。
[名前] プロパティを空のままにした場合は、マップ ファイルを選択した後で、マップのファイル名がそのプロパティに自動的に表示されます。
終了したら、 [OK] を選択します。
マップ ファイルのアップロードが完了すると、 [マップ] の一覧にマップが表示されます。 統合アカウントの [概要] ページの [成果物] には、アップロードしたマップも表示されます。
2 MB 以上のマップを追加する
従量課金ワークフローに対してより大きいマップを追加するには Azure Logic Apps REST API - マップを使用します。
Standard ロジック アプリ リソースにマップを追加する
次の手順は、Standard ロジック アプリ リソースに直接マップを追加する場合にのみ適用されます。 それ以外の場合は、統合アカウントにマップを追加します。
Azure portal
ロジック アプリ リソースのナビゲーション メニューで、[Artifacts] (アーティファクト)の [マップ] を選択します。
[Maps] ペインのツール バーで、 [追加] を選択します。
[マップの追加] ペインで、マップの一意の名前を入力します。その名前には .xslt 拡張子名を付けます。
[マップ] ボックスの横にあるフォルダー アイコンを選択します。 アップロードするマップを選択します。
終了したら、 [OK] を選択します。
マップ ファイルのアップロードが完了すると、 [マップ] の一覧にマップが表示されます。 統合アカウントの [概要] ページの [成果物] には、アップロードしたマップも表示されます。
Visual Studio Code
ロジック アプリのプロジェクトの構造で、 [Artifacts](アーティファクト) フォルダー、 [Maps](マップ) フォルダーを順に開きます。
[Maps](マップ) フォルダーでマップを追加します。
マップを編集する
既存のマップを更新するには、目的の変更を含む新しいマップ ファイルをアップロードする必要があります。 ただし、編集対象の既存のマップをまずダウンロードすることができます。
Azure portal で、統合アカウントをまだ開いていない場合は開きます。
統合アカウント メニューで、 [設定] の [マップ] を選択します。
[マップ] ペインが開いたら、マップを選択します。 最初にマップをダウンロードして編集するには、 [マップ] ペインのツール バーで [ダウンロード] を選択して、マップを保存します。
更新したマップをアップロードする準備ができたら、 [マップ] ペインで更新するマップを選択します。 [マップ] ペインのツール バーで、 [更新] を選択します。
アップロードする更新済みマップを探して選択します。
マップ ファイルのアップロードが完了すると、 [マップ] の一覧に更新されたマップが表示されます。
マップを削除する
Azure portal で、統合アカウントをまだ開いていない場合は開きます。
統合アカウント メニューで、 [設定] の [マップ] を選択します。
[Maps](マップ) ペインを開き、マップを選択し、 [Delete](削除) をクリックします。
マップの削除を確定するには、 [はい] を選択します。