워크플로에서 Azure Logic Apps를 사용하여 변환을 수행하기 위한 맵 추가

적용 대상: Azure Logic Apps(사용량 + 표준)

XML 변환Liquid와 같은 워크플로 작업은 해당 태스크를 수행하려면 맵이 필요합니다. 예를 들어 XML 변환 작업을 수행하려면 XML 형식을 변환하는 맵이 필요합니다. 맵은 XSLT(Extensible Stylesheet Language Transformation) 언어를 사용하여 XML에서 다른 형식으로 데이터를 변환하는 방법을 설명하고 확장명이 .xslt인 XML 문서입니다. 맵은 원본 XML 스키마를 입력으로, 대상 XML 스키마를 출력으로 구성합니다. 한 문서에서 다른 문서로 이름과 주소를 복사하는 것 같은 기본 변환을 정의할 수 있습니다. 또는 기본 맵 작업을 사용하여 더 복잡한 변환을 만들 수 있습니다. 문자열 조작, 조건부 할당, 산술 식, 날짜 시간 포맷터 및 루프 구문과 같은 다양한 기본 제공 함수를 사용하여 데이터를 조작하거나 제어할 수 있습니다.

예를 들어, YearMonthDay 날짜 형식(YYYMMDD)을 사용하는 고객에게서 정기적으로 B2B 주문 또는 송장을 받는 경우를 가정해 보겠습니다. 그러나 사용자의 조직은 MonthDayYear 날짜 형식(MMDDYYY)을 사용합니다. 고객 작업 데이터베이스에서 주문 또는 송장 세부 정보를 저장하기 전에 YYYMMDD 형식을 MMDDYYY 형식으로 변환하는 맵을 정의하여 사용할 수 있습니다.

이 가이드에서는 워크플로에서 사용할 맵을 추가하는 방법을 보여 줍니다. 연결된 통합 계정에 맵을 추가할 수 있습니다. 또는 표준 논리 앱이 있는 경우 논리 앱 리소스에 직접 맵을 추가할 수 있습니다.

