다음을 통해 공유


자습서: Azure Logic Apps, Azure Functions 및 Azure Storage를 사용하여 메일을 처리하는 워크플로 만들기

적용 대상: Azure Logic Apps(소비)

이 자습서에서는 Azure Logic Apps를 사용하여 Azure Functions 및 Azure Storage를 통합하는 예제 워크플로를 빌드하는 방법을 보여 줍니다. 이 예제에서는 특히 들어오는 전자 메일 및 첨부 파일을 처리하고, Azure Functions를 사용하여 전자 메일 콘텐츠를 분석하고, Azure Storage에 콘텐츠를 저장하고, 콘텐츠를 검토하기 위해 이메일을 보내는 소비 논리 앱 워크플로를 만듭니다.

완료되면 워크플로는 다음의 상위 수준 예와 같습니다.

스크린샷은 소비 상위 수준 워크플로 예제를 보여줍니다.

자세한 내용은 Azure Copilot에 다음 질문을 하면 됩니다.

  • Azure Logic Apps란?
  • Azure Functions란?
  • Azure Storage란?
  • 사용량 논리 앱 워크플로란?

Azure Copilot을 찾으려면 Azure Portal 도구 모음에서 Copilot을 선택합니다.

Azure Blob Storage와 같은 일부 커넥터 작업을 기본 제공 서비스 공급자 기반 작업으로 사용할 수 있는 표준 논리 앱 리소스를 사용하여 유사한 워크플로를 만들 수 있습니다. 그러나 사용자 환경 및 자습서 단계는 소비 버전과 약간 다릅니다.

필수 조건

  • Azure 계정 및 구독 구독이 없는 경우 Azure 체험 계정에 등록합니다.

  • Office 365 Outlook, Outlook.com, Gmail 등 Azure Logic Apps에서 지원되는 메일 공급자의 메일 계정. 지원되는 다른 이메일 공급자에 대해서는 Azure Logic Apps용 커넥터를 참조하세요.

    이 예에서는 회사 또는 학교 계정으로 Office 365 Outlook을 사용합니다. 다른 이메일 계정을 사용하는 경우 일반적인 단계는 동일하지만 사용자 환경이 약간 다를 수 있습니다. Outlook.com을 사용하는 경우 개인 Microsoft 계정을 사용하여 로그인합니다.

    참고 항목

    Gmail 커넥터를 사용하려는 경우 G Suite 비즈니스 계정만 논리 앱 워크플로에서 제한 없이 이 커넥터를 사용할 수 있습니다. Gmail 소비자 계정이 있는 경우 특정 Google 승인 서비스에서만 이 커넥터를 사용하거나 Gmail 커넥터 인증에 사용할 Google 클라이언트 앱을 만들 수 있습니다. 자세한 내용은 Azure Logic Apps의 Google 커넥터에 대한 데이터 보안 및 개인정보처리방침을 참조하세요.

  • 체험판 Microsoft Azure Storage Explorer를 다운로드하여 설치합니다. 이 도구를 사용하여 스토리지 컨테이너가 올바르게 설정되었는지 확인할 수 있습니다.

  • 워크플로가 트래픽을 특정 IP 주소로 제한하는 방화벽을 통해 통신해야 하는 경우 해당 방화벽은 논리 앱 리소스가 있는 Azure 지역의 Azure Logic Apps에서 사용하는 인바운드아웃바운드 IP 주소 모두에 대한 액세스를 허용해야 합니다. 워크플로에서 Office 365 Outlook 커넥터 또는 SQL 커넥터와 같은 관리형 커넥터를 사용하거나 사용자 지정 커넥터를 사용하는 경우 방화벽에서 논리 앱의 Azure 지역에 있는 관리형 커넥터 아웃바운드 IP 주소 모두에 대한 액세스도 허용해야 합니다.

첨부 파일을 저장하도록 스토리지 설정

다음 단계에서는 들어오는 전자 메일 및 첨부 파일을 Blob으로 저장할 수 있도록 Azure Storage를 설정합니다.

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

  2. 스토리지 계정이 아직 없는 경우 다음 단계에 따라 스토리지 계정을 만듭니다.

    기본 탭에서 다음 정보를 제공합니다.

    속성 필요함 Description
    구독 <Azure-subscription-name> Azure 구독 이름.

    이 예에서는 종량제를 사용합니다.
    리소스 그룹 <Azure-resource-group> 관련 리소스를 구성하고 관리하는 데 사용되는 Azure 리소스 그룹의 이름.

    참고: 리소스 그룹은 특정 지역 내에 있습니다. 일부 지역에서 이 자습서의 항목을 사용할 수 없을 수도 있지만, 가능하면 동일한 지역을 사용해 보세요.

    이 예제에서는 LA-Tutorial-RG를 사용합니다.
    스토리지 계정 이름 <Azure-storage-account-name> 3~24자여야 하며 소문자와 숫자만 포함할 수 있는 고유한 스토리지 계정 이름입니다.

    이 예제에서는 attachmentstorageacct를 사용합니다.
    지역 <Azure-region> 스토리지 계정의 Azure 데이터 영역입니다.

    이 예제에서는 미국 서부를 사용합니다.
    주 서비스 아니요 <Azure-storage-service> 스토리지 계정에 사용할 기본 스토리지 유형입니다. Azure에 데이터를 저장하기 위한 검토 옵션을 참조하세요.
    성능 - Standard
    - Premium
    이 설정은 지원되는 데이터 형식 및 데이터를 저장하기 위한 미디어를 지정합니다. 스토리지 계정 개요를 참조하세요.

    이 예제에서는 Standard를 사용합니다.
    중복 - 로컬 중복 스토리지
    - GRS(지역 중복 스토리지)
    이 설정을 사용하면 계획된 이벤트 및 계획되지 않은 이벤트로부터 보호하기 위해 데이터의 여러 복사본을 저장할 수 있습니다. 자세한 내용은 Azure Storage 중복성을 참조하세요.

    이 예제에서는 GRS(지역 중복 스토리지)를 사용합니다.

    스토리지 계정을 만들려면 Azure PowerShell 또는 Azure CLI를 사용할 수도 있습니다.

  3. 준비가 되면 검토 + 만들기를 선택합니다. Azure에서 스토리지 계정 리소스에 대한 정보의 유효성을 검사한 후 만들기를 선택합니다.

  4. Azure에서 스토리지 계정을 배포한 후 리소스로 이동을 선택합니다. 또는 Azure 검색 상자를 사용하여 스토리지 계정을 찾아 선택합니다.

  5. 다음 단계에 따라 스토리지 계정의 액세스 키를 가져옵니다.

    1. 스토리지 계정의 보안 + 네트워킹에서 액세스 키를 선택합니다.

    2. 스토리지 계정 이름 및 key1복사합니다. 나중에 사용하기에 안전한 위치에 이러한 값을 저장합니다.

    스토리지 계정의 액세스 키를 가져오려면 Azure PowerShell 또는 Azure CLI를 사용할 수도 있습니다.

  6. 이메일 첨부 파일에 대한 Blob Storage 컨테이너를 만듭니다.

    1. 스토리지 계정 메뉴의 데이터 스토리지에서 컨테이너를 선택합니다.

    2. 컨테이너 페이지의 도구 모음에서 컨테이너를 선택합니다.

    3. 새 컨테이너 창에서 다음 정보를 제공합니다.

      속성 설명
      이름 첨부 파일 컨테이너 이름
      익명 액세스 수준 컨테이너(컨테이너 및 Blob에 대한 익명 읽기 권한)
    4. 만들기를 실행합니다.

    완료되면 컨테이너 목록에 새 스토리지 컨테이너가 표시됩니다.

