Azure Logic Apps의 사용자 지정 커넥터

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

코드를 작성하지 않고도 Azure Logic Apps에서 미리 빌드된 커넥터 작업을 사용할 때 자동화된 통합 워크플로를 빠르게 만들 수 있습니다. 커넥터를 사용하면 워크플로가 다른 앱, 서비스, 시스템, 프로토콜 및 플랫폼 간의 데이터, 이벤트 및 작업을 연결하고 이에 액세스할 수 있습니다. 각 커넥터는 워크플로에 추가할 수 있는 트리거, 작업 또는 둘 다로 작업을 제공합니다. 이러한 작업을 사용하면 클라우드 앱 및 온-프레미스 앱이 새 데이터와 기존 데이터로 작업할 수 있도록 기능이 확장됩니다.

Azure Logic Apps의 커넥터는 기본 제공 또는 관리형 중 하나입니다. 기본 제공 커넥터는 기본적으로 Azure Logic Apps 런타임에서 실행됩니다. 즉, 런타임과 동일한 프로세스에서 호스트되며 더 높은 처리량, 짧은 대기 시간 및 로컬 연결을 제공합니다. 관리형 커넥터는 기본 서비스가 Azure Logic Apps과 통신하도록 지원하는 Office 365 또는 Salesforce와 같은 API에 대한 프록시 또는 래퍼입니다. 관리형 커넥터는 Azure의 커넥터 인프라를 통해 구동되며 Microsoft에서 배포, 호스팅, 실행 및 관리합니다. Azure Logic Apps의 워크플로에 사용할 수백 개의 관리형 커넥터 중에서 선택할 수 있습니다.

워크플로에서 처음으로 커넥터 작업을 사용하는 경우 일부 커넥터는 먼저 연결을 만들 필요가 없지만 다른 많은 커넥터에는 이 단계가 필요합니다. 사용자가 만드는 각 연결은 실제로 대상 앱, 서비스, 시스템, 프로토콜 또는 플랫폼에 대한 액세스를 제공하는 별도의 Azure 리소스입니다.

그러나 경우에 따라 미리 빌드된 커넥터로 사용할 수 없는 REST API를 호출할 수도 있습니다. 보다 맞춤화된 시나리오를 지원하기 위해 고유한 사용자 지정 커넥터를 만들어서 미리 빌드된 작업으로는 제공할 수 없는 트리거 및 작업을 제공할 수 있습니다.

이 문서에서는 사용량 논리 앱 워크플로 및 표준 논리 앱 워크플로에 대한 사용자 지정 커넥터에 대한 개요를 제공합니다. 각 논리 앱 유형은 다중 테넌트 Azure 및 단일 테넌트 Azure에서 각각 호스트되는 다른 Azure Logic Apps 런타임에 의해 구동됩니다. Azure Logic Apps의 커넥터에 대한 자세한 내용은 다음 설명서를 검토하세요.

소비 논리 앱

다중 테넌트 Azure Logic Apps에서 Swagger 기반 또는 SOAP 기반 API의 사용자 지정 커넥터특정 제한까지 만들어 사용량 논리 앱 워크플로에서 사용할 수 있습니다. 커넥터 설명서에서는 전체 기본 사항 및 고급 자습서를 포함하여 사용량 논리 앱에 대한 사용자 지정 커넥터를 만드는 방법에 대한 자세한 개요 정보를 제공합니다. 다음 목록에서는 사용량 논리 앱용 사용자 지정 커넥터 정보에 대한 직접 링크를 제공합니다.

표준 논리 앱

단일 테넌트 Azure Logic Apps에서 다시 디자인된 Azure Logic Apps 런타임은 표준 논리 앱 워크플로를 구동합니다. 이 런타임은 사용량 논리 앱 워크플로를 구동하는 다중 테넌트 Azure Logic Apps 런타임과 다릅니다. 단일 테넌트 런타임은 Azure Functions 확장성 모델을 사용하는데 이 모델은 표준 워크플로에서 누구나 사용할 수 있는 고유한 기본 제공 커넥터를 만드는 주요 기능을 제공합니다. 대부분의 경우 기본 제공 버전은 더 나은 성능, 기능, 가격 책정 등을 제공합니다.

단일 테넌트 Azure Logic가 Apps 공식적으로 출시되었을 때 새로운 기본 제공 커넥터에는 Azure Blob Storage, Azure Event Hubs, Azure Service Bus 및 SQL Server가 포함되었습니다. 시간이 지남에 따라 이 기본 제공 커넥터 목록은 계속 증가합니다. 그러나 표준 논리 앱 워크플로에서 제공되지 않는 커넥터가 필요한 경우 표준 워크플로의 서비스 공급자 기반 기본 제공 커넥터에서 사용하는 것과 동일한 확장성 모델을 사용하여 고유한 기본 제공 커넥터를 만들 수 있습니다.

서비스 공급자 기반 기본 제공 커넥터