필수 조건

  • Azure 계정 및 구독 아직 구독이 없는 경우 Azure 체험 계정에 가입합니다.

  • 추가할 맵. 맵을 만들려면 다음 도구 중 하나를 사용할 수 있습니다.

  • 사용량 또는 표준 논리 앱 워크플로에서 작업하는지 여부에 따라 통합 계정 리소스가 필요합니다. 일반적으로 엔터프라이즈 통합 및 B2B 워크플로에서 사용할 아티팩트를 정의하고 저장하려는 경우 이 리소스가 필요합니다.

    Important

    함께 작업하려면 통합 계정과 논리 앱 리소스가 모두 동일한 Azure 구독 및 Azure 지역에 있어야 합니다.

    • 사용량 논리 앱 워크플로에서 작업하는 경우 논리 앱 리소스에 연결된 통합 계정이 필요합니다.

    • 표준 논리 앱 워크플로에서 작업하는 경우 다음 시나리오에 따라 통합 계정을 논리 앱 리소스에 연결하거나 논리 앱 리소스에 직접 맵을 업로드하거나 둘 다 할 수 있습니다.

      • 필요하거나 사용하려는 아티팩트가 있는 통합 계정이 이미 있는 경우 아티팩트를 사용하려는 여러 표준 논리 앱 리소스에 통합 계정을 연결할 수 있습니다. 이렇게 하면 각 개별 논리 앱에 맵을 업로드할 필요가 없습니다. 자세한 내용은 논리 앱 리소스를 통합 계정에 연결을 참조하세요.

      • 기본 제공 커넥터인 Liquid를 사용하면 이전에 논리 앱 리소스 또는 연결된 통합 계정에 업로드한 맵을 선택할 수 있지만, 둘 다 선택할 수는 없습니다.

      따라서 통합 계정이 없거나 필요한 경우 업로드 옵션을 사용할 수 있습니다. 그렇지 않은 경우 연결 옵션을 사용할 수 있습니다. 어느 쪽이든 동일한 논리 앱 리소스 내의 모든 하위 워크플로에서 이러한 아티팩트를 사용할 수 있습니다.

  • 사용량 및 표준 워크플로는 외부 어셈블리를 참조하는 XSLT 맵을 지원하므로 XSLT 맵에서 사용자 지정 .NET 코드를 직접 호출할 수 있습니다. 이 기능을 지원하기 위해 사용량 워크플로에는 다음 요구 사항도 있습니다.

    • 64비트 어셈블리가 필요합니다. 변환 서비스는 64비트 프로세스를 실행하므로 32비트 어셈블리는 지원되지 않습니다. 32비트 어셈블리에 대한 소스 코드가 있는 경우 코드를 64비트 어셈블리로 다시 컴파일합니다. 소스 코드가 없지만 타사 공급자에서 이진 파일을 가져온 경우 해당 공급자에서 64비트 버전을 가져옵니다. 예를 들어 일부 공급자는 32비트 및 64비트 버전이 모두 있는 패키지에 어셈블리를 제공합니다. 옵션이 있는 경우 64비트 버전을 대신 사용합니다.

    • 특정 순서로 어셈블리와 맵 모두를 통합 계정에 업로드해야 합니다. 어셈블리를 먼저 업로드한 후 해당 어셈블리를 참조하는 맵을 업로드해야 합니다.

    • 어셈블리 또는 맵이 2MB 이하이면 Azure Portal에서 직접 통합 계정에 어셈블리 및 맵을 추가할 수 있습니다.

    • 어셈블리가 2MB보다 크지만 어셈블리 크기 제한보다는 크지 않은 경우 어셈블리를 업로드할 수 있는 Azure 스토리지 계정과 Blob 컨테이너가 필요합니다. 나중에 통합 계정에 어셈블리를 추가할 때 해당 컨테이너의 위치를 지정할 수 있습니다. 이 작업의 경우 필요한 항목이 다음 표에 설명되어 있습니다.

      항목 설명
      Azure Storage 계정 이 계정에서 어셈블리의 Azure blob 컨테이너를 만듭니다. 스토리지 계정을 만드는 방법을 알아봅니다.
      Blob 컨테이너 이 컨테이너에 어셈블리를 업로드할 수 있습니다. 통합 계정에 어셈블리를 추가할 때도 이 컨테이너의 콘텐츠 URI 위치가 필요합니다. blob 컨테이너를 만드는 방법을 알아봅니다.
      Azure Storage Explorer 이 도구를 사용하면 스토리지 계정 및 blob 컨테이너를 더 쉽게 관리할 수 있습니다. Storage Explorer를 사용하려면 Azure Storage Explorer를 다운로드하고 설치합니다. 그런 다음, Storage Explorer 시작의 단계에 따라 Storage Explorer를 스토리지 계정에 연결합니다. 자세한 정보를 알아보려면 빠른 시작: Azure Storage Explorer를 사용하여 개체 스토리지에 Blob 만들기를 참조하세요.

      또는 Azure Portal에서 스토리지 계정을 선택합니다. 스토리지 계정 메뉴에서 Storage Explorer를 선택합니다.

      더 큰 맵을 추가하려면 Azure Logic Apps REST API - Maps를 사용합니다. 표준 워크플로는 현재 Azure Logic Apps REST API를 사용할 수 없습니다.

제한 사항

  • 제한은 통합 계정당 아티팩트(예: 맵) 수에 적용됩니다. 자세한 내용은 Azure Logic Apps에 대한 제한 및 구성 정보를 참조하세요.

  • 현재 사용하는 논리 앱 워크플로가 사용량 기반인지 아니면 표준 기반인지에 따라 다음과 같은 제한 사항이 적용됩니다.

    • 표준 워크플로

      • XSLT 1.0, 2.0 및 3.0을 지원합니다.

      • 매핑 파일 크기에는 제한이 적용되지 않습니다.

    • 사용량 워크플로

      • Azure Logic Apps는 XML 변환을 처리하기 위해 유한 메모리를 할당합니다. 사용량 워크플로를 만들었는데 맵 또는 페이로드 변환의 메모리 사용량이 높은 경우 변환이 실패하여 메모리 오류가 발생할 수 있습니다. 이 시나리오를 방지하려면 다음 옵션을 고려하세요.

        • 맵 또는 페이로드를 편집하여 메모리 사용량을 줄입니다.

        • 단일 테넌트 Azure Logic Apps에서 실행되고 컴퓨팅 및 메모리 리소스에 대한 유연한 전용 옵션을 제공하는 표준 Logic Apps 워크플로를 만듭니다.

