다음을 통해 공유


Azure Logic Apps의 트리거 및 작업 형식에 대한 스키마 참조 가이드

이 참조는 워크플로 정의 언어에서 설명하고 유효성을 검사하는 논리 앱의 기본 워크플로 정의에서 트리거 및 작업을 식별하는 데 사용되는 일반적인 형식에 대해 설명합니다. To find specific connector triggers and actions that you can use in your logic apps, see the list under the Connectors overview.

Triggers overview

모든 워크플로에는 워크플로를 인스턴스화하고 시작하는 호출을 정의하는 트리거가 포함됩니다. 일반 트리거 범주는 다음과 같습니다.

  • A polling trigger, which checks a service's endpoint at regular intervals

  • A push trigger, which creates a subscription to an endpoint and provides a callback URL so the endpoint can notify the trigger when the specified event happens or data is available. 그러면 트리거는 발생하기 전에 엔드포인트의 응답을 기다립니다.

트리거에는 다음과 같은 최상위 요소가 있지만 일부는 선택 사항입니다.

"<trigger-name>": {
   "type": "<trigger-type>",
   "inputs": { "<trigger-inputs>" },
   "recurrence": { 
      "frequency": "<time-unit>",
      "interval": <number-of-time-units>
   },
   "conditions": [ "<array-with-conditions>" ],
   "runtimeConfiguration": { "<runtime-config-options>" },
   "splitOn": "<splitOn-expression>",
   "operationOptions": "<operation-option>"
},

Required

Value Type Description
< trigger-name> String 트리거의 이름입니다.
< trigger-type> String "Http" 또는 "ApiConnection"과 같은 트리거 형식
< trigger-inputs> JSON Object 트리거의 동작을 정의하는 입력입니다.
< time-unit> String 트리거가 실행되는 빈도를 설명하는 시간 단위: "Second", "Minute", "Hour", "Day", "Week", "Month"
< number-of-time-units> Integer 트리거가 다시 실행될 때까지 대기할 시간 단위 수인 빈도에 따라 트리거가 실행되는 빈도를 지정하는 값입니다.

다음은 최소 및 최대 간격입니다.

- 월: 1~16개월
- 일: 1~500일
- 시간: 1~12,000시간
- 분: 1~72,000분
- 초: 1~9,999,999초

예를 들어 간격이 6이고 빈도가 "Month"인 경우 되풀이는 6개월마다입니다.

Optional

Value Type Description
< array-with-conditions> Array An array that contains one or more conditions that determine whether to run the workflow. 트리거에만 사용할 수 있습니다.
< runtime-config-options> JSON Object 속성을 설정 runtimeConfiguration 하여 트리거 런타임 동작을 변경할 수 있습니다. 자세한 내용은 런타임 구성 설정을 참조 하세요.
< splitOn-expression> String 배열을 반환하는 트리거의 경우, 처리를 위해 여러 워크플로 인스턴스로 배열 항목을 분할 또는 분리하는 식을 지정할 수 있습니다.
< operation-option> String operationOptions 속성을 설정하여 기본 동작을 변경할 수 있습니다. For more information, see Operation options.

트리거 형식 목록

각 트리거 형식에는 트리거의 동작을 정의하는 다른 인터페이스와 입력이 있습니다.

Built-in triggers

Trigger type Description
HTTP Checks or polls any endpoint. 이 엔드포인트는 비동기 패턴을 사용하거나 배열을 202 반환하여 특정 트리거 계약을 준수해야 합니다.
HTTPWebhook 논리 앱에 대한 호출 가능한 엔드포인트를 만들지만 지정된 URL을 호출하여 등록하거나 등록 취소합니다.
Recurrence 정의된 일정에 따라 실행합니다. 이 트리거를 발생시키기 위한 미래의 날짜 및 시간을 설정할 수 있습니다. 빈도에 따라 워크플로를 실행할 시간 및 요일을 지정할 수도 있습니다.
Request 논리 앱에 대한 호출 가능한 엔드포인트를 만들고 "수동" 트리거라고도 합니다. 예를 들어 HTTP 엔드포인트를 사용하여 워크플로 호출, 트리거 또는 중첩을 참조 하세요.

관리되는 API 트리거

Trigger type Description
ApiConnection Checks or polls an endpoint by using Microsoft-managed APIs or "connectors".
ApiConnectionWebhook Microsoft 관리 API 또는 "커넥터"를 호출하여 구독 및 구독을 취소하여 논리 앱 워크플로에 대한 호출 가능한 엔드포인트를 만듭니다.

트리거 - 자세한 참조

APIConnection trigger

This trigger checks or polls an endpoint by using Microsoft-managed APIs or "connectors" so the parameters for this trigger can differ based on the endpoint. 이 트리거 정의의 많은 섹션은 선택 사항입니다. 트리거의 동작은 섹션이 포함되는지 여부에 따라 달라집니다.

"<APIConnection_trigger_name>": {
   "type": "ApiConnection",
   "inputs": {
      "host": {
         "connection": {
            "name": "@parameters('$connections')['<connection-name>']['connectionId']"
         }
      },
      "method": "<method-type>",
      "path": "/<api-operation>",
      "retryPolicy": { "<retry-behavior>" },
      "queries": { "<query-parameters>" }
   },
   "recurrence": { 
      "frequency": "<time-unit>",
      "interval": <number-of-time-units>
   },
   "runtimeConfiguration": {
      "concurrency": {
         "runs": <max-runs>,
         "maximumWaitingRuns": <max-runs-queue>
      }
   },
   "splitOn": "<splitOn-expression>",
   "operationOptions": "<operation-option>"
}

Required

Property Value Type Description
None < APIConnection_trigger_name> String 트리거의 이름입니다.
host.connection.name < connection-name> String 워크플로에서 사용하는 관리되는 API에 대한 연결의 이름입니다.
method < method-type> String The HTTP method for communicating with the managed API: GET, PUT, POST, PATCH, DELETE
path < api-operation> String 호출할 API 작업
recurrence.frequency < time-unit> String The unit of time that describes how often the trigger fires: Second, Minute, Hour, Day, Week, Month
recurrence.interval < number-of-time-units> Integer 트리거가 다시 실행될 때까지 대기할 시간 단위 수인 빈도에 따라 트리거가 실행되는 빈도를 지정하는 값입니다.

다음은 최소 및 최대 간격입니다.

- 월: 1-16개월
- 일: 1-500일
- 시간: 1-12,000시간
- 분: 1-72,000분
- 초: 1-9,999,999초

For example, if the interval is 6, and the frequency is Month, the recurrence is every 6 months.

Optional

Property Value Type Description
retryPolicy < retry-behavior> JSON Object 상태 코드 408, 429 및 5XX와 연결 예외가 있는 일시적 오류에 대한 재시도 동작을 사용자 지정합니다. For more information, see Retry policies.
queries < query-parameters> JSON Object API 호출에 포함하려는 쿼리 매개 변수입니다. 예를 들어 개체가 "queries": { "api-version": "2018-01-01" } 호출에 추가 ?api-version=2018-01-01 됩니다.
runtimeConfiguration.concurrency.runs < max-runs> Integer By default, workflow instances run at the same time (concurrently or in parallel) up to the default limit. To change this limit by setting a new <count> value, see Change trigger concurrency.
runtimeConfiguration.maximumWaitingRuns < max-runs-queue> Integer If your workflow is already running the maximum number of instances, any new runs are put in this queue up to the default limit. 기본 제한을 변경하려면 대기 중인 실행 제한 변경을 참조하세요. To change the maximum number of instances, specify a value for the runtimeConfiguration.concurrency.runs property.

Note: If you set the
splitOn < splitOn-expression> String 배열을 반환하는 트리거의 경우 이 식은 "for each" 루프를 사용하는 대신 각 배열 항목에 대해 워크플로 인스턴스를 만들고 실행할 수 있도록 사용할 배열을 참조합니다.

예를 들어 이 식은 트리거의 본문 콘텐츠 내에서 반환되는 배열의 항목을 나타냅니다. @triggerbody()?['value']
operationOptions < operation-option> String operationOptions 속성을 설정하여 기본 동작을 변경할 수 있습니다. For more information, see Operation options.

Outputs

Element Type Description
headers JSON Object 응답의 헤더입니다.
body JSON Object 응답의 본문
status code Integer 응답의 상태 코드

Example

이 트리거 정의는 회사 또는 학교 계정의 받은 편지함 내에서 매일 전자 메일을 확인합니다.

"When_a_new_email_arrives": {
   "type": "ApiConnection",
   "inputs": {
      "host": {
         "connection": {
            "name": "@parameters('$connections')['office365']['connectionId']"
         }
      },
      "method": "get",
      "path": "/Mail/OnNewEmail",
      "queries": {
          "fetchOnlyWithAttachment": false,
          "folderPath": "Inbox",
          "importance": "Any",
          "includeAttachments": false
      }
   },
   "recurrence": {
      "frequency": "Day",
      "interval": 1
   }
}

ApiConnectionWebhook trigger

This trigger sends a subscription request to an endpoint by using a Microsoft-managed API, provides a callback URL to where the endpoint can send a response, and waits for the endpoint to respond. For more information, see Endpoint subscriptions.

"<ApiConnectionWebhook_trigger_name>": {
   "type": "ApiConnectionWebhook",
   "inputs": {
      "body": {
          "NotificationUrl": "@{listCallbackUrl()}"
      },
      "host": {
         "connection": {
            "name": "@parameters('$connections')['<connection-name>']['connectionId']"
         }
      },
      "retryPolicy": { "<retry-behavior>" },
      "queries": "<query-parameters>"
   },
   "runTimeConfiguration": {
      "concurrency": {
         "runs": <max-runs>,
         "maximumWaitingRuns": <max-run-queue>
      }
   },
   "splitOn": "<splitOn-expression>",
   "operationOptions": "<operation-option>"
}

Required

Value Type Description
< connection-name> String 워크플로에서 사용하는 관리되는 API에 대한 연결의 이름입니다.
< body-content> JSON Object 관리되는 API에 페이로드로 전송될 메시지 콘텐츠입니다.

Optional

Value Type Description
< retry-behavior> JSON Object 상태 코드 408, 429 및 5XX와 연결 예외가 있는 일시적 오류에 대한 재시도 동작을 사용자 지정합니다. For more information, see Retry policies.
< query-parameters> JSON Object API 호출에 포함할 쿼리 매개 변수

예를 들어 개체가 "queries": { "api-version": "2018-01-01" } 호출에 추가 ?api-version=2018-01-01 됩니다.
< max-runs> Integer By default, workflow instances run at the same time (concurrently or in parallel) up to the default limit. To change this limit by setting a new <count> value, see Change trigger concurrency.
< max-runs-queue> Integer When your workflow is already running the maximum number of instances, which you can change based on the runtimeConfiguration.concurrency.runs property, any new runs are put into this queue up to the default limit. 기본 제한을 변경하려면 대기 중인 실행 제한 변경을 참조하세요.
< splitOn-expression> String 배열을 반환하는 트리거의 경우 이 식은 "for each" 루프를 사용하는 대신 각 배열 항목에 대해 워크플로 인스턴스를 만들고 실행할 수 있도록 사용할 배열을 참조합니다.

예를 들어 이 식은 트리거의 본문 콘텐츠 내에서 반환되는 배열의 항목을 나타냅니다. @triggerbody()?['value']
< operation-option> String operationOptions 속성을 설정하여 기본 동작을 변경할 수 있습니다. For more information, see Operation options.

Example

이 트리거 정의는 Office 365 Outlook API를 구독하고, API 엔드포인트에 대한 콜백 URL을 제공하고, 새 이메일이 도착할 때 엔드포인트이 응답할 때까지 기다립니다.

"When_a_new_email_arrives_(webhook)": {
   "type": "ApiConnectionWebhook",
   "inputs": {
      "body": {
         "NotificationUrl": "@{listCallbackUrl()}" 
      },
      "host": {
         "connection": {
            "name": "@parameters('$connections')['office365']['connectionId']"
         }
      },
      "path": "/MailSubscription/$subscriptions",
      "queries": {
          "folderPath": "Inbox",
          "hasAttachment": "Any",
          "importance": "Any"
      }
   },
   "splitOn": "@triggerBody()?['value']"
}

HTTP trigger

이 트리거는 지정된 되풀이 일정에 따라 지정된 HTTP 또는 HTTPS 엔드포인트에 요청을 보냅니다. 그런 다음, 트리거에서 응답을 확인하여 워크플로가 실행되는지 여부를 결정합니다. 자세한 내용은 Azure Logic Apps에서 HTTP 또는 HTTPS를 통해 서비스 엔드포인트 호출을 참조 하세요.

"HTTP": {
   "type": "Http",
   "inputs": {
      "method": "<method-type>",
      "uri": "<HTTP-or-HTTPS-endpoint-URL>",
      "headers": { "<header-content>" },
      "queries": "<query-parameters>",
      "body": "<body-content>",
      "authentication": { "<authentication-type-and-property-values>" },
      "retryPolicy": {
         "type": "<retry-behavior>"
      }
   },
   "recurrence": {
      "frequency": "<time-unit>",
      "interval": <number-of-time-units>
   },
   "runtimeConfiguration": {
      "concurrency": {
         "runs": <max-runs>,
         "maximumWaitingRuns": <max-runs-queue>
      }
   },
   "operationOptions": "<operation-option>"
}

Required

Property Value Type Description
method < method-type> String 나가는 요청을 보내는 데 사용할 메서드: "GET", "PUT", "POST", "PATCH" 또는 "DELETE"
uri < HTTP-or-HTTPS-endpoint-URL> String 나가는 요청을 보낼 HTTP 또는 HTTPS 엔드포인트 URL입니다. 최대 문자열 크기: 2KB

Azure 서비스 또는 리소스의 경우 이 URI 구문에는 리소스 ID와 액세스하려는 리소스에 대한 경로가 포함됩니다.
frequency < time-unit> String 트리거가 실행되는 빈도를 설명하는 시간 단위: "Second", "Minute", "Hour", "Day", "Week", "Month"
interval < number-of-time-units> Integer 트리거가 다시 실행될 때까지 대기할 시간 단위 수인 빈도에 따라 트리거가 실행되는 빈도를 지정하는 값입니다.