스토리지 컨테이너를 만들려면 Azure PowerShell 또는 Azure CLI를 사용할 수도 있습니다.

다음으로, Storage Explorer를 스토리지 계정에 연결합니다.

Storage Explorer 설정

다음 단계에서는 Storage Explorer를 스토리지 계정에 연결하여 워크플로가 스토리지 컨테이너에 첨부 파일을 Blob으로 올바르게 저장하는지 확인할 수 있습니다.

  1. Microsoft Azure Storage Explorer를 시작합니다. Azure 계정으로 로그인합니다.

    참고 항목

    프롬프트가 표시되지 않으면 Storage Explorer 작업 표시줄에서 계정 관리(프로필 아이콘)를 선택합니다.

  2. Azure 환경 선택 창에서 Azure 환경을 선택하고 다음을 선택합니다.

    이 예에서는 전역 다중 테넌트 Azure를 선택하여 계속됩니다.

  3. 나타나는 브라우저 창에서 Azure 계정에 로그인합니다.

  4. Storage Explorer 및 계정 관리 창으로 돌아갑니다. 올바른 Microsoft Entra 테넌트 및 구독이 선택되어 있는지 확인합니다.

  5. Storage Explorer 작업 표시줄에서 연결 대화 상자 열기를 선택합니다.

  6. 리소스 선택 창에서 스토리지 계정 또는 서비스를 선택합니다.

  7. 연결 방법 선택 창에서 계정 이름 및 키>다음을 선택합니다.

  8. Azure Storage에 연결 창에서 다음 정보를 제공합니다.

    속성
    표시 이름 연결에 대한 식별 이름
    계정 이름 스토리지 계정 이름
    계정 키 이전에 저장한 액세스 키
  9. Storage 도메인의 경우 Azure(core.windows.net)가 선택되어 있는지 확인하고 다음을 선택합니다.

  10. 요약 창에서 연결 정보를 확인하고 연결을 선택합니다.

    Storage Explorer에서 연결을 만듭니다. 스토리지 계정이 에뮬레이터 및 연결된>스토리지 계정 아래 탐색기 창에 나타납니다.

  11. Blob Storage 컨테이너를 찾으려면 Storage 계정에서 스토리지 계정을 확장합니다. 이 예제에서는 attachmentstorageacct입니다. 예를 들어 첨부 파일 컨테이너를 찾을 수 있는 Blob 컨테이너 아래에서 다음을 수행합니다.

    Storage Explorer - 스토리지 컨테이너 찾기를 보여 주는 스크린샷.

다음으로, 콘텐츠에서 HTML을 제거하는 Azure 함수 앱 및 함수를 만듭니다.

함수 앱 만들기

다음 단계에서는 워크플로가 들어오는 전자 메일에서 HTML을 제거하기 위해 호출하는 Azure 함수를 만듭니다.

  1. 함수를 만들기 전에 소비 계획을 선택하고 다음 단계를 수행하여 함수 앱을 만듭니다.

    1. 기본 탭에서 다음 정보를 제공합니다.

      속성 필요함 Description
      구독 <Azure-subscription-name> 이전에 스토리지 계정에 사용한 것과 동일한 Azure 구독입니다.
      리소스 그룹 <Azure-resource-group-name> 이전에 스토리지 계정에 사용한 것과 동일한 Azure 리소스 그룹입니다.

      이 예제에서는 LA-Tutorial-RG를 선택합니다.
      함수 앱 이름 <function-app-name> 함수 앱 이름은 Azure 지역에서 고유해야 하며 문자(대/소문자를 구분하지 않음), 숫자(0-9) 및 하이픈(-)만 포함할 수 있습니다.

      이 예에서는 CleanTextFunctionApp을 이미 사용하고 있으므로 다른 이름을 입력합니다(예: MyCleanTextFunctionApp-<your-name>).
      런타임 스택 <프로그래밍 언어> 기본 함수 프로그래밍 언어에 대한 런타임입니다. C# 및 F# 함수의 경우 .NET을 선택합니다.

      이 예제에서는 .NET을 사용합니다.

      포털 내 편집은 다음 언어에만 사용할 수 있습니다.

      - JavaScript
      - PowerShell
      - TypeScript
      - C# 스크립트

      C# 클래스 라이브러리, Java 및 Python 함수를 로컬로 개발해야 합니다.
      버전 <version-number> 설치된 런타임의 버전을 선택합니다.
      지역 <Azure-region> 이전에 사용한 동일한 지역

      이 예제에서는 미국 서부를 사용합니다.
      운영 체제 <your-operating-system> 운영 체제는 런타임 스택 선택에 따라 미리 선택되지만 즐겨 사용하는 함수 프로그래밍 언어를 지원하는 운영 체제를 선택할 수 있습니다. 포털 내 편집은 Windows에서만 지원됩니다.

      이 예제에서는 Windows를 선택합니다.
    2. 다음: 스토리지를 선택합니다. 스토리지 탭에서 다음 정보를 제공합니다.

      속성 필요함 설명
      스토리지 계정 <Azure-storage-account-name> 사용할 함수 앱에 대한 스토리지 계정을 만듭니다. 스토리지 계정 이름은 3~24자 사이여야 하고 소문자 및 숫자만 포함할 수 있습니다.

      이 예제에서는 cleantextfunctionstorageacct를 사용합니다.

      참고: 이 스토리지 계정은 함수 앱을 포함하며, 이전에 메일 첨부 파일용으로 만든 스토리지 계정과 다릅니다. 기존 계정을 사용할 수도 있습니다. 여기서는 스토리지 계정 요구 사항을 충족해야 합니다.
    3. 완료되면 검토 + 만들기를 선택합니다. Azure에서 제공된 정보의 유효성을 검사한 후 만들기를 선택합니다.

    4. Azure에서 함수 앱 리소스를 배포한 후 리소스로 이동을 선택합니다.