맵 만들기

데이터 매퍼 확장이 포함된 Visual Studio Code 또는 Microsoft Azure Logic Apps Enterprise Integration Tools 확장이 포함된 Visual Studio를 사용하여 맵을 만들 수 있습니다.

Visual Studio Code

Visual Studio Code 및 데이터 매퍼 확장을 사용하여 맵을 만드는 경우 워크플로에서 이러한 맵을 호출할 수 있지만 XML 변환이라는 XML 작업 작업이 아닌 데이터 매퍼 XSLT를 사용하여 변환이라는 데이터 매퍼 작업 작업을 통해서만 호출할 수 있습니다. 자세한 내용은 Visual Studio Code를 사용하여 데이터 변환을 위한 맵 만들기를 참조하세요.

Visual Studio

Visual Studio를 사용하여 맵을 만드는 경우 다음 도구 중 하나를 사용하여 통합 프로젝트를 만들어야 합니다.

통합 프로젝트에서 두 개의 XML 스키마 파일 간에 항목을 시각적으로 매핑할 수 있는 통합 맵 파일을 빌드할 수 있습니다. 이러한 도구는 다음과 같은 맵 기능을 제공합니다.

  • 만드는 모든 관계와 링크를 보여주는 맵의 그래픽 표현이 제공됩니다.

  • 맵을 만드는 데 사용하는 XML 스키마 간에 직접 데이터 복사본을 만들 수 있습니다. Visual Studio용 엔터프라이즈 통합 SDK에는 원본 XML 스키마의 요소를 대상 XML 스키마의 해당 요소와 연결하는 선을 그리는 것처럼 간단하게 이 작업을 수행할 수 있는 매퍼가 포함되어 있습니다.

  • 문자열 함수, 날짜 시간 함수 등을 포함하여 여러 맵에 대한 연산 또는 함수를 사용할 수 있습니다.

  • 샘플 XML 메시지를 추가하기 위해 맵 테스트 기능을 사용할 수 있습니다. 한 번의 제스처로 만든 맵을 테스트하고 생성된 출력을 검토할 수 있습니다.

  • 프로젝트를 빌드하면 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 코드를 직접 호출할 수 있도록 맵에서 외부 어셈블리 참조를 지원합니다.

  1. Azure Portal 검색 상자에 통합 계정을 입력하고 통합 계정을 선택합니다.

  2. 어셈블리를 추가할 통합 계정을 선택합니다.

  3. 통합 계정 메뉴에서 개요를 선택합니다. 설정에서 어셈블리를 선택합니다.

  4. 어셈블리 창 도구 모음에서 추가를 선택합니다.

어셈블리 파일의 크기에 따라 2MB보다 작거나2MB보다 크고 8MB보다 작은 어셈블리를 업로드하는 단계를 따릅니다. 통합 계정의 어셈블리 수량 제한에 대해서는 Azure Logic Apps의 제한 및 구성을 참조하세요.

참고 항목

어셈블리를 변경하는 경우, 맵에 변경 내용이 있는지 여부에 관계없이 맵도 업데이트해야 합니다.

최대 2MB의 어셈블리 추가

  1. 어셈블리 추가에서 어셈블리의 이름을 입력합니다. 작은 파일을 선택한 상태로 둡니다. 어셈블리 상자 옆에서 폴더 아이콘을 선택합니다. 업로드하려는 어셈블리를 찾아 선택합니다.

    어셈블리를 선택한 후 어셈블리 이름 속성에 어셈블리의 파일 이름이 자동으로 표시됩니다.

  2. 완료되면 확인을 선택합니다.

    어셈블리 파일 업로드가 완료되면 어셈블리가 어셈블리 목록에 나타납니다. 통합 계정의 개요 창에 있는 아티팩트에서 업로드한 어셈블리가 표시됩니다.

