적용 대상: Azure Logic Apps(소비)
통합 개발자는 인프라를 관리하지 않고 SaaS 앱, 엔터프라이즈 시스템 및 데이터 원본에서 비즈니스 프로세스를 자동화해야 하는 경우가 많습니다. 또한 워크플로를 빌드하고, 정의를 버전 지정하고, 업데이트하고, 변경 내용을 효율적으로 검토할 수 있는 코드 우선 방법이 필요합니다.
이 빠른 시작에서는 Visual Studio Code의 로컬 코드 우선 도구를 사용하여 다중 테넌트 Azure Logic Apps에서 소비 워크플로를 만들고 관리하는 방법을 보여 줍니다. 소비 워크플로는 이벤트 기반 및 예약된 워크플로에 대한 서버리스 통합 모델을 제공하므로 실행되는 작업에 대해서만 비용을 지불하면서 서비스를 연결하고 프로세스를 자동화할 수 있습니다.
Visual Studio Code에서 코드 편집기를 사용하여 JSON(JavaScript Object Notation)에서 워크플로 정의를 편집하고, 필요할 때 비주얼 디자이너를 사용하고, Azure에서 배포된 워크플로를 관리할 수 있습니다. Linux, Windows 및 macOS와 같이 Visual Studio Code가 실행되는 모든 개발 플랫폼에서 워크플로 및 통합 계정을 작업할 수도 있습니다.
다음 스크린샷은 예제 소비 워크플로 정의의 모양을 보여줍니다.
자세한 내용은 다음을 참조하십시오.
필수 조건
Azure 계정 및 구독 무료 Azure 계정을 만듭니다.
JSON 형식의 논리 앱 워크플로 정의 및 해당 구조에 대한 기본 지식입니다.
이 문서의 예제에서는 기본 개념에 더 중점을 둔 이 빠른 시작 과 동일한 논리 앱 워크플로를 만듭니다. Azure CLI를 통해 워크플로를 만들고 관리하는 방법을 배울 수도 있습니다.
Azure 및 Azure 구독에 로그인하기 위해 웹에 액세스합니다.
아직 없는 경우 다음 도구를 다운로드하여 설치합니다.
Azure Logic Apps용 Visual Studio Code 확장(소비).
Visual Studio Marketplace에서 또는 Visual Studio Code 내부에서 직접 이 확장을 설치합니다.
설치 후 Visual Studio Code를 다시 로드합니다.
자세한 내용은 확장 마켓플레이스를 참조하세요. 이 확장의 오픈 소스 버전에 참여하려면 GitHub의 Visual Studio Code용 Azure Logic Apps 확장을 방문합니다.
논리 앱 워크플로가 특정 IP 주소로 트래픽을 제한하는 방화벽을 통해 통신해야 하는 경우 방화벽은 Azure Logic Apps에서 사용하는 인바운드 및 아웃바운드 IP 주소 또는 논리 앱 워크플로가 있는 Azure 지역의 런타임 모두에 대한 액세스를 허용해야 합니다.
논리 앱 워크플로에서 Office 365 Outlook 커넥터 또는 SQL 커넥터와 같은 관리형 커넥터를 사용하거나 사용자 지정 커넥터를 사용하는 경우 방화벽은 논리 앱의 Azure 지역에 있는 모든관리형 커넥터 아웃바운드 IP 주소 에 대한 액세스를 허용해야 합니다.
Visual Studio Code에서 Azure에 액세스
Visual Studio Code에서 Azure 계정에 로그인합니다.
로그인 시간이 평소보다 오래 걸리는 경우 Visual Studio Code는 디바이스 코드를 제공하여 Microsoft 인증 웹 사이트를 통해 로그인하라는 메시지를 표시합니다. 대신 코드를 사용하여 로그인하려면 다음 단계를 수행합니다.
디바이스 코드 사용을 선택한 다음 복사 및 열기를 선택합니다.
링크 열기를 선택하여 새 브라우저 창을 열고 인증 웹 사이트로 계속 진행합니다.
계정에 로그인 페이지에서 인증 코드를 입력하고, 다음을 선택합니다.
작업 표시줄에서 Azure 아이콘을 선택합니다.
이제 Azure 창에서 Logic Apps(소비) 및 통합 계정 섹션에 계정과 연결된 Azure 구독이 표시됩니다. 예상되는 구독이 표시되지 않거나 섹션에 구독이 너무 많은 경우 다음 단계를 수행합니다.
Logic Apps(소비) 섹션에서 구독 선택을 선택합니다.
구독 목록에서 사용하려는 구독을 선택합니다.
Logic Apps (Consumption) 섹션에서 구독을 확장하면 해당 구독에서 배포된 논리 앱을 볼 수 있습니다.
논리 앱 만들기
Visual Studio Code의 Logic Apps(소비) 섹션의 구독 바로 가기 메뉴에서 논리 앱 만들기를 선택합니다.
표시되는 목록에서 구독의 모든 Azure 리소스 그룹이 표시됩니다.
리소스 그룹 목록에서 새 리소스 그룹 만들기 또는 기존 리소스 그룹을 선택합니다.
이 예제에서는 새 리소스 그룹 만들기를 선택합니다. 예를 들면 다음과 같습니다.
Azure 리소스 그룹의 이름을 입력합니다.
논리 앱 메타데이터를 저장할 Azure 지역을 선택합니다.
논리 앱의 이름을 입력합니다.
Azure 창의 Azure 구독 아래에 새 논리 앱과 빈 워크플로가 표시됩니다. Visual Studio Code는 기본 워크플로 정의를 포함하는 JSON(.logicapp.json) 파일도 엽니다. 예를 들면 다음과 같습니다.
이제 이 JSON 파일에서 워크플로 정의를 수동으로 작성할 수 있습니다. 워크플로 정의의 구조 및 구문에 대한 기술 참조는 Azure Logic Apps에 대한 워크플로 정의 언어 스키마를 참조하세요.
다음 샘플 논리 앱 워크플로 정의는 RSS 트리거 및 Office 365 Outlook 작업으로 시작합니다. 일반적으로 JSON 요소는 각 섹션에서 사전순으로 표시됩니다. 그러나 이 샘플에서는 워크플로 작업이 디자이너에 표시되는 순서대로 이러한 요소를 대략적으로 보여 줍니다.
{ "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#", "contentVersion": "1.0.0.0", "parameters": { "$connections": { "defaultValue": {}, "type": "Object" } }, "triggers": { "When_a_feed_item_is_published": { "recurrence": { "frequency": "Minute", "interval": 30 }, "splitOn": "@triggerBody()?['value']", "type": "ApiConnection", "inputs": { "host": { "connection": { "name": "@parameters('$connections')['rss']['connectionId']" } }, "method": "get", "path": "/OnNewFeed", "queries": { "feedUrl": "@{encodeURIComponent('https://feeds.content.dowjones.io/public/rss/RSSMarketsMain')}", "sinceProperty": "PublishDate" } } } }, "actions": { "Send_an_email_(V2)": { "runAfter": {}, "type": "ApiConnection", "inputs": { "body": { "Body": "<p>Title: @{triggerBody()?['title']}<br>\n<br>\nDate published: @{triggerBody()?['updatedOn']}<br>\n<br>\nLink: @{triggerBody()?['primaryLink']}</p>", "Subject": "RSS item: @{triggerBody()?['title']}", "To": "sophia-owen@fabrikam.com" }, "host": { "connection": { "name": "@parameters('$connections')['office365']['connectionId']" } }, "method": "post", "path": "/v2/Mail" } } }, "outputs": {} }중요한
이 샘플 워크플로 정의를 다시 사용하려면 조직 회사 또는 학교 계정(예: @fabrikam.com)이 필요합니다. 가상 이메일 주소를 사용자 고유의 이메일 주소로 바꾸어야 합니다.
Outlook.com 또는 Gmail과 같은 다른 전자 메일 커넥터를 사용하려면
Send_an_email_action에서 사용할 수 있는 유사한 작업으로 바꿉 니다.Gmail 커넥터를 사용하려는 경우 G Suite 비즈니스 계정만 논리 앱에서 제한 없이 이 커넥터를 사용할 수 있습니다. Gmail 소비자 계정이 있는 경우 특정 Google 승인 서비스에서만 이 커넥터를 사용하거나 Gmail 커넥터 인증에 사용할 Google 클라이언트 앱을 만들 수 있습니다. 자세한 내용은 Azure Logic Apps의 Google 커넥터에 대한 데이터 보안 및 개인정보처리방침을 참조하세요.
완료되면 워크플로 정의를 저장합니다. (파일>Ctrl +S를 저장하거나 누릅니다).
논리 앱 워크플로 정의를 Azure 구독에 업로드하라는 메시지가 표시되면 업로드를 선택합니다.
이 단계에서는 Visual Studio Code의 논리 앱 워크플로 정의를 Azure Portal에 게시하여 Azure에서 워크플로를 라이브로 실행하고 실행합니다.
디자이너에서 워크플로 보기
Visual Studio Code에서 읽기 전용 디자인 보기에서 논리 앱 워크플로를 열 수 있습니다. 디자이너에서 워크플로 정의를 편집할 수는 없지만 디자이너 보기를 사용하여 워크플로를 시각적으로 확인할 수 있습니다.
Azure 창의 Logic Apps(소비) 섹션에 있는 논리 앱 바로 가기 메뉴에서 디자이너에서 열기를 선택합니다.
읽기 전용 디자이너는 별도의 탭에서 열리고 논리 앱 워크플로를 보여 줍니다. 예를 들면 다음과 같습니다.
Azure Portal에서 워크플로 보기
Azure Portal에서 논리 앱 워크플로 정의를 검토하려면 다음 단계를 수행합니다.
Azure Portal에서 논리 앱과 연결된 동일한 Azure 계정 및 구독을 사용하여 로그인합니다.
Azure Portal 검색 상자에 논리 앱 이름을 입력합니다. 결과 목록에서 논리 앱을 선택합니다.
논리 앱 사이드바의 개발 도구 아래에서 디자이너 또는 코드 보기에서 워크플로를 엽니다.
배포된 논리 앱 편집
Visual Studio Code에서 Azure에서 이미 배포된 논리 앱 리소스에 대한 워크플로 정의를 열고 편집할 수 있습니다.
중요한
프로덕션 환경에서 적극적으로 실행되는 논리 앱 워크플로를 편집하기 전에 먼저 논리 앱 리소스를 사용하지 않도록 설정하여 중단을 최소화하고 워크플로를 중단시킬 위험을 방지합니다.
Visual Studio Code의 작업 표시줄에서 Azure 아이콘을 선택합니다.
Azure 창의 Logic Apps(소비) 섹션에서 Azure 구독을 확장하고 원하는 논리 앱을 선택합니다.
논리 앱 바로 가기 메뉴에서 편집기에서 열기를 선택합니다. 또는 논리 앱 이름 옆에 있는 편집 아이콘을 선택합니다.
Visual Studio Code는 워크플로 정의를 볼 수 있도록 로컬 임시 폴더에 .logicapp.json 파일을 엽니다.
워크플로 정의 파일을 변경합니다.
완료되면 변경 내용을 저장합니다(파일>저장 또는 Ctrl+S를 누릅니다).
Azure Portal에서 변경 내용을 업로드하고 기존 논리 앱 워크플로를 덮어쓰 라는 메시지가 표시되면 업로드를 선택합니다.
이 단계에서는 Azure Portal에서 논리 앱 리소스에 대한 업데이트를 게시합니다.
다른 버전 보기 또는 승격
Visual Studio Code에서 논리 앱 워크플로에 대한 이전 버전을 열고 검토할 수 있습니다. 또한 이전 버전을 현재 버전으로 승격할 수도 있습니다.
중요한
프로덕션 환경에서 적극적으로 실행되는 논리 앱 워크플로를 변경하기 전에 먼저 논리 앱 리소스를 사용하지 않도록 설정하여 중단을 최소화하고 해당 논리 앱을 중단시킬 위험을 방지합니다.
Azure 창의 Logic Apps(소비) 섹션에서 Azure 구독을 확장하여 연결된 논리 앱을 봅니다.
구독 아래에서 논리 앱, 버전을 차례로 펼칩니다.
버전 목록에 논리 앱의 이전 버전(있는 경우)이 표시됩니다.
이전 버전을 보려면 다음 단계 중 하나를 선택합니다.
JSON 정의를 보려면 버전 아래에서 해당 정의의 버전 번호를 선택합니다. 또는 버전 바로 가기 메뉴에서 편집기에서 열기를 선택합니다.
로컬 컴퓨터에서 새 파일이 열리고 해당 버전의 JSON 정의가 표시됩니다.
읽기 전용 디자이너에서 버전을 보려면 버전의 바로 가기 메뉴에서 디자이너에서 열기를 선택합니다.
이전 버전을 현재 버전으로 승격하려면 다음 단계를 수행합니다.
버전 아래의 이전 버전의 바로 가기 메뉴에서 [승격]을 선택합니다.
Visual Studio Code에서 확인을 요청하는 메시지가 표시된 후 계속하려면 예를 선택합니다.
Visual Studio Code는 선택한 버전을 현재 버전으로 승격하고 새 번호를 승격된 버전에 할당합니다. 이제 이전의 현재 버전이 승격된 버전 아래에 표시됩니다.
논리 앱 활성화 또는 비활성화
Visual Studio Code에서 게시된 논리 앱 워크플로를 편집하고 변경 내용을 저장하는 경우 이미 배포된 논리 앱을 덮어쓰 게 됩니다. 프로덕션 환경에서 논리 앱 워크플로를 중단하지 않도록 하고 중단을 최소화하려면 먼저 논리 앱 리소스를 사용하지 않도록 설정합니다. 워크플로가 여전히 예상대로 작동하는지 확인한 후 논리 앱 리소스를 다시 활성화할 수 있습니다.
논리 앱 리소스를 사용하지 않도록 설정하거나 사용하도록 설정하면 다음과 같은 방법으로 워크플로 인스턴스에 영향을 줍니다.
Azure Logic Apps는 진행 중인 워크플로와 보류 중인 워크플로가 완료될 때까지 계속 실행됩니다. 볼륨 또는 백로그에 따라 이 프로세스를 완료하는 데 시간이 걸릴 수 있습니다.
Azure Logic Apps가 새 워크플로 인스턴스를 만들거나 실행하지 않습니다.
트리거는 다음에 조건이 충족될 때 실행되지 않습니다.
트리거 상태는 워크플로가 중지된 지점을 기억합니다. 따라서 논리 앱을 다시 활성화하면 마지막 실행 이후 아직 처리되지 않은 항목에 대해 트리거가 발생합니다.
이러한 처리되지 않은 항목에서 트리거가 실행되지 않도록 하려면 논리 앱 리소스를 다시 활성화하기 전에 트리거 상태를 지웁니다.
- 워크플로에서 트리거의 모든 부분을 편집합니다.
- 변경 내용을 저장합니다. 이 단계는 트리거의 현재 상태를 다시 설정합니다.
- 논리 앱 리소스를 다시 활성화합니다.
논리 앱 리소스를 사용하지 않도록 설정한 경우에도 워크플로 실행을 다시 제출할 수 있습니다.
Visual Studio Code에서 논리 앱 리소스를 사용하지 않도록 설정하거나 사용하려면 다음 단계를 수행합니다.
Visual Studio Code에서 Azure 창을 엽니다.
Logic Apps(소비) 섹션에서 Azure 구독을 확장하여 관련된 로직 앱을 확인합니다.
논리 앱 리소스를 사용하지 않도록 설정하려면 논리 앱 바로 가기 메뉴에서 사용 안 함을 선택합니다.
논리 앱 리소스를 다시 활성화할 준비가 되면 논리 앱 바로 가기 메뉴에서 [사용]을 선택합니다.
논리 앱 삭제
논리 앱을 삭제하면 다음과 같은 방식으로 워크플로 인스턴스에 영향을 줍니다.
Azure Logic Apps는 진행 중인 워크플로 실행 및 보류 중인 워크플로 실행을 취소하려고 합니다.
볼륨이나 백로그가 큰 경우에도 대부분의 실행은 완료 또는 시작 전에 취소됩니다. 그러나 취소 프로세스를 완료하는 데 시간이 걸릴 수 있습니다. 한편, 서비스는 취소 프로세스를 진행하는 동안 실행할 작업 일부를 선택할 수 있습니다.
Azure Logic Apps가 새 워크플로 인스턴스를 만들거나 실행하지 않습니다.
워크플로를 삭제한 다음 동일한 워크플로를 다시 만드는 경우 다시 만들어진 워크플로에는 다른 메타데이터가 있습니다. 삭제된 워크플로를 호출한 워크플로를 다시 저장해야 합니다. 다시 저장하면 호출자가 다시 생성된 워크플로에 대한 올바른 정보를 가져옵니다. 그렇지 않으면 다시 생성된 워크플로에 대한 호출이
Unauthorized오류와 함께 실패합니다. 이 동작은 Azure 함수를 호출하는 워크플로 및 통합 계정에서 아티팩트를 사용하는 워크플로에도 적용됩니다.
Visual Studio Code에서 논리 앱 리소스를 삭제하려면 다음 단계를 수행합니다.
Visual Studio Code에서 Azure 창을 엽니다.
Logic Apps(소비) 섹션에서 Azure 구독을 확장하여 연결된 논리 앱 리소스를 봅니다. 삭제할 논리 앱 리소스를 찾습니다.
논리 앱 바로 가기 메뉴에서 삭제를 선택합니다.