HTML을 제거하는 함수 만들기

다음 단계에서는 샘플 코드 조각을 사용하여 들어오는 각 전자 메일에서 HTML을 제거하는 Azure 함수를 만듭니다. 이 함수를 사용하면 전자 메일 콘텐츠를 더 깨끗하고 쉽게 처리할 수 있습니다. 워크플로에서 이 함수를 호출할 수 있습니다.

자세한 내용은 Azure Portal에서 첫 번째 함수 만들기를 참조하세요. 확장된 함수 만들기의 경우 함수를 로컬로 만들 수도 있습니다.

  1. 아직 열리지 않은 경우 Azure Portal에서 함수 앱을 엽니다.

  2. 나중에 Azure Portal에서 함수를 실행하려면 포털의 요청을 명시적으로 수락하도록 함수 앱을 설정합니다. 함수 앱 메뉴의 API에서 CORS를 선택합니다. 허용된 원본에서 입력https://portal.azure.com하고 저장을 선택합니다.

  3. 함수 앱 메뉴에서 개요를 선택합니다. 함수 탭에서 만들기를 선택합니다.

  4. 함수 만들기 창에서 HTTP 트리거: C#Next를> 선택합니다.

    참고 항목

    C# 버전이 표시되지 않는 경우 다음을 수행해야 합니다.

  5. 함수에 대해 다음 정보를 제공하고 만들기를 선택합니다.

    매개 변수
    함수 이름 RemoveHTMLFunction 함수를 선택합니다.
    권한 부여 수준 Function
  6. 코드 + 테스트 탭에서 HTML을 제거하고 결과를 호출자에게 반환하는 다음 샘플 코드를 입력합니다.

    #r "Newtonsoft.Json"
    
    using System.Net;
    using Microsoft.AspNetCore.Mvc;
    using Microsoft.Extensions.Primitives;
    using Newtonsoft.Json;
    using System.Text.RegularExpressions;
    
    public static async Task<IActionResult> Run(HttpRequest req, ILogger log)
    {
       log.LogInformation("HttpWebhook triggered");
    
       // Parse query parameter
       string emailBodyContent = await new StreamReader(req.Body).ReadToEndAsync();
    
       // Replace HTML with other characters
       string updatedBody = Regex.Replace(emailBodyContent, "<.*?>", string.Empty);
       updatedBody = updatedBody.Replace("\\r\\n", " ");
       updatedBody = updatedBody.Replace(@"&nbsp;", " ");
    
       // Return cleaned text
       return (ActionResult)new OkObjectResult(new {updatedBody});
    }
    
  7. 완료되면 코드 + 테스트 도구 모음에서 저장을 선택한 다음 테스트/실행을 선택합니다.

  8. 테스트/실행 창의 입력 탭에 있는 본문 상자에 다음 샘플 입력을 입력하고 실행을 선택합니다.

    {"name": "<p><p>Testing my function</br></p></p>"}

    함수의 출력은 다음 결과와 같습니다.

    {"updatedBody": "{\"name\": \"Testing my function\"}"}

함수가 작동하는지 확인한 후 논리 앱 리소스 및 워크플로를 만듭니다. 이 자습서에서는 메일에서 HTML을 제거하는 함수를 만드는 방법을 보여 주지만, Azure Logic Apps는 HTML-Text 커넥터도 제공합니다.

