다음을 통해 공유


단일 테넌트 Azure Logic Apps에서 표준 논리 앱에 대한 DevOps 배포 설정

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

이 가이드에서는 주로 DevOps 도구 및 프로세스를 사용하여 Visual Studio Code의 표준 논리 앱 프로젝트에 대한 배포를 인프라에 설정하는 방법을 보여 줍니다. 대신 표준 논리 앱이 Azure Portal에 있는 경우 DevOps 배포에 사용할 논리 앱의 아티팩트 파일을 다운로드할 수 있습니다. GitHub 또는 Azure DevOps를 사용할지 여부에 따라 배포 시나리오에 가장 적합한 경로와 도구를 선택합니다.

표준 논리 앱이 없는 경우에도 연결된 샘플 표준 논리 앱 프로젝트와 GitHub 또는 Azure DevOps를 통해 Azure에 배포하기 위한 예제를 사용하여 이 가이드를 따를 수 있습니다. 자세한 내용은 단일 테넌트 Azure Logic Apps에 대한 DevOps 배포 개요를 검토 하세요.

필수 조건

  • 활성 구독이 있는 Azure 계정. Azure 구독이 없는 경우 무료 계정을 만드세요.

  • 무료인 Visual Studio Code, Visual Studio Code용 Azure Logic Apps(표준) 확장 및 기타 관련 필수 구성 요소입니다.

  • DevOps 도구 및 프로세스와 함께 사용할 표준 논리 앱입니다.

    Azure Portal에서 표준 논리 앱 리소스에 대한 아티팩트 파일을 다운로드하거나 Visual Studio Code 및 Visual Studio Code용 Azure Logic Apps(표준) 확장으로 만든 표준 논리 앱 프로젝트를 사용할 수 있습니다.

    • 포털: 다운로드한 zip 파일에는 workflow.json, connections.json, host.jsonlocal.settings.json 같은 표준 논리 앱 아티팩트 파일이 포함되어 있습니다. 포털에서 표준 논리 앱 아티팩트 파일 다운로드를 참조하세요.

    • Visual Studio Code: 배포 대상을 위해 Azure Portal에 빈 표준 논리 앱 리소스가 필요합니다. 빈 표준 논리 앱 리소스를 빠르게 만들려면 단일 테넌트 기반 논리 앱 워크플로 만들기 - 포털을 검토합니다.

    기존 논리 앱 또는 인프라가 없는 경우 연결된 샘플 표준 논리 앱 프로젝트를 사용하여 GitHub 또는 Azure DevOps를 사용할지 여부에 따라 예제 논리 앱 및 인프라를 배포할 수 있습니다. 예제 논리 앱을 실행하기 위해 포함된 샘플 프로젝트 및 리소스에 대한 자세한 내용은 인프라 리소스 배포를 검토 하세요.

인프라 리소스 배포

이전 표준 논리 앱 또는 인프라 설정 없이 DevOps 배포 환경을 시도하려면 다음 샘플 프로젝트를 사용하여 GitHub 또는 Azure DevOps를 사용할지 여부에 따라 예제 표준 논리 앱 및 인프라에 대한 배포를 설정할 수 있습니다.

두 샘플 모두 표준 논리 앱이 실행하는 데 사용하는 다음 리소스를 포함합니다.

리소스 이름 Required 설명
표준 논리 앱 이 Azure 리소스에는 단일 테넌트 Azure Logic Apps에서 실행하는 워크플로가 포함되어 있습니다.

중요: 논리 앱 프로젝트에서 각 워크플로에는 트리거 및 작업 정의를 포함하는 워크플로 정의가 포함된 workflow.json 파일이 있습니다.
API 연결 예, API 연결이 있는 경우 이러한 Azure 리소스는 워크플로가 Office 365, SharePoint 등과 같은 관리 커넥터 작업을 실행하는 데 사용하는 모든 관리되는 API 연결을 정의합니다.