단일 테넌트 Azure Logic Apps에서 특정 특성을 가진 기본 제공 커넥터를 비공식적으로 서비스 공급자라고 합니다. 예를 들어 이러한 커넥터는 표준 논리 앱 워크플로에서 사용할 고유한 사용자 지정 기본 제공 커넥터를 만들 수 있는 기능을 제공하는 Azure Functions 확장성 모델을 기반으로 합니다.

반면, 비 서비스 공급자 기본 제공 커넥터에는 다음과 같은 특성이 있습니다.

  • Azure Functions 확장성 모델을 기반으로 하지 않습니다.

  • Azure Logic Apps 런타임 내에서 일정, HTTP, 요청 및 XML 작업 등과 같은 작업으로 직접 구현됩니다.

현재 비서비스 공급자 기본 제공 커넥터 또는 Azure Logic Apps 런타임에서 직접 실행되는 새 작업 유형을 만드는 데 사용할 수 있는 기능은 없습니다. 그러나 서비스 공급자 인프라를 사용하여 고유한 기본 제공 커넥터를 만들 수는 있습니다.

다음 섹션에서는 사용자 지정 기본 제공 커넥터에 대해 확장성 모델이 작동하는 방식에 대한 자세한 정보를 제공합니다.

기본 제공 커넥터 확장성 모델

Azure Functions 확장성 모델에 따라 단일 테넌트 Azure Logic Apps의 기본 제공 커넥터 확장성 모델에는 서비스 공급자 인프라가 있어서 표준 워크플로에서 누구나 사용할 수 있는 Azure Functions 확장으로서 고유한 기본 제공 커넥터를 만들고, 패키지하고, 등록하고, 설치하는 데 사용할 수 있습니다. 이 모델에는 Azure Functions 트리거 또는 작업을 서비스 공급자 트리거로서 노출하도록 지원하는 사용자 지정 기본 제공 트리거 기능이 포함되어 있습니다.

다음 다이어그램에서는 Azure Logic Apps 디자이너 및 런타임이 Azure Functions 기반 트리거를 사용하는 사용자 지정 기본 제공 커넥터에 대해 예상하는 메서드 구현을 보여 줍니다.

Conceptual diagram showing Azure Functions-based service provider infrastructure.

다음 섹션에서는 커넥터가 구현해야 하는 인터페이스에 대한 자세한 정보를 제공합니다.

IServiceOperationsProvider

이 인터페이스에는 사용자 지정 기본 제공 커넥터에 대한 작업 매니페스트를 제공하는 메서드가 포함되어 있습니다.

  • 작업 매니페스트

    작업 매니페스트에는 사용자 지정 기본 제공 커넥터에서 구현된 작업에 대한 메타데이터가 포함됩니다. Azure Logic Apps 디자이너는 주로 이 메타데이터를 사용하여 커넥터의 작업에 대한 제작 및 모니터링 환경을 구동합니다. 예를 들어 디자이너는 작업 메타데이터를 사용하여 특정 작업에 필요한 입력 매개 변수를 이해하고 작업의 출력에 대한 스키마를 기반으로 출력의 속성 토큰을 쉽게 생성하도록 만듭니다.

    디자이너는 GetService()GetOperations() 메서드를 요구하고 사용하여 커넥터가 디자이너 화면에 제공하고 표시하는 작업을 쿼리합니다. GetService() 메서드는 디자이너에 필요한 연결의 입력 매개 변수도 지정합니다.

    이러한 메서드 및 구현에 대한 자세한 내용은 이 문서의 뒷부분에 있는 구현할 메서드 섹션을 검토하세요.

  • 작업 호출

    작업 호출은 워크플로 정의에서 지정된 작업을 호출하기 위해 Azure Logic Apps 런타임에서 워크플로를 실행하는 동안 사용되는 메서드 구현입니다.

    • 트리거가 Azure Functions 기반 트리거 형식인 경우 GetBindingConnectionInformation() 메서드는 Azure Logic Apps 런타임에서 Azure Functions 트리거 바인딩에 필요한 연결 매개 변수 정보를 제공하는 데 사용됩니다.

    • 커넥터에 작업이 있는 경우 Runtime에서 InvokeOperation() 메서드를 사용하여 워크플로 실행 중에 실행되는 커넥터의 각 작업을 호출합니다. 그렇지 않으면 이 메서드를 구현할 필요가 없습니다.

이러한 메서드 및 구현에 대한 자세한 내용은 이 문서의 뒷부분에 있는 구현할 메서드 섹션을 검토하세요.

IServiceOperationsTriggerProvider