사용량 논리 앱 리소스 만들기

  1. Azure Portal 검색 상자에 논리 앱을 입력하고 논리 앱을 선택합니다.

  2. Logic Apps 페이지 도구 모음에서 추가를 선택합니다.

    논리 앱 만들기 페이지가 나타나고 다음 옵션이 표시됩니다.

    계획 설명
    소비 다중 테넌트 Azure Logic Apps에서 실행되는 단 하나의 워크플로만 지원하고 청구를 위한 사용량 모델을 사용하는 논리 앱 리소스를 만듭니다.
    Standard 여러 워크플로를 지원하는 논리 앱 리소스를 만듭니다. 다음 옵션이 있습니다.

    - 워크플로 서비스 계획: 워크플로는 단일 테넌트 Azure Logic Apps에서 실행되며 청구를 위한 표준 모델을 사용합니다.

    - App Service Environment V3: 워크플로는 단일 테넌트 Azure Logic Apps에서 실행되며 청구를 위해 App Service Environment 계획을 사용합니다.

    - 하이브리드(미리 보기): 워크플로는 KUbernetes KEDA(이벤트 기반 자동 크기 조정)를 사용하여 온-프레미스 및 여러 클라우드에서 실행됩니다. 자세한 내용은 하이브리드 배포를 위한 표준 워크플로 만들기를 참조하세요.
  3. 논리 앱 만들기 페이지에서 소비(다중 테넌트)를 선택합니다.

  4. 기본 사항 탭에서 논리 앱 리소스에 대한 다음 정보를 제공합니다.

    매개 변수 Required Description
    구독 <Azure-subscription-name> 이전에 사용한 것과 동일한 Azure 구독입니다.
    리소스 그룹 LA-Tutorial-RG 이전에 사용한 것과 동일한 Azure 리소스 그룹입니다.
    논리 앱 이름 <logic-app-name> 모든 Azure 지역에서 고유해야 하고 문자, 숫자, 하이픈(-), 밑줄(_), 괄호(()) 및 마침표(.)만 포함할 수 있는 논리 앱 리소스 이름입니다.

    이 예제에서는 LA-ProcessAttachment라는 논리 앱 리소스를 만듭니다. 사용량 논리 앱과 워크플로의 이름은 항상 동일합니다.
    지역 미국 서부 이전에 사용한 동일한 지역
    로그 분석 사용 문제 진단 로깅을 사용하도록 설정하려는 경우에만 이 옵션을 변경합니다. 이 자습서에서는 기본 선택을 유지합니다.

    참고: 이 옵션은 소비 논리 앱에서만 사용할 수 있습니다.

    참고 항목

    가용성 영역은 가용성 영역을 지원하는 Azure 지역의 신규 및 기존 사용량 논리 앱 워크플로에 대해 자동으로 사용하도록 설정됩니다. 자세한 내용은 Azure Functions 내 안정성을 참조하고 영역 중복성 및 가용성 영역 지역 오류로부터 논리 앱을 보호합니다.

  5. 준비가 되면 검토 + 만들기를 선택합니다. Azure에서 논리 앱 리소스에 대한 정보의 유효성을 검사한 후 만들기를 선택합니다.

  6. Azure에서 논리 앱 리소스를 배포한 후 리소스로 이동을 선택합니다. 또는 Azure 검색 상자를 사용하여 논리 앱 리소스를 찾아 선택합니다.

들어오는 전자 메일을 모니터링하는 트리거 추가

다음 단계에서는 첨부 파일이 있는 들어오는 전자 메일을 기다리는 트리거를 추가합니다.

  1. 논리 앱 메뉴의 개발 도구에서 논리 앱 디자이너를 선택합니다.

  2. 워크플로 디자이너에서 다음 일반적인 단계에 따라 새 전자 메일이 도착할 때라는 Office 365 Outlook 트리거를 추가합니다.

    Office 365 Outlook 커넥터를 사용하려면 Microsoft 회사 또는 학교 계정으로 로그인해야 합니다. 개인 Microsoft 계정을 사용하는 경우 Outlook.com 커넥터를 사용합니다.

  3. 전자 메일 계정에 로그인하여 워크플로와 전자 메일 계정 간에 연결을 만듭니다.

  4. 트리거 정보 상자 의 고급 매개 변수 목록에서 다음 매개 변수 가 나타나지 않으면 다음 매개 변수를 추가하고 다음 정보를 제공합니다.

    매개 변수 설명
    중요도 모두 원하는 이메일의 중요도 수준을 지정합니다.
    첨부 파일에만 첨부 파일이 있는 이메일만 받습니다.

    참고: 이 트리거는 계정에서 이메일을 제거하지는 않으며, 새 메시지만 확인하여 제목 필터와 일치하는 이메일만 처리합니다.
    첨부 파일 포함 첨부 파일을 확인하는 데서 그치지 않고 첨부 파일을 워크플로의 입력으로 가져옵니다.
    폴더 받은 편지함 확인할 전자 메일 폴더입니다.
    제목 필터 비즈니스 분석가 2 #423501 전자 메일 제목에서 찾을 텍스트를 지정합니다.

    완료되면 트리거는 다음 예제와 유사합니다.

    스크린샷은 소비 워크플로 및 Office 365 Outlook 트리거를 보여줍니다.

  5. 워크플로를 저장합니다. 디자이너 도구 모음에서 저장을 선택합니다.

    이제 워크플로가 라이브 상태이지만 다른 어떤 작업도 수행하지 않고 전자 메일을 확인합니다. 다음으로, 워크플로의 후속 작업을 계속하는 조건을 지정하는 조건을 추가합니다.

첨부 파일을 확인하는 조건 추가

다음 단계에서는 첨부 파일이 있는 전자 메일만 선택하는 조건을 추가합니다.

  1. 워크플로 디자이너에서 다음 일반 단계에 따라 Condition이라는 Control 작업을 추가합니다.

  2. 조건 작업 정보 창에서 전자 메일에 첨부 파일과 주요 제목 구가 있는 경우 작업 이름을 바꿉니다.

  3. 첨부 파일이 있는 전자 메일을 확인하는 조건을 빌드합니다.

    1. 매개 변수 탭의 AND 목록 아래 첫 번째 행에서 왼쪽 상자 내에서 선택한 다음 동적 콘텐츠 목록(번개 아이콘)을 선택합니다. 이 목록의 트리거 섹션에서 첨부 파일 출력 포함을 선택합니다.

      첨부 파일 있음 출력이 표시되지 않으면 자세히 보기를 선택합니다.

      스크린샷은 조건 동작, 맨 왼쪽 상자에 커서가 있는 두 번째 행, 동적 콘텐츠 목록 열기 및 첨부 파일 선택됨을 보여 줍니다.

    2. 가운데 상자에서 이름이 같은 연산자를 유지합니다.

    3. 오른쪽 상자에 true를 입력합니다. 이 값은 트리거의 첨부 파일 있음 출력 값과 비교할 값입니다. 두 값이 같으면 이메일에 첨부 파일이 하나 이상 있는 것이며, 조건을 통과하고, 워크플로가 계속됩니다.

      스크린샷은 전체 조건을 보여줍니다.

    디자이너 도구 모음에서 코드 보기를 선택하여 볼 수 있는 기본 워크플로 정의에서 조건은 다음 예제와 유사합니다.

    "Condition": {
       "actions": { <actions-to-run-when-condition-passes> },
       "expression": {
          "and": [ {
             "equals": [
                "@triggerBody()?['HasAttachment']",
                  "true"
             ]
          } ]
       },
       "runAfter": {},
       "type": "If"
    }
    
  4. 워크플로를 저장합니다.