중요: 논리 앱 프로젝트에서 connections.js 파일은 관리되는 API 연결 및 워크플로에서 사용하는 Azure Functions에 대한 메타데이터, 엔드포인트 및 키를 포함합니다. 각 환경에 대해 서로 다른 연결과 함수를 사용하려면 이 connections.json 파일을 매개 변수화하고 엔드포인트를 업데이트해야 합니다.

자세한 내용은 API 연결 리소스 및 액세스 정책을 검토하세요.
Functions 프리미엄 또는 App Service 호스팅 계획 이 Azure 리소스는 컴퓨팅, 처리, 스토리지, 네트워킹 등 논리 앱을 실행하는 데 사용할 호스팅 리소스를 지정합니다.

중요: 현재 환경에서 표준 논리 앱 리소스에는 Azure Functions Premium 호스팅 계획을 기반으로 하는 워크플로 표준 호스팅 계획이 필요합니다.
Azure Storage 계정 예, 상태 저장 및 상태 비저장 워크플로 모두에 대해 이 Azure 리소스는 메타데이터, 액세스 제어용 키, 상태, 입력, 출력, 실행 기록 및 워크플로에 대한 기타 정보를 저장합니다.
Application Insights 선택 사항 이 Azure 리소스는 워크플로에 대한 모니터링 기능을 제공합니다.
ARM(Azure Resource Manager) 템플릿 선택 사항 이 Azure 리소스는 재사용하거나 내보낼 수 있는 기준 인프라 배포를 정의합니다.

API 연결 리소스 및 액세스 정책

단일 테넌트 Azure Logic Apps에서 워크플로의 모든 관리되는 API 연결 리소스에는 연결된 액세스 정책이 필요합니다. 이 정책에는 관리되는 커넥터 인프라에 액세스하기 위한 올바른 권한을 제공하기 위해 논리 앱의 ID가 필요합니다. 포함된 샘플 프로젝트에는 이러한 액세스 정책을 비롯하여 필요한 모든 인프라 리소스를 포함하는 ARM 템플릿이 포함되어 있습니다.

예를 들어 다음 다이어그램은 표준 논리 앱 프로젝트와 인프라 리소스 간의 종속성을 보여 줍니다.

개념 다이어그램은 단일 테넌트 Azure Logic Apps 모델의 표준 논리 앱 프로젝트에 대한 인프라 종속성을 보여 줍니다.

포털에서 표준 논리 앱 아티팩트 다운로드

표준 논리 앱이 Azure Portal에 있는 경우 workflow.json, connections.json, host.json 및 local.settings.json 포함하여 논리 앱의 아티팩트 파일이 포함된 zip 파일을 다운로드할 수 있습니다.

  1. Azure Portal에서 표준 논리 앱 리소스를 찾아서 엽니다.

  2. 논리 앱 메뉴에서 개요를 선택합니다.

  3. 개요 도구 모음에서 앱 콘텐츠 다운로드를 선택합니다. 표시되는 확인 상자에서 다운로드를 선택합니다.

  4. 프롬프트가 나타나면 다른 이름으로 저장을 선택하고 원하는 로컬 폴더로 이동한 다음 저장을 선택하여 zip 파일을 저장합니다.

  5. 파일의 압축을 풉니다.

  6. Visual Studio Code에서 압축을 푼 파일이 포함된 폴더를 엽니다.

    폴더를 열면 Visual Studio Code에서 작업 영역을 자동으로 만듭니다.

  7. DevOps를 사용하여 배포에 필요한 폴더와 파일만 포함하도록 폴더의 내용을 편집합니다.

  8. 완료되면 변경 내용을 저장합니다.

논리 앱 빌드 및 배포(zip 배포)

인프라에 표준 논리 앱을 배포하는 Azure 내부 또는 외부에서 빌드 및 릴리스 파이프라인을 설정할 수 있습니다.