사용자 지정 기본 제공 트리거 기능은 Azure Functions 트리거 또는 작업을 서비스 공급자 트리거로서 추가 또는 노출하도록 지원합니다. Azure Functions 기반 트리거 유형 및 Azure 관리형 커넥터 트리거와 동일한 Azure Functions 바인딩을 사용하려면 다음 메서드를 구현하여 연결 정보를 제공하고 Azure Functions의 필요에 따라 바인딩을 트리거합니다.

  • GetFunctionTriggerType() 메서드는 Azure Functions 트리거 바인딩의 type 매개 변수와 동일한 문자열을 반환하는 데 필요합니다.

  • GetFunctionTriggerDefinition()에는 기본 구현이 있으므로 이 메서드를 명시적으로 구현할 필요가 없습니다. 그러나 디자이너에서 공개하지 않는 추가 매개 변수를 제공하는 것과 같이 트리거의 기본 동작을 업데이트하려는 경우 이 메서드를 구현하고 기본 동작을 재정의할 수 있습니다.

구현할 메서드

다음 섹션에서는 커넥터가 구현해야 하는 메서드에 대한 자세한 정보를 제공합니다. 전체 샘플을 보려면 샘플 CosmosDbServiceOperationProvider.cs를 검토하고 단일 테넌트 Azure Logic Apps의 표준 논리 앱에 대한 사용자 지정 기본 제공 커넥터를 만듭니다.

GetService()

디자이너는 서비스 설명, 연결 입력 매개 변수, 기능, 브랜드 색, 아이콘 URL 등을 포함한 서비스에 대한 상위 수준 메타데이터를 가져오는 데 이 메서드가 필요합니다.

public ServiceOperationApi GetService()
{
   return this.{custom-service-name-apis}.ServiceOperationServiceApi();
}

자세한 내용은 샘플 CosmosDbServiceOperationProvider.cs를 검토하세요.

GetOperations()

디자이너는 서비스에서 구현하는 작업을 가져오기 위해 이 메서드가 필요합니다. 작업 목록은 Swagger 스키마를 기반으로 합니다. 또한 디자이너는 작업 메타데이터를 사용하여 특정 작업에 대한 입력 매개 변수를 파악하고 작업에 대한 출력의 스키마에 따라 출력을 속성 토큰으로 생성합니다.

public IEnumerable<ServiceOperation> GetOperations(bool expandManifest)
{
   return expandManifest ? serviceOperationsList : GetApiOperations();
}

자세한 내용은 샘플 CosmosDbServiceOperationProvider.cs를 검토하세요.

GetBindingConnectionInformation()

Azure Functions 기반 트리거 형식을 사용하려는 경우 이 메서드는 Azure Functions 트리거 바인딩에 필요한 연결 매개 변수 정보를 제공합니다.

public string GetBindingConnectionInformation(string operationId, InsensitiveDictionary<JToken> connectionParameters)
{
   return ServiceOperationsProviderUtilities
      .GetRequiredParameterValue(
         serviceId: ServiceId,
         operationId: operationID,
         parameterName: "connectionString",
         parameters: connectionParameters)?
      .ToValue<string>();
}

자세한 내용은 샘플 CosmosDbServiceOperationProvider.cs를 검토하세요.

InvokeOperation()

사용자 지정 기본 제공 커넥터에 트리거만 있는 경우 이 메서드를 구현할 필요가 없습니다. 그러나 커넥터가 구현할 작업이 있는 경우 InvokeOperation() 메서드를 구현해야 합니다. 이 메서드는 워크플로 실행 중에 실행되는 커넥터의 각 작업에 대해 호출됩니다. 커넥터의 작업에 필요한 대로 FTPClient, HTTPClient 등과 같은 모든 클라이언트를 사용할 수 있습니다. 이 예제에서는 HTTPClient를 사용합니다.

public Task<ServiceOperationResponse> InvokeOperation(string operationId, InsensitiveDictionary<JToken> connectionParameters, ServiceOperationRequest serviceOperationRequest)
{
   using (var client = new HttpClient())
   {
      response = client.SendAsync(httpRequestMessage).ConfigureAwait(false).ToJObject();
   }
   return new ServiceOperationResponse(body: response);
}

자세한 내용은 샘플 CosmosDbServiceOperationProvider.cs를 검토하세요.

GetFunctionTriggerType()

Azure Functions 기반 트리거를 커넥터에서 트리거로 사용하려면 Azure Functions 트리거 바인딩의 type 매개 변수와 동일한 문자열을 반환해야 합니다.

다음 예제에서는 기본 제공 Azure Cosmos DB 트리거 "type": "cosmosDBTrigger"에 대한 문자열을 반환합니다.

public string GetFunctionTriggerType()
{
   return "CosmosDBTrigger";
}

자세한 내용은 샘플 CosmosDbServiceOperationProvider.cs를 검토하세요.

GetFunctionTriggerDefinition()

이 메서드에는 기본 구현이 있으므로 이 메서드를 명시적으로 구현할 필요가 없습니다. 그러나 디자이너에서 공개하지 않는 추가 매개 변수를 제공하는 것과 같이 트리거의 기본 동작을 업데이트하려는 경우 이 메서드를 구현하고 기본 동작을 재정의할 수 있습니다.

다음 단계

구현 단계를 시작할 준비가 되면 다음 문서를 계속 진행합니다.