조건 테스트

  1. 디자이너 도구 모음에서 실행>실행을 선택합니다.

    이 단계는 워크플로를 수동으로 시작하고 실행하지만, 받은 편지함으로 테스트 이메일을 보낼 때까지 아무 일도 발생하지 않습니다.

  2. 다음 기준을 충족하는 메일을 자신에게 보냅니다.

    • 전자 메일의 제목에는 트리거의 제목 필터: 비즈니스 분석가 2 #423501에서 지정한 텍스트가 있습니다.

    • 이메일에 첨부 파일이 하나 있습니다. 이제 빈 텍스트 파일을 하나 만들고 해당 파일을 이메일에 첨부합니다.

    메일이 도착하면 워크플로에서는 첨부 파일 및 지정된 제목 텍스트를 확인합니다. 조건이 통과하면 트리거가 실행되고 Azure Logic Apps가 워크플로를 인스턴스화하고 워크플로 인스턴스를 실행합니다.

  3. 트리거가 실행되고 워크플로가 성공적으로 실행되었는지 확인하려면 논리 앱 메뉴에서 개요를 선택합니다.

    • 성공적으로 실행된 워크플로를 보려면 실행 기록을 선택합니다.

    • 성공적으로 실행된 트리거를 보려면 트리거 기록을 선택합니다.

    트리거가 실행되지 않았거나 성공적인 트리거에도 불구하고 워크플로가 실행되지 않은 경우 논리 앱 워크플로 문제 해결을 참조하세요.

다음으로, True 분기에 대해 수행할 작업을 정의합니다. 첨부 파일과 함께 이메일을 저장하려면 이메일 본문에서 HTML을 제거한 후 이메일 및 첨부 파일용 스토리지 컨테이너에 BLOB을 만듭니다.

참고 항목

워크플로는 False 분기를 비워 두고 메일에 첨부 파일이 없는 경우 아무 작업도 수행하지 않을 수 있습니다. 이 자습서를 마친 후 추가 연습으로 False인 경우 분기에 대해 수행할 적절한 작업을 추가할 수 있습니다.

RemoveHTMLFunction 호출

다음 단계에서는 전자 메일 트리거의 전자 메일 본문 콘텐츠를 입력으로 수락하는 이전에 만든 Azure 함수를 추가합니다.

  1. 논리 앱 메뉴의 개발 도구에서 논리 앱 디자이너를 선택합니다. True 분기에서 작업 추가를 선택합니다.

  2. 다음 일반적인 단계에 따라 Azure 함수 선택이라는 Azure Functions 작업을 추가합니다.

  3. 이 예제에서는 이전에 만든 함수 앱인 CleanTextFunctionApp 을 선택합니다.

  4. 이 예제에서 RemoveHTMLFunction이라는 함수를 선택한 다음, 작업 추가를 선택합니다.

  5. Azure Functions 작업 정보 창에서 RemoveHTMLFunction 호출을 사용하여 작업의 이름을 바꿉니다.

  6. 이제 함수에서 처리할 입력을 지정합니다.

    1. 요청 본문의 경우 후행 공백이 있는 다음 텍스트를 입력합니다.

      { "emailBody":

      다음 단계에서 이 입력을 처리하는 동안 입력이 JSON 형식으로 올바르게 지정될 때까지 잘못된 JSON에 대한 오류가 표시됩니다. 앞에서 이 함수를 테스트할 때 이 함수에 지정된 입력에서 JSON(JavaScript Object Notation)을 사용했습니다. 따라서 요청 본문에서도 동일한 형식을 사용해야 합니다.

    2. 요청 본문 상자 내에서 선택한 다음, 이전 작업의 출력을 선택할 수 있도록 동적 콘텐츠 목록(번개 아이콘)을 선택합니다.

    3. 동적 콘텐츠 목록의 새 전자 메일이 도착하면 본문 출력을 선택합니다. 요청 본문 상자에서 이 값이 확인되면 닫는 중괄호(})를 추가해야 합니다.

      스크린샷은 동적 콘텐츠 목록과 본문이 선택된 Azure 함수 정보 상자를 보여줍니다.

    완료되면 Azure 함수는 다음 예제와 같습니다.

    스크린샷은 함수에 전달할 요청 본문 콘텐츠가 포함된 완료된 Azure 함수를 보여줍니다.

  7. 워크플로를 저장합니다.

다음으로, 전자 메일 본문을 저장할 Blob을 만드는 작업을 추가합니다.

전자 메일 본문에 대한 Blob을 만드는 작업 추가