다음은 최소 및 최대 간격입니다.

- 월: 1~16개월
- 일: 1~500일
- 시간: 1~12,000시간
- 분: 1~72,000분
- 초: 1~9,999,999초

예를 들어 간격이 6이고 빈도가 "Month"인 경우 되풀이는 6개월마다입니다.

Optional

Property Value Type Description
headers < header-content> JSON Object 요청에 포함해야 하는 모든 헤더

예를 들어 언어 및 형식을 설정하려면 다음을 수행합니다.

"headers": { "Accept-Language": "en-us", "Content-Type": "application/json" }
queries < query-parameters> JSON Object 요청에 사용해야 하는 모든 쿼리 매개 변수

예를 들어 개체가 "queries": { "api-version": "2018-01-01" } 요청에 추가 ?api-version=2018-01-01 됩니다.
body < body-content> JSON Object 요청과 함께 페이로드로 보낼 메시지 콘텐츠
authentication < authentication-type-and-property-values> JSON Object 요청이 아웃바운드 요청을 인증하는 데 사용하는 인증 모델입니다. 자세한 내용은 아웃바운드 호출에 인증 추가를 참조하세요. Scheduler 외에 authority 속성이 지원됩니다. 지정되지 않은 경우 기본값은 https://management.azure.com/이지만, 다른 값을 사용할 수 있습니다.
retryPolicy > type < retry-behavior> JSON Object 상태 코드 408, 429 및 5XX와 연결 예외가 있는 일시적 오류에 대한 재시도 동작을 사용자 지정합니다. For more information, see Retry policies.
runs < max-runs> Integer By default, workflow instances run at the same time (concurrently or in parallel) up to the default limit. To change this limit by setting a new <count> value, see Change trigger concurrency.
maximumWaitingRuns < max-runs-queue> Integer When your workflow is already running the maximum number of instances, which you can change based on the runtimeConfiguration.concurrency.runs property, any new runs are put into this queue up to the default limit. 기본 제한을 변경하려면 대기 중인 실행 제한 변경을 참조하세요.
operationOptions < operation-option> String operationOptions 속성을 설정하여 기본 동작을 변경할 수 있습니다. For more information, see Operation options.

Outputs

Element Type Description
headers JSON Object 응답의 헤더입니다.
body JSON Object 응답의 본문
status code Integer 응답의 상태 코드

들어오는 요청에 대한 요구 사항

논리 앱에서 제대로 작동하려면 엔드포인트에서 특정 트리거 패턴 또는 계약을 준수하고, 다음 응답 속성을 인식해야 합니다.

Property Required Description
Status code Yes "200 OK" 상태 코드가 실행을 시작합니다. 다른 상태 코드는 실행을 시작하지 않습니다.
Retry-after header No 논리 앱에서 엔드포인트를 다시 폴링할 때까지의 시간(초)입니다.
Location header No 다음 폴링 간격에서 호출할 URL입니다. 지정하지 않으면 원래 URL이 사용됩니다.

다른 요청에 대한 예제 동작

Status code Retry after Behavior
200 {none} 워크플로를 실행한 다음, 정의된 되풀이 후에 더 많은 데이터를 다시 확인합니다.
200 10 seconds 워크플로를 실행한 다음, 10초 후에 더 많은 데이터를 다시 확인합니다.
202 60 seconds 워크플로를 트리거하지 마세요. 다음 시도는 정의된 되풀이에 따라 1분 후에 발생합니다. 정의된 되풀이가 1분 미만이면 재시도 후 헤더가 우선합니다. 그렇지 않으면 정의된 되풀이가 사용됩니다.
400 {none} 요청이 잘못되었습니다. 워크플로를 실행하지 마세요. retryPolicy가 정의되지 않으면 기본 정책이 사용됩니다. 재시도 횟수에 도달한 후 트리거는 정의된 되풀이 후 데이터를 다시 확인합니다.
500 {none} 서버 오류이며 워크플로를 실행하지 않습니다. retryPolicy가 정의되지 않으면 기본 정책이 사용됩니다. 재시도 횟수에 도달한 후 트리거는 정의된 되풀이 후 데이터를 다시 확인합니다.

HTTPWebhook trigger

이 트리거를 사용하면 지정된 엔드포인트 URL을 호출하여 구독을 등록할 수 있는 엔드포인트를 만들어 논리 앱을 호출할 수 있습니다. 워크플로에서 이 트리거를 만들면 나가는 요청이 구독 등록을 호출합니다. 이렇게 하면 트리거가 이벤트 수신 대기를 시작할 수 있습니다. 작업으로 인해 이 트리거가 유효하지 않으면 나가는 요청이 자동으로 호출하여 구독을 취소합니다. For more information, see Endpoint subscriptions.

You can also specify asynchronous limits on an HTTPWebhook trigger. 트리거의 동작은 사용하거나 생략하는 섹션에 따라 달라집니다.

"HTTP_Webhook": {
   "type": "HttpWebhook",
   "inputs": {
      "subscribe": {
         "method": "<method-type>",
         "uri": "<endpoint-subscribe-URL>",
         "headers": { "<header-content>" },
         "body": "<body-content>",
         "authentication": { "<authentication-type>" },
         "retryPolicy": { "<retry-behavior>" }
      },
      "unsubscribe": {
         "method": "<method-type>",
         "url": "<endpoint-unsubscribe-URL>",
         "headers": { "<header-content>" },
         "body": "<body-content>",
         "authentication": { "<authentication-type>" }
      }
   },
   "runTimeConfiguration": {
      "concurrency": {
         "runs": <max-runs>,
         "maximumWaitingRuns": <max-runs-queue>
      }
   },
   "operationOptions": "<operation-option>"
}

Some values, such as <method-type>, are available for both the "subscribe" and "unsubscribe" objects.

Required

Value Type Description
< method-type> String 구독 요청에 사용할 HTTP 메서드: "GET", "PUT", "POST", "PATCH" 또는 "DELETE"
< endpoint-subscribe-URL> String 구독 요청을 전송할 엔드포인트 URL입니다.

Optional

Value Type Description
< method-type> String 취소 요청에 사용할 HTTP 메서드: "GET", "PUT", "POST", "PATCH" 또는 "DELETE"
< endpoint-unsubscribe-URL> String 취소 요청을 보낼 엔드포인트 URL
< body-content> String 구독 또는 취소 요청에 전송할 메시지 콘텐츠입니다.
< authentication-type> JSON Object 요청이 아웃바운드 요청을 인증하는 데 사용하는 인증 모델입니다. 자세한 내용은 아웃바운드 호출에 인증 추가를 참조하세요.
< retry-behavior> JSON Object 상태 코드 408, 429 및 5XX와 연결 예외가 있는 일시적 오류에 대한 재시도 동작을 사용자 지정합니다. For more information, see Retry policies.
< max-runs> Integer By default, workflow instances all run at the same time (concurrently or in parallel) up to the default limit. To change this limit by setting a new <count> value, see Change trigger concurrency.
< max-runs-queue> Integer When your workflow is already running the maximum number of instances, which you can change based on the runtimeConfiguration.concurrency.runs property, any new runs are put into this queue up to the default limit. 기본 제한을 변경하려면 대기 중인 실행 제한 변경을 참조하세요.
< operation-option> String operationOptions 속성을 설정하여 기본 동작을 변경할 수 있습니다. For more information, see Operation options.

Outputs

Element Type Description
headers JSON Object 응답의 헤더입니다.
body JSON Object 응답의 본문
status code Integer 응답의 상태 코드

Example

이 트리거는 지정된 엔드포인트에 대한 구독을 만들고, 고유한 콜백 URL을 제공하고, 새로 게시된 기술 문서를 기다립니다.

"HTTP_Webhook": {
   "type": "HttpWebhook",
   "inputs": {
      "subscribe": {
         "method": "POST",
         "uri": "https://pubsubhubbub.appspot.com/subscribe",
         "body": {
            "hub.callback": "@{listCallbackUrl()}",
            "hub.mode": "subscribe",
            "hub.topic": "https://pubsubhubbub.appspot.com/articleCategories/technology"
         },
      },
      "unsubscribe": {
         "method": "POST",
         "url": "https://pubsubhubbub.appspot.com/subscribe",
         "body": {
            "hub.callback": "@{workflow().endpoint}@{listCallbackUrl()}",
            "hub.mode": "unsubscribe",
            "hub.topic": "https://pubsubhubbub.appspot.com/articleCategories/technology"
         }
      }
   }
}

Recurrence trigger

이 트리거는 지정된 되풀이 일정에 따라 실행되며 정기적으로 실행되는 워크플로를 만드는 쉬운 방법을 제공합니다.

"Recurrence": {
   "type": "Recurrence",
   "recurrence": {
      "frequency": "<time-unit>",
      "interval": <number-of-time-units>,
      "startTime": "<start-date-time-with-format-YYYY-MM-DDThh:mm:ss>",
      "timeZone": "<time-zone>",
      "schedule": {
         // Applies only when frequency is Day or Week. Separate values with commas.
         "hours": [ <one-or-more-hour-marks> ], 
         // Applies only when frequency is Day or Week. Separate values with commas.
         "minutes": [ <one-or-more-minute-marks> ], 
         // Applies only when frequency is Week. Separate values with commas.
         "weekDays": [ "Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday" ] 
      }
   },
   "runtimeConfiguration": {
      "concurrency": {
         "runs": <max-runs>,
         "maximumWaitingRuns": <max-runs-queue>
      }
   },
   "operationOptions": "<operation-option>"
}

Required

Value Type Description
< time-unit> String 트리거가 실행되는 빈도를 설명하는 시간 단위: "Second", "Minute", "Hour", "Day", "Week", "Month"
< number-of-time-units> Integer 트리거가 다시 실행될 때까지 대기할 시간 단위 수인 빈도에 따라 트리거가 실행되는 빈도를 지정하는 값입니다.

다음은 최소 및 최대 간격입니다.

- 월: 1~16개월
- 일: 1~500일
- 시간: 1~12,000시간
- 분: 1~72,000분
- 초: 1~9,999,999초

예를 들어 간격이 6이고 빈도가 "Month"인 경우 되풀이는 6개월마다입니다.

Optional

Value Type Description
< start-date-time-with-format-YYYY-MM-DDThh:mm:ss> String 이 형식의 시작 날짜 및 시간입니다.

표준 시간대를 지정하는 경우 YYYY-MM-DDThh:mm:ss

-or-

표준 시간대를 지정하지 않으면 YYYY-MM-DDThh:mm:ssZ

예를 들어 2017년 9월 18일 오후 2:00에 "2017-09-18T14:00:00"을 지정하고 "태평양 표준시"와 같은 표준 시간대를 지정하거나 표준 시간대 없이 "2017-09-18T14:00:00Z"를 지정합니다.

Note: This start time has a maximum of 49 years in the future and must follow the ISO 8601 date time specification in UTC date time format, but without a UTC offset. 표준 시간대를 지정하지 않으면 공백 없이 맨 끝에 문자 "Z"를 추가해야 합니다. This "Z" refers to the equivalent nautical time.

단순 일정의 경우 시작 시간은 첫 번째 발생이지만 복잡한 일정의 경우 트리거는 시작 시간보다 더 일찍 발생하지 않습니다. 시작 날짜 및 시간에 대한 자세한 내용은 정기적으로 실행 중인 작업 만들기 및 일정을 참조 하세요.
< time-zone> String Applies only when you specify a start time because this trigger doesn't accept UTC offset. 적용할 표준 시간대를 지정합니다.
< one-or-more-hour-marks> 정수 또는 정수 배열 "Day" 또는 "Week"를 frequency지정하는 경우 0에서 23까지의 하나 이상의 정수를 쉼표로 구분하여 워크플로를 실행하려는 날짜의 시간으로 지정할 수 있습니다.

예를 들어 “10”, “12” 및 “14”를 지정하면 10 AM, 12 PM 및 2 PM이 시간 표시로 제공됩니다.
< one-or-more-minute-marks> 정수 또는 정수 배열 "Day" 또는 "Week"를 frequency지정하는 경우 워크플로를 실행하려는 시간 분으로 0에서 59까지의 정수를 쉼표로 구분하여 지정할 수 있습니다.

예를 들어 분 표시로 “30”을 지정하고, 앞에 나온 하루 시간 예제를 사용하면 10:30 AM, 12:30 PM 및 2:30 PM이 표시됩니다.
weekDays 문자열 또는 문자열 배열 "Week"를 frequency지정하는 경우 "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" 및 "Sunday" 워크플로를 실행하려는 경우 하나 이상의 일을 쉼표로 구분하여 지정할 수 있습니다.
< max-runs> Integer By default, workflow instances all run at the same time (concurrently or in parallel) up to the default limit. To change this limit by setting a new <count> value, see Change trigger concurrency.
< max-runs-queue> Integer When your workflow is already running the maximum number of instances, which you can change based on the runtimeConfiguration.concurrency.runs property, any new runs are put into this queue up to the default limit. 기본 제한을 변경하려면 대기 중인 실행 제한 변경을 참조하세요.
< operation-option> String operationOptions 속성을 설정하여 기본 동작을 변경할 수 있습니다. For more information, see Operation options.

Example 1

이 기본 되풀이 트리거가 매일 실행됩니다.

"Recurrence": {
   "type": "Recurrence",
   "recurrence": {
      "frequency": "Day",
      "interval": 1
   }
}

Example 2

트리거를 실행하기 위한 시작 날짜 및 시간을 지정할 수 있습니다. 이 되풀이 트리거는 지정된 날짜에 시작하여 매일 발생합니다.

"Recurrence": {
   "type": "Recurrence",
   "recurrence": {
      "frequency": "Day",
      "interval": 1,
      "startTime": "2017-09-18T00:00:00Z"
   }
}

Example 3

이 되풀이 트리거는 2017년 9월 9일 오후 2:00에 시작되며 매주 월요일 오전 10:30, 오후 12:30 및 오후 2:30 태평양 표준시에 발생합니다.

