Visual Studio Code를 사용하여 단일 테넌트 Azure Logic Apps에서 표준 논리 앱 워크플로 만들기
적용 대상: Azure Logic Apps(표준)
이 방법 가이드는 Azure Logic Apps(표준) 확장과 함께 Visual Studio Code를 사용하여 단일 테넌트 Azure Logic Apps에서 실행되는 통합 워크플로 예를 만드는 방법을 보여 줍니다. 이 워크플로를 만들기 전에 다음 기능을 제공하는 표준 논리 앱 리소스를 만듭니다.
논리 앱에는 여러 상태 저장 및 상태 비저장 워크플로가 포함될 수 있습니다.
동일한 논리 앱과 테넌트에 있는 워크플로는 Azure Logic Apps 런타임과 동일한 프로세스에서 실행되므로 같은 리소스를 공유하고 더 우수한 성능을 제공합니다.
Visual Studio Code 개발 환경을 사용하여 로컬에서 워크플로를 만들기, 실행 및 테스트할 수 있습니다.
준비가 되면 단일 테넌트 Azure Logic Apps 환경 또는 App Service Environment v3(Windows 기반 앱 서비스 플랜만 해당)에서 워크플로를 실행할 수 있는 Azure에 Logic Apps를 배포할 수 있습니다. 또한 Azure Logic Apps 컨테이너화된 런타임으로 인해 Azure, Azure Kubernetes Service, 온-프레미스 또는 기타 클라우드 공급자를 포함하여 Kubernetes가 실행할 수 있는 모든 곳에서 워크플로를 배포하고 실행할 수 있습니다.
참고 항목
Kubernetes 클러스터에 논리 앱을 배포하는 방법은 현재 공개 미리 보기로 제공됩니다.
단일 테넌트 Azure Logic Apps에 대한 자세한 내용은 Azure Logic Apps의 단일 테넌트 및 다중 테넌트 비교를 검토하세요.
예제 워크플로는 클라우드 기반이며 두 단계만 포함하지만 클라우드, 온-프레미스 및 하이브리드 환경에서 다양한 앱, 데이터, 서비스 및 시스템을 연결할 수 있는 수백 가지 작업에서 워크플로를 만들 수 있습니다. 예제 워크플로는 기본 제공 요청 트리거로 시작되며 Office 365 Outlook 작업을 따릅니다. 트리거는 호출 가능한 워크플로 엔드포인트를 만들고 호출자의 인바운드 HTTPS 요청을 기다립니다. 트리거가 요청을 수신하고 작동하면, 다음 작업이 트리거에서 선택한 출력과 함께 특정 이메일 주소로 이메일을 전송하여 실행됩니다.
팁
Office 365 계정이 없으면 이메일 계정(예: Outlook.com)에서 메시지를 보낼 수 있는 사용 가능한 모든 다른 작업을 사용하면 됩니다.
대신 Azure Portal을 사용하여 예제 워크플로를 만들려면 단일 테넌트 Azure Logic Apps와 Azure Portal을 사용하여 통합 워크플로 만들기의 단계를 수행합니다. 두 옵션 모두 동일한 종류의 환경에서 논리 앱 워크플로를 개발, 실행 및 배포하는 기능을 제공합니다. 하지만 Visual Studio Code를 사용하면 개발 환경에서 로컬로 워크플로를 개발, 테스트 및 실행할 수 있습니다.
진행하면서 다음과 같은 상위 수준 작업을 완료하게 됩니다.
- 논리 앱의 프로젝트와 비어 있는 상태 정상 워크플로를 만듭니다.
- 트리거 및 작업을 추가합니다.
- 로컬에서 실행 기록을 실행, 테스트, 디버그 및 검토합니다.
- 방화벽 액세스를 위한 도메인 이름 세부 정보를 찾습니다.
- 필요에 따라 Application Insights를 사용하도록 설정하는 Azure에 배포합니다.
- Visual Studio Code 및 Azure Portal에서 배포된 논리 앱을 관리합니다.
- 상태 비저장 워크플로에 실행 기록을 사용하도록 설정합니다.
- 배포 후 Application Insights를 사용하도록 설정하거나 엽니다.
필수 조건
액세스 및 연결
Azure Logic Apps 런타임에서 기본적으로 실행되는 기본 제공 커넥터만 사용하여 표준 논리 앱 프로젝트를 로컬로 빌드하고 워크플로를 실행하려는 경우 다음 요구 사항은 필요하지 않습니다. 그러나 프로젝트를 Visual Studio Code에서 Azure로 게시 또는 배포하거나 글로벌 Azure에서 실행되는 관리형 커넥터를 사용하거나, Azure에 이미 배포된 표준 논리 앱 리소스와 워크플로에 액세스하려면 다음과 같은 연결 및 Azure 계정 자격 증명이 있는지 확인합니다.
요구 사항을 다운로드하고, Visual Studio Code에서 Azure 계정으로 연결하고, Visual Studio Code에서 Azure로 게시할 수 있도록 인터넷에 액세스합니다.
Azure 계정 및 구독 구독이 없는 경우 Azure 체험 계정에 등록합니다.
이 문서와 동일한 예제 워크플로를 만들려면 Microsoft 회사 또는 학교 계정을 사용하여 로그인하는 Office 365 Outlook 이메일 계정이 필요합니다.
Outlook.com과 같은 다른 이메일 커넥터를 선택하면 계속 예제를 수행할 수 있으며 일반적인 전체 단계는 동일합니다. 그러나 몇 가지 방식으로 서로 다를 수 있습니다. 예를 들어 Outlook.com 커넥터를 사용하는 경우 개인 Microsoft 계정을 대신 사용하여 로그인합니다.
도구
무료인 Visual Studio Code를 다운로드하고 설치합니다.
Visual Studio Code의 모든 Azure 확장에서 Azure 로그인 및 구독 필터링에 대한 단일 공통 환경을 갖추도록 Visual Studio Code용 Azure 계정 확장을 다운로드하고 설치합니다. 이 방법 가이드에는 이 환경을 사용하는 단계가 포함되어 있습니다.
다음 두 가지 방법 중 하나를 사용하여 특정 운영 체제에 대한 Visual Studio Code 종속성을 다운로드하고 설치합니다.
모든 종속성을 자동으로 설치
버전 2.81.5부터 Visual Studio Code용 Azure Logic Apps(표준) 확장에는 새 이진 폴더에 필요한 모든 종속성을 자동으로 설치하고 기존 종속성을 변경하지 않은 채 그대로 두는 종속성 설치 관리자가 포함되어 있습니다. 자세한 내용은 Visual Studio Code용 Azure Logic Apps(표준) 확장을 사용하여 더 쉽게 시작하기를 참조하세요.
이 확장에 포함된 종속성은 다음과 같습니다.
Dependency 설명 Visual Studio Code용 C# F5 기능을 사용하여 워크플로를 실행할 수 있습니다. Visual Studio Code용 Azurite 논리 앱 프로젝트에서 작업하고 로컬 개발 환경에서 워크플로를 실행할 수 있도록 Visual Studio Code에서 사용할 로컬 데이터 저장소 및 에뮬레이터를 제공합니다. Azurite가 자동으로 시작되지 않도록 하려면 이 옵션을 사용하지 않도록 설정할 수 있습니다.
1. 파일 메뉴에서 기본 설정>설정을 차례로 선택합니다.
2. 사용자 탭에서 확장>Azure Logic Apps(표준)를 차례로 선택합니다.
3. Azure Logic Apps 표준: Azurite 자동 시작이라는 설정을 찾아서 선택된 확인란의 선택을 취소합니다..NET SDK 6.x.x Azure Logic Apps(표준) 런타임의 필수 구성 요소인 .NET Runtime 6.x.x를 포함합니다. Azure Functions Core Tools - 4.x 버전 운영 체제(Windows, macOS 또는 Linux)에 따라 해당 버전을 설치합니다.
이러한 도구에는 Azure Logic Apps(표준) 확장이 Visual Studio Code에서 사용하는 Azure Functions 런타임을 구동하는 동일한 런타임 버전이 포함되어 있습니다.Node.js 버전 16.x.x(최신 버전이 이미 설치되어 있지 않은 경우) JavaScript를 실행하는 인라인 코드 작업을 사용하도록 설정하는 데 필요합니다. 설치 관리자에서 수행하지 않는 작업은 다음과 같습니다.
- 필요한 종속성이 이미 있는지 확인합니다.
- 누락된 종속성만 설치합니다.
- 기존 종속성의 이전 버전을 업데이트합니다.
버전 2.81.5부터 Visual Studio Code용 Azure Logic Apps(표준) 확장을 다운로드하고 설치합니다.
Visual Studio Code의 작업 막대에서 확장을 선택합니다. (키보드: Ctrl+Shift+X 누르기)
확장 창에서 줄임표(...) 메뉴를 열고 VSIX에서 설치를 선택합니다.
다운로드한 VSIX 파일을 찾아서 선택합니다.
설정이 완료되면 확장이 자동으로 활성화되고 종속성 이진 파일 유효성 검사 및 설치 명령을 실행합니다. 프로세스 로그를 보려면 출력 창을 엽니다.
다음 메시지가 표시되면 예(권장)를 선택하여 필요한 종속성을 자동으로 설치할 것임을 확인합니다.
필요한 경우 Visual Studio Code를 다시 로드합니다.
종속성이 다음 폴더에 올바르게 표시되는지 확인합니다.
C:\Users\<your-user-name>\.azurelogicapps\dependencies\<dependency-name>
Visual Studio Code에서 다음 확장 설정을 확인합니다.
파일 메뉴에서 기본 설정>설정을 차례로 선택합니다.
사용자 탭에서 확장>Azure Logic Apps(표준)를 차례로 선택합니다.
다음 설정을 확인합니다.
확장 설정 값 종속성 경로 C:\Users\<your-user-name>\.azurelogicapps\dependencies 종속성 시간 제한 60초 Dotnet 이진 경로 C:\Users\<your-user-name>\.azurelogicapps\dependencies\DotNetSDK\dotnet.exe Func Core Tools 이진 경로 C:\Users\<your-user-name>\.azurelogicapps\dependencies\FuncCoreTools\func Node JS 이진 경로 C:\Users\<your-user-name>\.azurelogicapps\dependencies\NodeJs\node Azurite 자동 시작 Enabled 디자인 타임 자동 시작 Enabled
.vscode/tasks.json 파일에 저장된 사용자 지정 정의 작업이 포함된 기존 논리 앱 프로젝트가 있는 경우 프로젝트를 열기 전에 tasks.json 파일을 다른 곳에 저장했는지 확인합니다.
프로젝트를 열면 필요한 종속성을 사용하도록 tasks.json 파일을 업데이트하라는 메시지가 표시됩니다. 계속하도록 선택하면 확장에서 tasks.json 파일을 덮어씁니다.
논리 앱 프로젝트를 열면 다음 알림이 표시됩니다.
알림 작업 시작 시 항상 백그라운드 디자인 타임 프로세스를 시작하시겠습니까? 워크플로 디자이너를 더 빨리 열려면 예(권장)를 선택합니다. 프로젝트 시작 시 자동으로 시작하도록 Azurite를 구성하시겠습니까? 프로젝트가 열릴 때 Azurite 스토리지가 자동으로 시작되도록 하려면 자동 시작 사용을 선택합니다. Visual Studio Code 위쪽에 표시되는 명령 창에서 Enter 키를 눌러 다음 기본 경로를 적용합니다.
C\Users\<your-user-name>\.azurelogicapps\.azurite
미리 보기의 알려진 문제
모든 종속성을 .NET Core SDK 버전이 없는 컴퓨터에 자동으로 설치하도록 옵트인한 경우 다음 메시지가 표시됩니다.
".NET Core SDK를 찾을 수 없습니다. dotnet 실행 오류 info: 오류: 명령 실패: dotnet --info 'dotnet이 내부 또는 외부 명령, 작동 가능한 프로그램 또는 일괄 처리 파일로 인식되지 않습니다. 'dotnet'은 내부 또는 외부 명령, 작동 가능한 프로그램, 일괄 처리 파일로 인식되지 않습니다. . .NET Core 디버깅은 사용하도록 설정되지 않습니다. .NET Core SDK가 설치되어 있고 경로에 있는지 확인하세요."
확장이 활성화되면 .NET Core 프레임워크가 여전히 설치되고 있으므로 이 메시지가 표시됩니다. 이 메시지 사용을 설정하지 않도록 안전하게 선택할 수 있습니다.
기존 논리 앱 프로젝트를 열거나 func host start에 대한 디버깅 작업(tasks.json)을 시작하는 데 문제가 있고 이 메시지가 표시되면 다음 단계에 따라 문제를 해결하세요.
dotnet 이진 경로를 PATH 환경 변수에 추가합니다.
Windows 작업 표시줄의 검색 상자에서 환경 변수를 입력하고, 시스템 환경 변수 편집을 선택합니다.
시스템 속성 상자의 고급 탭에서 환경 변수를 선택합니다.
환경 변수 상자의 <your-user-name>에 대한 사용자 변수 목록에서 PATH를 선택한 다음, 편집을 선택합니다.
다음 값이 목록에 표시되지 않으면 새로 만들기를 선택하여 다음 값을 추가합니다.
C:\Users\<your-user-name>\.azurelogicapps\dependencies\DotNetSDK
완료되면 확인을 선택합니다.
모든 Visual Studio Code 창을 닫고, 프로젝트를 다시 엽니다.
다음과 같이 이진 종속성을 설치하고 유효성을 검사하는 데 문제가 있는 경우
- Linux 권한 문제
- <파일 또는 경로>가 없음 오류가 발생합니다.
- <dependency-name>에 대한 유효성 검사가 중단됩니다.
다음 단계에 따라 이진 종속성 유효성 검사 및 설치 명령을 다시 실행합니다.
보기 메뉴에서 명령 팔레트를 선택합니다.
명령 창이 표시되면 이진 종속성 유효성 검사 및 설치 명령을 입력하고 실행합니다.
.NET Core 7 이상 버전이 설치되어 있지 않은 경우 Azure Functions 프로젝트가 포함된 Azure Logic Apps 작업 영역을 열면 다음 메시지가 표시됩니다.
[function-name].csproj 프로젝트를 로드하는 동안 문제가 발생했습니다. 자세한 내용은 로그를 참조하세요.
이 누락된 구성 요소는 Azure Functions 프로젝트에 영향을 주지 않으므로 이 메시지를 안전하게 무시할 수 있습니다.
개별적으로 각 종속성 설치
Dependency 설명 .NET SDK 6.x.x Azure Logic Apps(표준) 런타임의 필수 구성 요소인 .NET Runtime 6.x.x를 포함합니다. Azure Functions Core Tools - 4.x 버전 - Windows: MSI(Microsoft Installer) 버전( func-cli-X.X.XXXX-x*.msi
)을 사용합니다.
- macOS
- Linux
이러한 도구에는 Azure Logic Apps(표준) 확장이 Visual Studio Code에서 사용하는 Azure Functions 런타임을 구동하는 동일한 런타임 버전이 포함되어 있습니다.
해당 버전보다 이전 버전을 설치한 경우 먼저 이전 버전을 제거하거나 PATH 환경 변수가 다운로드 및 설치한 버전을 가리키는지 확인합니다.Node.js 버전 16.x.x(최신 버전이 이미 설치되어 있지 않은 경우) JavaScript를 실행하는 인라인 코드 작업을 사용하도록 설정하는 데 필요합니다.
참고: Windows의 경우 MSI 버전을 다운로드합니다. ZIP 버전을 대신 사용하는 경우 운영 체제의 PATH 환경 변수를 사용하여 Node.js를 사용하도록 수동으로 설정해야 합니다.모든 종속성(미리 보기)을 자동으로 설치하는 Azure Logic Apps(표준) 확장 버전을 이미 설치한 경우 이 단계를 건너뜁니다. 그렇지 않은 경우 Visual Studio Code용 Azure Logic Apps(표준) 확장을 다운로드하고 설치합니다.
Visual Studio Code의 왼쪽 도구 모음에서 확장을 선택합니다.
확장 검색 상자에서 azure logic apps standard를 입력합니다. 결과 목록에서 Azure Logic Apps(표준) > 설치를 선택합니다.
설치가 완료되면 확장이 확장: 설치됨 목록에 표시됩니다.
팁
확장이 설치된 목록에 표시되지 않으면 Visual Studio Code를 다시 시작하십시오.
현재 사용량(다중 테넌트) 및 표준(단일 테넌트) 확장은 동시에 설치할 수 있습니다. 개발 환경은 일부 면에서 서로 다르지만 Azure 구독에 표준 및 소비 논리 앱 형식이 모두 포함될 수 있습니다. Visual Studio Code에서 Azure 창에는 Azure 구독의 모든 Azure 배포 및 호스팅 논리 앱이 표시되지만 앱을 다음과 같은 방식으로 구성합니다.
Logic Apps(사용량) 섹션: 구독의 모든 사용량 논리 앱입니다.
리소스 섹션: 구독의 모든 표준 논리 앱입니다. 이전에는 이러한 논리 앱이 Logic Apps(표준) 섹션에 표시되었지만 이제 리소스 섹션으로 이동되었습니다.
로컬에서 기본 제공 HTTP 웹후크 트리거와 같은 웹후크 기반 트리거와 작업을 실행하려면 Visual Studio Code에서 콜백 URL의 착신 전환을 설정해야 합니다.
Application Insights를 사용하도록 지원하는 설정으로 논리 앱 리소스를 만드는 경우 필요에 따라 논리 앱 리소스에 대한 진단 로깅 및 추적을 사용하도록 설정할 수 있습니다. 논리 앱을 만들 때 또는 배포 후에 설정할 수 있습니다. Application Insights 인스턴스가 필요하지만, 논리 앱을 만들 때 미리 또는 배포 후에 이 리소스를 만들 수 있습니다.
솔루션을 테스트하기 위해 HTTP 요청을 보낼 수 있는 도구를 설치하거나 사용합니다. 예를 들면 다음과 같습니다.
- Visual Studio Marketplace의 확장이 포함된 Visual Studio Code
- PowerShell Invoke-RestMethod
- Microsoft Edge - 네트워크 콘솔 도구
- Bruno
- curl
주의
자격 증명, 비밀, 액세스 토큰, API 키 및 기타 유사한 정보와 같은 중요한 데이터가 있는 시나리오의 경우 필요한 보안 기능으로 데이터를 보호하고, 오프라인 또는 로컬로 작동하며, 데이터를 클라우드에 동기화하지 않고, 온라인 계정에 로그인할 필요가 없는 도구를 사용해야 합니다. 이렇게 하면 중요한 데이터가 대중에게 노출되는 위험을 줄일 수 있습니다.
Visual Studio Code 설정
모든 확장이 올바르게 설치되었는지 확인하려면 Visual Studio Code를 다시 로드하거나 다시 시작합니다.
모든 확장에서 최신 업데이트를 가져올 수 있도록 Visual Studio Code가 확장 업데이트를 자동으로 찾고 설치하는지 확인합니다. 그렇지 않으면 오래된 버전을 수동으로 제거하고 최신 버전을 설치해야 합니다.
파일 메뉴에서 기본 설정 > 설정으로 이동합니다.
사용자 탭에서 기능 > 확장으로 이동합니다.
업데이트 자동 확인이 선택되어 있고 자동 업데이트가 모든 확장으로 설정되어 있는지 확인합니다.
Azure Logic Apps(표준) 확장에 대한 Azure Logic Apps 표준: 프로젝트 런타임 설정이 버전 4 이하로 설정되어 있는지 확인합니다.
참고 항목
이 버전은 인라인 코드 작업을 사용하는 데 필요합니다.
파일 메뉴에서 기본 설정 > 설정으로 이동합니다.
사용자 탭에서 > 확장 > Azure Logic Apps(표준)로 이동합니다.
예를 들어 여기에서 Azure Logic Apps 표준: 프로젝트 런타임 설정을 찾거나 검색 상자를 사용하여 다른 설정을 찾을 수 있습니다.
Azure 계정에 연결
Visual Studio Code 작업 막대에서 Azure 아이콘을 선택합니다.
Azure 창의 리소스 아래에서 Azure에 로그인을 선택합니다. Visual Studio Code 인증 페이지가 표시되면 Azure 계정으로 로그인합니다.
로그인하면 Azure 창에 Azure 계정과 연결된 Azure 구독이 표시됩니다. 예상되는 구독이 표시되지 않거나 창에 특정 구독만 표시하려면 다음 단계를 수행합니다:
구독 목록에서 구독 선택 단추(필터 아이콘)가 나타날 때까지 첫 번째 구독 옆으로 포인터를 이동합니다. 필터 아이콘을 선택합니다.
또는 Visual Studio Code 상태 표시줄에서 Azure 계정을 선택합니다.
다른 구독 목록이 표시되면 원하는 구독을 선택한 다음 확인을 선택했는지 확인합니다.
로컬 프로젝트 만들기
논리 앱을 만들기 전에 Visual Studio Code에서 논리 앱을 관리, 실행 및 배포할 수 있도록 로컬 프로젝트를 만듭니다. 기본 프로젝트는 함수 앱 프로젝트라고도 하는 Azure Functions 프로젝트와 비슷합니다. 그러나 해당 프로젝트 유형은 서로 별개이므로 논리 앱과 함수 앱을 동일한 프로젝트에서 사용할 수 없습니다.
컴퓨터에서 나중에 Visual Studio Code에서 만들 프로젝트에 사용할 빈 로컬 폴더를 만듭니다.
Visual Studio Code에서 열려 있는 모든 폴더를 닫습니다.
Azure 창에 있는 작업 영역 섹션 도구 모음의 Azure Logic Apps 메뉴에서 새 프로젝트 만들기를 선택합니다.
Windows Defender 방화벽에서
Code.exe
(Visual Studio Code) 및func.exe
(Azure Functions Core Tools)에 대한 네트워크 액세스 권한을 부여하라는 프롬프트가 표시되면 홈 네트워크, 회사 네트워크 등의 개인 네트워크 > 액세스 허용을 선택합니다.프로젝트 폴더를 만든 위치로 이동하여 해당 폴더를 선택한 다음 계속합니다.
표시되는 템플릿 목록에서 상태 저장 워크플로 또는 상태 비저장 워크플로를 선택합니다. 이 예제에서는 상태 저장 워크플로를 선택합니다.
워크플로의 이름을 입력하고 Enter 키를 누릅니다. 이 예에서는 Stateful-Workflow라는 이름을 사용합니다.
참고 항목
azureFunctions.suppressProject가 등록된 구성이 아니기 때문에 작업 영역 설정에 쓸 수 없습니다.라는 오류 메시지와 함께 azureLogicAppsStandard.createNewProject라는 오류가 발생할 수 있습니다. 이 경우 Visual Studio Marketplace에서 직접 또는 Visual Studio Code 내부에서 Visual Studio Code용 Azure Functions 확장을 설치해 보세요.
현재 Visual Studio Code 또는 새 Visual Studio Code 창에서 프로젝트를 열라는 메시지가 Visual Studio Code에 표시되면 현재 창에서 열기를 선택합니다. 그렇지 않으면 새 창에서 열기를 선택합니다.
Visual Studio Code에서 프로젝트 만들기가 완료됩니다.
아직 열려 있지 않은 경우 Visual Studio 작업 막대에서 탐색기 창을 엽니다.
이제 자동으로 생성된 프로젝트 파일이 포함된 프로젝트가 탐색기 창에 표시됩니다. 예를 들어 프로젝트에 워크플로 이름을 표시하는 폴더가 있습니다. 이 폴더에서 workflow.json 파일에는 워크플로의 기본 JSON 정의가 포함되어 있습니다.
Visual Studio Code에서 논리 앱 프로젝트에는 다음 형식 중 하나가 있습니다.
- 기본 형식인 확장 번들 기반(Node.js)
- 기본 형식에서 변환할 수 있는 NuGet 패키지 기반(.NET)
이러한 형식에 따라 프로젝트에는 약간 다른 폴더와 파일이 포함됩니다. NuGet 기반 프로젝트에는 패키지 및 기타 라이브러리 파일이 포함된 .bin 폴더가 포함되어 있습니다. 번들 기반 프로젝트에는 .bin 폴더 및 기타 파일이 포함되지 않습니다. 일부 시나리오에서는 사용자 지정 기본 제공 작업을 개발하고 실행하려는 경우와 같이 앱을 실행하기 위해 NuGet 기반 프로젝트가 필요합니다. NuGet을 사용하도록 프로젝트를 변환하는 방법을 자세히 알아보려면 기본 제공 커넥터 작성 사용을 검토하세요.
기본 번들 기반 프로젝트의 경우 프로젝트에는 다음 예제와 유사한 폴더 및 파일 구조가 있습니다.
MyBundleBasedLogicAppProjectName | .vscode | Artifacts || Maps ||| MapName1 ||| ... || Schemas ||| SchemaName1 ||| ... | WorkflowName1 || workflow.json || ... | WorkflowName2 || workflow.json || ... | workflow-designtime | .funcignore | connections.json | host.json | local.settings.json
프로젝트의 루트 수준에서 다른 항목이 있는 다음 파일 및 폴더를 찾을 수 있습니다.
이름 폴더 또는 파일 설명 .vscode 폴더 extensions.json, launch.json, settings.json 및 tasks.json 파일과 같은 Visual Studio Code 관련 설정 파일을 포함합니다. 아티팩트 폴더 B2B(Business-to-Business) 시나리오를 지원하는 워크플로에서 정의하고 사용하는 통합 계정 아티팩트를 포함합니다. 예를 들어 예제 구조에는 XML 변환 및 유효성 검사 작업에 대한 맵과 스키마가 포함됩니다. <WorkflowName> 폴더 각 워크플로에 대한 <WorkflowName> 폴더에는 워크플로의 기본 JSON 정의를 포함하는 workflow.json 파일이 포함됩니다. workflow-designtime 폴더 개발 환경 관련 설정 파일을 포함합니다. .funcignore 파일 설치된 Azure Functions Core Tools 관련 정보를 포함합니다. connections.json 파일 워크플로에서 사용하는 관리형 연결 및 Azure 함수에 대한 메타데이터, 엔드포인트 및 키를 포함합니다.
중요: 각 환경에 대해 서로 다른 연결과 함수를 사용하려면 이 connections.json 파일을 매개 변수화하고 엔드포인트를 업데이트해야 합니다.host.json 파일 런타임 관련 구성 설정 및 값(예: 단일 테넌트 Azure Logic Apps 플랫폼, 논리 앱, 워크플로, 트리거 및 작업에 대한 기본 제한)이 포함되어 있습니다. 논리 앱 프로젝트의 루트 수준에서 host.json 메타데이터 파일에는 로컬 또는 Azure에 상관없이 동일한 논리 앱의 모든 워크플로가 실행되는 동안 사용하는 구성 설정 및 기본값이 포함됩니다.
참고: 논리 앱을 만들 때 Visual Studio Code는 스토리지 컨테이너에 backup host.snapshot.*.json 파일을 만듭니다. 논리 앱을 삭제해도 이 백업 파일은 삭제되지 않습니다. 이름이 같은 다른 논리 앱을 만들면 다른 스냅샷 파일이 만들어집니다. 동일한 논리 앱에 대해 최대 10개의 스냅샷만 포함할 수 있습니다. 이 제한을 초과하면 다음 오류가 발생합니다.Microsoft.Azure.WebJobs.Script.WebHost: Repository has more than 10 non-decryptable secrets backups (host))
이 오류를 해결하려면 스토리지 컨테이너에서 추가 스냅샷 파일을 삭제합니다.local.settings.json 파일 로컬에서 실행하는 동안 워크플로에 사용되는 앱 설정, 연결 문자열 및 기타 설정을 포함합니다. 즉, 이러한 설정 및 값은 로컬 개발 환경에서 프로젝트를 실행하는 경우에만 적용됩니다. Azure에 배포하는 동안 파일 및 설정이 무시되고 배포에 포함되지 않습니다.
이 파일은 로컬 개발 도구에서appSettings
값으로 사용하는 로컬 환경 변수로 설정 및 값을 저장합니다. 앱 설정 및 매개 변수를 사용하여 런타임 및 배포 시에 이러한 환경 변수를 호출하고 참조할 수 있습니다.
중요: local.settings.json 파일은 비밀을 포함할 수 있으므로 프로젝트 원본 제어에서 이 파일을 제외해야 합니다.참고 항목
FUNCTIONS_WORKER_RUNTIME 앱 설정은 표준 논리 앱에 필요하며, 이 값은 이전에 노드로 설정되었습니다. 그러나 이제 모든 신규 및 기존 배포 표준 논리 앱에 필요한 값이 dotnet 입니다. 이 값 변경은 워크플로의 런타임에 영향을 주지 않으므로 모든 것이 이전과 동일한 방식으로 작동해야 합니다. 자세한 내용은 FUNCTIONS_WORKER_RUNTIME 앱 설정을 참조하세요.
APP_KIND 앱 설정은 표준 논리 앱에 필요하며 값은 workflowApp이어야 합니다. 그러나 일부 시나리오에서는 Azure Resource Manager 템플릿을 사용하는 자동화 또는 설정이 포함되지 않은 다른 시나리오로 인해 이 앱 설정이 누락될 수 있습니다. JavaScript 코드 실행 작업과 같은 특정 작업이 작동하지 않거나 워크플로가 작동을 중지하는 경우 APP_KIND 앱 설정이 존재하고 workflowApp으로 설정되어 있는지 확인합니다. 자세한 내용은 APP_KIND 앱 설정을 참조하세요.
프로젝트를 NuGet 패키지 기반(.NET)으로 변환
기본적으로 Visual Studio Code는 NuGet 패키지 기반(.NET)이 아닌 확장 번들 기반(Node.js)인 논리 앱 프로젝트를 만듭니다. 예를 들어 기본 제공 커넥터 작성을 사용하도록 설정하기 위해 NuGet 패키지 기반(.NET) 논리 앱 프로젝트가 필요한 경우 프로젝트를 확장 번들 기반(Node.js)에서 NuGet 패키지 기반(.NET)으로 변환해야 합니다.
Important
이 작업은 단방향 작업으로 실행 취소할 수 없습니다.
탐색기 창의 프로젝트 루트에서 마우스 포인터를 다른 모든 파일 및 폴더 아래의 빈 영역 위로 이동하고, 바로 가기 메뉴를 열고, NuGet 기반 논리 앱 프로젝트로 변환을 선택합니다.
프롬프트가 표시되면 프로젝트 변환을 확인합니다.
기본 제공 커넥터 제작 사용
단일 테넌트 Azure Logic Apps 확장성 프레임워크를 사용하여 필요한 모든 서비스에 자체적인 기본 제공 커넥터를 만들 수 있습니다. Azure Service Bus 및 SQL Server와 같은 기본 제공 커넥터와 마찬가지로, 이러한 커넥터는 더 높은 처리량, 짧은 대기 시간, 로컬 연결을 제공하고 기본적으로 단일 테넌트 Azure Logic Apps 런타임과 동일한 프로세스에서 실행됩니다.
제작 기능은 현재 Visual Studio Code에서만 사용할 수 있지만, 기본적으로 사용하도록 설정되어 있지 않습니다. 이러한 커넥터를 만들려면 다음 단계를 수행합니다.
아직 변환하지 않은 경우 프로젝트를 확장 번들 기반(Node.js)에서 NuGet 패키지 기반(.NET)으로 변환합니다.
어디서나 실행되는 Azure Logic Apps: 기본 제공 커넥터 확장성 문서의 단계를 검토하고 수행합니다.
프로젝트에 사용자 지정 아티팩트 추가
논리 앱 워크플로에서 일부 커넥터는 맵, 스키마 또는 어셈블리와 같은 아티팩트에 종속됩니다. 예를 들어 다음과 같이 Azure Portal에서 아티팩트 아래의 논리 앱 리소스 메뉴를 통해 이러한 아티팩트를 업로드하는 방법과 비슷하게 Visual Studio Code에서도 이러한 아티팩트를 논리 앱 프로젝트에 업로드할 수 있습니다.
프로젝트에 맵 추가
맵을 프로젝트에 추가하려면 프로젝트 계층 구조에서 맵을 배치할 수 있는 폴더인 아티팩트>맵을 차례로 펼칩니다.
프로젝트에 스키마 추가
스키마를 프로젝트에 추가하려면 프로젝트 계층 구조에서 스키마를 배치할 수 있는 폴더인 아티팩트>스키마를 차례로 펼칩니다.
프로젝트에 어셈블리 추가
표준 논리 앱은 Visual Studio Code에서 프로젝트에 업로드할 수 있는 특정 종류의 어셈블리를 사용하거나 참조할 수 있습니다. 그러나 이러한 어셈블리는 프로젝트의 특정 폴더에 추가해야 합니다. 다음 표에서는 각 어셈블리 형식에 대한 자세한 정보와 이를 프로젝트에 정확하게 배치할 위치를 제공합니다.
어셈블리 형식 | 설명 |
---|---|
클라이언트/SDK 어셈블리(.NET Framework) | 이 어셈블리 형식은 .NET Framework용 클라이언트 및 사용자 지정 SDK의 스토리지 및 배포를 제공합니다. 예를 들어 SAP 기본 제공 커넥터는 이러한 어셈블리를 사용하여 재배포할 수 없는 SAP NCo DLL 파일을 로드합니다. 이러한 어셈블리는 \lib\builtinOperationSdks\net472 폴더에 추가해야 확인합니다. |
클라이언트/SDK 어셈블리(Java) | 이 어셈블리 형식은 Java용 사용자 지정 SDK의 스토리지 및 배포를 제공합니다. 예를 들어 JDBC 기본 제공 커넥터는 이러한 JAR 파일을 사용하여 사용자 지정 RDB(관계형 데이터베이스)용 JDBC 드라이버를 찾습니다. 이러한 어셈블리는 \lib\builtinOperationSdks\JAR 폴더에 추가해야 합니다. |
사용자 지정 어셈블리(.NET Framework) | 이 어셈블리 형식은 사용자 지정 DLL의 스토리지 및 배포를 제공합니다. 예를 들어 XML 변환 작업은 이러한 어셈블리를 XML 변환 중에 필요한 사용자 지정 변환 함수에 사용합니다. 이러한 어셈블리는 \lib\custom\net472 폴더에 추가해야 합니다. |
다음 이미지에서는 각 어셈블리 형식을 프로젝트에 배치할 위치를 보여줍니다.
Azure Portal에서 어셈블리를 논리 앱 리소스에 업로드하는 방법에 대한 자세한 내용은 참조된 어셈블리 추가를 참조하세요.
"lib\*" 어셈블리를 사용하도록 NuGet 기반 프로젝트 마이그레이션
Important
이 작업은 NuGet 기반 논리 앱 프로젝트에만 필요합니다.
어셈블리 지원을 표준 논리 앱 워크플로에 사용할 수 없을 때 논리 앱 프로젝트를 만든 경우 어셈블리를 사용하는 프로젝트에서 사용할 <project-name>.csproj 파일에 다음 줄을 추가할 수 있습니다.
<ItemGroup>
<LibDirectory Include="$(MSBuildProjectDirectory)\lib\**\*"/>
</ItemGroup>
<Target Name="CopyDynamicLibraries" AfterTargets="_GenerateFunctionsExtensionsMetadataPostPublish">
<Copy SourceFiles="@(LibDirectory)" DestinationFiles="@(LibDirectory->'$(MSBuildProjectDirectory)\$(PublishUrl)\lib\%(RecursiveDir)%(Filename)%(Extension)')"/>
</Target>
Important
Linux 또는 MacOS에서 실행되는 프로젝트의 경우 디렉터리 구분 기호를 업데이트해야 합니다. 예를 들어 <project-name>.csproj 파일에 추가된 이전 코드를 보여주는 다음 이미지를 검토하세요.
디자이너에서 워크플로 정의 파일 열기
이 예에서 Stateful-Workflow라는 워크플로의 프로젝트 폴더를 펼쳐서 workflow.json 파일을 엽니다.
workflow.json 파일의 바로 가기 메뉴를 열고, 디자이너 열기를 선택합니다.
Azure에서 커넥터 사용 목록이 열리면 Azure에서 커넥터 사용을 선택합니다. 이 옵션은 Azure Logic Apps 런타임에서 직접 실행되는 기본 제공, 네이티브 또는 "앱 내"커넥터와 비교하여 호스트되고 실행되는 모든 관리형 또는 "공유"커넥터에 적용됩니다.
참고 항목
상태 비저장 워크플로는 현재 트리거가 아닌 관리형 커넥터의 작업만 지원합니다. 상태 비저장 워크플로에 대해 Azure에서 커넥터를 사용하도록 설정하는 옵션이 있지만 사용자가 선택할 수 있는 관리되는 커넥터 트리거가 디자이너에 표시되지 않습니다.
구독 선택 목록이 열리면 논리 앱 프로젝트에 사용할 Azure 구독을 선택합니다.
리소스 그룹 목록이 열리면 새 리소스 그룹 만들기를 선택합니다.
Azure 리소스 그룹의 이름을 입력하고 Enter 키를 누릅니다. 이 예에서는 Fabrikam-Workflows-RG를 사용합니다.
위치 목록에서 리소스 그룹 및 리소스를 만들 때 사용할 Azure 지역을 선택합니다. 이 예제에서는 미국 중서부를 사용합니다.
이 단계를 수행하면 Visual Studio Code가 워크플로 디자이너를 엽니다.
참고 항목
Visual Studio Code가 워크플로 디자인 타임 API를 시작할 때, 시작하는 데 몇 초 정도 걸릴 수 있다는 메시지가 표시될 수 있습니다. 이 메시지를 무시하거나 확인을선택할 수 있습니다.
디자이너가 열리지 않는 경우 문제 해결 섹션의 디자이너가 열리지 않습니다를 검토합니다.
디자이너가 표시되면 디자이너에서 트리거 추가 프롬프트를 표시합니다.
디자이너에서 트리거 추가를 선택합니다. 그러면 트리거 추가 창이 열리고 선택할 수 있는 트리거가 있는 모든 커넥터를 보여주는 갤러리가 열립니다.
다음으로, 워크플로에 트리거 및 작업 추가를 진행합니다.
트리거 및 작업 추가
디자이너에서 빈 워크플로가 열리면 디자이너에서 트리거 추가 프롬프트를 표시합니다. 이제 트리거 및 작업 추가를 진행하여 워크플로 만들기를 시작할 수 있습니다.
Important
로컬로 기본 제공 HTTP 웹후크 트리거 또는 작업과 같이 웹후크 기반 트리거 및 작업을 사용하여 워크플로를 실행하려면 웹후크 콜백 URL의 착신 전환 설정을 통해 이 기능을 사용하도록 설정해야 합니다.
이 예의 워크플로에서 사용하는 트리거와 작업은 다음과 같습니다.
HTTP 요청을 받는 경우라는 Request 기본 제공 커넥터 트리거 - 인바운드 호출 또는 요청을 받을 수 있고, 다른 서비스 또는 논리 앱 워크플로에서 호출할 수 있는 엔드포인트를 만듭니다.
이메일 보내기라는 Office 365 Outlook 관리형 커넥터 작업 - 이 방법 가이드를 따르려면 Office 365 Outlook 이메일 계정이 필요합니다. 다른 커넥터에서 지원하는 이메일 계정이 있는 경우 해당 커넥터를 사용할 수 있지만 해당 커넥터의 사용자 환경은 이 예의 단계와 다릅니다.
Response라는 Request 기본 제공 커넥터 작업 - 응답을 보내고 데이터를 호출자에게 다시 반환하는 데 사용합니다.
요청 트리거 추가
워크플로 디자이너의 트리거 추가 창에서 런타임 목록을 열고 앱 내를 선택하면 사용 가능한 기본 제공 커넥터 트리거만 볼 수 있습니다.
검색 상자를 사용하여 HTTP 요청을 받는 경우라는 요청 트리거를 찾고, 해당 트리거를 워크플로에 추가합니다. 자세한 내용은 트리거 및 작업을 사용하여 워크플로 빌드를 참조하세요.
디자이너에서 트리거가 표시되면 트리거의 정보 창이 열리고 트리거의 매개 변수, 설정 및 기타 관련 작업이 표시됩니다.
팁
정보 창이 표시되지 않으면 디자이너에서 트리거를 선택했는지 확인합니다.
워크플로를 저장합니다. 디자이너 도구 모음에서 저장을 선택합니다.
디자이너에서 항목을 삭제해야 하는 경우 디자이너에서 항목을 삭제하는 다음 단계를 수행합니다.
Office 365 Outlook 작업 추가
디자이너의 요청 트리거 아래에서 더하기 기호(+) >작업 추가를 차례로 선택합니다.
작업 추가 창이 열리면 사용 가능한 관리형 커넥터 작업만 볼 수 있도록 런타임 목록에서 공유를 선택합니다.
검색 상자를 사용하여 이메일 보내기(V2)라는 Office 365 Outlook 관리형 커넥터 작업을 찾아서 해당 작업을 워크플로에 추가합니다. 자세한 내용은 트리거 및 작업을 사용하여 워크플로 빌드를 참조하세요.
작업의 인증 창이 열리면 로그인을 선택하여 이메일 계정에 대한 연결을 만듭니다.
후속 프롬프트에 따라 계정을 선택하고, 액세스를 허용하고, Visual Studio Code로 돌아가기를 허용합니다.
참고 항목
프롬프트를 완료하기 전에 너무 많은 시간이 경과하면 인증 프로세스 시간이 초과되고 실패합니다. 이 경우 디자이너로 돌아가서 로그인을 다시 시도하여 연결을 만듭니다.
Microsoft 프롬프트가 표시되면 Office 365 Outlook 사용자 계정을 선택한 다음, 액세스 허용을 선택합니다.
Azure Logic Apps에서 Visual Studio Code 링크를 열라는 메시지가 표시되면 열기를 선택합니다.
Visual Studio Code에서 Microsoft Azure 도구를 열라는 메시지가 표시되면 열기를 선택합니다.
팁
이러한 이후 프롬프트를 건너뛰려면 관련 프롬프트가 표시될 때 다음 옵션을 선택합니다.
Visual Studio Code에 대한 링크를 열 수 있는 권한: 항상 logic-apis-westcentralus.consent.azure-apim.net이 연결된 앱에서 이 유형의 링크를 열 수 있도록 허용을 선택합니다. 이 도메인은 논리 앱 리소스에 대해 선택한 Azure 지역에 따라 변경됩니다.
Microsoft Azure 도구를 열 수 있는 권한: 이 확장에 대해 다시 묻지 않음을 선택합니다.
Visual Studio Code에서 연결이 만들어지면 일부 커넥터에서 연결이 {n}일 동안만 유효합니다라는 메시지를 표시합니다. 이 시간 제한은 Visual Studio Code에서 논리 앱 워크플로를 작성하는 기간에만 적용됩니다. 배포되면 워크플로에서 자동으로 사용하도록 설정된 시스템이 할당한 관리 ID를 사용하여 런타임에 인증할 수 있으므로 이 제한이 더 이상 적용되지 않습니다. 이 관리 ID는 연결을 만들 때 사용하는 인증 자격 증명이나 연결 문자열과는 다릅니다. 이 시스템이 할당한 관리 ID를 사용하지 않도록 설정하면 런타임에 연결이 작동하지 않습니다.
디자이너에서 이메일 보내기 작업이 선택되어 있지 않으면 해당 작업을 선택합니다.
작업 정보 창의 매개 변수 탭에서 작업에 필요한 정보를 제공합니다. 예를 들어 다음과 같습니다.
속성 필요함 값 설명 받는 사람 예 <your-email-address> 이메일을 받는 사람. 테스트 목적의 이메일 주소를 사용할 수 있습니다. 이 예제에서는 가상의 이메일 주소 sophia.owen@fabrikam.com을 사용합니다. 주제 예 예제 워크플로의 메일 이메일 제목 본문 예 예제 워크플로의 Hello! 이메일 본문 내용 참고 항목
테스트 탭에서 변경 내용을 적용한 경우 탭을 전환하거나 포커스를 디자이너로 변경하기 전에 저장을 선택하여 해당 변경 내용을 커밋해야 합니다. 그렇지 않으면 Visual Studio Code에서 변경 내용을 유지하지 않습니다.
워크플로를 저장합니다. 디자이너에서 저장을 선택합니다.
로컬로 실행하는 웹후크 사용
Azure에서 실행되는 논리 앱 워크플로에서 HTTP 웹후크과 같은 웹후크 기반 트리거 또는 작업을 사용하는 경우 Azure Logic Apps 런타임에서 콜백 URL을 생성하고 해당 엔드포인트에 등록하여 서비스 엔드포인트를 구독합니다. 그런 다음 트리거 또는 작업은 서비스 엔드포인트가 URL을 호출할 때까지 기다립니다. 그러나 Visual Studio Code에서 작업할 때 생성된 콜백 URL은 http://localhost:7071/...
로 시작합니다. 이 URL은 프라이빗 localhost 서버용으로 서비스 엔드포인트가 이 URL을 호출할 수 없습니다.
Visual Studio Code에서 웹후크 기반 트리거 및 작업을 로컬로 실행하려면 localhost 서버를 노출하고 서비스 엔드포인트의 호출을 웹후크 콜백 URL로 안전하게 전달하는 공용 URL을 설정해야 합니다. localhost 포트에 대한 HTTP 터널을 여는 ngrok과 같은 전달 서비스 및 도구를 사용하거나 동등한 자체 도구를 사용할 수 있습니다.
ngrok을 사용하여 호출 전달 설정
ngrok 웹 사이트로 이동합니다. 새 계정에 가입하거나, 이미 계정이 있는 경우 해당 계정에 로그인합니다.
ngrok 클라이언트가 연결 및 액세스를 인증하는 데 필요한 개인 인증 토큰을 가져옵니다.
인증 토큰 페이지를 찾으려면 계정 대시보드 메뉴에서 인증을 펼쳐서 인증 토큰을 선택합니다.
Authtoken 상자에서 토큰을 안전한 위치에 복사합니다.
ngrok 다운로드 페이지 또는 계정 대시보드에서 원하는 ngrok 버전을 다운로드하고 .zip 파일을 추출합니다. 자세한 내용은 1단계: 설치를 위해 압축 해제를 참조하세요.
컴퓨터에서 명령 프롬프트 도구를 엽니다. ngrok.exe 파일이 있는 위치로 이동합니다.
다음 명령을 실행하여 ngrok 클라이언트를 ngrok 계정에 연결합니다. 자세한 내용은 2 단계: 계정 연결을 참조하세요.
ngrok authtoken <your_auth_token>
다음 명령을 실행하여 localhost 포트 7071에 대한 HTTP 터널을 엽니다. 자세한 내용은 3 단계: 실행을 참조하세요.
ngrok http 7071
출력에서 다음 줄을 찾습니다:
http://<domain>.ngrok.io -> http://localhost:7071
다음 형식의 URL을 복사하여 저장합니다:
http://<domain>.ngrok.io
앱 설정에서 전달 URL 설정
Visual Studio Code의 디자이너에서 사용하려는 웹후크 기반 트리거 또는 작업을 추가합니다.
이 예에서는 HTTP + 웹후크 트리거를 계속 사용합니다.
호스트 엔드포인트에 대한 프롬프트가 표시되면 이전에 만든 전달 URL(리디렉션)을 입력합니다.
참고 항목
프롬프트를 무시하면 전달 URL을 입력해야 한다는 경고가 표시되므로 구성을 선택하고 URL을 입력합니다. 이 단계가 완료되면 추가할 수 있는 후속 웹후크 트리거 또는 작업에 대한 프롬프트를 표시하지 않습니다.
프롬프트를 표시하려면 프로젝트 루트 수준에서 local.settings.json 파일의 바로 가기 메뉴를 열고 웹후크 리디렉션 엔드포인트 구성을 선택합니다. 이제 전달 URL을 입력할 수 있는 프롬프트가 표시됩니다.
Visual Studio Code는 프로젝트 루트 폴더에 있는 local.settings.json 파일에 전달 URL을 추가합니다. 이제
Values
개체에서Workflows.WebhookRedirectHostUri
라는 속성이 표시되고 전달 URL로 설정됩니다. 예를 들어 다음과 같습니다.{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "dotnet", "FUNCTIONS_V2_COMPATIBILITY_MODE": "true", <...> "Workflows.WebhookRedirectHostUri": "http://xxxXXXXxxxXXX.ngrok.io", <...> } }
참고 항목
이전에는 FUNCTIONS_WORKER_RUNTIME 설정의 기본값은
node
이었습니다. 이제dotnet
은 다른 값을 가졌던 앱도 포함하여 모든 새 표준 논리 앱과 기존에 배포된 표준 논리 앱의 기본값이 됩니다. 이 변경 내용은 워크플로 런타임에 영향을 미치지 않으며 모든 것이 이전과 동일한 방식으로 작동해야 합니다. 자세한 내용은 FUNCTIONS_WORKER_RUNTIME 앱 설정을 참조하세요.
처음으로 로컬 디버깅 세션을 시작하거나 디버그하지 않고 워크플로를 실행하는 경우 Azure Logic Apps 런타임에서 워크플로를 서비스 엔드포인트에 등록하고 웹후크 작업을 알리기 위해 해당 엔드포인트를 구독합니다. 다음에 워크플로를 실행하면 구독 등록이 이미 로컬 스토리지에 있기 때문에 런타임이 등록되거나 재구독되지 않습니다.
로컬에서 실행되는 웹후크 기반 트리거 또는 작업을 사용하는 워크플로에 대한 디버깅 세션을 중지하면 기존 구독 등록이 삭제되지 않습니다. 등록을 취소하려면 구독 등록을 수동으로 제거하거나 삭제해야 합니다.
참고 항목
워크플로가 실행되기 시작하면 터미널 창에 다음 예제와 같은 오류가 표시될 수 있습니다:
message='Http request failed with unhandled exception of type 'InvalidOperationException' and message: 'System.InvalidOperationException: Synchronous operations are disallowed. Call ReadAsync or set AllowSynchronousIO to true instead.'
이 경우 프로젝트 루트 폴더에서 local.settings.json 파일을 열고 속성이 true
으로 설정되었는지 확인합니다:
"FUNCTIONS_V2_COMPATIBILITY_MODE": "true"
디버깅을 위한 중단점 관리
디버깅 세션을 시작하여 논리 앱 워크플로를 실행하고 테스트하기 전 각 워크플로의 workflow.json 파일에 중단점을 설정할 수 있습니다. 다른 설정은 필요하지 않습니다.
현재 중단점은 트리거가 아닌 작업에 대해서만 지원됩니다. 각 작업 정의에는 다음과 같은 중단점 위치가 있습니다:
작업 이름을 표시하는 줄에 시작 중단점을 설정합니다. 디버깅 세션 중에 이 중단점이 적중하면 작업 입력을 평가하기 전에 검토할 수 있습니다.
작업의 닫는 중괄호 (})를 표시하는 줄에 종료 중단점을 설정합니다. 디버깅 세션 중에 이 중단점이 적중하면 작업 실행이 완료되기 전에 작업 결과를 검토할 수 있습니다.
중단점을 추가하려면 다음 단계를 수행하세요:
디버그할 워크플로의 workflow.json 파일을 엽니다.
중단점을 설정하려는 줄의 왼쪽 열에서 해당 열 내부를 선택합니다. 중단점을 제거하려면 해당 중단점을 선택합니다.
디버깅 세션을 시작하면 실행 보기가 코드 창의 왼쪽에 표시되고 디버그 도구 모음은 위쪽 근처에 표시됩니다.
참고 항목
실행 보기가 자동으로 표시되지 않으면 Ctrl+Shift+D를 누릅니다.
중단점이 적중할 때 사용 가능한 정보를 검토하려면 실행 보기에서 변수 창을 검사합니다.
워크플로 실행을 계속하려면 디버그 도구 모음에서 계속(재생 단추)을 선택합니다.
워크플로를 실행하는 동안 언제든지 중단점을 추가하고 제거할 수 있습니다. 그러나 실행 시작 후 workflow.json 파일을 업데이트하면 중단점이 자동으로 업데이트되지 않습니다. 중단점을 업데이트하려면 논리 앱을 다시 시작합니다.
일반 정보는 중단점 - Visual Studio Code를 참조하세요.
로컬에서 실행, 테스트 및 디버그
논리 앱 워크플로를 테스트하려면 다음 단계를 수행하여 디버깅 세션을 시작하고 요청 트리거에서 만든 엔드포인트에 대한 URL을 찾습니다. 나중에 해당 엔드포인트에 요청을 보낼 수 있도록 이 URL이 필요합니다.
상태 비저장 워크플로를 더 쉽게 디버그하기 위해 해당 워크플로의 실행 기록을 사용하도록 설정할 수 있습니다.
Azurite 에뮬레이터가 이미 실행 중인 경우 다음 단계를 계속 진행합니다. 그렇지 않은 경우 에뮬레이터를 시작한 후에 워크플로를 실행해야 합니다.
Visual Studio Code의 보기 메뉴에서 명령 팔레트를 선택합니다.
명령 팔레트가 표시되면 Azurite: Start를 입력합니다.
Azurite 명령에 대한 자세한 내용은 Visual Studio Code의 Azurite 확장 설명서를 참조하세요.
Visual Studio Code 작업 막대에서 실행 메뉴를 열고 디버깅 시작(F5)을 선택합니다.
디버깅 세션을 검토할 수 있는 터미널 창이 열립니다.
참고 항목
"preLaunchTask 'generateDebugSymbols' 실행 후 오류가 발생했습니다" 오류가 발생하면 문제 해결 섹션의 디버깅 세션을 시작하지 못했습니다를 참조하세요.
이제 요청 트리거에서 엔드포인트에 대한 콜백 URL을 찾습니다.
프로젝트를 볼 수 있도록 탐색기 창을 다시 엽니다.
workflow.json 파일의 바로 가기 메뉴에서 개요를 선택합니다.
요청 트리거 예에 대한 다음 URL과 유사한 콜백 URL 값을 찾습니다:
http://localhost:7071/api/<workflow-name>/triggers/manual/invoke?api-version=2020-05-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=<shared-access-signature>
콜백 URL 속성 값을 복사하고 저장합니다.
콜백 URL을 테스트하고 워크플로를 트리거하려면 HTTP 요청 도구와 해당 지침을 사용하여 요청 트리거가 예상하는 메서드를 포함하여 URL에 HTTP 요청을 보냅니다.
이 예에서는 다음 샘플과 같이 복사된 URL과 함께 GET 메서드를 사용합니다.
GET http://localhost:7071/api/Stateful-Workflow/triggers/manual/invoke?api-version=2020-05-01&sp=%2Ftriggers%2Fmanual%2Frun&sv=1.0&sig=<shared-access-signature>
트리거가 실행되면 이 예제 워크플로가 실행되고 다음과 비슷한 이메일을 보냅니다.
Visual Studio Code에서 워크플로의 개요 페이지로 돌아갑니다.
상태 저장 워크플로를 만든 경우 보낸 요청이 워크플로를 트리거한 후 개요 페이지에 워크플로의 실행 상태 및 기록이 표시됩니다.
팁
실행 상태가 표시되지 않으면 새로 고침을 선택하여 개요 페이지를 새로 고쳐 보세요. 조건이 충족되지 않거나 데이터를 찾을 수 없어 트리거를 건너뛴 경우에는 실행이 발생하지 않습니다.
다음 표에서는 각 워크플로 실행이 Visual Studio Code에서 가질 수 있고 표시할 수 있는 가능한 최종 상태를 보여 줍니다.
실행 상태 설명 중단됨 시스템이 중단되거나 Azure 구독이 만료되는 등의 외부 문제로 인해 실행이 중지되었거나 완료되지 않았습니다. 취소 실행이 트리거되고 시작되었지만 취소 요청이 수신되었습니다. 실패함 실행에서 하나 이상의 작업이 실패했습니다. 실패를 처리하는 워크플로의 후속 작업이 설정되지 않았습니다. 실행 중 실행이 트리거되어 현재 진행 중이지만, 작업 제한 또는 현재 가격 책정 계획으로 인해 제한된 실행에도 이 상태가 표시될 수 있습니다. 팁: 진단 로깅을 설정한 경우 발생하는 모든 제한된 이벤트에 대한 정보를 얻을 수 있습니다.
성공함 실행이 성공했습니다. 작업이 실패하면 워크플로의 후속 작업에서 실패를 처리합니다. Timed out 현재 기간이 실행 기록 보존 기간(일) 설정을 통해 제어되는 실행 기간 제한을 초과하여 실행 시간이 초과되었습니다. 실행의 기간은 실행의 시작 시간과 해당 시작 시간의 실행 기간 제한을 사용하여 계산됩니다. 참고: 실행 기간이 실행 기록 보존 기간(일) 설정을 통해 제어되는 현재 실행 기록 보존 제한을 초과하는 경우에도 일간 정리 작업을 통해 실행 기록에서 실행이 지워집니다. 실행 시간이 초과되건 실행이 완료되건 보존 기간은 항상 실행의 시작 시간과 현재 보존 제한을 사용하여 계산됩니다. 따라서 진행 중인 실행의 기간 제한을 낮추면 실행 시간이 초과됩니다. 그러나 실행 기간이 보존 제한을 초과했는지 여부에 따라 실행이 유지되거나 실행 기록에서 지워집니다.
대기 중 예를 들어 아직 실행 중인 이전 워크플로 인스턴스 때문에 실행이 시작되지 않았거나 일시 중지되었습니다. 특정 실행의 각 단계와 단계의 입력 및 출력에 대한 상태를 검토하려면 해당 실행에 대한 줄임표(...) 단추를 선택하고 실행 표시를 선택합니다.
Visual Studio Code는 모니터링 보기를 열고 실행의 각 단계에 대한 상태를 표시합니다.
참고 항목
실행이 실패하고 모니터링 보기의 단계에서 400 잘못된 요청 오류가 표시되는 경우 이 문제는 긴 트리거 이름 또는 작업 이름으로 인해 기본 URI(Uniform Resource Identifier)에서 기본 문자 제한을 초과함으로써 발생할 수 있습니다. 자세한 내용은 "400 잘못된 요청"을 참조하세요.
다음 표에서는 각 워크플로 작업이 Visual Studio Code에서 가질 수 있고 표시할 수 있는 가능한 상태를 보여 줍니다.
작업 상태 설명 중단됨 시스템이 중단되거나 Azure 구독이 만료되는 등의 외부 문제로 인해 작업이 중지되었거나 완료되지 않았습니다. 취소 작업이 실행 중이지만 취소 요청이 수신되었습니다. 실패함 작업이 실패했습니다. 실행 중 작업이 현재 실행 중입니다. 생략 바로 이전 작업이 실패하여 작업을 건너뛰었습니다. 작업에는 이전 작업이 성공적으로 완료되어야 현재 작업을 실행할 수 있는 runAfter
조건이 있습니다.성공함 작업이 성공했습니다. 다시 시도하여 성공함 한 번 이상 다시 시도한 후 작업이 성공했습니다. 다시 시도 기록을 검토하려면 실행 기록 세부 정보 보기에서 해당 작업을 선택합니다. 그러면 입력 및 출력을 볼 수 있습니다. Timed out 해당 작업의 설정에 지정된 제한 시간으로 인해 작업이 중지되었습니다. 대기 중 호출자의 인바운드 요청을 기다리는 webhook 작업에 적용됩니다. 각 단계에 대한 입력 및 출력을 검토하려면 검사하려는 단계를 선택합니다. 해당 단계에 대한 원시 입력 및 출력을 추가로 검토하려면 원시 입력 표시 또는 원시 출력 표시를 선택합니다.
디버깅 세션을 중지하려면 실행 메뉴에서 디버깅 중지(Shift + F5)를 선택합니다.
응답 반환
요청 트리거로 시작하는 워크플로가 있는 경우 Response 요청 기본 제공 작업을 사용하여 요청을 워크플로에 보낸 호출자에게 응답을 반환할 수 있습니다.
워크플로 디자이너의 이메일 보내기 작업 아래에서 더하기 기호(+) >작업 추가를 차례로 선택합니다.
다음 작업을 선택할 수 있도록 작업 추가 창이 열립니다.
작업 추가 창의 런타임 목록에서 앱 내를 선택합니다. Response 작업을 찾아서 추가합니다.
디자이너에서 Response 작업이 표시되면 해당 작업의 세부 정보 창이 자동으로 열립니다.
매개 변수 탭에서 호출하려는 함수에 필요한 정보를 입력합니다.
이 예에서는 이메일 보내기 작업의 출력인 본문 매개 변수 값을 반환합니다.
본문 매개 변수의 경우 편집 상자 내에서 선택하고 번개 모양 아이콘을 선택합니다. 그러면 동적 콘텐츠 목록이 열립니다. 이 목록에는 워크플로의 이전 트리거 및 작업에서 사용 가능한 출력 값이 표시됩니다.
동적 콘텐츠 목록의 이메일 보내기에서 본문을 선택합니다.
완료되면 응답 작업의 본문 속성이 이제 이메일 보내기 작업의 본문 출력 값으로 설정됩니다.
디자이너에서 저장을 선택합니다.
논리 앱 다시 테스트하기
논리 앱을 업데이트한 후 Visual Studio의 디버거를 재실행하고 로컬에서 실행, 테스트 및 디버그 단계와 유사하게 업데이트된 논리 앱을 트리거하는 다른 요청을 보내 다른 테스트를 실행할 수 있습니다.
Visual Studio Code 작업 막대에서 실행 메뉴를 열고 디버깅 시작(F5)을 선택합니다.
Postman 또는 요청 만들기 및 보내기 도구에서 워크플로를 트리거하기 위한 다른 요청을 보냅니다.
상태 저장 워크플로를 만든 경우 워크플로의 개요 페이지에서 가장 최근 실행에 대한 상태를 확인합니다. 해당 실행의 각 단계에 대한 상태, 입력 및 출력을 보려면 해당 실행에 대한 줄임표(...) 단추를 선택하고 실행 표시를 선택합니다.
예를 들어 예제 워크플로가 응답 작업으로 업데이트된 후 실행에 대한 단계별 상태는 다음과 같습니다.
디버깅 세션을 중지하려면 실행 메뉴에서 디버깅 중지(Shift + F5)를 선택합니다.
방화벽 액세스를 위한 도메인 이름 찾기
Azure Portal에서 논리 앱 워크플로를 배포 및 실행하기 전에 환경에 트래픽을 제한하는 엄격한 네트워크 요구 사항이나 방화벽이 있는 경우 워크플로에 있는 모든 트리거 또는 작업 연결에 대한 권한을 설정해야 합니다.
해당 연결에 대한 FQDNs(정규화된 도메인 이름)을 찾으려면 다음 단계를 수행합니다:
논리 앱 프로젝트에서 워크플로에 첫 번째 연결 기반 트리거 또는 작업을 추가한 후에 생성되는 connections.json 파일을 열고
managedApiConnections
개체를 찾습니다.생성한 각 연결에 대해 이 정보로 방화벽을 설정할 수 있도록 안전한 위치에
connectionRuntimeUrl
속성 값을 복사하고 저장합니다.이 예제 connections.json 파일에는 AS2 연결과 다음
connectionRuntimeUrl
값을 사용하는 Office 365 연결이 포함되어 있습니다:AS2:
"connectionRuntimeUrl": https://9d51d1ffc9f77572.00.common.logic-{Azure-region}.azure-apihub.net/apim/as2/11d3fec26c87435a80737460c85f42ba
Office 365:
"connectionRuntimeUrl": https://9d51d1ffc9f77572.00.common.logic-{Azure-region}.azure-apihub.net/apim/office365/668073340efe481192096ac27e7d467f
{ "managedApiConnections": { "as2": { "api": { "id": "/subscriptions/{Azure-subscription-ID}/providers/Microsoft.Web/locations/{Azure-region}/managedApis/as2" }, "connection": { "id": "/subscriptions/{Azure-subscription-ID}/resourceGroups/{Azure-resource-group}/providers/Microsoft.Web/connections/{connection-resource-name}" }, "connectionRuntimeUrl": https://9d51d1ffc9f77572.00.common.logic-{Azure-region}.azure-apihub.net/apim/as2/11d3fec26c87435a80737460c85f42ba, "authentication": { "type":"ManagedServiceIdentity" } }, "office365": { "api": { "id": "/subscriptions/{Azure-subscription-ID}/providers/Microsoft.Web/locations/{Azure-region}/managedApis/office365" }, "connection": { "id": "/subscriptions/{Azure-subscription-ID}/resourceGroups/{Azure-resource-group}/providers/Microsoft.Web/connections/{connection-resource-name}" }, "connectionRuntimeUrl": https://9d51d1ffc9f77572.00.common.logic-{Azure-region}.azure-apihub.net/apim/office365/668073340efe481192096ac27e7d467f, "authentication": { "type":"ManagedServiceIdentity" } } } }
Azure에 배포
Visual Studio Code에서 프로젝트를 Azure에 직접 게시하여 표준 논리 앱 리소스를 배포할 수 있습니다. 논리 앱을 새 리소스로 게시할 수 있습니다. 그러면 함수 앱 요구 사항과 유사한 Azure 스토리지 계정과 같이 필요한 리소스를 자동으로 만듭니다. 또는 논리 앱을 이전에 배포된 표준 논리 앱 리소스에 게시할 수 있습니다. 그러면 해당 논리 앱을 덮어씁니다.
표준 논리 앱 리소스 배포에는 배포 중에 선택하는 호스팅 계획과 가격 책정 계층이 필요합니다. 자세한 내용은 호스팅 계획과 가격 책정 계층을 참조하세요.
새 표준 논리 앱 리소스에 게시
Visual Studio Code 작업 막대에서 Azure 아이콘을 선택하여 Azure 창을 엽니다.
Azure 창에 있는 작업 영역 섹션 도구 모음의 Azure Logic Apps 메뉴에서 논리 앱에 배포를 선택합니다.
프롬프트가 표시되면 논리 앱 배포에 사용할 Azure 구독을 선택합니다.
Visual Studio Code가 열리는 목록에서 다음 옵션 중에서 선택합니다:
- Azure에서 새 Logic App(표준) 만들기(빠른 버전)
- Azure에서 새 Logic App(표준) 만들기
- 이전에 배포된 Logic App(표준) 리소스(있는 경우)
이 예제에서는 Azure Advanced에서 새 Logic App(표준) 만들기를 계속 진행합니다.
새 표준 논리 앱 리소스를 만들려면 다음 단계를 수행합니다.
전역적으로 고유한 새 논리 앱 이름을 입력합니다. 이 이름은 Logic App(표준) 리소스에 사용됩니다. 이 예에서는 Fabrikam-Workflows-App을 사용합니다.
새 논리 앱의 호스팅 계획을 선택합니다. 계획의 이름을 만들거나 기존 계획(Windows 기반 App Service 계획만 해당)을 선택합니다. 이 예제에서는 새 App Service 요금제 만들기를 선택합니다.
호스팅 계획 이름을 입력한 다음, 선택한 계획의 가격 책정 계층을 선택합니다.
자세한 내용은 호스팅 계획과 가격 책정 계층을 참조하세요.
최적의 성능을 위해 배포할 프로젝트와 동일한 리소스 그룹을 선택합니다.
참고 항목
다른 리소스 그룹을 만들거나 사용할 수 있지만 그러면 성능에 영향을 줄 수 있습니다. 다른 리소스 그룹을 만들거나 선택하고 확인 프롬프트가 표시된 후 취소하면 배포도 취소됩니다.
상태 저장 워크플로의 경우 새 스토리지 계정 만들기 또는 기존 스토리지 계정을 선택합니다.
논리 앱의 만들기 및 배포 설정에서 Application Insights 사용을 지원하는 경우 필요에 따라 논리 앱에 진단 로깅 및 추적을 사용하도록 설정할 수 있습니다. Visual Studio Code에서 논리 앱을 배포할 때 또는 배포 후에 이러한 작업을 수행할 수 있습니다. Application Insights 인스턴스가 필요하지만, 논리 앱을 배포할 때 미리 또는 배포 후에 이 리소스를 만들 수 있습니다.
지금 로깅 및 추적을 사용하도록 설정하려면 다음 단계를 수행합니다:
기존 Application Insights 리소스를 선택하거나 새 Application Insights 리소스를 만듭니다.
Azure Portal에서, Application Insights 리소스로 이동합니다.
리소스 메뉴에서 개요를 선택합니다. 계측 키 값을 찾아 복사합니다.
Visual Studio Code의 프로젝트 루트 폴더에서 local.settings.json 파일을 엽니다.
Values
개체에서APPINSIGHTS_INSTRUMENTATIONKEY
속성을 추가하고 계측 키에 값을 설정합니다. 예를 들면 다음과 같습니다:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "dotnet", "APPINSIGHTS_INSTRUMENTATIONKEY": <instrumentation-key> } }
팁
트리거 및 동작 이름이 Application Insights 인스턴스에 올바르게 표시되는지 확인할 수 있습니다.
Azure Portal에서, Application Insights 리소스로 이동합니다.
리소스 메뉴의 조사 아래에서 애플리케이션 맵을 선택합니다.
맵에 표시되는 작업 이름을 검토합니다.
기본 제공 트리거의 인바운드 요청 일부는 애플리케이션 맵에서 중복으로 나타날 수 있습니다. 이러한 중복 항목은
WorkflowName.ActionName
형식을 사용하는 대신 워크플로 이름을 작업 이름으로 사용하며 Azure Functions 호스트에서 시작됩니다.다음으로 논리 앱이 수집하고 Application Insights 인스턴스로 보내는 추적 데이터의 심각도 수준을 선택적으로 조정할 수 있습니다.
워크플로가 트리거되고 작업이 실행될 때 같이 워크플로 관련 이벤트가 발생할 때마다 런타임은 다양한 추적을 내보냅니다. 해당 추적은 워크플로의 수명을 다루고 다음 이벤트 유형을 포함하지만 이에 국한되지는 않습니다:
- 시작, 중지 및 오류와 같은 서비스 활동입니다.
- 작업 및 디스패처 활동입니다.
- 트리거, 동작 및 실행 등의 워크플로 활동입니다.
- 성공 또는 실패와 같은 스토리지 요청 활동입니다.
- 인바운드, 아웃 바운드, 성공 및 실패 등의 HTTP 요청 작업입니다.
- 디버그 메시지와 같은 모든 개발 추적입니다.
각 이벤트 유형은 심각도 수준에 할당됩니다. 예를 들어
Trace
수준은 가장 자세한 메시지를 캡처하는 반면Information
수준은 논리 앱, 워크플로, 트리거 및 작업이 시작 및 중지되는 시기와 같은 워크플로의 일반 활동을 캡처합니다. 다음 표에서는 심각도 수준 및 해당 추적 유형을 설명합니다:심각도 수준 추적 형식 위험 논리 앱에서 복구할 수 없는 오류를 설명하는 로그입니다. 디버그 개발 중에 조사용으로 사용할 수 있는 로그입니다(예: 인바운드 및 아웃바운드 HTTP 호출). 오류 워크플로 실행 실패를 나타내는 로그이지만, 논리 앱의 일반적인 실패는 아닌 로그입니다. 정보 논리 앱 또는 워크플로의 일반 활동을 추적하는 로그입니다. 예를 들면 다음과 같습니다: - 트리거, 동작 또는 실행이 시작되고 끝나는 경우.
- 논리 앱이 시작되거나 종료되는 경우.Trace 스토리지 요청 또는 디스패처 활동과 같이 가장 자세한 메시지와 워크플로 실행 활동과 관련된 모든 메시지가 포함된 로그입니다. Warning 논리 앱에서 비정상적인 상태를 강조하지만 실행을 방해하지는 않는 로그입니다. 심각도 수준을 설정하려면 프로젝트 루트 수준에서 host.json 파일을 열고
logging
개체를 찾습니다. 이 개체는 논리 앱의 모든 워크플로에 대한 로그 필터링을 제어하고 로그 유형 필터링을 위한 ASP.NET Core 레이아웃을 수행합니다.{ "version": "2.0", "logging": { "applicationInsights": { "samplingExcludedTypes": "Request", "samplingSettings": { "isEnabled": true } } } }
logging
개체에Host.Triggers.Workflow
속성을 포함하는logLevel
개체가 포함되지 않은 경우 해당 항목을 추가합니다. 원하는 추적 유형의 심각도 수준으로 속성을 설정합니다. 예를 들면 다음과 같습니다:{ "version": "2.0", "logging": { "applicationInsights": { "samplingExcludedTypes": "Request", "samplingSettings": { "isEnabled": true } }, "logLevel": { "Host.Triggers.Workflow": "Information" } } }
배포 단계를 완료하면 Visual Studio Code가 논리 앱을 게시하는 데 필요한 리소스를 만들고 배포를 시작합니다.
배포 프로세스를 검토하고 모니터링하려면 보기 메뉴에서 출력을 선택합니다. 출력 창 도구 모음 목록에서 Azure Logic Apps을 선택합니다.
Visual Studio Code에서 Azure에 논리 앱을 배포하는 작업이 완료되면 다음과 같은 메시지가 표시됩니다:
축하합니다, 이제 Azure에 논리 앱이 배치되었으며 기본적으로 사용하도록 설정되었습니다.
다음으로 이러한 작업을 수행하는 방법을 배울 수 있습니다:
Visual Studio Code 또는 Azure Portal을 사용하여 배포된 논리 앱을 관리합니다.
프로젝트에 빈 워크플로 추가
논리 앱 프로젝트에 여러 워크플로를 포함할 수 있습니다. 프로젝트에 빈 워크플로를 추가하려면 다음 단계를 수행합니다:
Visual Studio Code 작업 막대에서 Azure 아이콘을 선택합니다.
Azure 창에 있는 작업 영역 섹션 도구 모음의 Azure Logic Apps 메뉴에서 워크플로 만들기를 선택합니다.
추가하려는 워크플로 유형 선택: 상태 저장 또는 상태 비저장
워크플로 이름을 입력합니다.
완료되면 워크플로 정의를 위한 workflow.json 파일과 함께 새 워크플로 폴더가 프로젝트에 표시됩니다.
Visual Studio Code에서 배포된 논리 앱 관리
Visual Studio Code에서는 사용량 또는 표준 논리 앱 리소스인지 여부에 관계없이 Azure 구독에 배포된 모든 논리 앱을 보고 해당 논리 앱을 관리하는 데 도움이 되는 작업을 선택할 수 있습니다. 그러나 두 리소스 종류 모두에 액세스하려면 Visual Studio Code용 Azure Logic Apps(사용량) 및 Azure Logic Apps(표준) 확장이 모두 필요합니다.
Visual Studio Code 작업 막대에서 Azure 아이콘을 선택합니다. 리소스에서 구독, 논리 앱을 차례로 펼칩니다. 그러면 해당 구독에 대해 Azure에 배포된 논리 앱이 모두 표시됩니다.
관리하려는 논리 앱을 엽니다. 논리 앱의 바로 가기 메뉴에서 수행하려는 작업을 선택합니다.
예를 들어 배포된 논리 앱 중지, 시작, 재시작 또는 삭제와 같은 작업을 선택할 수 있습니다. Azure Portal을 사용하여 워크플로를 사용하지 않거나 사용하도록 설정할 수 있습니다.
참고 항목
논리 앱을 중지하고 논리 앱 작업을 삭제하면 워크플로 인스턴스가 다른 면으로 영향을 받습니다. 자세한 내용은 논리 앱 중지 시 고려 사항과 논리 앱 삭제 시 고려 사항을 검토하세요.
논리 앱의 모든 워크플로를 보려면 논리 앱을 확장한 다음 워크플로 노드를 확장합니다.
특정 워크플로를 보려면 워크플로의 바로 가기 메뉴를 열고 디자이너에서 열기를 선택하여 읽기 전용 모드로 엽니다.
다음 옵션을 사용하여 워크플로를 편집할 수 있습니다:
Visual Studio Code의 워크플로 디자이너에서 프로젝트의 workflow.json 파일을 열고, 편집한 다음 논리 앱을 Azure에 다시 배포합니다.
Azure Portal에서 논리 앱을 엽니다. 그런 다음, 워크플로를 열고, 편집하고, 저장할 수 있습니다.
Azure Portal에서 배포된 논리 앱을 열려면 논리 앱의 바로 가기 메뉴를 열고 Portal에서 열기를 선택합니다.
Azure Portal이 브라우저에서 열리고 Visual Studio Code에 로그인한 경우 포털에 자동으로 로그인되며 논리 앱이 표시됩니다.
또한 Azure Portal에 별도로 로그인하고 포털 검색 상자를 사용하여 논리 앱을 찾은 다음 결과 목록에서 논리 앱을 선택할 수도 있습니다.
논리 앱 중지 시 고려 사항
논리 앱을 중지하면 워크플로 인스턴스에 다음과 같은 영향이 있습니다.
Azure Logic Apps가 진행 중인 실행과 보류 중인 실행을 즉시 취소합니다.
Azure Logic Apps가 새 워크플로 인스턴스를 만들거나 실행하지 않습니다.
트리거는 다음에 해당 조건이 충족되면 작동하지 않습니다. 하지만 트리거 상태는 논리 앱이 중지된 지점을 저장합니다. 따라서 논리 앱을 다시 시작하면 트리거는 마지막 실행 이후에 처리되지 않은 모든 항목에 작동합니다.
트리거가 마지막 실행 이후 처리되지 않은 항목에서 작동하지 않도록 하려면 논리 앱을 다시 시작하기 전에 트리거 상태를 지웁니다.
Visual Studio Code 작업 막대에서 Azure 아이콘을 선택하여 Azure 창을 엽니다.
리소스 섹션에서 구독을 펼칩니다. 그러면 해당 구독에 대해 배포된 논리 앱이 모두 표시됩니다.
논리 앱을 확장한 다음, 워크플로라는 노드를 확장합니다.
워크플로를 열고 해당 워크플로 트리거의 모든 부분을 편집합니다.
변경 내용을 저장합니다. 이 단계는 트리거의 현재 상태를 재설정합니다.
워크플로마다 반복합니다.
완료되면 논리 앱을 다시 시작합니다.
논리 앱 삭제 시 고려 사항
논리 앱을 삭제하면 다음과 같은 방식으로 워크플로 인스턴스에 영향을 줍니다.
Azure Logic Apps는 진행 중/보류 중인 실행을 즉시 취소하지만, 앱이 사용하는 스토리지에서 정리 작업을 실행하지 않습니다.
Azure Logic Apps가 새 워크플로 인스턴스를 만들거나 실행하지 않습니다.
워크플로를 삭제한 다음, 동일한 워크플로를 다시 만들면 다시 생성된 워크플로에는 삭제된 워크플로와 동일한 메타데이터가 포함되지 않습니다. 메타데이터를 새로 고치려면 삭제된 워크플로를 호출한 모든 워크플로를 다시 저장해야 합니다. 이렇게 하면 호출자가 다시 생성된 워크플로에 대한 올바른 정보를 가져옵니다. 그렇지 않으면 다시 생성된 워크플로에 대한 호출이
Unauthorized
오류와 함께 실패합니다. 이 동작은 Azure 함수를 호출하는 워크플로 및 통합 계정에서 아티팩트를 사용하는 워크플로에도 적용됩니다.
포털에서 배포된 논리 앱 관리
Visual Studio Code에서 논리 앱이 Azure Portal에 배포되면 사용량 또는 표준 논리 앱 리소스인지 여부에 관계없이 Azure 구독에 있는 배포된 모든 논리 앱을 볼 수 있습니다. 현재 각 리소스 유형은 Azure에서 별도의 범주로 구성되고 관리됩니다. 표준 논리 앱을 찾으려면 다음 단계를 수행합니다.
Azure Portal 검색 상자에서 논리 앱을 입력합니다. 결과 목록이 표시되면 서비스에서 논리 앱을 선택합니다.
Logic App 창에서 Visual Studio Code에서 배포한 논리 앱을 선택합니다.
Azure Portal에서 선택한 논리 앱에 대한 개별 리소스 페이지를 엽니다.
이 논리 앱에서 워크플로를 보려면 논리 앱의 메뉴에서 워크플로를 선택합니다.
워크플로 창에는 현재 논리 앱의 모든 워크플로가 표시됩니다. 이 예제에서는 Visual Studio Code에서 만든 워크플로를 보여줍니다.
워크플로를 보려면 워크플로 창에서 해당 워크플로를 선택합니다.
워크플로 창이 열리고 해당 워크플로에서 수행할 수 있는 추가 정보 및 작업이 표시됩니다.
예를 들어 워크플로의 단계를 보려면 디자이너를 선택합니다.
워크플로 디자이너가 열리고 Visual Studio Code에서 빌드된 워크플로가 표시됩니다. 이제 Azure Portal에서 이 워크플로를 변경할 수 있습니다.
포털에서 다른 워크플로 추가
Azure Portal을 통해 빈 워크플로를 Visual Studio Code에서 배포한 표준 논리 앱 리소스에 추가하고 Azure Portal에서 해당 워크플로를 빌드할 수 있습니다.
Azure Portal에서 배포된 표준 논리 앱 리소스를 선택합니다.
논리 앱 리소스 메뉴에서 워크플로를 선택합니다. 워크플로 창에서 추가를 선택합니다.
새 워크플로 창에서 워크플로의 이름을 입력합니다. 상태 저장 또는 상태 비저장 > 만들기를 선택합니다.
Azure가 워크플로 창에 표시되는 새 워크플로를 배포한 후 디자이너 또는 코드 보기 열기와 같은 다른 작업을 관리하고 수행할 수 있도록 해당 워크플로를 선택합니다.
예를 들어 새 워크플로를 위해 디자이너를 열면 빈 캔버스가 표시됩니다. 이제 Azure Portal에서 이 워크플로를 빌드할 수 있습니다.
상태 비저장 워크플로에 대한 실행 기록 사용 설정
상태 비저장 워크플로를 보다 쉽게 디버그하려면 해당 워크플로에 실행 기록을 사용하도록 설정한 다음, 완료되면 실행 기록을 사용하지 않도록 설정하면 됩니다. Visual Studio Code에 다음 단계를 수행합니다. 또는 Azure Portal에서 작업하는 경우에는 Azure Portal에서 단일 테넌트 기반 워크플로 만들기를 참조하세요.
Visual Studio Code 프로젝트의 루트 폴더 수준에서 local.settings.json 파일을 엽니다.
Workflows.{yourWorkflowName}.operationOptions
속성을 추가하고 값을WithStatelessRunHistory
로 설정합니다. 예를 들어 다음과 같습니다.Windows
{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "dotnet", "Workflows.{yourWorkflowName}.OperationOptions": "WithStatelessRunHistory" } }
macOS 또는 Linux
{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=fabrikamstorageacct; \ AccountKey=<access-key>;EndpointSuffix=core.windows.net", "FUNCTIONS_WORKER_RUNTIME": "dotnet", "Workflows.{yourWorkflowName}.OperationOptions": "WithStatelessRunHistory" } }
workflow-designtime이라는 프로젝트 폴더에서 local.settings.json 파일을 열고 동일하게 변경합니다.
작업을 마친 후 실행 기록을 사용하지 않도록 설정하려면
Workflows.{yourWorkflowName}.OperationOptions
속성을None
으로 설정하거나 이 속성과 해당 값을 삭제합니다.
Azure Portal 모니터링 보기 사용 설정
Visual Studio Code에서 Azure로 Logic App(표준) 리소스를 배포하면 Azure Portal과 해당 워크플로의 모니터링 환경을 사용하여 해당 리소스에 있는 워크플로의 사용 가능한 실행 기록과 세부 정보를 검토할 수 있습니다. 그러나 먼저 해당 논리 앱 리소스에서 모니터링 보기 기능을 사용하도록 설정해야 합니다.
Azure Portal에서 표준 논리 앱 리소스를 엽니다.
논리 앱 리소스 메뉴의 API 아래에서 CORS를 선택합니다.
CORS 창의 허용된 원본에서 와일드카드 문자(*)를 추가합니다.
완료되면 CORS 도구 모음에서 저장을 선택합니다.
배포 후 Application Insights를 사용하도록 설정하거나 열기
워크플로가 실행되는 동안 논리 앱은 다른 이벤트와 함께 원격 분석 데이터를 내보냅니다. 이 원격 분석 데이터를 사용하여 워크플로가 얼마나 잘 실행되는지 그리고 Logic Apps 런타임이 얼마나 다양한 방식으로 작동하는지 보다 정확하게 파악할 수 있습니다. 거의 실시간 원격 분석 데이터(라이브 메트릭)를 제공하는 Application Insights를 사용하여 워크플로를 모니터링할 수 있습니다. 이 데이터를 사용하여 문제를 진단하고 경고를 설정하고 차트를 작성할 때 이 기능을 통해 오류 및 성능 문제를 보다 쉽게 조사할 수 있습니다.
논리 앱의 만들기 및 배포 설정에서 Application Insights 사용을 지원하는 경우 필요에 따라 논리 앱에 진단 로깅 및 추적을 사용하도록 설정할 수 있습니다. Visual Studio Code에서 논리 앱을 배포할 때 또는 배포 후에 이러한 작업을 수행할 수 있습니다. Application Insights 인스턴스가 필요하지만, 논리 앱을 배포할 때 미리 또는 배포 후에 이 리소스를 만들 수 있습니다.
배포한 논리 앱에서 Application Insights를 사용하도록 설정하거나 이미 사용하도록 설정한 Application Insights 데이터를 검토하려면 다음 단계를 수행합니다:
Azure Portal에서 배포된 논리 앱을 찾습니다.
논리 앱 메뉴의 설정에서 Application Insights를 선택합니다.
Application Insights가 사용하도록 설정되지 않은 경우 Application Insights 창에서 Application Insights 켜기를 선택합니다. 창이 업데이트된 후 아래쪽에서 적용을 선택합니다.
Application Insights가 사용하도록 설정된 경우 Application Insights 창에서 Application Insights 데이터 보기를 선택합니다.
Application Insights가 열리면 논리 앱에 대한 다양한 메트릭을 검토할 수 있습니다. 자세한 내용은 다음 항목을 검토하세요:
- 어디서나 실행되는 Azure Logic Apps - Application Insights로 모니터링 - 1부
- 어디서나 실행되는 Azure Logic Apps - Application Insights로 모니터링 - 2부
디자이너에서 항목 삭제
디자이너에서 워크플로의 항목을 삭제하려면 다음 단계 중 하나를 수행합니다:
항목을 선택하고 항목의 바로 가기 메뉴(Shift+F10)를 열고 삭제를 선택합니다. 확인하려면 확인을 선택합니다.
항목을 선택하고 삭제 키를 누릅니다. 확인하려면 확인을 선택합니다.
항목을 선택하면 해당 항목에 대한 세부 정보 창이 열립니다. 이 창의 오른쪽 위 모서리에서 줄임표(...) 메뉴를 열고 삭제를 선택합니다. 확인하려면 확인을 선택합니다.
팁
줄임표 메뉴가 표시되지 않는 경우 세부 정보 창의 오른쪽 위 모서리에 줄임표(...) 단추가 표시되도록 Visual Studio Code 창을 충분히 넓게 확장합니다.
오류 및 문제 해결
디자이너 열기 실패
디자이너를 열려고 하면 "워크플로 디자인 타임을 시작할 수 없습니다"라는 오류 메시지가 표시됩니다. 이전에 디자이너를 열려고 시도한 뒤 프로젝트를 중단하거나 삭제한 경우 확장 번들이 올바르게 다운로드되지 않을 수 있습니다. 이 원인이 문제인지 확인하려면 다음 단계를 수행합니다:
Visual Studio Code에서 출력 창을 엽니다. 보기 메뉴에서 출력을 선택합니다.
출력 창의 제목 표시줄에 있는 목록에서 Azure Logic Apps(표준)를 선택합니다. 그러면 확장의 출력을 검토할 수 있습니다. 예를 들면 다음과 같습니다.
출력을 검토하고 다음 오류 메시지가 표시되는지 확인합니다:
A host error has occurred during startup operation '{operationID}'. System.Private.CoreLib: The file 'C:\Users\{userName}\AppData\Local\Temp\Functions\ ExtensionBundles\Microsoft.Azure.Functions.ExtensionBundle.Workflows\1.1.7\bin\ DurableTask.AzureStorage.dll' already exists. Value cannot be null. (Parameter 'provider') Application is shutting down... Initialization cancellation requested by runtime. Stopping host... Host shutdown completed.
이 오류를 해결하려면 ...\Users{your-username}\AppData\Local\Temp\Functions\ExtensionBundles 위치에서 ExtensionBundles 폴더를 삭제하고 디자이너에서 workflow.json 파일을 다시 열어 보세요.
이전에 만든 워크플로의 디자이너 선택기에 새 트리거 및 작업이 없음
단일 테넌트 Azure Logic Apps는 Azure Function 작업, Liquid 작업 및 XML 작업(예: XML 유효성 검사 및 XML 변환)의 기본 제공 작업을 지원합니다. 그러나 이전에 만든 논리 앱의 경우 Visual Studio Code에서 오래된 버전의 확장 번들 Microsoft.Azure.Functions.ExtensionBundle.Workflows
을(를) 사용하기 때문에 이러한 작업이 디자이너 선택기에 표시되지 않을 수 있습니다.
또한 논리 앱을 만들 때 Azure 커넥터 사용을 사용하도록 설정하거나 선택하지 않으면 Azure Function 작업 커넥터 및 작업이 디자이너 선택기에 표시되지 않습니다. 앱을 만들 때 Azure 배포 커넥터를 사용하도록 설정하지 않은 경우 Visual Studio Code의 프로젝트에서 사용하도록 설정할 수 있습니다. 바로 가기 메뉴에서 workflow.json을 열고 Azure 커넥터 사용을 선택합니다.
오래된 번들을 수정하려면, 다음 단계를 수행하여 오래된 번들을 삭제하면 Visual Studio Code에서 확장 번들을 최신 버전으로 자동 업데이트합니다.
참고 항목
이 솔루션은 Azure Portal을 사용하여 만든 논리 앱이 아닌 Azure Logic Apps(표준) 확장과 함께 Visual Studio Code를 사용하여 만들고 배포하는 논리 앱에만 적용됩니다. 지원되는 트리거 및 작업이 Azure portal 디자이너에 없음을 참조하세요.
손실하지 않으려는 작업을 모두 저장하고 Visual Studio를 닫습니다.
컴퓨터에서 기존 번들의 버전 폴더가 들어 있는 다음 폴더로 이동합니다:
...\Users\{your-username}\.azure-functions-core-tools\Functions\ExtensionBundles\Microsoft.Azure.Functions.ExtensionBundle.Workflows
이전 번들 버전 폴더를 삭제합니다(예: 1.1.3 버전 폴더가 있는 경우 해당 폴더 삭제).
이제 필수 NuGet 패키지의 버전 폴더가 포함된 다음 폴더로 이동합니다:
...\Users\{your-username}\.nuget\packages\microsoft.azure.workflows.webjobs.extension
이전 패키지의 버전 폴더를 삭제합니다.
디자이너에서 Visual Studio Code, 프로젝트 및 workflow.json 파일을 다시 엽니다.
누락된 트리거와 작업이 이제 디자이너에 표시됩니다.
트리거 또는 작업에 "400 잘못된 요청"이 표시됨
실행이 실패하고 모니터링 보기에서 실행을 검사하면 이 오류가 긴 이름을 가진 트리거 또는 작업에 표시될 수 있으며, 이로 인해 기본 URI(Uniform Resource Identifier)가 기본 문자 제한을 초과하게 됩니다.
이 문제를 해결하고 긴 URI를 조정하려면 아래 단계를 수행하여 컴퓨터에서 UrlSegmentMaxCount
및 UrlSegmentMaxLength
레지스트리 키를 편집합니다. 해당 키 기본값은 Windows용 Http.sys 레지스트리 설정 항목을 참조하세요.
Important
시작하기 전에 작업 내용을 저장했는지 확인합니다. 이 솔루션을 사용하려면 변경 사항을 적용하기 위해 작업을 마친 후 컴퓨터를 다시 시작해야 합니다.
컴퓨터에서 실행 창을 열고 레지스트리 편집기를 여는
regedit
명령을 실행합니다.사용자 계정 컨트롤 상자에서 예를 선택하여 컴퓨터에 대한 변경 사항을 허용합니다.
왼쪽 창의 컴퓨터에서 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters 경로를 따라 노드를 확장하고 매개 변수를 선택합니다.
오른쪽 창에서
UrlSegmentMaxCount
및UrlSegmentMaxLength
레지스트리 키를 찾습니다.URI가 사용하려는 이름을 수용할 수 있도록 해당 키 값을 충분히 늘립니다. 해당 키가 없으면 다음 단계를 수행하여 매개 변수 폴더에 추가합니다:
매개 변수 바로 가기 메뉴에서 새>DWORD (32-비트) 값을 선택합니다.
표시되는 편집 상자에 새 키 이름으로
UrlSegmentMaxCount
을 입력합니다.새 키의 바로 가기 메뉴를 열고 수정을 선택합니다.
표시되는 문자열 편집 상자에 원하는 값 데이터 키 값을 16진수 또는 10진수 형식으로 입력합니다. 예를 들어 16진수의
400
은 10진수의1024
와 동일합니다.UrlSegmentMaxLength
키 값을 추가하려면 다음 단계를 반복합니다.
해당 키 값을 늘리거나 추가하면 레지스트리 편집기가 다음과 같이 표시됩니다:
준비가 되면 변경 사항을 적용하도록 컴퓨터를 다시 시작합니다.
디버깅 세션이 시작되지 않음
디버깅 세션을 시작하려 할 때 "preLaunchTask 'generateDebugSymbols'실행 후 오류가 발생했습니다" 오류가 발생합니다. 이 문제를 해결하려면 프로젝트에서 tasks.json 파일을 편집하여 기호 생성을 건너뜁니다.
프로젝트에서 .vscode 폴더를 확장하고 tasks.json 파일을 엽니다.
다음 작업에서 앞 줄을 종료하는 쉼표와 함께
"dependsOn: "generateDebugSymbols"
줄을 삭제합니다. 예를 들면 다음과 같습니다:이전:
{ "type": "func", "command": "host start", "problemMatcher": "$func-watch", "isBackground": true, "dependsOn": "generateDebugSymbols" }
이후:
{ "type": "func", "command": "host start", "problemMatcher": "$func-watch", "isBackground": true }
다음 단계
Azure Logic Apps(표준) 확장을 사용한 경험을 알려주세요.
- 버그 또는 문제가 발견되는 경우 GitHub에서 문제를 알려주세요.
- 이 사용자 의견 양식을 사용하여 질문, 요청, 의견 및 기타 피드백을 보내주세요.