다음 단계에서는 스토리지 컨테이너에 전자 메일 본문을 저장하는 Blob을 만듭니다.

  1. 디자이너의 조건 True 블록에 있는 Azure 함수 아래에서 작업 추가를 선택합니다.

  2. 다음 일반적인 단계에 따라 Blob 만들기라는 Azure Blob Storage 작업을 추가합니다.

  3. 스토리지 계정에 대한 연결 정보를 제공합니다. 예를 들면 다음과 같습니다.

    매개 변수 Required Description
    연결 이름 <connection-name> 연결에 대한 설명이 포함된 이름입니다.

    이 예제에서는 AttachmentStorageConnection을 사용합니다.
    인증 유형 <authentication-type> 연결에 사용할 인증 유형입니다.

    이 예제에서는 Access Key를 사용합니다.
    Azure Storage 계정 이름 또는 Blob 엔드포인트 <storage-account-name> 이전에 만든 스토리지 계정의 이름입니다.

    이 예제에서는 attachmentstorageacct를 사용합니다.
    Azure Storage 계정 액세스 키 <storage-account-access-key> 이전에 만든 스토리지 계정에 대한 액세스 키입니다.
  4. 완료되면 새로 만들기를 선택합니다.

  5. Blob 만들기 작업 정보 창에서 전자 메일 본문에 대한 Blob 만들기를 사용하여 작업의 이름을 바꿉니다.

  6. 다음 작업 정보를 제공합니다.

    동적 콘텐츠 목록에서 지정된 출력을 찾을 수 없는 경우 작업 이름 옆에 있는 자세히 보기를 선택합니다.

    매개 변수 Required 설명
    스토리지 계정 이름 또는 Blob 엔드포인트 연결 설정 사용(<storage-account-name-or-blob-endpoint>) 스토리지 계정 이름을 포함하는 옵션을 선택합니다.

    이 예제에서는 https://attachmentstorageacct.blob.core.windows.net를 사용합니다.
    폴더 경로 <path-and-container-name> 앞에서 만든 컨테이너의 경로 및 이름입니다.

    이 예제에서는 폴더 아이콘을 선택한 다음 첨부 파일을 선택합니다.
    Blob 이름 <sender-name> 이 예제에서는 보낸 사람 이름을 Blob 이름으로 사용합니다.

    1. Blob 이름 상자 내에서 선택한 다음 동적 콘텐츠 목록 옵션(번개 아이콘)을 선택합니다.

    2. 새 전자 메일이 도착하는 경우 섹션에서 [보낸 사람]을 선택합니다.
    Blob 콘텐츠 <cleaned-email-body> 이 예제에서는 HTML이 없는 이메일 본문을 Blob 콘텐츠로 사용합니다.

    1. Blob 콘텐츠 상자 내에서 선택한 다음 동적 콘텐츠 목록 옵션(번개 아이콘)을 선택합니다.

    2. RemoveHTMLFunction 호출 섹션에서 본문을 선택합니다.

    다음 스크린샷은 전자 메일 본문 작업에 대한 Blob 만들기에 대해 선택할 출력을 보여 줍니다.

    Blob 만들기 작업의 스토리지 컨테이너, 보낸 사람 및 HTML 없는 전자 메일 본문을 보여주는 스크린샷.

    작업을 마치면 다음 예제와 같이 동작이 표시됩니다.

    완료된 Blob 만들기 작업에 대한 예제 전자 메일 본문 정보를 보여 줍니다.

  7. 워크플로를 저장합니다.

첨부 파일 처리 테스트

  1. 디자이너 도구 모음에서 실행>실행을 선택합니다.

    이 단계는 워크플로를 수동으로 시작하고 실행하지만, 받은 편지함으로 테스트 이메일을 보낼 때까지 아무 일도 발생하지 않습니다.

  2. 다음 기준을 충족하는 메일을 자신에게 보냅니다.

    • 전자 메일의 제목에는 트리거의 제목 필터 매개 변수에 지정한 텍스트가 있습니다. 비즈니스 분석가 2 #423501

    • 이메일에 첨부 파일이 하나 이상 있습니다. 이제 빈 텍스트 파일을 하나 만들고 해당 파일을 이메일에 첨부합니다.

    • 전자 메일에 본문에 몇 가지 테스트 콘텐츠가 있습니다(예: 내 논리 앱 워크플로 테스트).

    트리거가 성공적으로 실행되었지만 워크플로가 트리거되지 않았거나 실행되지 않은 경우 논리 앱 워크플로 문제 해결을 참조하세요.

  3. 워크플로가 메일을 올바른 스토리지 컨테이너에 저장했는지 확인합니다.

    1. Storage Explorer에서 에뮬레이터 및 연결됨>스토리지 계정>attachmentstorageacct(키)>Blob 컨테이너>첨부 파일을 확장합니다.

    2. 이메일의 첨부 파일 컨테이너를 선택합니다.

      아직 워크플로에서 처리한 첨부 파일이 없기 때문에 지금은 컨테이너에 메일만 표시됩니다.

      스크린샷은 저장된 전자 메일만 있는 Storage Explorer를 보여줍니다.

    3. 완료되면 Storage Explorer에서 전자 메일을 삭제합니다.

  4. 필요에 따라 False인 분기(지금은 아무 작업도 수행하지 않음)를 테스트하려면 조건을 만족하지 않는 메일을 보내면 됩니다.

다음으로 For 각 루프를 추가하여 각 전자 메일 첨부 파일을 처리합니다.

첨부 파일을 처리하는 루프 추가

다음 단계에서는 전자 메일의 각 첨부 파일을 처리하는 루프를 추가합니다.

  1. 워크플로 디자이너로 돌아갑니다. 메일 본문용 Blob 만들기 작업 아래에서 작업 추가를 선택합니다.

  2. 다음 일반 단계에 따라 For라는 Control 작업을 추가합니다.

  3. 작업 정보 창에서 For 각 전자 메일 첨부 파일을 사용하여 작업의 이름을 바꿉니다.

  4. 이제 처리할 루프의 콘텐츠를 선택합니다.

    1. 각 전자 메일 첨부 파일 루프에서 이전 단계출력 선택 상자 내에서 선택한 다음 동적 콘텐츠 목록 옵션(번개 아이콘)을 선택합니다.

    2. 새 메일이 도착하는 경우 섹션에서 첨부 파일을 선택합니다.

      첨부 파일 출력에는 전자 메일의 모든 첨부 파일이 포함된 배열이 포함됩니다. For each 루프는 각 배열 항목에 대한 작업을 반복합니다.

      첨부 파일이 표시되지 않으면 자세히 보기를 선택합니다.

      스크린샷은 첨부 파일이라는 출력이 선택된 동적 콘텐츠 목록을 보여줍니다.

  5. 워크플로를 저장합니다.