"Recurrence": {
   "type": "Recurrence",
   "recurrence": {
      "frequency": "Week",
      "interval": 1,
      "schedule": {
         "hours": [ 10, 12, 14 ],
         "minutes": [ 30 ],
         "weekDays": [ "Monday" ]
      },
      "startTime": "2017-09-07T14:00:00",
      "timeZone": "Pacific Standard Time"
   }
}

이 트리거에 대한 예제에 대한 자세한 내용은 만들기 및 정기적으로 실행 중인 작업 예약을 참조 하세요.

Request trigger

이 트리거를 사용하면 들어오는 요청을 수락할 수 있는 엔드포인트를 만들어 논리 앱을 호출할 수 있습니다. 이 트리거의 경우 들어오는 요청에서 트리거가 수신하는 페이로드 또는 입력을 설명하고 유효성을 검사하는 JSON 스키마를 제공합니다. 또한 스키마를 사용하면 워크플로의 이후 작업에서 트리거 속성을 더 쉽게 참조할 수 있습니다.

Note

The original name for the Request trigger was manual, which might still appear in some places. 이 이름은 트리거를 사용하여 빌드하는 워크플로 패턴의 종류에 대한 일관성을 더 만들기 위해 변경되었습니다.

이 트리거를 호출하려면 워크플로 서비스 REST API에 설명된 APIlistCallbackUrl사용해야 합니다. 이 트리거를 HTTP 엔드포인트로 사용하는 방법을 알아보려면 HTTP 엔드포인트를 사용하여 워크플로 호출, 트리거 또는 중첩을 참조 하세요.

"Request": {
   "type": "Request",
   "kind": "Http",
   "inputs": {
      "method": "<method-type>",
      "relativePath": "<relative-path-for-accepted-parameter>",
      "schema": {
         "type": "object",
         "properties": { 
            "<property-name>": {
               "type": "<property-type>"
            }
         },
         "required": [ "<required-properties>" ]
      }
   },
   "runTimeConfiguration": {
      "concurrency": {
         "runs": <max-runs>,
         "maximumWaitingRuns": <max-run-queue>
      },
   },
   "operationOptions": "<operation-option>"
}

Required

Value Type Description
< property-name> String 페이로드를 설명하는 JSON 스키마의 속성 이름입니다.
< property-type> String 속성의 형식

Optional

Value Type Description
< method-type> String 들어오는 요청이 논리 앱을 호출하는 데 사용해야 하는 메서드: "GET", "PUT", "POST", "PATCH", "DELETE"
< relative-path-for-accepted-parameter> String 엔드포인트의 URL에서 허용할 수 있는 매개 변수의 상대 경로
< required-properties> Array 값이 필요한 하나 이상의 속성
< max-runs> Integer By default, workflow instances all run at the same time (concurrently or in parallel) up to the default limit. To change this limit by setting a new <count> value, see Change trigger concurrency.
< max-runs-queue> Integer When your workflow is already running the maximum number of instances, which you can change based on the runtimeConfiguration.concurrency.runs property, any new runs are put into this queue up to the default limit. 기본 제한을 변경하려면 대기 중인 실행 제한 변경을 참조하세요.
< operation-option> String operationOptions 속성을 설정하여 기본 동작을 변경할 수 있습니다. For more information, see Operation options.

Example

이 트리거는 들어오는 요청이 HTTP POST 메서드를 사용하여 트리거를 호출하도록 지정하고 들어오는 요청의 입력 유효성을 검사하는 스키마를 포함합니다.

"Request": {
   "type": "Request",
   "kind": "Http",
   "inputs": {
      "method": "POST",
      "schema": {
         "type": "object",
         "properties": {
            "customerName": {
               "type": "String"
            },
            "customerAddress": { 
               "type": "Object",
               "properties": {
                  "streetAddress": {
                     "type": "string"
                  },
                  "city": {
                     "type": "string"
                  }
               }
            }
         }
      }
   }
}

Trigger conditions

트리거 및 트리거에 대해서만 워크플로를 실행할지 여부를 결정하는 조건에 대해 하나 이상의 식을 포함하는 배열을 포함할 수 있습니다. 워크플로의 conditions 트리거에 속성을 추가하려면 코드 뷰 편집기에서 논리 앱을 엽니다.

예를 들어 웹 사이트가 속성에서 트리거의 상태 코드를 conditions 참조하여 내부 서버 오류를 반환하는 경우에만 트리거가 발생되도록 지정할 수 있습니다.

"Recurrence": {
   "type": "Recurrence",
   "recurrence": {
      "frequency": "Hour",
      "interval": 1
   },
   "conditions": [ {
      "expression": "@equals(triggers().code, 'InternalServerError')"
   } ]
}

기본적으로 트리거는 "200 정상" 응답을 받은 경우에만 트리거됩니다. 식에서 트리거의 상태 코드를 참조하는 경우 트리거의 기본 동작이 바뀝니다. 따라서 트리거가 "200" 및 "201" 상태 코드와 같은 둘 이상의 상태 코드에 대해 실행되도록 하려면 이 식을 조건으로 포함해야 합니다.

@or(equals(triggers().code, 200),equals(triggers().code, 201))

배열에서 여러 실행 트리거

트리거에서 워크플로가 처리할 배열을 받는 경우, "for each" 루프에서 각 배열 항목을 처리하는 데 너무 오래 걸리는 경우가 있습니다. Instead, you can use the SplitOn property in your trigger to debatch the array. 분리 처리는 배열 항목을 분할하고, 각 배열 항목에 대해 실행되는 새 워크플로 인스턴스를 시작합니다. 이 방법은 예를 들어 폴링 간격 사이에 여러 개의 새 항목을 반환할 수 있는 엔드포인트를 폴링하려는 경우에 유용합니다.

If your trigger's Swagger file describes a payload that's an array, the SplitOn property is automatically added to your trigger. 그렇지 않으면 분리하려는 배열이 있는 응답 페이로드 내에 이 속성을 추가합니다.

SplitOn 기능을 사용하기 전에 다음 고려 사항을 검토합니다.

  • If trigger concurrency is enabled, the SplitOn limit is significantly reduced. 항목 수가 이 제한을 초과하면 SplitOn 기능이 사용하지 않도록 설정됩니다.

  • 동기 응답 패턴에는 SplitOn 기능을 사용할 수 없습니다. Any workflow that uses the SplitOn property and includes a response action runs asynchronously and immediately sends a 202 ACCEPTED response.

  • For the maximum number of array items that SplitOn can process in a single workflow run, see Limits and configuration.

Example

API를 호출하고 이 응답을 수신하는 HTTP 트리거가 있다고 가정합니다.

{
   "Status": "Succeeded",
   "Rows": [ 
      { 
         "id": 938109380,
         "name": "customer-name-one"
      },
      {
         "id": 938109381,
         "name": "customer-name-two"
      }
   ]
}

워크플로에는 Rows의 배열 콘텐츠만 필요하므로 다음 예제와 같은 트리거를 만들 수 있습니다.

"HTTP_Debatch": {
   "type": "Http",
    "inputs": {
        "uri": "https://mydomain.com/myAPI",
        "method": "GET"
    },
   "recurrence": {
      "frequency": "Second",
      "interval": 1
    },
    "splitOn": "@triggerBody()?.Rows"
}

Note

명령을 사용하는 SplitOn 경우 배열 외부에 있는 속성을 가져올 수 없습니다. 따라서 이 예제에서는 API에서 반환된 응답에서 속성을 가져올 status 수 없습니다.

속성이 없는 경우 Rows 오류를 방지하기 위해 이 예제에서는 연산자를 ? 사용합니다.

이제 워크플로 정의에서 @triggerBody().name을 사용하여 첫 번째 실행에서 name, 두 번째 실행에서 "customer-name-one"에 해당하는 "customer-name-two" 값을 가져올 수 있습니다. 따라서 트리거 출력은 다음 예제와 같습니다.

{
   "body": {
      "id": 938109380,
      "name": "customer-name-one"
   }
}
{
   "body": {
      "id": 938109381,
      "name": "customer-name-two"
   }
}

Actions overview

Azure Logic Apps는 각각이 작업의 고유한 동작을 정의하는 다른 입력을 받는 다양한 작업 형식을 제공합니다. 작업에는 다음과 같은 상위 수준 요소가 있지만 일부는 선택 사항입니다.

"<action-name>": {
   "type": "<action-type>",
   "inputs": { 
      "<input-name>": { "<input-value>" },
      "retryPolicy": "<retry-behavior>" 
   },
   "runAfter": { "<previous-trigger-or-action-status>" },
   "runtimeConfiguration": { "<runtime-config-options>" },
   "operationOptions": "<operation-option>"
},

Required

Value Type Description
< action-name> String 작업의 이름입니다.
< action-type> String 작업 유형(예: "Http" 또는 "ApiConnection")
< input-name> String 작업의 동작을 정의하는 입력의 이름입니다.
< input-value> Various 문자열, 정수, JSON 개체 등일 수 있는 입력 값입니다.
< previous-trigger-or-action-status> JSON Object 이 현재 작업이 실행되기 위해 먼저 실행되어야 하는 트리거 또는 작업에 대한 이름 및 결과 상태입니다.

Optional

Value Type Description
< retry-behavior> JSON Object 상태 코드 408, 429 및 5XX와 연결 예외가 있는 일시적 오류에 대한 재시도 동작을 사용자 지정합니다. 자세한 내용은 다시 시도 정책을 참조하세요.
< runtime-config-options> JSON Object 일부 작업의 경우 속성을 설정 runtimeConfiguration 하여 런타임에 작업의 동작을 변경할 수 있습니다. 자세한 내용은 런타임 구성 설정을 참조 하세요.
< operation-option> String 일부 작업의 경우 속성을 설정하여 기본 동작을 operationOptions 변경할 수 있습니다. For more information, see Operation options.

작업 유형 목록

다음은 일반적으로 사용되는 몇 가지 작업 유형입니다.

Built-in actions

Action type Description
Compose 다양한 형식을 가질 수 있는 입력에서 단일 출력을 만듭니다.
JavaScript 코드 실행 특정 조건에 맞는 JavaScript 코드 조각을 실행합니다. 코드 요구 사항 및 자세한 내용은 인라인 코드를 사용하여 코드 조각 추가 및 실행을 참조하세요.
Function Azure Function을 호출합니다.
HTTP HTTP 엔드포인트을 호출합니다.
Join 배열의 모든 항목에서 문자열을 만들고 지정된 구분 기호 문자로 해당 항목을 구분합니다.
Parse JSON JSON 콘텐츠의 속성에서 사용자에게 친숙한 토큰을 만듭니다. 논리 앱에 토큰을 포함하여 해당 속성을 참조할 수 있습니다.
Query 조건 또는 필터를 기반으로 다른 배열의 항목에서 배열을 만듭니다.
Response 들어오는 호출 또는 요청에 대한 응답을 만듭니다.
Select 지정된 맵을 기준으로 다른 배열의 항목을 변형하여 JSON 개체를 포함하는 배열을 만듭니다.
Table 배열에서 CSV 또는 HTML 테이블을 만듭니다.
Terminate 현재 실행 중인 워크플로를 중지합니다.
Wait 지정된 기간 동안 또는 지정된 날짜 및 시간까지 워크플로를 일시중지합니다.
Workflow 워크플로를 다른 워크플로 내에 중첩합니다.

관리되는 API 작업

Action type Description
ApiConnection Calls an HTTP endpoint by using a Microsoft-managed API.
ApiConnectionWebhook Works like HTTP Webhook but uses a Microsoft-managed API.

워크플로 작업 제어

이러한 작업은 워크플로 실행을 제어하고 다른 작업을 포함하는 데 도움이 됩니다. 제어 워크플로 작업 외부에서 해당 컨트롤 워크플로 작업 내에서 작업을 직접 참조할 수 있습니다. 예를 들어 범위 내에 작업이 있는 Http 경우 워크플로의 @body('Http') 어디에서나 식을 참조할 수 있습니다. 그러나 컨트롤 워크플로 작업 내에 있는 작업은 동일한 컨트롤 워크플로 구조에 있는 다른 작업만 "실행"할 수 있습니다.

Action type Description
ForEach 배열의 모든 항목에 대해 루프에서 동일한 작업을 실행합니다.
If 지정된 조건이 true인지 false인지에 따라 작업을 실행합니다.
Scope 작업 집합의 그룹 상태에 따라 작업을 실행합니다.
Switch 식, 개체 또는 토큰의 값이 각 사례에 지정된 값과 일치하는 경우 사례로 구성된 작업을 실행합니다.
Until 지정된 조건이 충족될 때까지 작업을 반복해서 실행합니다.

작업 - 자세한 참조

APIConnection action

This action sends an HTTP request to a Microsoft-managed API and requires information about the API and parameters plus a reference to a valid connection.

"<action-name>": {
   "type": "ApiConnection",
   "inputs": {
      "host": {
         "connection": {
            "name": "@parameters('$connections')['<api-name>']['connectionId']"
         },
         "<other-action-specific-input-properties>"        
      },
      "method": "<method-type>",
      "path": "/<api-operation>",
      "retryPolicy": "<retry-behavior>",
      "queries": { "<query-parameters>" },
      "<other-action-specific-properties>"
    },
    "runAfter": {}
}

Required

Value Type Description
< action-name> String 커넥터에서 제공하는 작업의 이름입니다.
< api-name> String 연결에 사용되는 Microsoft 관리 API의 이름
< method-type> String API를 호출하는 HTTP 메서드: "GET", "PUT", "POST", "PATCH" 또는 "DELETE"
< api-operation> String 호출할 API 작업

Optional

Value Type Description
< other-action-specific-input-properties> JSON Object 이 특정 작업에 적용되는 다른 입력 속성입니다.
< retry-behavior> JSON Object 상태 코드 408, 429 및 5XX와 연결 예외가 있는 일시적 오류에 대한 재시도 동작을 사용자 지정합니다. For more information, see Retry policies.
< query-parameters> JSON Object API 호출에 포함하려는 쿼리 매개 변수입니다.

예를 들어 개체가 "queries": { "api-version": "2018-01-01" } 호출에 추가 ?api-version=2018-01-01 됩니다.
< other-action-specific-properties> JSON Object 이 특정 작업에 적용되는 다른 모든 속성