2MB보다 큰 어셈블리 추가

더 큰 어셈블리를 추가하려면 Azure Storage 계정의 Azure blob 컨테이너에 어셈블리를 업로드할 수 있습니다. Blob 컨테이너에 공용 읽기 액세스 권한이 있는지 여부에 따라, 어셈블리 추가 단계가 달라집니다. 먼저 다음 단계를 수행하여 BLOB 컨테이너에 공용 읽기 액세스 권한이 있는지 확인합니다. BLOB 컨테이너에 대한 공용 액세스 수준 설정

컨테이너 액세스 수준 확인

  1. Azure Storage Explorer를 엽니다. 탐색기 창에서 Azure 구독을 아직 확장하지 않은 경우 확장합니다.

  2. 스토리지 계정> {your-storage-account} >Blob 컨테이너를 펼칩니다. Blob 컨테이너를 선택합니다.

  3. Blob 컨테이너의 바로 가기 메뉴에서 공용 액세스 수준 설정을 선택합니다.

공용 액세스 권한이 있는 컨테이너에 업로드
  1. 스토리지 계정에 어셈블리를 업로드합니다. 오른쪽 창에서 업로드를 선택합니다.

  2. 업로드가 완료되면 업로드된 어셈블리를 선택합니다. 도구 모음에서 어셈블리 URL을 복사할 수 있도록 URL 복사를 선택합니다.

  3. 어셈블리 추가 창이 열려 있는 Azure Portal로 돌아갑니다. 어셈블리의 이름을 입력합니다. 대용량 파일(2MB 초과)을 선택합니다.

    이제 어셈블리 상자가 아닌 콘텐츠 URI 상자가 나타납니다.

  4. 콘텐츠 URI 상자에서 어셈블리의 URL을 붙여 넣습니다. 어셈블리 추가를 완료합니다.

    어셈블리에서 업로드를 완료되면 어셈블리가 어셈블리 목록에 표시됩니다. 통합 계정의 개요 창에 있는 아티팩트에서 업로드한 어셈블리가 표시됩니다.

공용 액세스 권한이 없는 컨테이너에 업로드
  1. 스토리지 계정에 어셈블리를 업로드합니다. 오른쪽 창에서 업로드를 선택합니다.

  2. 업로드를 마친 후에 어셈블리의 SAS(공유 액세스 서명)을 생성합니다. 어셈블리의 바로 가기 메뉴에서 공유 액세스 서명 가져오기를 선택합니다.

  3. 공유 액세스 서명 창에서 컨테이너 수준 공유 액세스 서명 URI 생성>만들기를 선택합니다. SAS URL이 생성되면 URL 상자 옆에서 복사를 선택합니다.

  4. 어셈블리 추가 창이 열려 있는 Azure Portal로 돌아갑니다. 어셈블리의 이름을 입력합니다. 대용량 파일(2MB 초과)을 선택합니다.

    이제 어셈블리 상자가 아닌 콘텐츠 URI 상자가 나타납니다.

  5. 콘텐츠 URI 상자에서 이전에 생성한 SAS URI를 붙여넣습니다. 어셈블리 추가를 완료합니다.

어셈블리에서 업로드를 완료되면 어셈블리가 어셈블리 목록에 표시됩니다. 통합 계정의 개요 페이지에 있는 아티팩트에서 업로드한 어셈블리가 표시됩니다.

맵 추가

  • 사용량 워크플로를 사용하는 경우 연결된 통합 계정에 맵을 추가해야 합니다.

  • 표준 워크플로를 사용하는 경우 다음과 같은 옵션이 있습니다.

    • 연결된 통합 계정에 맵을 추가합니다. 여러 표준 논리 앱 리소스 및 해당 하위 워크플로에서 맵과 통합 계정을 공유할 수 있습니다.

    • 논리 앱 리소스에 직접 맵을 추가합니다. 그러나 동일한 논리 앱 리소스의 하위 워크플로에서만 해당 맵을 공유할 수 있습니다.