다음으로, 각 첨부 파일을 첨부 파일 스토리지 컨테이너에 Blob으로 저장하는 작업을 추가합니다 .

첨부 파일당 Blob을 만드는 작업 추가

다음 단계에서는 각 첨부 파일에 대한 Blob을 만드는 작업을 추가합니다.

  1. 디자이너의 각 전자 메일 첨부 파일 루프에서 작업 추가를 선택합니다.

  2. 다음 일반적인 단계에 따라 Blob 만들기라는 Azure Blob Storage 작업을 추가합니다.

  3. Blob 만들기 작업 정보 창에서 전자 메일 첨부 파일에 대한 Blob 만들기를 사용하여 작업의 이름을 바꿉니다.

  4. 다음 작업 정보를 제공합니다.

    동적 콘텐츠 목록에서 지정된 출력을 찾을 수 없는 경우 작업 이름 옆에 있는 자세히 보기를 선택합니다.

    매개 변수 Required 설명
    스토리지 계정 이름 또는 Blob 엔드포인트 연결 설정 사용(<storage-account-name-or-blob-endpoint>) 스토리지 계정 이름을 포함하는 옵션을 선택합니다.

    이 예제에서는 https://attachmentstorageacct.blob.core.windows.net를 사용합니다.
    폴더 경로 <path-and-container-name> 앞에서 만든 컨테이너의 경로 및 이름입니다.

    이 예제에서는 폴더 아이콘을 선택한 다음 첨부 파일을 선택합니다.
    Blob 이름 <attachment-name> 이 예제에서는 첨부 파일 이름을 Blob 이름으로 사용합니다.

    1. Blob 이름 상자 내에서 선택한 다음 동적 콘텐츠 목록 옵션(번개 아이콘)을 선택합니다.

    2. 새 전자 메일이 도착하는 경우 섹션에서 이름을 선택합니다.
    Blob 콘텐츠 <email-content> 이 예제에서는 메일 콘텐츠를 Blob 콘텐츠로 사용합니다.

    1. Blob 콘텐츠 상자 내에서 선택한 다음 동적 콘텐츠 목록 옵션(번개 아이콘)을 선택합니다.

    2. 새 전자 메일이 도착하는 경우 섹션에서 콘텐츠를 선택합니다.

    참고 항목

    첨부 파일이 포함된 배열인 Content 출력과 같은 배열이 있는 출력을 선택하면 디자이너는 해당 출력을 참조하는 작업 주위에 For 각 루프를 자동으로 추가합니다. 그렇게 하면 워크플로가 각 배열 항목에서 해당 작업을 수행할 수 있습니다. 루프를 제거하려면 출력을 참조하는 작업을 루프 외부로 이동하고 루프를 삭제합니다.

    다음 스크린샷은 전자 메일 첨부 파일 작업에 대한 Blob 만들기 작업에 대해 선택할 출력을 보여 줍니다.

    Blob 만들기 작업의 스토리지 컨테이너 및 첨부 파일 정보를 보여 줍니다.

    작업을 마치면 다음 예제와 같이 동작이 표시됩니다.

    완료된 Blob 만들기 작업에 대한 예제 첨부 파일 정보를 보여 줍니다.

  5. 워크플로를 저장합니다.

첨부 파일 처리 다시 테스트

  1. 디자이너 도구 모음에서 실행>실행을 선택합니다.

    이 단계는 워크플로를 수동으로 시작하고 실행하지만, 받은 편지함으로 테스트 이메일을 보낼 때까지 아무 일도 발생하지 않습니다.

  2. 다음 기준을 충족하는 메일을 자신에게 보냅니다.

    • 전자 메일의 제목에는 트리거의 제목 필터 매개 변수에 지정한 텍스트가 있습니다. 비즈니스 분석가 2 #423501

    • 전자 메일에 두 개 이상의 첨부 파일이 있습니다. 이제 빈 텍스트 파일을 두 개 만들고 해당 파일을 이메일에 첨부합니다.

    트리거가 성공적으로 실행되었지만 워크플로가 트리거되지 않았거나 실행되지 않은 경우 논리 앱 워크플로 문제 해결을 참조하세요.

  3. 워크플로가 메일과 첨부 파일을 올바른 스토리지 컨테이너에 저장했는지 확인합니다.

    1. Storage Explorer에서 에뮬레이터 및 연결됨>스토리지 계정>attachmentstorageacct(키)>Blob 컨테이너>첨부 파일을 확장합니다.

    2. 이메일 및 첨부 파일용 첨부 파일 컨테이너를 확인합니다.

      스크린샷은 Storage Explorer 및 저장된 전자 메일 및 첨부 파일을 보여줍니다.

    3. 완료되면 Storage Explorer에서 전자 메일 및 첨부 파일을 삭제합니다.

다음으로, 첨부 파일을 검토하기 위해 이메일을 보내는 작업을 워크플로에 추가합니다.

전자 메일을 보내는 작업을 추가합니다.