Example

이 정의는 Microsoft 관리 API인 Office 365 Outlook 커넥터에 대한 전자 메일 보내기 작업을 설명합니다.

"Send_an_email": {
   "type": "ApiConnection",
   "inputs": {
      "body": {
         "Body": "Thank you for your membership!",
         "Subject": "Hello and welcome!",
         "To": "Sophie.Owen@contoso.com"
      },
      "host": {
         "connection": {
            "name": "@parameters('$connections')['office365']['connectionId']"
         }
      },
      "method": "POST",
      "path": "/Mail"
    },
    "runAfter": {}
}

APIConnectionWebhook action

This action sends a subscription request over HTTP to an endpoint by using a Microsoft-managed API, provides a callback URL to where the endpoint can send a response, and waits for the endpoint to respond. For more information, see Endpoint subscriptions.

"<action-name>": {
   "type": "ApiConnectionWebhook",
   "inputs": {
      "subscribe": {
         "method": "<method-type>",
         "uri": "<api-subscribe-URL>",
         "headers": { "<header-content>" },
         "body": "<body-content>",
         "authentication": { "<authentication-type>" },
         "retryPolicy": "<retry-behavior>",
         "queries": { "<query-parameters>" },
         "<other-action-specific-input-properties>"
      },
      "unsubscribe": {
         "method": "<method-type>",
         "uri": "<api-unsubscribe-URL>",
         "headers": { "<header-content>" },
         "body": "<body-content>",
         "authentication": { "<authentication-type>" },
         "<other-action-specific-properties>"
      },
   },
   "runAfter": {}
}

Some values, such as <method-type>, are available for both the "subscribe" and "unsubscribe" objects.

Required

Value Type Description
< action-name> String 커넥터에서 제공하는 작업의 이름입니다.
< method-type> String 엔드포인트에서 구독 또는 구독 취소에 사용할 HTTP 메서드: "GET", "PUT", "POST", "PATCH" 또는 "DELETE"
< api-subscribe-URL> String API를 구독하는 데 사용할 URI입니다.

Optional

Value Type Description
< api-unsubscribe-URL> String API에서 구독 취소에 사용할 URI
< header-content> JSON Object 요청에 보낼 헤더

예를 들어 요청에 언어 및 형식을 설정하려면 다음과 같이 합니다.

"headers": { "Accept-Language": "en-us", "Content-Type": "application/json" }
< body-content> JSON Object 요청에 보낼 모든 메시지 콘텐츠
< authentication-type> JSON Object 요청이 아웃바운드 요청을 인증하는 데 사용하는 인증 모델입니다. 자세한 내용은 아웃바운드 호출에 인증 추가를 참조하세요.
< retry-behavior> JSON Object 상태 코드 408, 429 및 5XX와 연결 예외가 있는 일시적 오류에 대한 재시도 동작을 사용자 지정합니다. For more information, see Retry policies.
< query-parameters> JSON Object API 호출에 포함할 쿼리 매개 변수

예를 들어 개체가 "queries": { "api-version": "2018-01-01" } 호출에 추가 ?api-version=2018-01-01 됩니다.
< other-action-specific-input-properties> JSON Object 이 특정 작업에 적용되는 다른 입력 속성입니다.
< other-action-specific-properties> JSON Object 이 특정 작업에 적용되는 다른 모든 속성

You can also specify limits on an ApiConnectionWebhook action in the same way as HTTP asynchronous limits.

Compose action

이 작업은 식을 포함하여 여러 입력에서 단일 출력을 만듭니다. 출력 및 입력 둘 다 배열, JSON 개체, XML 및 이진 파일 등 Azure Logic Apps에서 기본적으로 지원하는 어떤 형식도 될 수 있습니다. 그런 후, 다른 작업에서 해당 작업의 출력을 사용할 수 있습니다.

"Compose": {
   "type": "Compose",
   "inputs": "<inputs-to-compose>",
   "runAfter": {}
},

Required

Value Type Description
< inputs-to-compose> Any 단일 출력을 만들기 위한 입력

Example 1

이 작업 정의는 abcdefg 후행 공백 및 값 1234과 병합됩니다.

"Compose": {
   "type": "Compose",
   "inputs": "abcdefg 1234",
   "runAfter": {}
},

이 작업이 만드는 출력은 다음과 같습니다.

abcdefg 1234

Example 2

이 작업 정의는 다음을 포함하는 abcdefg 문자열 변수와 다음을 포함하는 정수 변수를 병합합니다.1234

"Compose": {
   "type": "Compose",
   "inputs": "@{variables('myString')}@{variables('myInteger')}",
   "runAfter": {}
},

이 작업이 만드는 출력은 다음과 같습니다.

"abcdefg1234"

Execute JavaScript Code 작업

이 작업은 JavaScript 코드 조각을 실행하고, 워크플로의 후속 작업에서 참조할 수 있는 토큰을 통해 결과를 반환합니다.

"Execute_JavaScript_Code": {
   "type": "JavaScriptCode",
   "inputs": {
      "code": "<JavaScript-code-snippet>",
      "explicitDependencies": {
         "actions": [ <preceding-actions> ],
         "includeTrigger": true
      }
   },
   "runAfter": {}
}

Required

Value Type Description
< JavaScript-code-snippet> Varies 실행하려는 JavaScript 코드입니다. 코드 요구 사항 및 자세한 내용은 워크플로에서 코드 조각 실행을 참조하세요.

특성에서 code 코드 조각은 읽기 전용 workflowContext 개체를 입력으로 사용할 수 있습니다. 이 개체에는 트리거의 출력과 워크플로의 이전 작업에 대한 코드 액세스를 제공하는 하위 속성이 있습니다. workflowContext 개체에 대한 자세한 내용은 workflowContext 개체를 사용하여 트리거 및 작업 결과 참조를 참조하세요.

경우에 따라 필요

이 특성은 explicitDependencies 트리거, 이전 작업 또는 둘 다의 결과를 코드 조각에 대한 종속성으로 명시적으로 포함하도록 지정합니다. 이러한 종속성을 추가하는 방법에 대한 자세한 내용은 인라인 코드 작업에 매개 변수로 종속성 추가를 참조하세요.

includeTrigger 특성의 경우 true 또는 false 값을 지정할 수 있습니다.

Value Type Description
< preceding-actions> String array JSON 형식의 작업 이름을 종속성으로 사용하는 배열입니다. Make sure to use the action names that appear in your workflow definition where action names use underscores (_), not spaces (" ").

Example 1

이 작업은 논리 앱 워크플로의 이름을 가져오고 “Hello world from <logic-app-name>” 텍스트를 결과로 반환하는 코드를 실행합니다. 이 예제에서 코드는 읽기 전용 workflowContext.workflow.name 개체를 통해 속성에 workflowContext 액세스하여 워크플로의 이름을 참조합니다. 개체 사용에 대한 자세한 내용은 코드에서 workflowContext 참조 트리거 및 작업 결과를 참조하세요.

"Execute_JavaScript_Code": {
   "type": "JavaScriptCode",
   "inputs": {
      "code": "var text = \"Hello world from \" + workflowContext.workflow.name;\r\n\r\nreturn text;"
   },
   "runAfter": {}
}

Example 2

이 작업은 새 이메일이 Outlook 계정에 도착할 때 트리거되는 논리 앱 워크플로에서 코드를 실행합니다. 또한 워크플로는 승인 요청과 함께 받은 이메일의 콘텐츠를 전달하는 Office 365 Outlook 승인 이메일 보내기 작업을 사용합니다.

코드는 이메일 메시지의 Body 속성에서 이메일 주소를 추출하고, 승인 작업에서 SelectedOption 속성 값과 함께 주소를 반환합니다. 이 작업에는 개체 내의 actions 개체의 종속성으로 explicitDependencies 작업이 명시적으로 포함됩니다.

"Execute_JavaScript_Code": {
   "type": "JavaScriptCode",
   "inputs": {
      "code": "var myResult = /(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))/g;\r\n\r\nvar email = workflowContext.trigger.outputs.body.Body;\r\n\r\nvar reply = workflowContext.actions.Send_approval_email.outputs.body.SelectedOption;\r\n\r\nreturn email.match(myResult) + \" - \" + reply;\r\n;",
      "explicitDependencies": {
         "actions": [
            "Send_approval_email"
         ]
      }
   },
   "runAfter": {}
}

Function action

This action calls a previously created Azure function.

"<Azure-function-name>": {
   "type": "Function",
   "inputs": {
     "function": {
        "id": "<Azure-function-ID>"
      },
      "method": "<method-type>",
      "headers": { "<header-content>" },
      "body": { "<body-content>" },
      "queries": { "<query-parameters>" } 
   },
   "runAfter": {}
}

Required

Value Type Description
< Azure-function-ID> String 호출하려는 Azure 함수의 리소스 ID입니다. 이 값의 형식은 다음과 같습니다.

"/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group>/providers/Microsoft.Web/sites/<Azure-function-app-name>/functions/<Azure-function-name>"
< method-type> String 함수를 호출하는 데 사용할 HTTP 메서드: "GET", "PUT", "POST", "PATCH" 또는 "DELETE"

지정하지 않으면 기본값은 "POST" 메서드입니다.

Optional

Value Type Description
< header-content> JSON Object 통화와 함께 보낼 헤더

예를 들어 요청에 언어 및 형식을 설정하려면 다음과 같이 합니다.

"headers": { "Accept-Language": "en-us", "Content-Type": "application/json" }
< body-content> JSON Object 요청에 보낼 모든 메시지 콘텐츠
< query-parameters> JSON Object API 호출에 포함할 쿼리 매개 변수

예를 들어 개체가 "queries": { "api-version": "2018-01-01" } 호출에 추가 ?api-version=2018-01-01 됩니다.
< other-action-specific-input-properties> JSON Object 이 특정 작업에 적용되는 다른 입력 속성입니다.
< other-action-specific-properties> JSON Object 이 특정 작업에 적용되는 다른 모든 속성

논리 앱을 저장하면 Azure Logic Apps는 참조된 함수에 대해 다음 검사를 수행합니다.

  • 워크플로에 함수에 대한 액세스 권한이 있어야 합니다.

  • 워크플로는 표준 HTTP 트리거 또는 일반 JSON 웹후크 트리거만 사용할 수 있습니다.

    Azure Logic Apps는 런타임에 사용되는 트리거의 URL을 가져오고 캐시합니다. However, if any operation invalidates the cached URL, the Function action fails at runtime. 이 문제를 해결하려면 논리 앱이 트리거 URL을 다시 가져오고 캐시할 수 있도록 논리 앱을 다시 저장합니다.

  • 함수는 정의된 경로를 가질 수 없습니다.

  • "function" 및 "anonymous" 권한 부여 수준만 허용됩니다.

Example

이 작업 정의는 이전에 만든 "GetProductID" 함수를 호출합니다.

"GetProductID": {
   "type": "Function",
   "inputs": {
     "function": {
        "id": "/subscriptions/<XXXXXXXXXXXXXXXXXXXX>/resourceGroups/myLogicAppResourceGroup/providers/Microsoft.Web/sites/InventoryChecker/functions/GetProductID"
      },
      "method": "POST",
      "headers": { 
          "x-ms-date": "@utcnow()"
       },
      "body": { 
          "Product_ID": "@variables('ProductID')"
      }
   },
   "runAfter": {}
}

HTTP action

이 작업은 지정된 HTTP 또는 HTTPS 엔드포인트에 요청을 보내고 응답을 확인하여 워크플로가 실행되는지 여부를 확인합니다. 자세한 내용은 Azure Logic Apps에서 HTTP 또는 HTTPS를 통해 서비스 엔드포인트 호출을 참조 하세요.

"HTTP": {
   "type": "Http",
   "inputs": {
      "method": "<method-type>",
      "uri": "<HTTP-or-HTTPS-endpoint-URL>",
      "headers": { "<header-content>" },
      "queries": { "<query-parameters>" },
      "body": "<body-content>",
      "authentication": { "<authentication-type-and-property-values>" },
      "retryPolicy": {
         "type": "<retry-behavior>"
      },
   },
   "runAfter": {}
}

Required

Property Value Type Description
method < method-type> String 나가는 요청을 보내는 데 사용할 메서드: "GET", "PUT", "POST", "PATCH" 또는 "DELETE"
uri < HTTP-or-HTTPS-endpoint-URL> String 나가는 요청을 보낼 HTTP 또는 HTTPS 엔드포인트 URL입니다. 최대 문자열 크기: 2KB

Azure 서비스 또는 리소스의 경우 이 URI 구문에는 리소스 ID와 액세스하려는 리소스에 대한 경로가 포함됩니다.

Optional

Property Value Type Description
headers < header-content> JSON Object 요청에 포함해야 하는 모든 헤더

예를 들어 언어 및 형식을 설정하려면 다음을 수행합니다.

"headers": { "Accept-Language": "en-us", "Content-Type": "application/json" }
queries < query-parameters> JSON Object 요청에 사용해야 하는 모든 쿼리 매개 변수

예를 들어 개체가 "queries": { "api-version": "2018-01-01" } 호출에 추가 ?api-version=2018-01-01 됩니다.
body < body-content> JSON Object 요청과 함께 페이로드로 보낼 메시지 콘텐츠
authentication < authentication-type-and-property-values> JSON Object 요청이 아웃바운드 요청을 인증하는 데 사용하는 인증 모델입니다. 자세한 내용은 아웃바운드 호출에 인증 추가를 참조하세요. Scheduler 외에 authority 속성이 지원됩니다. 지정되지 않은 경우 기본값은 https://management.azure.com/이지만, 다른 값을 사용할 수 있습니다.
retryPolicy > type < retry-behavior> JSON Object 상태 코드 408, 429 및 5XX와 연결 예외가 있는 일시적 오류에 대한 재시도 동작을 사용자 지정합니다. For more information, see Retry policies.
< other-action-specific-input-properties> < input-property> JSON Object 이 특정 작업에 적용되는 다른 입력 속성입니다.
< other-action-specific-properties> < property-value> JSON Object 이 특정 작업에 적용되는 다른 모든 속성