통합 계정에 맵 추가

  1. Azure Portal에서 Azure 계정 자격 증명을 사용하여 로그인합니다.

  2. Azure Portal 검색 상자에 통합 계정을 입력하고 통합 계정을 선택합니다.

  3. 통합 계정 찾기 및 선택.

  4. 통합 계정의 탐색 메뉴에 있는 설정에서 을 선택합니다.

  5. 창 도구 모음에서 추가를 선택합니다.

사용량 워크플로의 경우 맵의 파일 크기에 따라 최대 2MB 또는 2MB를 초과하는 맵을 업로드하는 단계를 따릅니다.

최대 2MB의 맵 추가

  1. 맵 추가 창에서 고유한 맵 이름을 입력합니다.

  2. 맵 유형아래에서 유형(예: 액체, XSLT, XSLT 2.0 또는 XSLT 3.0)을 선택합니다.

  3. 상자 옆에서 폴더 아이콘을 선택합니다. 업로드할 맵을 선택합니다.

    이름 속성을 비워 두면 맵 파일을 선택한 후에 해당 속성에 맵의 파일 이름이 표시됩니다.

  4. 완료되면 확인을 선택합니다.

    맵 파일 업로드가 완료되면 목록에 해당 맵이 나타납니다. 통합 계정의 개요 페이지에 있는 아티팩트에서 업로드한 맵이 표시됩니다.

2MB보다 큰 맵 추가

사용량 워크플로에 대한 더 큰 맵을 추가하려면 Azure Logic Apps REST API - Maps를 사용합니다.


표준 논리 앱 리소스에 맵 추가

다음 단계는 표준 논리 앱 리소스에 직접 맵을 추가하려는 경우에만 적용됩니다. 직접 추가하지 않으려면 통합 계정에 맵을 추가합니다.

Azure Portal

  1. 논리 앱 리소스 메뉴의 Artifacts에서 를 선택합니다.

  2. 창 도구 모음에서 추가를 선택합니다.

  3. 맵 추가 창에서 맵의 고유한 이름을 입력하고 .xslt 확장자 이름을 포함합니다.

  4. 상자 옆에서 폴더 아이콘을 선택합니다. 업로드할 맵을 선택합니다.

  5. 완료되면 확인을 선택합니다.

    맵 파일 업로드가 완료되면 목록에 해당 맵이 나타납니다. 통합 계정의 개요 페이지에 있는 아티팩트에서 업로드한 맵이 표시됩니다.

Visual Studio Code

  1. 논리 앱 프로젝트의 구조에서 아티팩트 폴더를 연 다음 폴더를 엽니다.

  2. 폴더에서 맵을 추가합니다.


맵 편집

기존 맵을 업데이트하려면 원하는 변경 내용이 있는 새 맵 파일을 업로드해야 합니다. 그러나 편집을 위해 기존 맵을 먼저 다운로드할 수 있습니다.

  1. Azure Portal에서 통합 계정이 아직 열려 있지 않으면 엽니다.

  2. 통합 계정 메뉴에서 설정 아래의 을 선택합니다.

  3. 창이 열리면 맵을 선택합니다. 맵을 먼저 다운로드하고 편집하려면 창 도구 모음에서 다운로드를 선택하고 맵을 저장합니다.

  4. 업데이트된 맵을 업로드할 준비가 되면 창에서 업데이트하려는 맵을 선택합니다. 창 도구 모음에서 업데이트를 선택합니다.

  5. 업로드하려는 업데이트된 맵을 찾아 선택합니다.

    맵 파일 업로드가 완료되면 업데이트된 목록에 해당 맵이 나타납니다.

맵 삭제

  1. Azure Portal에서 통합 계정이 아직 열려 있지 않으면 엽니다.

  2. 통합 계정 메뉴에서 설정 아래의 을 선택합니다.

  3. 창이 열리면 맵을 선택한 다음 삭제를 선택합니다.

  4. 맵을 삭제할지 확인하려면 를 선택합니다.

다음 단계