프로젝트 빌드

  1. 표준 논리 앱 프로젝트 및 아티팩트 파일을 원본 리포지토리(예: GitHub 또는 Azure DevOps)에 푸시합니다.

  2. 다음 해당 작업을 완료하여 논리 앱 프로젝트 유형에 따라 빌드 파이프라인을 설정합니다.

    프로젝트 형식 설명 및 단계
    Nuget 기반 NuGet 기반 프로젝트 구조는 .NET Framework를 기반으로 합니다. 이러한 프로젝트를 빌드하려면 .NET Standard 빌드 단계를 수행해야 합니다. 자세한 내용은 MSBuild를 사용하여 NuGet 패키지 만들기 설명서를 검토합니다.
    번들 기반 확장 번들 기반 프로젝트는 언어별 프로젝트가 아니며 언어별 빌드 단계가 필요하지 않습니다.
  3. 원하는 메서드를 사용하여 프로젝트 파일을 압축합니다.

    Important

    zip 파일에 모든 워크플로 폴더, 구성 파일(예: host.json, connections.json, local.settings.json 및 기타 관련 파일을 포함하여 루트 수준에서 프로젝트의 실제 빌드 아티팩트가 포함되어 있는지 확인합니다. 추가 폴더를 추가하거나 프로젝트 구조에 아직 없는 폴더에 아티팩트를 배치하지 마세요.

    예를 들어 다음 목록에는 파일 구조에 MyBuildArtifacts.zip 예제가 나와 있습니다.

    MyStatefulWorkflow1-Folder
    MyStatefulWorkflow2-Folder
    connections.json
    host.json
    local.settings.json
    

Azure에 릴리스하기 전에

논리 앱 프로젝트의 connections.json 파일 내부에 관리되는 API 연결은 Visual Studio Code에서 로컬 사용을 위해 특별히 만들어집니다. Visual Studio Code에서 Azure로 프로젝트 아티팩트를 릴리스하려면 먼저 이러한 아티팩트를 업데이트해야 합니다. Azure에서 관리되는 API 연결을 사용하려면 Azure에서 사용하기에 올바른 형식이 되도록 인증 방법을 업데이트해야 합니다.

인증 형식 업데이트

인증을 사용하는 관리되는 각 API 연결에 대해 첫 번째 및 두 번째 코드 예제와 같이 Visual Studio Code의 로컬 형식에서 Azure Portal 형식으로 개체를 업데이트 authentication 해야 합니다.

Visual Studio Code 형식

{
   "managedApiConnections": {
      "sql": {
         "api": {
            "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Web/locations/westus/managedApis/sql"
         },
         "connection": {
            "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ase/providers/Microsoft.Web/connections/sql-2"
         },
         "connectionRuntimeUrl": "https://xxxxxxxxxxxxxx.01.common.logic-westus.azure-apihub.net/apim/sql/xxxxxxxxxxxxxxxxxxxxxxxxx/",
         "authentication": {
            "type": "Raw",
            "scheme": "Key",
            "parameter": "@appsetting('sql-connectionKey')"
         }
      }
   }
}

Azure Portal 형식

{
   "managedApiConnections": {
      "sql": {
         "api": {
            "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Web/locations/westus/managedApis/sql"
         },
         "connection": {
            "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ase/providers/Microsoft.Web/connections/sql-2"
         },
         "connectionRuntimeUrl": "https://xxxxxxxxxxxxxx.01.common.logic-westus.azure-apihub.net/apim/sql/xxxxxxxxxxxxxxxxxxxxxxxxx/",
         "authentication": {
            "type": "ManagedServiceIdentity",
         }
      }
   }
}

필요에 따라 API 연결 만들기

로컬 개발 환경과 다른 Azure 지역 또는 구독에 표준 논리 앱을 배포하는 경우 배포 전에 이러한 관리되는 API 연결을 만들어야 합니다. ARM(Azure Resource Manager) 템플릿 배포는 관리되는 API 연결을 만드는 가장 쉬운 방법입니다.

다음 예에서는 ARM 템플릿의 SQL 관리 API 연결 리소스 정의를 보여 줍니다.

{
   "type": "Microsoft.Web/connections",
   "apiVersion": "2016–06–01",
   "location": "[parameters('location')]",
   "name": "[parameters('connectionName')]",
   "properties": {
      "displayName": "sqltestconnector",
      "api": {
         "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Web/locations/{Azure-region-location}/managedApis/sql"
      },
      "parameterValues": {
         "authType": "windows", 
         "database": "TestDB",
         "password": "TestPassword",
         "server": "TestServer",
         "username": "TestUserName"
      }
   }
}

연결 리소스 정의를 완료할 수 있도록 개체에 properties 필요한 값을 찾으려면 특정 커넥터에 대해 다음 API를 사용합니다.

GET https://management.azure.com/subscriptions/{Azure-subscription-ID}/providers/Microsoft.Web/locations/{Azure-region-location}/managedApis/{connector-name}?api-version=2016-06-01

응답에서 특정 커넥터에 connectionParameters 대한 리소스 정의를 완료하는 데 필요한 정보가 포함된 개체를 찾습니다. 다음 예제에서는 SQL 관리 연결에 대한 예제 리소스 정의를 보여줍니다.

{
   "type": "Microsoft.Web/connections",
   "apiVersion": "2016–06–01",
   "location": "[parameters('location')]",
   "name": "[parameters('connectionName')]",
   "properties": {
      "displayName": "sqltestconnector",
      "api": {
         "id": "/subscriptions/{Azure-subscription-ID}/providers/Microsoft.Web/locations/{Azure-region-location}/managedApis/sql"
      },
      "parameterValues": {
         "authType": "windows",
         "database": "TestDB",
         "password": "TestPassword",
         "server": "TestServer",
         "username": "TestUserName"
      }
   }
}

또는 Azure Logic Apps에서 워크플로 디자이너를 사용하여 연결을 만들 때 네트워크 추적을 캡처하고 검토할 수 있습니다. 앞에서 설명한 PUT 대로 관리되는 커넥터의 API로 전송되는 호출을 찾아 필요한 모든 정보를 요청 본문에서 검토합니다.

온-프레미스 데이터 게이트웨이 리소스 정의

연결에서 온-프레미스 데이터 게이트웨이 리소스를 사용하는 경우 이 리소스 정의는 커넥터 리소스 정의와 별도로 존재합니다. 데이터 게이트웨이의 리소스 정의를 보려면 Azure Resource Manager 템플릿 및 Microsoft.Web connectionGateways를 사용하여 Azure Logic Apps에 대한 배포 자동화를 참조하세요.

Azure에 릴리스

Azure에 배포하는 릴리스 파이프라인을 설정하려면 GitHub, Azure DevOps 또는 Azure CLI에 대한 관련 단계를 따릅니다.

GitHub 배포의 경우 GitHub Actions(예: Azure Functions의 GitHub 작업)를 사용하여 논리 앱을 배포할 수 있습니다. 이 작업을 수행하려면 다음 정보를 전달해야 합니다.

  • 배포에 사용할 논리 앱 이름
  • 모든 워크플로 폴더, 구성 파일(예: host.json, connections.json, local.settings.json 및 기타 관련 파일을 포함하여 실제 빌드 아티팩트가 포함된 zip 파일입니다.
  • 인증에 사용되는 게시 프로필
- name: 'Run Azure Functions Action'
  uses: Azure/functions-action@v1
  id: fa
  with:
   app-name: 'MyLogicAppName'
   package: 'MyBuildArtifact.zip'
   publish-profile: 'MyLogicAppPublishProfile'

자세한 내용은 GitHub Action을 사용하여 지속적인 업데이트를 검토하세요.

Azure에 배포한 후

각 API 연결에는 액세스 정책이 있습니다. zip 배포가 완료되면 Azure Portal에서 표준 논리 앱 리소스를 열고 각 API 연결에 대한 액세스 정책을 만들어 배포된 논리 앱에 대한 권한을 설정해야 합니다. zip 배포는 앱 설정을 만들지 않습니다. 배포 후에는 논리 앱 프로젝트의 local.settings.json 파일을 기반으로 이러한 앱 설정을 만들어야 합니다.

단일 테넌트 Azure Logic Apps 사용 경험에 대한 여러분의 의견을 듣고 싶습니다.