Example

이 작업 정의는 지정된 엔드포인트에 요청을 전송하여 최신 뉴스를 가져옵니다.

"HTTP": {
   "type": "Http",
   "inputs": {
      "method": "GET",
      "uri": "https://mynews.example.com/latest"
   }
}

Join action

이 작업은 배열의 모든 항목에서 문자열을 만들고 지정된 구분 기호 문자로 해당 항목을 구분합니다.

"Join": {
   "type": "Join",
   "inputs": {
      "from": <array>,
      "joinWith": "<delimiter>"
   },
   "runAfter": {}
}

Required

Value Type Description
< array> Array 원본 항목을 제공하는 배열 또는 식입니다. 식을 지정하는 경우 해당 식을 큰따옴표로 묶습니다.
< delimiter> 단일 문자 문자열 문자열의 각 항목을 구분하는 문자입니다.

Example

이 정수 배열을 포함하는 이전에 만든 "myIntegerArray" 변수가 있다고 가정해 보겠습니다.

[1,2,3,4]

이 작업 정의는 식의 함수를 사용하여 variables() 변수에서 값을 가져오고 쉼표로 구분되는 값으로 이 문자열을 만듭니다. "1,2,3,4"

"Join": {
   "type": "Join",
   "inputs": {
      "from": "@variables('myIntegerArray')",
      "joinWith": ","
   },
   "runAfter": {}
}

JSON 구문 분석 작업

This action creates user-friendly fields or tokens from the properties in JSON content. 그런 다음 토큰을 대신 사용하여 논리 앱에서 이러한 속성에 액세스할 수 있습니다. 예를 들어 Azure Service Bus 및 Azure Cosmos DB와 같은 서비스의 JSON 출력을 사용하려는 경우 해당 출력의 데이터를 보다 쉽게 참조할 수 있도록 논리 앱에 이 작업을 포함할 수 있습니다.

"Parse_JSON": {
   "type": "ParseJson",
   "inputs": {
      "content": "<JSON-source>",
         "schema": { "<JSON-schema>" }
      },
      "runAfter": {}
},

Required

Value Type Description
< JSON-source> JSON Object 구문 분석하려는 JSON 콘텐츠
< JSON-schema> JSON Object 기본 작업이 원본 JSON 콘텐츠를 구문 분석하는 데 사용하는 기본 JSON 콘텐츠를 설명하는 JSON 스키마입니다.

Tip: In the workflow designer, you can either provide the schema or provide a sample payload so that the action can generate the schema.

Example

This action definition creates these tokens that you can use in your workflow but only in actions that run following the Parse JSON action:

FirstName, LastNameEmail

"Parse_JSON": {
   "type": "ParseJson",
   "inputs": {
      "content": {
         "Member": {
            "Email": "Sophie.Owen@contoso.com",
            "FirstName": "Sophie",
            "LastName": "Owen"
         }
      },
      "schema": {
         "type": "object",
         "properties": {
            "Member": {
               "type": "object",
               "properties": {
                  "Email": {
                     "type": "string"
                  },
                  "FirstName": {
                     "type": "string"
                  },
                  "LastName": {
                     "type": "string"
                  }
               }
            }
         }
      }
   },
   "runAfter": { }
},

이 예제에서 "content" 속성은 구문 분석할 작업에 대한 JSON 콘텐츠를 지정합니다. 스키마를 생성하기 위한 샘플 페이로드로 이 JSON 콘텐츠를 제공할 수도 있습니다.

"content": {
   "Member": { 
      "FirstName": "Sophie",
      "LastName": "Owen",
      "Email": "Sophie.Owen@contoso.com"
   }
},

"스키마" 속성은 JSON 콘텐츠를 설명하는 데 사용되는 JSON 스키마를 지정합니다.

"schema": {
   "type": "object",
   "properties": {
      "Member": {
         "type": "object",
         "properties": {
            "FirstName": {
               "type": "string"
            },
            "LastName": {
               "type": "string"
            },
            "Email": {
               "type": "string"
            }
         }
      }
   }
}

Query action

이 작업은 지정된 조건 또는 필터를 기반으로 다른 배열의 항목에서 배열을 만듭니다.

"Filter_array": {
   "type": "Query",
   "inputs": {
      "from": <array>,
      "where": "<condition-or-filter>"
   },
   "runAfter": {}
}

Required

Value Type Description
< array> Array 원본 항목을 제공하는 배열 또는 식입니다. 식을 지정하는 경우 해당 식을 큰따옴표로 묶습니다.
< condition-or-filter> String 원본 배열의 항목을 필터링하는 데 사용되는 조건

Note: If no values satisfy the condition, then the action creates an empty array.

Example

이 작업 정의는 지정된 값(2)보다 더 큰 값을 갖는 배열을 만듭니다.

"Filter_array": {
   "type": "Query",
   "inputs": {
      "from": [ 1, 3, 0, 5, 4, 2 ],
      "where": "@greater(item(), 2)"
   }
}

Response action

이 작업은 HTTP 요청에 대한 응답에 대한 페이로드를 만듭니다.

"Response" {
    "type": "Response",
    "kind": "http",
    "inputs": {
        "statusCode": 200,
        "headers": { <response-headers> },
        "body": { <response-body> }
    },
    "runAfter": {}
},

Required

Value Type Description
< response-status-code> Integer 들어오는 요청으로 전송되는 HTTP 상태 코드입니다. 기본 코드는 "200 OK"이지만 코드는 2xx, 4xx 또는 5xx로 시작하지만 3xxx에서는 시작하지 않는 유효한 상태 코드일 수 있습니다.

Optional

Value Type Description
< response-headers> JSON Object 응답에 포함할 하나 이상의 헤더
< response-body> Various 이전 작업의 문자열, JSON 개체 또는 이진 콘텐츠일 수 있는 응답 본문입니다.

Example

이 작업 정의는 지정된 상태 코드, 메시지 본문 및 메시지 헤더를 사용하여 HTTP 요청에 대한 응답을 만듭니다.

"Response": {
   "type": "Response",
   "inputs": {
      "statusCode": 200,
      "body": {
         "ProductID": 0,
         "Description": "Organic Apples"
      },
      "headers": {
         "x-ms-date": "@utcnow()",
         "content-type": "application/json"
      }
   },
   "runAfter": {}
}

Restrictions

Unlike other actions, the Response action has special restrictions:

  • Your workflow can use the Response action only when the workflow starts with an HTTP request trigger, meaning your workflow must be triggered by an HTTP request.

  • Your workflow can use the Response action anywhere except inside Foreach loops, Until loops, including sequential loops, and parallel branches.

  • The original request gets your workflow's response only when all actions required by the Response action are finished within the HTTP timeout limit.

    그러나 워크플로가 다른 논리 앱을 중첩된 워크플로로 호출할 경우, 중첩된 워크플로가 완료되기 전에 얼마나 오랜 시간이 경과되는지에 관계없이 부모 워크플로는 중첩된 워크플로가 완료될 때까지 기다립니다.

  • When your workflow uses the Response action and a synchronous response pattern, the workflow can't also use the splitOn command in the trigger definition because that command creates multiple runs. PUT 메서드가 사용되는 경우 이 경우를 확인하고 true이면 "잘못된 요청" 응답을 반환합니다.

    Otherwise, if your workflow uses the splitOn command and a Response action, the workflow runs asynchronously and immediately returns a "202 ACCEPTED" response.

  • When your workflow's execution reaches the Response action, but the incoming request has already received a response, the Response action is marked as "Failed" due to the conflict. 따라서 논리 앱 실행도 "실패" 상태로 표시됩니다.

Select action

이 작업은 지정된 맵을 기준으로 다른 배열의 항목을 변형하여 JSON 개체를 포함하는 배열을 만듭니다. 출력 배열과 원본 배열은 항상 동일한 수의 항목을 갖습니다. 출력 배열의 개체 수는 변경할 수 없지만 해당 개체에서 속성 및 해당 값을 추가하거나 제거할 수 있습니다. 이 속성은 select 원본 배열의 항목을 변환하기 위한 맵을 정의하는 하나 이상의 키-값 쌍을 지정합니다. 키-값 쌍은 출력 배열의 모든 개체에서 속성과 해당 값을 나타냅니다.

"Select": {
   "type": "Select",
   "inputs": {
      "from": <array>,
      "select": { 
          "<key-name>": "<expression>",
          "<key-name>": "<expression>"        
      }
   },
   "runAfter": {}
},

Required

Value Type Description
< array> Array 원본 항목을 제공하는 배열 또는 식입니다. 식을 큰따옴표로 묶는지 확인합니다.

Note: If the source array is empty, the action creates an empty array.
< key-name> String The property name assigned to the result from <expression>

To add a new property across all objects in the output array, provide a <key-name> for that property and an <expression> for the property value.

To remove a property from all objects in the array, omit the <key-name> for that property.
< expression> String The expression that transforms the item in the source array and assigns the result to <key-name>

The Select action creates an array as output, so any action that wants to use this output must either accept an array, or you must convert the array into the type that the consumer action accepts. For example, to convert the output array to a string, you can pass that array to the Compose action, and then reference the output from the Compose action in your other actions.

Example

이 작업 정의는 정수 배열에서 JSON 개체 배열을 만듭니다. 이 작업은 원본 배열을 반복하고 식을 사용하여 @item() 각 정수 값을 가져오며 각 JSON 개체의 "number" 속성에 각 값을 할당합니다.

"Select": {
   "type": "Select",
   "inputs": {
      "from": [ 1, 2, 3 ],
      "select": { 
         "number": "@item()" 
      }
   },
   "runAfter": {}
},

이 작업이 만드는 배열은 다음과 같습니다.

[ { "number": 1 }, { "number": 2 }, { "number": 3 } ]

To use this array output in other actions, pass this output into a Compose action:

"Compose": {
   "type": "Compose",
   "inputs": "@body('Select')",
   "runAfter": {
      "Select": [ "Succeeded" ]
   }
},

You can then use the output from the Compose action in your other actions, for example, the Office 365 Outlook - Send an email action:

"Send_an_email": {
   "type": "ApiConnection",
   "inputs": {
      "body": {
         "Body": "@{outputs('Compose')}",
         "Subject": "Output array from Select and Compose actions",
         "To": "<your-email@___domain>"
      },
      "host": {
         "connection": {
            "name": "@parameters('$connections')['office365']['connectionId']"
         }
      },
      "method": "post",
      "path": "/Mail"
   },
   "runAfter": {
      "Compose": [ "Succeeded" ]
   }
},

Table action

이 작업은 배열에서 CSV 또는 HTML 테이블을 만듭니다. JSON 개체가 있는 배열의 경우, 이 작업은 개체의 속성 이름에서 열 머리글을 자동으로 만듭니다. 기타 데이터 형식을 갖는 배열의 경우 열 머리글과 값을 지정해야 합니다. 예를 들어 이 배열에는 이 작업이 열 머리글 이름에 사용할 수 있는 "ID" 및 "Product_Name" 속성이 포함됩니다.

[ {"ID": 0, "Product_Name": "Apples"}, {"ID": 1, "Product_Name": "Oranges"} ]

"Create_<CSV | HTML>_table": {
   "type": "Table",
   "inputs": {
      "format": "<CSV | HTML>",
      "from": <array>,
      "columns": [ 
         {
            "header": "<column-name>",
            "value": "<column-value>"
         },
         {
            "header": "<column-name>",
            "value": "<column-value>"
         } 
      ]
   },
   "runAfter": {}
}

Required

Value Type Description
<CSV or HTML> String 만들려는 테이블의 형식입니다.
< array> Array 테이블의 원본 항목을 제공하는 배열 또는 식입니다.

Note: If the source array is empty, the action creates an empty table.

Optional

열 머리글 및 값을 지정하거나 사용자 지정하려면 배열을 columns 사용합니다. 쌍의 헤더 이름이 같으면 header-value 해당 값이 해당 헤더 이름 아래의 동일한 열에 표시됩니다. 그렇지 않으면 각 고유 헤더는 고유한 열을 정의합니다.

Value Type Description
< column-name> String 열의 헤더 이름
< column-value> Any 해당 열의 값

Example 1

현재 이 배열이 포함된 이전에 만든 "myItemArray" 변수가 있다고 가정합니다.

[ {"ID": 0, "Product_Name": "Apples"}, {"ID": 1, "Product_Name": "Oranges"} ]

이 작업 정의는 "myItemArray" 변수에서 CSV 테이블을 만듭니다. 속성에서 from 사용하는 식은 함수를 사용하여 "myItemArray"에서 배열을 variables() 가져옵니다.

"Create_CSV_table": {
   "type": "Table",
   "inputs": {
      "format": "CSV",
      "from": "@variables('myItemArray')"
   },
   "runAfter": {}
}

이 작업이 만드는 CSV 테이블은 다음과 같습니다.

ID,Product_Name 
0,Apples 
1,Oranges 

Example 2

이 작업 정의는 "myItemArray" 변수에서 HTML 테이블을 만듭니다. 속성에서 from 사용하는 식은 함수를 사용하여 "myItemArray"에서 배열을 variables() 가져옵니다.

"Create_HTML_table": {
   "type": "Table",
   "inputs": {
      "format": "HTML",
      "from": "@variables('myItemArray')"
   },
   "runAfter": {}
}

이 작업이 만드는 HTML 테이블은 다음과 같습니다.

IDProduct_Name
0Apples
1Oranges

Example 3

이 작업 정의는 "myItemArray" 변수에서 HTML 테이블을 만듭니다. 그러나 이 예제에서는 기본 열 머리글 이름을 "Stock_ID" 및 "Description"으로 재정의하고 "Description" 열의 값에 "Organic"이라는 단어를 추가합니다.

"Create_HTML_table": {
   "type": "Table",
   "inputs": {
      "format": "HTML",
      "from": "@variables('myItemArray')",
      "columns": [ 
         {
            "header": "Stock_ID",
            "value": "@item().ID"
         },
         {
            "header": "Description",
            "value": "@concat('Organic ', item().Product_Name)"
         }
      ]
    },
   "runAfter": {}
},

이 작업이 만드는 HTML 테이블은 다음과 같습니다.