다음 단계에서는 워크플로가 첨부 파일을 검토하기 위해 이메일을 보내도록 작업을 추가합니다.

  1. 워크플로 디자이너로 돌아갑니다. True 분기의 각 전자 메일 첨부 파일 루프 아래에서 작업 추가를 선택합니다.

  2. 다음 일반적인 단계에 따라 전자 메일 보내기라는 Office 365 Outlook 작업을 추가합니다.

    이 예제에서는 Azure 회사 또는 학교 계정에서만 작동하는 Office 365 Outlook 커넥터를 계속 사용합니다. Microsoft 개인 계정의 경우 Outlook.com 커넥터를 선택합니다.

  3. 자격 증명을 입력하라는 메시지가 나타나면 Azure Logic Apps가 메일 계정에 대한 연결을 만들 수 있도록 메일 계정에 로그인합니다.

  4. 전자 메일 보내기 작업 정보 창에서 검토를 위해 전자 메일 보내기를 사용하여 작업의 이름을 바꿉니다.

  5. 다음 작업 정보를 제공하고 이메일에 포함할 출력을 선택합니다.

    동적 콘텐츠 목록에서 지정된 출력을 찾을 수 없는 경우 작업 이름 옆에 있는 자세히 보기를 선택합니다.

    매개 변수 Required 설명
    받는 사람 <recipient-email-address> 테스트를 위해 고유한 전자 메일 주소를 사용합니다.
    주제 <전자 메일 제목> 포함할 전자 메일 제목입니다.

    이 예제에서는 ASAP - 지원자 위치 검토: 및 트리거의 주체 출력을 사용합니다.

    1. 제목 상자에 후행 공백이 있는 예제 텍스트를 입력합니다.

    2. 제목 상자 내에서 선택한 다음 동적 콘텐츠 목록 옵션(번개 아이콘)을 선택합니다.

    3. 목록에서 새 전자 메일이 도착하면 제목 선택합니다.
    본문 <이메일 본문> 포함할 전자 메일 본문입니다.

    이 예제에서는 새 지원자를 검토하세요., 보낸 사람이라는 트리거 출력, 이메일 본문 작업에 대한 Blob 만들기의 경로 출력 및 RemoveHTMLFunction 호출 작업의 본문 출력을 사용합니다.

    1. 본문 상자에 예제 텍스트를 입력합니다. 새 지원자를 검토하세요.

    2. 새 줄에 예제 텍스트인 지원자 이름:을 입력하고 트리거에서 From 출력을 추가합니다.

    3. 새 줄에서 예제 텍스트, 애플리케이션 파일 위치:를 입력하고 전자 메일 본문 작업에 대한 Blob 만들기의 경로 출력을 추가합니다.

    4. 새 줄에서 예제 텍스트, 애플리케이션 전자 메일 콘텐츠:를 입력하고 RemoveHTMLFunction 호출 작업에서 본문 출력을 추가합니다.

    참고 항목

    첨부 파일이 포함된 배열인 Content 출력과 같은 배열이 있는 출력을 선택하면 디자이너는 해당 출력을 참조하는 작업 주위에 For 각 루프를 자동으로 추가합니다. 그렇게 하면 워크플로가 각 배열 항목에서 해당 작업을 수행할 수 있습니다. 루프를 제거하려면 출력을 참조하는 작업을 루프 외부로 이동하고 루프를 삭제합니다.

    다음 스크린샷은 완료 된 전자 메일 보내기 작업을 보여 줍니다.

    스크린샷은 보낼 샘플 이메일을 보여줍니다.

  6. 워크플로를 저장합니다.

이제 완료된 워크플로는 다음 예제와 같습니다.

스크린샷은 완료된 워크플로를 보여줍니다.

워크플로 테스트

  1. 다음 기준을 충족하는 이메일을 자신에게 보냅니다.

    • 전자 메일의 제목에는 트리거의 제목 필터 매개 변수에 지정한 텍스트가 있습니다. 비즈니스 분석가 2 #423501

    • 이메일에 첨부 파일이 하나 이상 있습니다. 이전 단계에서 만든 빈 텍스트 파일을 다시 사용할 수 있습니다. 보다 현실적인 시나리오를 원한다면 이력서 파일을 첨부합니다.

    • 이메일 본문에 다음 텍스트가 있으며, 이 텍스트를 복사하여 붙여넣을 수 있습니다.

      
      Name: Jamal Hartnett
      
      Street address: 12345 Anywhere Road
      
      City: Any Town
      
      State or Country: Any State
      
      Postal code: 00000
      
      Email address: jamhartnett@outlook.com
      
      Phone number: 000-000-0000
      
      Position: Business Analyst 2 #423501
      
      Technical skills: Dynamics CRM, MySQL, Microsoft SQL Server, JavaScript, Perl, Power BI, Tableau, Microsoft Office: Excel, Visio, Word, PowerPoint, SharePoint, and Outlook
      
      Professional skills: Data, process, workflow, statistics, risk analysis, modeling; technical writing, expert communicator and presenter, logical and analytical thinker, team builder, mediator, negotiator, self-starter, self-managing  
      
      Certifications: Six Sigma Green Belt, Lean Project Management
      
      Language skills: English, Mandarin, Spanish
      
      Education: Master of Business Administration
      
  2. 워크플로를 실행합니다. 성공적으로 실행되면 워크플로에서 다음 예제와 비슷한 메일을 보냅니다.

    스크린샷은 논리 앱 워크플로에서 보낸 예제 전자 메일을 보여줍니다.

    이메일을 받지 못한 경우 이메일의 정크 폴더를 확인합니다. 그렇지 않고 워크플로가 올바르게 실행되었는지 확실하지 않으면 논리 앱 워크플로 문제 해결을 참조하세요.

축하합니다. 여러 Azure 서비스에서 작업을 자동화하고 일부 사용자 지정 코드를 호출하는 워크플로를 만들고 실행했습니다.

리소스 정리

논리 앱 리소스를 사용하지 않도록 설정하거나 삭제할 때까지 워크플로가 계속 실행됩니다. 이 샘플이 더 이상 필요하지 않으면 논리 앱 및 관련 리소스가 포함된 리소스 그룹을 삭제합니다.

  1. Azure Portal 검색 상자에 리소스 그룹을 입력하고 리소스 그룹을 선택합니다.

  2. 리소스 그룹 목록에서 이 자습서에 대한 리소스 그룹을 선택합니다.

  3. 리소스 그룹 메뉴에서 개요를 선택합니다.

  4. 개요 페이지 도구 모음에서 리소스 그룹 삭제를 선택합니다.

  5. 확인 창이 표시되면 리소스 그룹 이름을 입력하고 삭제를 선택합니다.

다음 단계

이 자습서에서는 Azure Storage 및 Azure Functions 같은 Azure 서비스를 통합하여 메일 첨부 파일을 처리하고 저장하는 논리 앱 워크플로를 만들었습니다. 지금부터는 논리 앱 워크플로를 빌드하는 데 사용할 수 있는 다른 커넥터에 대해서 알아보세요.