Stock_IDDescription
0Organic Apples
1Organic Oranges

Terminate action

이 작업은 워크플로 인스턴스에 대한 실행을 중지하고, 진행 중인 작업을 취소하고, 나머지 작업을 건너뛰고, 지정된 상태를 반환합니다. For example, you can use the Terminate action when your logic app must exit completely from an error state. This action doesn't affect already completed actions and can't appear inside Foreach and Until loops, including sequential loops.

"Terminate": {
   "type": "Terminate",
   "inputs": {
       "runStatus": "<status>",
       "runError": {
            "code": "<error-code-or-name>",
            "message": "<error-message>"
       }
   },
   "runAfter": {}
}

Required

Value Type Description
< status> String 실행에 대해 반환할 상태: "실패", "취소됨" 또는 "성공"

Optional

"runError" 개체의 속성은 "runStatus" 속성이 "Failed" 상태로 설정된 경우에만 적용됩니다.

Value Type Description
< error-code-or-name> String 오류의 코드 또는 이름
< error-message> String 오류 및 앱 사용자가 수행할 수 있는 작업을 설명하는 메시지 또는 텍스트입니다.

Example

이 작업 정의는 워크플로 실행을 중지하고, 실행 상태를 "실패"로 설정하고, 상태, 오류 코드 및 오류 메시지를 반환합니다.

"Terminate": {
    "type": "Terminate",
    "inputs": {
        "runStatus": "Failed",
        "runError": {
            "code": "Unexpected response",
            "message": "The service received an unexpected response. Please try again."
        }
   },
   "runAfter": {}
}

Wait action

이 작업은 지정된 간격 또는 지정된 시간까지 워크플로 실행을 일시 중지하지만 둘 다 일시 중지하지는 않습니다.

Specified interval

"Delay": {
   "type": "Wait",
   "inputs": {
      "interval": {
         "count": <number-of-units>,
         "unit": "<interval>"
      }
   },
   "runAfter": {}
},

Specified time

"Delay_until": {
   "type": "Wait",
   "inputs": {
      "until": {
         "timestamp": "<date-time-stamp>"
      }
   },
   "runAfter": {}
},

Required

Value Type Description
< number-of-units> Integer For the Delay action, the number of units to wait
< interval> String For the Delay action, the interval to wait: "Second", "Minute", "Hour", "Day", "Week", "Month"
< date-time-stamp> String For the Delay Until action, the date and time to resume execution. 이 값은 UTC 날짜 시간 형식사용해야 합니다.

Example 1

이 작업 정의는 워크플로를 15분 동안 일시 중지합니다.

"Delay": {
   "type": "Wait",
   "inputs": {
      "interval": {
         "count": 15,
         "unit": "Minute"
      }
   },
   "runAfter": {}
},

Example 2

이 작업 정의는 지정된 시간까지 워크플로를 일시 중지합니다.

"Delay_until": {
   "type": "Wait",
   "inputs": {
      "until": {
         "timestamp": "2017-10-01T00:00:00Z"
      }
   },
   "runAfter": {}
},

Workflow action

이 작업은 이전에 만든 다른 논리 앱을 호출합니다. 즉, 다른 논리 앱 워크플로를 포함하고 다시 사용할 수 있습니다. You can also use the outputs from the child or nested logic app in actions that follow the nested logic app, provided that the child logic app returns a response.

Azure Logic Apps는 호출하려는 트리거에 대한 액세스를 확인하므로 해당 트리거에 액세스할 수 있는지 확인합니다. 또한 중첩된 논리 앱은 다음 조건을 충족해야 합니다.

  • A trigger makes the nested logic app callable, such as a Request or HTTP trigger

  • 부모 논리 앱과 동일한 Azure 구독

  • To use the outputs from the nested logic app in your parent logic app, the nested logic app must have a Response action

"<nested-logic-app-name>": {
   "type": "Workflow",
   "inputs": {
      "body": { "<body-content" },
      "headers": { "<header-content>" },
      "host": {
         "triggerName": "<trigger-name>",
         "workflow": {
            "id": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group>/providers/Microsoft.Logic/<nested-logic-app-name>"
         }
      }
   },
   "runAfter": {}
}

Required

Value Type Description
< nested-logic-app-name> String 호출하려는 논리 앱의 이름입니다.
< trigger-name> String 호출하려는 중첩 논리 앱의 트리거 이름입니다.
< Azure-subscription-ID> String 중첩된 논리 앱의 Azure 구독 ID
< Azure-resource-group> String 중첩된 논리 앱의 Azure 리소스 그룹 이름입니다.

Optional

Value Type Description
< header-content> JSON Object 통화와 함께 보낼 헤더
< body-content> JSON Object 통화와 함께 보낼 모든 메시지 콘텐츠

Outputs

이 작업의 출력은 중첩된 논리 앱의 응답 작업에 따라 달라집니다. 중첩된 논리 앱에 응답 작업이 포함되지 않으면 출력이 비어 있습니다.

Example

"Start_search" 작업이 성공적으로 완료되면 이 워크플로 작업 정의는 지정된 입력을 전달하는 "Get_product_information"이라는 다른 논리 앱을 호출합니다.

"actions": {
   "Start_search": { <action-definition> },
   "Get_product_information": {
      "type": "Workflow",
      "inputs": {
         "body": {
            "ProductID": "24601",
         },
         "host": {
            "id": "/subscriptions/XXXXXXXXXXXXXXXXXXXXXXXXXX/resourceGroups/InventoryManager-RG/providers/Microsoft.Logic/Get_product_information",
            "triggerName": "Find_product"
         },
         "headers": {
            "content-type": "application/json"
         }
      },
      "runAfter": { 
         "Start_search": [ "Succeeded" ]
      }
   }
},

워크플로 작업 세부 정보 제어

Foreach action

이 반복 작업은 배열을 반복하고 각 배열 항목에 대해 작업을 수행합니다. 기본적으로 "for each" 루프는 최대 루프 수까지 병렬로 실행됩니다. 이 최대값은 제한 및 구성을 참조 하세요. "for each" 루프를 만드는 방법을 알아봅니 .

"For_each": {
   "type": "Foreach",
   "actions": { 
      "<action-1>": { "<action-definition-1>" },
      "<action-2>": { "<action-definition-2>" }
   },
   "foreach": "<for-each-expression>",
   "runAfter": {},
   "runtimeConfiguration": {
      "concurrency": {
         "repetitions": <count>
      }
    },
    "operationOptions": "<operation-option>"
}

Required

Value Type Description
< action-1...n> String 각 배열 항목에서 실행되는 작업의 이름
< action-definition-1...n> JSON Object 실행되는 작업의 정의
< for-each-expression> String 지정된 배열의 각 항목을 참조하는 식입니다.

Optional

Value Type Description
< count> Integer By default, the "for each" loop iterations run at the same time (concurrently or in parallel) up to the default limit. To change this limit by setting a new <count> value, see Change "for each" loop concurrency.
< operation-option> String To run a "for each" loop sequentially, rather than in parallel, set either <operation-option> to Sequential or <count> to 1, but not both. 자세한 내용은 순차적으로 "for each" 루프 실행을 참조 하세요.

Example

이 "for each" 루프는 들어오는 전자 메일의 첨부 파일이 포함된 배열의 각 항목에 대한 전자 메일을 보냅니다. 루프는 첨부 파일을 포함하는 이메일을 첨부 파일을 검토하는 사람에게 전송합니다.

"For_each": {
   "type": "Foreach",
   "actions": {
      "Send_an_email": {
         "type": "ApiConnection",
         "inputs": {
            "body": {
               "Body": "@base64ToString(items('For_each')?['Content'])",
               "Subject": "Review attachment",
               "To": "Sophie.Owen@contoso.com"
                },
            "host": {
               "connection": {
                  "id": "@parameters('$connections')['office365']['connectionId']"
               }
            },
            "method": "post",
            "path": "/Mail"
         },
         "runAfter": {}
      }
   },
   "foreach": "@triggerBody()?['Attachments']",
   "runAfter": {}
}

To specify only an array that is passed as output from the trigger, this expression gets the <array-name> array from the trigger body. 배열이 없는 경우 오류를 방지하기 위해 식은 연산자를 ? 사용합니다.

@triggerBody()?['<array-name>']

If action

This action, which is a conditional statement, evaluates an expression that represents a condition and runs a different branch based on whether the condition is true or false. 조건이 true이면 해당 조건은 “Succeeded” 상태로 표시됩니다. 조건문을 만드는 방법을 알아봅니 .

"Condition": {
   "type": "If",
   "expression": { "<condition>" },
   "actions": {
      "<action-1>": { "<action-definition>" }
   },
   "else": {
      "actions": {
        "<action-2>": { "<action-definition" }
      }
   },
   "runAfter": {}
}
Value Type Description
< condition> JSON Object 계산할 식이 될 수 있는 조건
< action-1> JSON Object The action to run when <condition> evaluates to true
< action-definition> JSON Object 작업에 대한 정의
< action-2> JSON Object The action to run when <condition> evaluates to false

또는 actions 개체의 else 작업은 다음 상태를 가져옵니다.

  • "성공" - 성공적으로 실행되는 경우
  • 실행 및 실패 시 "실패"
  • 해당 분기가 실행되지 않는 경우 "건너뛰기"

Example

이 조건은 정수 변수의 값이 0보다 큰 경우 워크플로가 웹 사이트를 확인한다고 지정합니다. 변수가 0 이하이면 워크플로는 다른 웹 사이트를 확인합니다.

"Condition": {
   "type": "If",
   "expression": {
      "and": [ {
         "greater": [ "@variables('myIntegerVariable')", 0 ] 
      } ]
   },
   "actions": { 
      "HTTP - Check this website": {
         "type": "Http",
         "inputs": {
         "method": "GET",
            "uri": "http://this-url"
         },
         "runAfter": {}
      }
   },
   "else": {
      "actions": {
         "HTTP - Check this other website": {
            "type": "Http",
            "inputs": {
               "method": "GET",
               "uri": "http://this-other-url"
            },
            "runAfter": {}
         }
      }
   },
   "runAfter": {}
}

조건이 식을 사용하는 방법

다음은 조건에서 식을 사용하는 방법을 보여 주는 몇 가지 예입니다.

JSON Result
"expression": "@parameters('<hasSpecialAction>')" 부울 식의 경우에만 조건이 true로 평가되는 모든 값을 전달합니다.

다른 형식을 부울로 변환하려면 다음 함수를 empty()사용합니다. equals()
"expression": "@greater(actions('<action>').output.value, parameters('<threshold>'))" For comparison functions, the action runs only when the output from <action> is more than the <threshold> value.
"expression": "@or(greater(actions('<action>').output.value, parameters('<threshold>')), less(actions('<same-action>').output.value, 100))" For logic functions and creating nested Boolean expressions, the action runs when the output from <action> is more than the <threshold> value or under 100.
"expression": "@equals(length(actions('<action>').outputs.errors), 0)" 배열 함수를 사용하여 배열에 항목이 있는지 여부를 확인할 수 있습니다. 이 작업은 errors 배열이 비어 있을 때 실행됩니다.

Scope action

This action logically groups actions into scopes, which get their own status after the actions in that scope finish running. 그런 후에는 범위의 상태를 사용하여 다른 작업의 실행 여부를 확인할 수 있습니다. 범위를 만드는 방법을 알아봅니 .

"Scope": {
   "type": "Scope",
   "actions": {
      "<inner-action-1>": {
         "type": "<action-type>",
         "inputs": { "<action-inputs>" },
         "runAfter": {}
      },
      "<inner-action-2>": {
         "type": "<action-type>",
         "inputs": { "<action-inputs>" },
         "runAfter": {}
      }
   }
}

Required

Value Type Description
< inner-action-1...n> JSON Object 범위 내에서 실행되는 하나 이상의 작업
< action-inputs> JSON Object 각 작업에 대한 입력

Switch action

This action, also known as a switch statement, organizes other actions into cases, and assigns a value to each case, except for the default case if one exists. When your workflow runs, the Switch action compares the value from an expression, object, or token against the values specified for each case. If the Switch action finds a matching case, your workflow runs only the actions for that case. Each time the Switch action runs, either only one matching case exists or no matches exist. If no matches exist, the Switch action runs the default actions. switch 문을 만드는 방법을 알아봅니 .

"Switch": {
   "type": "Switch",
   "expression": "<expression-object-or-token>",
   "cases": {
      "Case": {
         "actions": {
           "<action-name>": { "<action-definition>" }
         },
         "case": "<matching-value>"
      },
      "Case_2": {
         "actions": {
           "<action-name>": { "<action-definition>" }
         },
         "case": "<matching-value>"
      }
   },
   "default": {
      "actions": {
         "<default-action-name>": { "<default-action-definition>" }
      }
   },
   "runAfter": {}
}

Required

Value Type Description
< expression-object-or-token> Varies 평가할 식, JSON 개체 또는 토큰
< action-name> String 일치하는 사례에 대해 실행할 작업의 이름입니다.
< action-definition> JSON Object 일치하는 사례에 대해 실행할 작업에 대한 정의입니다.
< matching-value> Varies 평가된 결과와 비교할 값입니다.

Optional

Value Type Description
< default-action-name> String 일치하는 사례가 없을 때 실행할 기본 동작의 이름입니다.
< default-action-definition> JSON Object 일치하는 사례가 없는 경우에 실행할 작업에 대한 정의입니다.

Example

이 작업 정의는 승인 요청 이메일에 응답하는 사람이 "승인" 옵션 또는 "거부" 옵션을 선택했는지 여부를 평가합니다. Based on this choice, the Switch action runs the actions for the matching case, which is to send another email to the responder but with different wording in each case.

"Switch": {
   "type": "Switch",
   "expression": "@body('Send_approval_email')?['SelectedOption']",
   "cases": {
      "Case": {
         "actions": {
            "Send_an_email": { 
               "type": "ApiConnection",
               "inputs": {
                  "Body": "Thank you for your approval.",
                  "Subject": "Response received", 
                  "To": "Sophie.Owen@contoso.com"
               },
               "host": {
                  "connection": {
                     "name": "@parameters('$connections')['office365']['connectionId']"
                  }
               },
               "method": "post",
               "path": "/Mail"
            },
            "runAfter": {}
         },
         "case": "Approve"
      },
      "Case_2": {
         "actions": {
            "Send_an_email_2": { 
               "type": "ApiConnection",
               "inputs": {
                  "Body": "Thank you for your response.",
                  "Subject": "Response received", 
                  "To": "Sophie.Owen@contoso.com"
               },
               "host": {
                  "connection": {
                     "name": "@parameters('$connections')['office365']['connectionId']"
                  }
               },
               "method": "post",
               "path": "/Mail"
            },
            "runAfter": {}     
         },
         "case": "Reject"
      }
   },
   "default": {
      "actions": { 
         "Send_an_email_3": { 
            "type": "ApiConnection",
            "inputs": {
               "Body": "Please respond with either 'Approve' or 'Reject'.",
               "Subject": "Please respond", 
               "To": "Sophie.Owen@contoso.com"
            },
            "host": {
               "connection": {
                  "name": "@parameters('$connections')['office365']['connectionId']"
               }
            },
            "method": "post",
            "path": "/Mail"
         },
         "runAfter": {} 
      }
   },
   "runAfter": {
      "Send_approval_email": [ 
         "Succeeded"
      ]
   }
}

Until action

이 루프 작업은 지정된 조건이 충족될 때까지 실행되는 작업을 포함합니다. 이 루프는 다른 모든 작업이 실행된 후에 마지막 단계로서 해당 조건을 확인합니다. 개체에 "actions" 둘 이상의 작업을 포함할 수 있으며 작업은 하나 이상의 제한을 정의해야 합니다. "until" 루프를 만드는 방법을 알아봅니 .

 "Until": {
   "type": "Until",
   "actions": {
      "<action-name>": {
         "type": "<action-type>",
         "inputs": { "<action-inputs>" },
         "runAfter": {}
      },
      "<action-name>": {
         "type": "<action-type>",
         "inputs": { "<action-inputs>" },
         "runAfter": {}
      }
   },
   "expression": "<condition>",
   "limit": {
      "count": <loop-count>,
      "timeout": "<loop-timeout>"
   },
   "runAfter": {}
}
Value Type Description
< action-name> String 루프 내에서 실행하려는 작업의 이름입니다.
< action-type> String 실행하려는 작업 유형입니다.
< action-inputs> Various 실행할 작업에 대한 입력입니다.
< condition> String 루프의 모든 작업이 실행 완료된 후에 평가할 조건 또는 식입니다.
< loop-count> Integer 작업이 실행할 수 있는 가장 많은 루프 수에 대한 제한입니다. 기본 제한 및 최대 제한에 대한 자세한 내용은 Azure Logic Apps에 대한 제한 및 구성을 참조 하세요.
< loop-timeout> String 루프가 실행될 수 있는 가장 긴 시간의 제한입니다. 기본값 timeoutPT1H필수 ISO 8601 형식입니다.

Note

식이 Until 루프 내의 모든 작업의 출력에 따라 달라지는 경우 해당 작업으로 인해 발생하는 모든 실패를 고려해야 합니다.

Example

이 루프 작업 정의는 다음 조건 중 하나가 충족될 때까지 지정된 URL에 HTTP 요청을 보냅니다.

  • 요청은 "200 OK" 상태 코드가 포함된 응답을 가져옵니다.
  • 루프가 60번 실행되었습니다.
  • 루프가 1시간 동안 실행되었습니다.
 "Run_until_loop_succeeds_or_expires": {
    "type": "Until",
    "actions": {
        "HTTP": {
            "type": "Http",
            "inputs": {
                "method": "GET",
                "uri": "http://myurl"
            },
            "runAfter": {}
        }
    },
    "expression": "@equals(outputs('HTTP')['statusCode'], 200)",
    "limit": {
        "count": 60,
        "timeout": "PT1H"
    },
    "runAfter": {}
}

웹후크 및 구독

웹후크 기반 트리거 및 작업은 엔드포인트을 주기적으로 검사하지 않지만, 대신 해당 엔드포인트의 특정 이벤트 또는 데이터를 기다립니다. These triggers and actions subscribe to the endpoints by providing a callback URL where the endpoint can send responses.

subscribe 호출은 워크플로가 어떤 방식으로든 변경될 때(예: 자격 증명이 갱신되거나 트리거 또는 작업의 입력 매개 변수가 변경될 때) 발생합니다. 이 호출은 표준 HTTP 작업과 동일한 매개 변수를 사용합니다.

unsubscribe 예를 들어 작업이 트리거 또는 작업을 유효하지 않은 경우 호출이 자동으로 수행됩니다.

  • 트리거를 삭제하거나 사용하지 않도록 설정
  • 워크플로를 삭제하거나 사용하지 않도록 설정
  • 구독을 삭제하거나 사용하지 않도록 설정

이러한 호출을 지원하기 위해 식은 @listCallbackUrl() 트리거 또는 작업에 대한 고유한 "콜백 URL"을 반환합니다. 이 URL은 서비스의 REST API를 사용하는 엔드포인트에 대한 고유 식별자를 나타냅니다. 이 함수의 매개 변수는 웹후크 트리거 또는 작업과 동일합니다.

비동기 기간 변경

트리거와 작업 모두에 대해 속성을 추가하여 limit.timeout 비동기 패턴의 기간을 특정 시간 간격으로 제한할 수 있습니다. 이렇게 하면 간격이 경과할 때 작업이 완료되지 않은 경우 작업의 상태가 코드와 함께 CancelledActionTimedOut 표시됩니다. 이 속성은 timeout ISO 8601 형식을 사용합니다.

"<trigger-or-action-name>": {
   "type": "Workflow | Webhook | Http | ApiConnectionWebhook | ApiConnection",
   "inputs": {},
   "limit": {
      "timeout": "PT10S"
   },
   "runAfter": {}
}

런타임 구성 설정

트리거 또는 작업 정의에 이러한 runtimeConfiguration 속성을 추가하여 트리거 및 작업에 대한 기본 런타임 동작을 변경할 수 있습니다.

Property Type Description 트리거 또는 작업
runtimeConfiguration.concurrency.runs Integer Change the default limit on the number of workflow instances that can run at the same time (concurrently or in parallel). 이 값을 조정하면 백 엔드 시스템이 수신하는 요청 수를 제한하는 데 도움이 될 수 있습니다.

속성을 설정 하는 runs 것과 동일한 방식으로 작동 하도록 1 속성을 설정 operationOptions 합니다 SingleInstance. 두 속성 중 하나만 설정할 수 있습니다.

기본 제한을 변경하려면 트리거 동시성 변경 또는 트리거 인스턴스를 순차적으로 참조하세요.
All triggers
runtimeConfiguration.concurrency.maximumWaitingRuns Integer Change the default limit on the number of workflow instances that must wait to run when your logic app is already running the maximum concurrent instances.

기본 제한을 변경하려면 대기 중인 실행 제한 변경을 참조하세요.
All triggers
runtimeConfiguration.concurrency.repetitions Integer Change the default limit on the number of "for each" loop iterations that can run at the same time (concurrently or in parallel).

속성을 설정 하는 repetitions 것과 동일한 방식으로 작동 하도록 1 속성을 설정 operationOptions 합니다 SingleInstance. 두 속성 중 하나만 설정할 수 있습니다.

기본 제한을 변경하려면 "for each" 동시성 변경 또는 "for each" 루프를 순차적으로 실행하세요.
Action:

Foreach
runtimeConfiguration.paginationPolicy.minimumItemCount Integer For specific actions that support and have pagination turned on, this value specifies the minimum number of results to retrieve.

페이지 매김을 설정하려면 페이지 매김을 사용하여 대량 데이터, 항목 또는 결과 가져오기를 참조 하세요.
Action: Varied
runtimeConfiguration.secureData.properties Array 많은 트리거 및 작업에서 이러한 설정은 논리 앱의 실행 기록에서 입력, 출력 또는 둘 다를 숨깁니다.

이 데이터를 보호하는 방법에 대한 자세한 내용은 실행 기록에서 입력 및 출력 숨기기를 참조하세요.
대부분의 트리거 및 작업
runtimeConfiguration.staticResult JSON Object For actions that support and have the static result setting turned on, the staticResult object has these attributes:

- name논리 앱 워크플로의 특성에 있는 특성 내부에 staticResults 나타나는 현재 작업의 정적 결과 정의 이름을 참조하는 입니다 definition . 자세한 내용은 정적 결과 - 워크플로 정의 언어에 대한 스키마 참조를 참조 하세요.

- staticResultOptions정적 결과가 현재 작업에 대한 것인지 여부를 지정하는 입니다 Enabled .

정적 결과를 설정하려면 정적 결과를 설정하여 모의 데이터로 논리 앱 테스트를 참조하세요.
Action: Varied

Operation options

트리거 또는 작업 정의에서 속성을 사용하여 트리거 및 작업에 대한 기본 동작을 operationOptions 변경할 수 있습니다.

Operation option Type Description 트리거 또는 작업
DisableAsyncPattern String 비동기식이 아닌 동기적으로 HTTP 기반 작업을 실행합니다.



이 옵션을 설정하려면 동기적으로 작업 실행을 참조 하세요.
Actions:

ApiConnection,
HTTP,
Response
IncludeAuthorizationHeadersInOutputs String Microsoft Entra ID를 사용하여 OAuth가 요청 기반 트리거 엔드포인트에 대한 인바운드 호출에 대한 액세스 권한을 부여할 수 있도록 하는 논리 앱의 경우 트리거 출력에 OAuth 액세스 토큰의 헤더를 포함합니다Authorization. 자세한 내용은 요청 트리거 출력에 'Authorization' 헤더 포함을 참조하세요. Triggers:

Request,
HTTP Webhook
Sequential String "for each" 루프 반복을 동시에 실행하는 대신 한 번에 하나씩 실행합니다.

이 옵션은 runtimeConfiguration.concurrency.repetitions 속성을 1로 설정할 때와 동일하게 작동합니다. 두 속성 중 하나만 설정할 수 있습니다.



이 옵션을 설정하려면 순차적으로 "for each" 루프 실행을 참조 하세요.
Action:

Foreach
SingleInstance String 각 논리 앱 인스턴스에 대한 트리거를 순차적으로 실행하고, 다음 논리 앱 인스턴스를 트리거하기 전에 이전에 활성 실행이 완료될 때까지 기다립니다.



이 옵션은 runtimeConfiguration.concurrency.runs 속성을 1로 설정할 때와 동일하게 작동합니다. 두 속성 중 하나만 설정할 수 있습니다.

이 옵션을 설정하려면 인스턴스를 순차적으로 트리거를 참조하세요.
All triggers
SuppressWorkflowHeaders String 아웃바운드 요청에 메타데이터 헤더를 보내지 x-ms-* 마세요. 기본적으로 Azure Logic Apps는 아웃바운드 요청의 일부로 헤더 이름에 접두사를 포함하는 추가 메타데이터 헤더 x-ms- 를 포함합니다. 그러나 일부 레거시 서비스에서는 알 수 없는 헤더가 추가된 요청을 수락하지 않아 요청이 실패합니다. Actions:

HTTP,
Function,
APIManagement
SuppressWorkflowHeadersOnResponse String 인바운드 트리거 요청에 대한 응답으로 메타데이터 헤더를 보내지 x-ms-* 마세요. 기본적으로 Azure Logic Apps는 헤더 이름에 접두사를 사용하여 추가 메타데이터 헤더를 x-ms- 포함하는 인바운드 요청에 응답을 보냅니다. 그러나 일부 레거시 서비스는 추가 알 수 없는 헤더가 있는 요청 또는 응답을 수락하지 않으므로 요청이 실패합니다. Triggers:

Request,
HTTP Webhook

트리거 동시성 변경경

기본적으로 논리 앱 워크플로 인스턴스는 모두 동시에(동시 또는 병렬로) 실행됩니다. 이 동작은 이전에 활성 상태였던 워크플로 인스턴스의 실행이 완료되기 전에 각 트리거 인스턴스가 발생한다는 것을 의미합니다. However, the number of concurrently running instances has a default limit. 동시에 실행되는 워크플로 인스턴스의 수가 이 제한에 도달하면 다른 새 인스턴스가 실행될 때까지 기다려야 합니다. 이 제한은 백 엔드 시스템에서 수신하는 요청 수를 제한하는 데 도움이 됩니다.

When you turn on the trigger's concurrency control, trigger instances run in parallel up to the default limit. 이 기본 동시성 제한을 변경하려면 디자이너를 통해 동시성 설정을 변경하면 기본 트리거 정의에서 속성을 추가하거나 업데이트 runtimeConfiguration.concurrency.runs 하고 그 반대의 경우도 마찬가지이므로 코드 뷰 편집기 또는 워크플로 디자이너를 사용할 수 있습니다. 이 속성은 병렬로 실행할 수 있는 새 워크플로 인스턴스의 최대 수를 제어합니다.

트리거에서 동시성을 사용하도록 설정하기 전에 다음 고려 사항을 검토합니다.

  • 동시성 제어를 사용하도록 설정한 후에는 동시성을 사용하지 않도록 설정할 수 없습니다.

  • 최대 동시 트리거 실행 수가 최대 병렬 처리 정도에 도달하면 후속 트리거 실행에서 제한 또는 "429 - 너무 많은 요청" 오류가 발생할 수 있습니다. 429 오류를 처리하는 재시도 정책을 설정하는 경우 트리거에서 새 트리거 요청 처리에 긴 지연을 초래하는 재시도 및 제한 동작의 주기가 발생할 수 있습니다.

  • When concurrency is enabled, the SplitOn limit is significantly reduced for debatching arrays. 항목 수가 이 제한을 초과하면 SplitOn 기능이 사용하지 않도록 설정됩니다.

  • 동시성이 사용하도록 설정되면 장기 실행 논리 앱 인스턴스로 인해 새 논리 앱 인스턴스가 대기 중 상태로 전환될 수 있습니다. 이 상태는 Azure Logic Apps가 새 인스턴스를 만들지 못하게 하며 동시 실행 수가 지정된 최대 동시 실행 수보다 작은 경우에도 발생합니다.

    • To interrupt this state, cancel the earliest instances that are still running.

      1. On your logic app's menu, select Overview.

      2. In the Runs history section, select the earliest instance that is still running, for example:

        가장 빠른 실행 인스턴스 선택

        Tip

        To view only instances that are still running, open the All list, and select Running.

      3. 논리 앱 실행에서 실행 취소를 선택합니다.

        가장 빠른 실행 중인 인스턴스 찾기

    • 이 가능성을 해결하려면 이러한 실행을 보류할 수 있는 모든 작업에 시간 제한을 추가합니다. 코드 편집기에서 작업하는 경우 비동기 기간 변경을 참조하세요. 그렇지 않은 경우 디자이너를 사용하는 경우 다음 단계를 수행합니다.

      1. 논리 앱 워크플로에서 시간 제한을 추가할 작업을 선택합니다. In the action's upper-right corner, select the ellipses (...) button, and then select Settings.

        작업 설정 열기

      2. Under Timeout, specify the timeout duration in ISO 8601 format.

        시간 제한 기간 지정

  • 논리 앱을 순차적으로 실행하려면 코드 뷰 편집기 또는 디자이너를 1 사용하여 트리거의 동시성을 설정합니다. 또한 코드 뷰 편집기에서 트리거의 operationOptions 속성을 SingleInstance 설정하지 않았는지 확인합니다. 그렇지 않으면 유효성 검사 오류가 발생합니다. 자세한 내용은 트리거 인스턴스를 순차적으로 참조 하세요.

코드 보기에서 편집

기본 트리거 정의에서 속성을 추가하고 runtimeConfiguration.concurrency.runs 트리거 동시성 제한따라 값을 설정합니다. 워크플로를 순차적으로 실행하려면 속성 값을 1.로 설정합니다.

이 예제에서는 동시 실행을 10개의 인스턴스로 제한합니다.

"<trigger-name>": {
   "type": "<trigger-name>",
   "recurrence": {
      "frequency": "<time-unit>",
      "interval": <number-of-time-units>,
   },
   "runtimeConfiguration": {
      "concurrency": {
         "runs": 10
      }
   }
}

자세한 내용은 런타임 구성 설정을 참조 하세요.

워크플로 디자이너에서 편집

  1. In the trigger's upper-right corner, select the ellipses (...) button, and then select Settings.

  2. Under Concurrency Control, set Limit to On.

  3. 병렬 처리 수준 슬라이더를 원하는 값으로 끌어옵니다. To run your logic app sequentially, drag the slider value to 1.

"for each" 동시성 변경

기본적으로 "for each" 루프 반복은 모두 동시에(동시 또는 병렬로) 실행됩니다. 이 동작은 이전 반복 실행이 완료되기 전에 각 반복이 실행되기 시작한다는 것을 의미합니다. However, the number of concurrently running iterations has a default limit. 동시에 실행 중인 반복 수가 이 제한에 도달하면 다른 모든 반복이 실행되기를 기다려야 합니다.

기본 제한을 변경하려면 디자이너를 통해 동시성 설정을 변경하면 기본 "for each" 작업 정의의 속성이 추가되거나 업데이트 runtimeConfiguration.concurrency.repetitions 되고 그 반대의 경우도 마찬가지이므로 코드 뷰 편집기 또는 워크플로 디자이너를 사용할 수 있습니다. 이 속성은 병렬로 실행할 수 있는 최대 반복 수를 제어합니다.

Note

디자이너 또는 코드 뷰 편집기를 사용하여 "for each" 작업을 순차적으로 실행하도록 설정하는 경우 코드 뷰 편집기에서 작업의 operationOptions 속성을 Sequential 설정하지 마세요. 그렇지 않으면 유효성 검사 오류가 발생합니다. 자세한 내용은 순차적으로 "for each" 루프 실행을 참조 하세요.

코드 보기에서 편집

기본 "for each" 정의에서 runtimeConfiguration.concurrency.repetitions~1 범위의 값일 수 있는 50 속성을 추가하거나 업데이트합니다.

동시 실행 수를 10번 반복으로 제한하는 예제는 다음과 같습니다.

"For_each" {
   "type": "Foreach",
   "actions": { "<actions-to-run>" },
   "foreach": "<for-each-expression>",
   "runAfter": {},
   "runtimeConfiguration": {
      "concurrency": {
         "repetitions": 10
      }
   }
}

자세한 내용은 런타임 구성 설정을 참조 하세요.

워크플로 디자이너에서 편집

  1. In the For each action, from the upper-right corner, select the ellipses (...) button, and then select Settings.

  2. Under Concurrency Control, set Concurrency Control to On.

  3. 병렬 처리 수준 슬라이더를 원하는 값으로 끌어옵니다. To run your logic app sequentially, drag the slider value to 1.

실행 대기 제한 변경

기본적으로 논리 앱 워크플로 인스턴스는 모두 동시에(동시 또는 병렬로) 실행됩니다. 이 동작은 이전에 활성 상태였던 워크플로 인스턴스의 실행이 완료되기 전에 각 트리거 인스턴스가 발생한다는 것을 의미합니다. However, a default limit exists on the number of concurrently running workflow instances. 동시 실행 수가 이 제한에 도달하면 다른 모든 새 워크플로 인스턴스가 실행되기를 기다려야 합니다. A default limit also exists on the number of waiting workflow instances. 대기 중인 인스턴스 수가 이 제한에 도달하면 Azure Logic Apps는 더 이상 실행할 새 워크플로 인스턴스를 허용하지 않습니다. 요청 및 웹후크 트리거는 429를 반환 합니다. 요청 오류가 너무 많고 되풀이 트리거가 폴링 시도를 건너뛰기 시작합니다.

트리거 동시성에 대한 기본 제한과 대기 중인 실행에 대한 기본 제한을 변경할 수 있습니다. 그러나 이러한 변경은 주로 동시성으로 인한 압력을 완화하기 위해 트리거를 느리게 합니다. 예를 들어 폴링 트리거가 있고 진행 중인 실행으로 인해 대기 중인 실행 큐가 가득 차면 Azure Logic Apps에서 폴링을 중지합니다. 워크플로에서 요청 기반 트리거를 사용하고 대기 중인 실행 큐가 가득 차면 Azure Logic Apps에서 429 오류를 반환하기 시작합니다. Azure Logic Apps가 오류를 발생시키지 않고 트리거를 폴링에서 중지할 수 없고 호출 실행에 실패하지 않고 대기 중인 실행 큐에 이러한 실행을 추가하도록 선택하는 일부 시나리오가 있습니다.

기본 트리거 정의에서 범위가 runtimeConfiguration.concurrency.maximumWaitingRuns 되는 값을 가질 수 있는 속성을 추가합니다 1100.

"<trigger-name>": {
   "type": "<trigger-name>",
   "recurrence": {
      "frequency": "<time-unit>",
      "interval": <number-of-time-units>,
   },
   "runtimeConfiguration": {
      "concurrency": {
         "maximumWaitingRuns": 50
      }
   }
}

자세한 내용은 런타임 구성 설정을 참조 하세요.

인스턴스를 순차적으로 트리거

이전 인스턴스의 실행이 완료된 후에만 각 논리 앱 워크플로 인스턴스를 실행하려면 순차적으로 실행되도록 트리거를 설정합니다. 디자이너를 통해 동시성 설정을 변경하면 기본 트리거 정의의 속성도 추가 또는 업데이트 runtimeConfiguration.concurrency.runs 되고 그 반대의 경우도 마찬가지이므로 코드 뷰 편집기 또는 워크플로 디자이너를 사용할 수 있습니다.

Note

디자이너 또는 코드 뷰 편집기를 사용하여 순차적으로 실행되도록 트리거를 설정하는 경우 코드 뷰 편집기에서 트리거의 operationOptions 속성을 Sequential 설정하지 마세요. 그렇지 않으면 유효성 검사 오류가 발생합니다.

코드 보기에서 편집

트리거 정의에서 이러한 속성 중 하나를 설정하지만 둘 다 설정하지는 않습니다.

속성을 다음으로 runtimeConfiguration.concurrency.runs1설정합니다.

"<trigger-name>": {
   "type": "<trigger-name>",
   "recurrence": {
      "frequency": "<time-unit>",
      "interval": <number-of-time-units>,
   },
   "runtimeConfiguration": {
      "concurrency": {
         "runs": 1
      }
   }
}

-or-

속성을 다음으로 operationOptionsSingleInstance설정합니다.

"<trigger-name>": {
   "type": "<trigger-name>",
   "recurrence": {
      "frequency": "<time-unit>",
      "interval": <number-of-time-units>,
   },
   "operationOptions": "SingleInstance"
}

자세한 내용은 런타임 구성 설정작업 옵션을 참조하세요.

워크플로 디자이너에서 편집

  1. In the trigger's upper-right corner, select the ellipses (...) button, and then select Settings.

  2. Under Concurrency Control, set Limit to On.

  3. 병렬 처리 수준 슬라이더를 숫자1로 끕다.

"for each" 루프를 순차적으로 실행

이전 반복 실행이 완료된 후에만 "for each" 루프 반복을 실행하려면 "for each" 작업을 순차적으로 실행하도록 설정합니다. 디자이너를 통해 작업의 동시성을 변경하면 기본 작업 정의에서 속성을 추가하거나 업데이트 runtimeConfiguration.concurrency.repetitions 하고 그 반대의 경우도 마찬가지이므로 코드 뷰 편집기 또는 워크플로 디자이너를 사용할 수 있습니다.

Note

디자이너 또는 코드 뷰 편집기를 사용하여 "for each" 작업을 순차적으로 실행하도록 설정하는 경우 코드 뷰 편집기에서 작업의 operationOptions 속성을 Sequential 설정하지 마세요. 그렇지 않으면 유효성 검사 오류가 발생합니다.

코드 보기에서 편집

작업 정의에서 다음 속성 중 하나만 설정합니다.

속성을 다음으로 runtimeConfiguration.concurrency.repetitions1설정합니다.

"For_each" {
   "type": "Foreach",
   "actions": { "<actions-to-run>" },
   "foreach": "<for-each-expression>",
   "runAfter": {},
   "runtimeConfiguration": {
      "concurrency": {
         "repetitions": 1
      }
   }
}

-or-

속성을 다음으로 operationOptionsSequential설정합니다.

"For_each" {
   "type": "Foreach",
   "actions": { "<actions-to-run>" },
   "foreach": "<for-each-expression>",
   "runAfter": {},
   "operationOptions": "Sequential"
}

자세한 내용은 런타임 구성 설정작업 옵션을 참조하세요.

워크플로 디자이너에서 편집

  1. In the For each action's upper-right corner, select the ellipses (...) button, and then select Settings.

  2. Under Concurrency Control, set Concurrency Control to On.

  3. 병렬 처리 수준 슬라이더를 숫자1로 끕다.

동기 작업 패턴에서 작업 실행

기본적으로 Azure Logic Apps의 HTTP 작업 및 APIConnection 작업은 표준 비동기 작업 패턴을 따르는 반면 응답 작업은 동기 작업 패턴을 따릅니다. The asynchronous pattern specifies that after an action calls or sends a request to the specified endpoint, service, system, or API, the receiver immediately returns a "202 ACCEPTED" response. 이 코드는 수신기에서 요청을 수락했지만 처리가 완료되지 않았음을 확인합니다. The response can include a ___location header that specifies the URL and a refresh ID that the caller can use to continually poll or check the status for the asynchronous request until the receiver stops processing and returns a "200 OK" success response or other non-202 response. 자세한 내용은 비동기 마이크로서비스 통합에 마이크로서비스 자율성 적용을 참조하세요.

  • In the Logic App Designer, the HTTP action, APIConnection actions, and Response action have the Asynchronous Pattern setting. 이 설정이 사용하도록 설정되면 호출자에서 처리가 완료될 때까지 기다리지 않고 다음 작업으로 이동할 수 있지만 처리가 중지될 때까지 상태를 계속 확인하도록 지정합니다. 이 설정이 사용하지 않도록 설정되면 호출자에서 처리가 완료될 때까지 기다린 후에 다음 작업으로 이동하도록 지정합니다. 이 설정을 찾으려면 다음 단계를 수행합니다.

    1. On the HTTP action's title bar, select the ellipses (...) button, which opens the action's settings.

    2. Find the Asynchronous Pattern setting.

  • 작업의 기본 JSON(JavaScript Object Notation) 정의에서 HTTP 작업 및 APIConnection 작업은 비동기 작업 패턴을 암시적으로 따릅니다.

일부 시나리오에서는 대신 동작이 동기 패턴을 따르도록 할 수 있습니다. 예를 들어 HTTP 작업을 사용하는 경우 다음을 수행할 수 있습니다.

이러한 경우 다음 옵션을 사용하여 작업을 동기적으로 실행할 수 있습니다.

  • 사용 가능한 경우 해당 작업의 폴링 버전을 웹후크 버전으로 바꿉니다.

  • 다음 옵션 중 하나를 수행하여 작업의 비동기 동작을 사용하지 않도록 설정합니다.

Turn off Asynchronous Pattern setting

  1. In the Logic App Designer, on the action's title bar, select the ellipses (...) button, which opens the action's settings.

  2. Find the Asynchronous Pattern setting, turn the setting to Off if enabled, and select Done.

작업의 JSON 정의에서 비동기 패턴을 사용하지 않도록 설정

In the action's underlying JSON definition, add and set the "operationOptions" property to "DisableAsyncPattern" under the action's "inputs" section, for example:

"<some-long-running-action>": {
   "type": "Http",
   "inputs": { "<action-inputs>" },
   "operationOptions": "DisableAsyncPattern",
   "runAfter": {}
}

트리거 및 작업 인증

HTTP 및 HTTPS 엔드포인트는 다양한 종류의 인증을 지원합니다. 이러한 엔드포인트에 액세스하기 위해 아웃바운드 호출 또는 요청을 수행하는 데 사용하는 트리거 또는 작업에 따라 다양한 인증 유형 중에서 선택할 수 있습니다. 자세한 내용은 아웃바운드 호출에 인증 추가를 참조하세요.

Next steps