이 참조는 워크플로 정의 언어에서 설명하고 유효성을 검사하는 논리 앱의 기본 워크플로 정의에서 트리거 및 작업을 식별하는 데 사용되는 일반적인 형식에 대해 설명합니다. 논리 앱에서 사용할 수 있는 특정 커넥터 트리거 및 작업을 찾으려면 커넥터 개요 아래의 목록을 참조하세요.
트리거 개요
모든 워크플로에는 워크플로를 인스턴스화하고 시작하는 호출을 정의하는 트리거가 포함됩니다. 일반 트리거 범주는 다음과 같습니다.
정기적으로 서비스의 엔드포인트를 확인하는 폴링 트리거
엔드포인트에 대한 구독을 만들고 지정된 이벤트가 발생하거나 데이터를 사용할 수 있을 때 엔드포인트가 트리거에 알릴 수 있도록 콜백 URL을 제공하는 푸시 트리거입니다. 그러면 트리거는 발생하기 전에 엔드포인트의 응답을 기다립니다.
트리거에는 다음과 같은 최상위 요소가 있지만 일부는 선택 사항입니다.
"<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 객체 | 트리거의 동작을 정의하는 입력입니다. |
| < time-unit> | String | 트리거가 실행되는 빈도를 설명하는 시간 단위: "Second", "Minute", "Hour", "Day", "Week", "Month" |
| < 시간 단위 수> | 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 | 워크플로를 실행할지 여부를 결정하는 하나 이상의 조건이 포함된 배열입니다. 트리거에만 사용할 수 있습니다. |
| < runtime-config-options> | JSON 객체 | 속성을 설정 runtimeConfiguration 하여 트리거 런타임 동작을 변경할 수 있습니다. 자세한 내용은 런타임 구성 설정을 참조 하세요. |
| < splitOn-expression> | String | 배열을 반환하는 트리거의 경우, 처리를 위해 여러 워크플로 인스턴스로 배열 항목을 분할 또는 분리하는 식을 지정할 수 있습니다. |
| < operation-option> | String |
operationOptions 속성을 설정하여 기본 동작을 변경할 수 있습니다. 자세한 내용은 작업 옵션을 참조하세요. |
트리거 형식 목록
각 트리거 형식에는 트리거의 동작을 정의하는 다른 인터페이스와 입력이 있습니다.
기본 제공 트리거
| 트리거 유형 | Description |
|---|---|
| HTTP | 엔드포인트를 확인하거나 폴링 합니다. 이 엔드포인트는 비동기 패턴을 사용하거나 배열을 202 반환하여 특정 트리거 계약을 준수해야 합니다. |
| HTTPWebhook | 논리 앱에 대한 호출 가능한 엔드포인트를 만들지만 지정된 URL을 호출하여 등록하거나 등록 취소합니다. |
| Recurrence | 정의된 일정에 따라 실행합니다. 이 트리거를 발생시키기 위한 미래의 날짜 및 시간을 설정할 수 있습니다. 빈도에 따라 워크플로를 실행할 시간 및 요일을 지정할 수도 있습니다. |
| Request | 논리 앱에 대한 호출 가능한 엔드포인트를 만들고 "수동" 트리거라고도 합니다. 예를 들어 HTTP 엔드포인트를 사용하여 워크플로 호출, 트리거 또는 중첩을 참조 하세요. |
관리되는 API 트리거
| 트리거 유형 | Description |
|---|---|
| ApiConnection | Microsoft 관리 API 또는 "커넥터"를 사용하여 엔드포인트를 확인하거나 폴링합니다. |
| ApiConnectionWebhook | Microsoft 관리 API 또는 "커넥터"를 호출하여 구독 및 구독을 취소하여 논리 앱 워크플로에 대한 호출 가능한 엔드포인트를 만듭니다. |
트리거 - 자세한 참조
APIConnection 트리거
이 트리거는 엔드포인트에 따라 이 트리거의 매개 변수가 다를 수 있도록 Microsoft 관리 API 또는 "커넥터"를 사용하여 엔드포인트를 확인하거나 폴링합니다. 이 트리거 정의의 많은 섹션은 선택 사항입니다. 트리거의 동작은 섹션이 포함되는지 여부에 따라 달라집니다.
"<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 | 관리되는 API와 통신하기 위한 HTTP 메서드: GET, PUT, POST, PATCH, DELETE |
| path | < api-operation> | String | 호출할 API 작업 |
| recurrence.frequency | < time-unit> | String | 트리거가 발생하는 빈도를 설명하는 시간 단위: 초, 분, 시간, 일, 주, 월 |
| recurrence.interval | < 시간 단위 수> | Integer | 트리거가 다시 실행될 때까지 대기할 시간 단위 수인 빈도에 따라 트리거가 실행되는 빈도를 지정하는 값입니다. 다음은 최소 및 최대 간격입니다. - 월: 1-16개월 - 일: 1-500일 - 시간: 1-12,000시간 - 분: 1-72,000분 - 초: 1-9,999,999초 예를 들어 간격이 6이고 빈도가 Month이면 되풀이는 6개월마다입니다. |
Optional
| Property | Value | Type | Description |
|---|---|---|---|
| retryPolicy | < retry-behavior> | JSON 객체 | 상태 코드 408, 429 및 5XX와 연결 예외가 있는 일시적 오류에 대한 재시도 동작을 사용자 지정합니다. 자세한 내용은 다시 시도 정책을 참조하세요. |
| queries | < query-parameters> | JSON 객체 | API 호출에 포함하려는 쿼리 매개 변수입니다. 예를 들어 개체가 "queries": { "api-version": "2018-01-01" } 호출에 추가 ?api-version=2018-01-01 됩니다. |
| runtimeConfiguration.concurrency.runs | < max-runs> | Integer | 기본적으로 워크플로 인스턴스는 기본 제한까지 동시에(동시에 또는 병렬로) 실행됩니다. 새 <개수> 값을 설정하여 이 제한을 변경하려면 트리거 동시성 변경을 참조하세요. |
| runtimeConfiguration.maximumWaitingRuns | < max-runs-queue> | Integer | 워크플로가 이미 최대 인스턴스 수를 실행하고 있는 경우 새 실행은 기본 제한까지 이 큐에 배치됩니다. 기본 제한을 변경하려면 대기 중인 실행 제한 변경을 참조하세요. 최대 인스턴스 수를 변경하려면 runtimeConfiguration.concurrency.runs 속성의 값을 지정합니다. 참고: 다음을 설정하는 경우 |
| splitOn | < splitOn-expression> | String | 배열을 반환하는 트리거의 경우 이 식은 "for each" 루프를 사용하는 대신 각 배열 항목에 대해 워크플로 인스턴스를 만들고 실행할 수 있도록 사용할 배열을 참조합니다. 예를 들어 이 식은 트리거의 본문 콘텐츠 내에서 반환되는 배열의 항목을 나타냅니다. @triggerbody()?['value'] |
| operationOptions | < operation-option> | String |
operationOptions 속성을 설정하여 기본 동작을 변경할 수 있습니다. 자세한 내용은 작업 옵션을 참조하세요. |
Outputs
| Element | Type | Description |
|---|---|---|
| headers | JSON 객체 | 응답의 헤더입니다. |
| body | JSON 객체 | 응답의 본문 |
| 상태 코드 | 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 트리거
이 트리거는 Microsoft 관리 API를 사용하여 엔드포인트에 구독 요청을 보내고, 엔드포인트가 응답을 보낼 수 있는 콜백 URL 을 제공하고, 엔드포인트가 응답할 때까지 기다립니다. 자세한 내용은 엔드포인트 구독을 참조하세요.
"<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에 대한 연결의 이름입니다. |
| < 본문 내용> | JSON 객체 | 관리되는 API에 페이로드로 전송될 메시지 콘텐츠입니다. |
Optional
| Value | Type | Description |
|---|---|---|
| < retry-behavior> | JSON 객체 | 상태 코드 408, 429 및 5XX와 연결 예외가 있는 일시적 오류에 대한 재시도 동작을 사용자 지정합니다. 자세한 내용은 다시 시도 정책을 참조하세요. |
| < query-parameters> | JSON 객체 | API 호출에 포함할 쿼리 매개 변수 예를 들어 개체가 "queries": { "api-version": "2018-01-01" } 호출에 추가 ?api-version=2018-01-01 됩니다. |
| < max-runs> | Integer | 기본적으로 워크플로 인스턴스는 기본 제한까지 동시에(동시에 또는 병렬로) 실행됩니다. 새 <개수> 값을 설정하여 이 제한을 변경하려면 트리거 동시성 변경을 참조하세요. |
| < max-runs-queue> | Integer | 워크플로에서 속성에 runtimeConfiguration.concurrency.runs 따라 변경할 수 있는 최대 인스턴스 수를 이미 실행 중인 경우 모든 새 실행이 기본 제한까지 이 큐에 배치됩니다. 기본 제한을 변경하려면 대기 중인 실행 제한 변경을 참조하세요. |
| < splitOn-expression> | String | 배열을 반환하는 트리거의 경우 이 식은 "for each" 루프를 사용하는 대신 각 배열 항목에 대해 워크플로 인스턴스를 만들고 실행할 수 있도록 사용할 배열을 참조합니다. 예를 들어 이 식은 트리거의 본문 콘텐츠 내에서 반환되는 배열의 항목을 나타냅니다. @triggerbody()?['value'] |
| < operation-option> | String |
operationOptions 속성을 설정하여 기본 동작을 변경할 수 있습니다. 자세한 내용은 작업 옵션을 참조하세요. |
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 트리거
이 트리거는 지정된 되풀이 일정에 따라 지정된 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-또는-HTTPS-endpoint-URL> | String | 나가는 요청을 보낼 HTTP 또는 HTTPS 엔드포인트 URL입니다. 최대 문자열 크기: 2KB Azure 서비스 또는 리소스의 경우 이 URI 구문에는 리소스 ID와 액세스하려는 리소스에 대한 경로가 포함됩니다. |
frequency |
< time-unit> | String | 트리거가 실행되는 빈도를 설명하는 시간 단위: "Second", "Minute", "Hour", "Day", "Week", "Month" |
interval |
< 시간 단위 수> | Integer | 트리거가 다시 실행될 때까지 대기할 시간 단위 수인 빈도에 따라 트리거가 실행되는 빈도를 지정하는 값입니다. 다음은 최소 및 최대 간격입니다. - 월: 1~16개월 - 일: 1~500일 - 시간: 1~12,000시간 - 분: 1~72,000분 - 초: 1~9,999,999초 예를 들어 간격이 6이고 빈도가 "Month"인 경우 되풀이는 6개월마다입니다. |
Optional
| Property | Value | Type | Description |
|---|---|---|---|
headers |
< 헤더 콘텐츠> | JSON 객체 | 요청에 포함해야 하는 모든 헤더 예를 들어 언어 및 형식을 설정하려면 다음을 수행합니다. "headers": { "Accept-Language": "en-us", "Content-Type": "application/json" } |
queries |
< query-parameters> | JSON 객체 | 요청에 사용해야 하는 모든 쿼리 매개 변수 예를 들어 개체가 "queries": { "api-version": "2018-01-01" } 요청에 추가 ?api-version=2018-01-01 됩니다. |
body |
< 본문 내용> | JSON 객체 | 요청과 함께 페이로드로 보낼 메시지 콘텐츠 |
authentication |
< authentication-type-and-property-values> | JSON 객체 | 요청이 아웃바운드 요청을 인증하는 데 사용하는 인증 모델입니다. 자세한 내용은 아웃바운드 호출에 인증 추가를 참조하세요. Scheduler 외에 authority 속성이 지원됩니다. 지정되지 않은 경우 기본값은 https://management.azure.com/이지만, 다른 값을 사용할 수 있습니다. |
retryPolicy > type |
< retry-behavior> | JSON 객체 | 상태 코드 408, 429 및 5XX와 연결 예외가 있는 일시적 오류에 대한 재시도 동작을 사용자 지정합니다. 자세한 내용은 다시 시도 정책을 참조하세요. |
runs |
< max-runs> | Integer | 기본적으로 워크플로 인스턴스는 기본 제한까지 동시에(동시에 또는 병렬로) 실행됩니다. 새 <개수> 값을 설정하여 이 제한을 변경하려면 트리거 동시성 변경을 참조하세요. |
maximumWaitingRuns |
< max-runs-queue> | Integer | 워크플로에서 속성에 runtimeConfiguration.concurrency.runs 따라 변경할 수 있는 최대 인스턴스 수를 이미 실행 중인 경우 모든 새 실행이 기본 제한까지 이 큐에 배치됩니다. 기본 제한을 변경하려면 대기 중인 실행 제한 변경을 참조하세요. |
operationOptions |
< operation-option> | String |
operationOptions 속성을 설정하여 기본 동작을 변경할 수 있습니다. 자세한 내용은 작업 옵션을 참조하세요. |
Outputs
| Element | Type | Description |
|---|---|---|
headers |
JSON 객체 | 응답의 헤더입니다. |
body |
JSON 객체 | 응답의 본문 |
status code |
Integer | 응답의 상태 코드 |
들어오는 요청에 대한 요구 사항
논리 앱에서 제대로 작동하려면 엔드포인트에서 특정 트리거 패턴 또는 계약을 준수하고, 다음 응답 속성을 인식해야 합니다.
| Property | Required | Description |
|---|---|---|
| 상태 코드 | Yes | "200 OK" 상태 코드가 실행을 시작합니다. 다른 상태 코드는 실행을 시작하지 않습니다. |
| 재시도 후 헤더 | No | 논리 앱에서 엔드포인트를 다시 폴링할 때까지의 시간(초)입니다. |
| 위치 헤더 | No | 다음 폴링 간격에서 호출할 URL입니다. 지정하지 않으면 원래 URL이 사용됩니다. |
다른 요청에 대한 예제 동작
| 상태 코드 | 다음 후 다시 시도 | Behavior |
|---|---|---|
| 200 | {none} | 워크플로를 실행한 다음, 정의된 되풀이 후에 더 많은 데이터를 다시 확인합니다. |
| 200 | 10초 | 워크플로를 실행한 다음, 10초 후에 더 많은 데이터를 다시 확인합니다. |
| 202 | 60초 | 워크플로를 트리거하지 마세요. 다음 시도는 정의된 되풀이에 따라 1분 후에 발생합니다. 정의된 되풀이가 1분 미만이면 재시도 후 헤더가 우선합니다. 그렇지 않으면 정의된 되풀이가 사용됩니다. |
| 400 | {none} | 요청이 잘못되었습니다. 워크플로를 실행하지 마세요.
retryPolicy가 정의되지 않으면 기본 정책이 사용됩니다. 재시도 횟수에 도달한 후 트리거는 정의된 되풀이 후 데이터를 다시 확인합니다. |
| 500 | {none} | 서버 오류이며 워크플로를 실행하지 않습니다.
retryPolicy가 정의되지 않으면 기본 정책이 사용됩니다. 재시도 횟수에 도달한 후 트리거는 정의된 되풀이 후 데이터를 다시 확인합니다. |
HTTPWebhook 트리거
이 트리거를 사용하면 지정된 엔드포인트 URL을 호출하여 구독을 등록할 수 있는 엔드포인트를 만들어 논리 앱을 호출할 수 있습니다. 워크플로에서 이 트리거를 만들면 나가는 요청이 구독 등록을 호출합니다. 이렇게 하면 트리거가 이벤트 수신 대기를 시작할 수 있습니다. 작업으로 인해 이 트리거가 유효하지 않으면 나가는 요청이 자동으로 호출하여 구독을 취소합니다. 자세한 내용은 엔드포인트 구독을 참조하세요.
HTTPWebhook 트리거에 비동기 제한을 지정할 수도 있습니다. 트리거의 동작은 사용하거나 생략하는 섹션에 따라 달라집니다.
"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>"
}
<
과 같은 > 일부 값은 개체와 "subscribe" 개체 모두에 "unsubscribe" 사용할 수 있습니다.
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 |
| < 본문 내용> | String | 구독 또는 취소 요청에 전송할 메시지 콘텐츠입니다. |
| < 인증 유형> | JSON 객체 | 요청이 아웃바운드 요청을 인증하는 데 사용하는 인증 모델입니다. 자세한 내용은 아웃바운드 호출에 인증 추가를 참조하세요. |
| < retry-behavior> | JSON 객체 | 상태 코드 408, 429 및 5XX와 연결 예외가 있는 일시적 오류에 대한 재시도 동작을 사용자 지정합니다. 자세한 내용은 다시 시도 정책을 참조하세요. |
| < max-runs> | Integer | 기본적으로 워크플로 인스턴스는 모두 기본 제한까지 동시에(동시에 또는 병렬로) 실행됩니다. 새 <개수> 값을 설정하여 이 제한을 변경하려면 트리거 동시성 변경을 참조하세요. |
| < max-runs-queue> | Integer | 워크플로에서 속성에 runtimeConfiguration.concurrency.runs 따라 변경할 수 있는 최대 인스턴스 수를 이미 실행 중인 경우 모든 새 실행이 기본 제한까지 이 큐에 배치됩니다. 기본 제한을 변경하려면 대기 중인 실행 제한 변경을 참조하세요. |
| < operation-option> | String |
operationOptions 속성을 설정하여 기본 동작을 변경할 수 있습니다. 자세한 내용은 작업 옵션을 참조하세요. |
Outputs
| Element | Type | Description |
|---|---|---|
| headers | JSON 객체 | 응답의 헤더입니다. |
| body | JSON 객체 | 응답의 본문 |
| 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": {
"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" |
| < 시간 단위 수> | 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"를 지정합니다. 참고: 이 시작 시간은 최대 49년 이후이며, ISO 8601 날짜/시간 사양 을 UTC 날짜/시간 형식에 의거해 따라야 하지만 UTC 오프셋은 없습니다. 표준 시간대를 지정하지 않으면 공백 없이 맨 끝에 문자 "Z"를 추가해야 합니다. 이 “Z”는 해당 항해 시간을 나타냅니다. 단순 일정의 경우 시작 시간은 첫 번째 발생이지만 복잡한 일정의 경우 트리거는 시작 시간보다 더 일찍 발생하지 않습니다. 시작 날짜 및 시간에 대한 자세한 내용은 정기적으로 실행 중인 작업 만들기 및 일정을 참조 하세요. |
| < 표준 시간대> | String | 이 트리거는 UTC 오프셋을 허용하지 않으므로 시작 시간을 지정할 때만 적용됩니다. 적용할 표준 시간대를 지정합니다. |
| < 1시간 이상 표시> | 정수 또는 정수 배열 | "Day" 또는 "Week"를 frequency지정하는 경우 0에서 23까지의 하나 이상의 정수를 쉼표로 구분하여 워크플로를 실행하려는 날짜의 시간으로 지정할 수 있습니다. 예를 들어 “10”, “12” 및 “14”를 지정하면 10 AM, 12 PM 및 2 PM이 시간 표시로 제공됩니다. |
| < 1분 이상 표시> | 정수 또는 정수 배열 | "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 | 기본적으로 워크플로 인스턴스는 모두 기본 제한까지 동시에(동시에 또는 병렬로) 실행됩니다. 새 <개수> 값을 설정하여 이 제한을 변경하려면 트리거 동시성 변경을 참조하세요. |
| < max-runs-queue> | Integer | 워크플로에서 속성에 runtimeConfiguration.concurrency.runs 따라 변경할 수 있는 최대 인스턴스 수를 이미 실행 중인 경우 모든 새 실행이 기본 제한까지 이 큐에 배치됩니다. 기본 제한을 변경하려면 대기 중인 실행 제한 변경을 참조하세요. |
| < operation-option> | String |
operationOptions 속성을 설정하여 기본 동작을 변경할 수 있습니다. 자세한 내용은 작업 옵션을 참조하세요. |
예제 1
이 기본 되풀이 트리거가 매일 실행됩니다.
"Recurrence": {
"type": "Recurrence",
"recurrence": {
"frequency": "Day",
"interval": 1
}
}
예제 2
트리거를 실행하기 위한 시작 날짜 및 시간을 지정할 수 있습니다. 이 되풀이 트리거는 지정된 날짜에 시작하여 매일 발생합니다.
"Recurrence": {
"type": "Recurrence",
"recurrence": {
"frequency": "Day",
"interval": 1,
"startTime": "2017-09-18T00:00:00Z"
}
}
예 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"
}
}
이 트리거에 대한 예제에 대한 자세한 내용은 만들기 및 정기적으로 실행 중인 작업 예약을 참조 하세요.
요청 트리거
이 트리거를 사용하면 들어오는 요청을 수락할 수 있는 엔드포인트를 만들어 논리 앱을 호출할 수 있습니다. 이 트리거의 경우 들어오는 요청에서 트리거가 수신하는 페이로드 또는 입력을 설명하고 유효성을 검사하는 JSON 스키마를 제공합니다. 또한 스키마를 사용하면 워크플로의 이후 작업에서 트리거 속성을 더 쉽게 참조할 수 있습니다.
Note
요청 트리거의 원래 이름은 수동이며 일부 위치에도 계속 나타날 수 있습니다. 이 이름은 트리거를 사용하여 빌드하는 워크플로 패턴의 종류에 대한 일관성을 더 만들기 위해 변경되었습니다.
이 트리거를 호출하려면 워크플로 서비스 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 | 기본적으로 워크플로 인스턴스는 모두 기본 제한까지 동시에(동시에 또는 병렬로) 실행됩니다. 새 <개수> 값을 설정하여 이 제한을 변경하려면 트리거 동시성 변경을 참조하세요. |
| < max-runs-queue> | Integer | 워크플로에서 속성에 runtimeConfiguration.concurrency.runs 따라 변경할 수 있는 최대 인스턴스 수를 이미 실행 중인 경우 모든 새 실행이 기본 제한까지 이 큐에 배치됩니다. 기본 제한을 변경하려면 대기 중인 실행 제한 변경을 참조하세요. |
| < operation-option> | String |
operationOptions 속성을 설정하여 기본 동작을 변경할 수 있습니다. 자세한 내용은 작업 옵션을 참조하세요. |
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"
}
}
}
}
}
}
}
트리거 조건
트리거 및 트리거에 대해서만 워크플로를 실행할지 여부를 결정하는 조건에 대해 하나 이상의 식을 포함하는 배열을 포함할 수 있습니다. 워크플로의 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 각 루프를 사용하는 데 시간이 너무 오래 걸릴 수 있습니다. 처리 속도를 높이기 위해 한 가지 옵션은 병렬 분기를 만드는 것입니다. 또는 트리거가 분리를 지원하는 경우 트리거가 배열 항목을 분할하고 각 배열 항목에 대해 별도의 워크플로 인스턴스를 실행하게 할 수 있습니다. 이 옵션은 예를 들어 폴링 간격 사이에 여러 개의 새 항목을 반환할 수 있는 엔드포인트를 폴링하려는 경우에 유용합니다.
배열을 수락하고 배열을 반환할 수 있는 트리거만 요청, HTTP, Azure Service Bus 또는 Office Outlook 365와 같은 이 기능을 지원합니다. 이러한 트리거의 경우 워크플로 디자이너에서 분할 설정을 켜서 트리거 정의 에 속성을 추가할 splitOn 수 있습니다.
Note
트리거의 Swagger 파일이 배열 splitOn 인 페이로드를 설명하는 경우 속성이 트리거 정의에 자동으로 추가됩니다. 그렇지 않은 경우 트리거는 배열을 수락할 수 있으며, 분리하려는 배열이 포함된 응답 페이로드에 속성을 추가할 수 있습니다.
분리 기능을 사용하기 전에 다음 고려 사항을 검토합니다.
트리거 동시성도 켜져 있으면 제한에 대한 분할 이 크게 줄어듭니다. 항목 수가 이 제한을 초과하면 분할 기능을 사용할 수 없습니다.
분할 기능은 동기 응답 패턴에서 작동하지 않습니다. 워크플로에서 응답 작업을 사용하고 분할 설정이 비동기적으로 실행되면 즉시 응답을 보냅니다
202 ACCEPTED.분할이 단일 워크플로 실행에서 처리할 수 있는 배열 항목 수 에 제한이 있습니다. 자세한 내용은 루프 및 일괄 처리 제한을 참조하세요.
속성을 사용하여
splitOn트리거 정의를 통해 분리를 설정하는 경우 배열 외부에 있는 속성을 직접 참조하거나 액세스할 수 없습니다. 오류를 방지하려면 참조 앞에 연산자를 추가합니다?. 예를 들어 트리거 정의에서 분리 켜기를 참조하세요.
디자이너를 통해 분리 켜기
워크플로 디자이너에서 다음 단계를 수행하여 지원되는 트리거에 대한 분리를 설정합니다.
[Azure Portal]에서 논리 앱 리소스를 엽니다.
디자이너에서 워크플로를 엽니다.
디자이너에서 분리를 지원하는 트리거를 선택하여 트리거 정보 창을 엽니다.
설정 탭의 일반 아래에서 분할 설정에서 설정을 찾은 다음 설정이 켜지지 않은 경우 설정으로 변경합니다.
트리거 정의에서 분리 켜기
일부 트리거는 배열을 처리하지만 분할 설정 은 디자이너를 통해 사용할 수 없습니다. 이러한 트리거의 경우 다음 단계에 따라 트리거 정의에 속성을 추가 splitOn 합니다.
예를 들어 워크플로가 HTTP 트리거를 사용하여 API를 호출하고 다음 응답을 받는다고 가정합니다.
{
"Status": "Succeeded",
"Rows": [
{
"id": 938109380,
"name": "customer-name-one"
},
{
"id": 938109381,
"name": "customer-name-two"
}
]
}
워크플로에 Rows 배열의 콘텐츠만 필요한 경우 다음 예제와 같이 트리거 정의에 속성을 추가하고 설정할 splitOn 수 있습니다.
"HTTP_trigger_debatch": {
"type": "Http",
"inputs": {
"uri": "https://mydomain.com/myAPI",
"method": "GET"
},
"recurrence": {
"frequency": "Second",
"interval": 1
},
"splitOn": "@triggerBody()?.Rows"
}
Note
속성을 사용하는 경우 배열 외부에 splitOn 있는 속성에 직접 액세스하거나 참조할 수 없습니다. 오류를 방지하려면 예제와 ? 같이 연산자를 사용합니다.
워크플로 정의는 속성에서 splitOn 값을 사용하고 @triggerBody().namename 가져올 수도 있습니다. 이러한 값은 "customer-name-one" 첫 번째 워크플로 실행 및 "customer-name-two" 두 번째 워크플로 실행에서 가져옵니다. 이 예제의 경우 트리거 출력은 다음 값과 같습니다.
{
"body": {
"id": 938109380,
"name": "customer-name-one"
}
}
{
"body": {
"id": 938109381,
"name": "customer-name-two"
}
}
작업 개요
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 객체 | 이 현재 작업이 실행되기 위해 먼저 실행되어야 하는 트리거 또는 작업에 대한 이름 및 결과 상태입니다. |
Optional
| Value | Type | Description |
|---|---|---|
| < retry-behavior> | JSON 객체 | 상태 코드 408, 429 및 5XX와 연결 예외가 있는 일시적 오류에 대한 재시도 동작을 사용자 지정합니다. 자세한 내용은 다시 시도 정책을 참조하세요. |
| < runtime-config-options> | JSON 객체 | 일부 작업의 경우 속성을 설정 runtimeConfiguration 하여 런타임에 작업의 동작을 변경할 수 있습니다. 자세한 내용은 런타임 구성 설정을 참조 하세요. |
| < operation-option> | String | 일부 작업의 경우 속성을 설정하여 기본 동작을 operationOptions 변경할 수 있습니다. 자세한 내용은 작업 옵션을 참조하세요. |
작업 유형 목록
다음은 일반적으로 사용되는 몇 가지 작업 유형입니다.
기본 제공 작업 유형(다음 예제 참조)
HTTP 또는 HTTPS 를 통해 엔드포인트를 호출하기 위한 HTTP
요청에 응답하기 위한 응답
JavaScript 코드 조각을 실행하기 위한 JavaScript 코드 실행
Azure Functions 호출을 위한 함수
조인, 작성, 테이블, 선택 등의 데이터 작업 작업 및 다양한 입력에서 데이터를 만들거나 변환하는 기타 작업
다른 논리 앱 워크플로를 호출하기 위한 워크플로
Microsoft에서 관리하는 다양한 커넥터 및 API를 호출하는 ApiConnection 및 ApiConnectionWebHook과 같은 관리되는 API 작업 유형(예: Azure Service Bus, Office 365 Outlook, Power BI, Azure Blob Storage, OneDrive, GitHub 등)
다른 작업을 포함하고 워크플로 실행을 구성하는 데 도움이 되는 If, Foreach, Switch, Scope 및 Until과 같은 워크플로 작업 유형을 제어합니다.
기본 제공 작업
| 작업 유형 | Description |
|---|---|
| Compose | 다양한 형식을 가질 수 있는 입력에서 단일 출력을 만듭니다. |
| JavaScript 코드 실행 | 특정 조건에 맞는 JavaScript 코드 조각을 실행합니다. 코드 요구 사항 및 자세한 내용은 인라인 코드를 사용하여 코드 조각 추가 및 실행을 참조하세요. |
| Function | Azure Function을 호출합니다. |
| HTTP | HTTP 엔드포인트을 호출합니다. |
| Join | 배열의 모든 항목에서 문자열을 만들고 지정된 구분 기호 문자로 해당 항목을 구분합니다. |
| JSON 구문 분석 | JSON 콘텐츠의 속성에서 사용자에게 친숙한 토큰을 만듭니다. 논리 앱에 토큰을 포함하여 해당 속성을 참조할 수 있습니다. |
| Query | 조건 또는 필터를 기반으로 다른 배열의 항목에서 배열을 만듭니다. |
| Response | 들어오는 호출 또는 요청에 대한 응답을 만듭니다. |
| Select | 지정된 맵을 기준으로 다른 배열의 항목을 변형하여 JSON 개체를 포함하는 배열을 만듭니다. |
| Table | 배열에서 CSV 또는 HTML 테이블을 만듭니다. |
| Terminate | 현재 실행 중인 워크플로를 중지합니다. |
| Wait | 지정된 기간 동안 또는 지정된 날짜 및 시간까지 워크플로를 일시중지합니다. |
| Workflow | 워크플로를 다른 워크플로 내에 중첩합니다. |
관리되는 API 작업
| 작업 유형 | Description |
|---|---|
| ApiConnection | Microsoft 관리형 API를 사용하여 HTTP 엔드포인트를 호출합니다. |
| ApiConnectionWebhook | HTTP 웹후크처럼 작동하지만 Microsoft에서 관리하는 API를 사용합니다. |
워크플로 작업 제어
이러한 작업은 워크플로 실행을 제어하고 다른 작업을 포함하는 데 도움이 됩니다. 제어 워크플로 작업 외부에서 해당 컨트롤 워크플로 작업 내에서 작업을 직접 참조할 수 있습니다. 예를 들어 범위 내에 작업이 있는 Http 경우 워크플로의 @body('Http') 어디에서나 식을 참조할 수 있습니다. 그러나 컨트롤 워크플로 작업 내에 있는 작업은 동일한 컨트롤 워크플로 구조에 있는 다른 작업만 "실행"할 수 있습니다.
| 작업 유형 | Description |
|---|---|
| ForEach | 배열의 모든 항목에 대해 루프에서 동일한 작업을 실행합니다. |
| If | 지정된 조건이 true인지 false인지에 따라 작업을 실행합니다. |
| Scope | 작업 집합의 그룹 상태에 따라 작업을 실행합니다. |
| Switch | 식, 개체 또는 토큰의 값이 각 사례에 지정된 값과 일치하는 경우 사례로 구성된 작업을 실행합니다. |
| Until | 지정된 조건이 충족될 때까지 작업을 반복해서 실행합니다. |
작업 - 자세한 참조
APIConnection 작업
이 작업은 Microsoft 관리 API 에 HTTP 요청을 보내고 API 및 매개 변수에 대한 정보와 유효한 연결에 대한 참조가 필요합니다.
"<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 객체 | 이 특정 작업에 적용되는 다른 입력 속성입니다. |
| < retry-behavior> | JSON 객체 | 상태 코드 408, 429 및 5XX와 연결 예외가 있는 일시적 오류에 대한 재시도 동작을 사용자 지정합니다. 자세한 내용은 다시 시도 정책을 참조하세요. |
| < query-parameters> | JSON 객체 | API 호출에 포함하려는 쿼리 매개 변수입니다. 예를 들어 개체가 "queries": { "api-version": "2018-01-01" } 호출에 추가 ?api-version=2018-01-01 됩니다. |
| < other-action-specific-properties> | JSON 객체 | 이 특정 작업에 적용되는 다른 모든 속성 |
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 작업
이 작업은 Microsoft 관리 API를 사용하여 HTTP를 통해 엔드포인트로 구독 요청을 보내고, 엔드포인트가 응답을 보낼 수 있는 콜백 URL 을 제공하고, 엔드포인트가 응답할 때까지 기다립니다. 자세한 내용은 엔드포인트 구독을 참조하세요.
"<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": {}
}
<
과 같은 > 일부 값은 개체와 "subscribe" 개체 모두에 "unsubscribe" 사용할 수 있습니다.
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 |
| < 헤더 콘텐츠> | JSON 객체 | 요청에 보낼 헤더 예를 들어 요청에 언어 및 형식을 설정하려면 다음과 같이 합니다. "headers": { "Accept-Language": "en-us", "Content-Type": "application/json" } |
| < 본문 내용> | JSON 객체 | 요청에 보낼 모든 메시지 콘텐츠 |
| < 인증 유형> | JSON 객체 | 요청이 아웃바운드 요청을 인증하는 데 사용하는 인증 모델입니다. 자세한 내용은 아웃바운드 호출에 인증 추가를 참조하세요. |
| < retry-behavior> | JSON 객체 | 상태 코드 408, 429 및 5XX와 연결 예외가 있는 일시적 오류에 대한 재시도 동작을 사용자 지정합니다. 자세한 내용은 다시 시도 정책을 참조하세요. |
| < query-parameters> | JSON 객체 | API 호출에 포함할 쿼리 매개 변수 예를 들어 개체가 "queries": { "api-version": "2018-01-01" } 호출에 추가 ?api-version=2018-01-01 됩니다. |
| < other-action-specific-input-properties> | JSON 객체 | 이 특정 작업에 적용되는 다른 입력 속성입니다. |
| < other-action-specific-properties> | JSON 객체 | 이 특정 작업에 적용되는 다른 모든 속성 |
HTTP 비동기 제한과 동일한 방식으로 ApiConnectionWebhook 작업에 제한을 지정할 수도 있습니다.
작업 작성
이 작업은 식을 포함하여 여러 입력에서 단일 출력을 만듭니다. 출력 및 입력 둘 다 배열, JSON 개체, XML 및 이진 파일 등 Azure Logic Apps에서 기본적으로 지원하는 어떤 형식도 될 수 있습니다. 그런 후, 다른 작업에서 해당 작업의 출력을 사용할 수 있습니다.
"Compose": {
"type": "Compose",
"inputs": "<inputs-to-compose>",
"runAfter": {}
},
Required
| Value | Type | Description |
|---|---|---|
| < inputs-to-compose> | Any | 단일 출력을 만들기 위한 입력 |
예제 1
이 작업 정의는 abcdefg 후행 공백 및 값 1234과 병합됩니다.
"Compose": {
"type": "Compose",
"inputs": "abcdefg 1234",
"runAfter": {}
},
이 작업이 만드는 출력은 다음과 같습니다.
abcdefg 1234
예제 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 |
|---|---|---|
| < 선행 작업> | 문자열 ARRAY | JSON 형식의 작업 이름을 종속성으로 사용하는 배열입니다. 작업 이름이 공백(" ")이 아닌 밑줄(_)을 사용하는 워크플로 정의에 표시되는 작업 이름을 사용해야 합니다. |
예제 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": {}
}
예제 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": {}
}
함수 작업
이 작업은 이전에 만든 Azure 함수를 호출합니다.
"<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 |
|---|---|---|
| < 헤더 콘텐츠> | JSON 객체 | 통화와 함께 보낼 헤더 예를 들어 요청에 언어 및 형식을 설정하려면 다음과 같이 합니다. "headers": { "Accept-Language": "en-us", "Content-Type": "application/json" } |
| < 본문 내용> | JSON 객체 | 요청에 보낼 모든 메시지 콘텐츠 |
| < query-parameters> | JSON 객체 | API 호출에 포함할 쿼리 매개 변수 예를 들어 개체가 "queries": { "api-version": "2018-01-01" } 호출에 추가 ?api-version=2018-01-01 됩니다. |
| < other-action-specific-input-properties> | JSON 객체 | 이 특정 작업에 적용되는 다른 입력 속성입니다. |
| < other-action-specific-properties> | JSON 객체 | 이 특정 작업에 적용되는 다른 모든 속성 |
논리 앱을 저장하면 Azure Logic Apps는 참조된 함수에 대해 다음 검사를 수행합니다.
워크플로에 함수에 대한 액세스 권한이 있어야 합니다.
워크플로는 표준 HTTP 트리거 또는 일반 JSON 웹후크 트리거만 사용할 수 있습니다.
Azure Logic Apps는 런타임에 사용되는 트리거의 URL을 가져오고 캐시합니다. 그러나 캐시된 URL을 무효화하는 작업이 있으면 런타임에 함수 작업이 실패합니다. 이 문제를 해결하려면 논리 앱이 트리거 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 작업
이 작업은 지정된 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-또는-HTTPS-endpoint-URL> | String | 나가는 요청을 보낼 HTTP 또는 HTTPS 엔드포인트 URL입니다. 최대 문자열 크기: 2KB Azure 서비스 또는 리소스의 경우 이 URI 구문에는 리소스 ID와 액세스하려는 리소스에 대한 경로가 포함됩니다. |
Optional
| Property | Value | Type | Description |
|---|---|---|---|
headers |
< 헤더 콘텐츠> | JSON 객체 | 요청에 포함해야 하는 모든 헤더 예를 들어 언어 및 형식을 설정하려면 다음을 수행합니다. "headers": { "Accept-Language": "en-us", "Content-Type": "application/json" } |
queries |
< query-parameters> | JSON 객체 | 요청에 사용해야 하는 모든 쿼리 매개 변수 예를 들어 개체가 "queries": { "api-version": "2018-01-01" } 호출에 추가 ?api-version=2018-01-01 됩니다. |
body |
< 본문 내용> | JSON 객체 | 요청과 함께 페이로드로 보낼 메시지 콘텐츠 |
authentication |
< authentication-type-and-property-values> | JSON 객체 | 요청이 아웃바운드 요청을 인증하는 데 사용하는 인증 모델입니다. 자세한 내용은 아웃바운드 호출에 인증 추가를 참조하세요. Scheduler 외에 authority 속성이 지원됩니다. 지정되지 않은 경우 기본값은 https://management.azure.com/이지만, 다른 값을 사용할 수 있습니다. |
retryPolicy > type |
< retry-behavior> | JSON 객체 | 상태 코드 408, 429 및 5XX와 연결 예외가 있는 일시적 오류에 대한 재시도 동작을 사용자 지정합니다. 자세한 내용은 다시 시도 정책을 참조하세요. |
| < other-action-specific-input-properties> | < input-property> | JSON 객체 | 이 특정 작업에 적용되는 다른 입력 속성입니다. |
| < other-action-specific-properties> | < property-value> | JSON 객체 | 이 특정 작업에 적용되는 다른 모든 속성 |
Example
이 작업 정의는 지정된 엔드포인트에 요청을 전송하여 최신 뉴스를 가져옵니다.
"HTTP": {
"type": "Http",
"inputs": {
"method": "GET",
"uri": "https://mynews.example.com/latest"
}
}
조인 작업
이 작업은 배열의 모든 항목에서 문자열을 만들고 지정된 구분 기호 문자로 해당 항목을 구분합니다.
"Join": {
"type": "Join",
"inputs": {
"from": <array>,
"joinWith": "<delimiter>"
},
"runAfter": {}
}
Required
| Value | Type | Description |
|---|---|---|
| < 배열> | Array | 원본 항목을 제공하는 배열 또는 식입니다. 식을 지정하는 경우 해당 식을 큰따옴표로 묶습니다. |
| < 구분 기호> | 단일 문자 문자열 | 문자열의 각 항목을 구분하는 문자입니다. |
Example
이 정수 배열을 포함하는 이전에 만든 "myIntegerArray" 변수가 있다고 가정해 보겠습니다.
[1,2,3,4]
이 작업 정의는 식의 함수를 사용하여 variables() 변수에서 값을 가져오고 쉼표로 구분되는 값으로 이 문자열을 만듭니다. "1,2,3,4"
"Join": {
"type": "Join",
"inputs": {
"from": "@variables('myIntegerArray')",
"joinWith": ","
},
"runAfter": {}
}
JSON 구문 분석 작업
이 작업은 JSON 콘텐츠의 속성에서 사용자에게 친숙한 필드 또는 토큰 을 만듭니다. 그런 다음 토큰을 대신 사용하여 논리 앱에서 이러한 속성에 액세스할 수 있습니다. 예를 들어 Azure Service Bus 및 Azure Cosmos DB와 같은 서비스의 JSON 출력을 사용하려는 경우 해당 출력의 데이터를 보다 쉽게 참조할 수 있도록 논리 앱에 이 작업을 포함할 수 있습니다.
"Parse_JSON": {
"type": "ParseJson",
"inputs": {
"content": "<JSON-source>",
"schema": { "<JSON-schema>" }
},
"runAfter": {}
},
Required
| Value | Type | Description |
|---|---|---|
| < JSON 원본> | JSON 객체 | 구문 분석하려는 JSON 콘텐츠 |
| < JSON 스키마> | JSON 객체 | 기본 작업이 원본 JSON 콘텐츠를 구문 분석하는 데 사용하는 기본 JSON 콘텐츠를 설명하는 JSON 스키마입니다. 팁: 워크플로 디자이너에서 스키마를 제공하거나 샘플 페이로드를 제공하여 작업이 스키마를 생성할 수 있도록 할 수 있습니다. |
Example
이 작업 정의는 워크플로에서 사용할 수 있지만 JSON 구문 분석 작업 다음에 실행되는 작업에서만 사용할 수 있는 이러한 토큰을 만듭니다.
FirstName, LastName 및 Email
"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"
}
}
}
}
}
쿼리 작업
이 작업은 지정된 조건 또는 필터를 기반으로 다른 배열의 항목에서 배열을 만듭니다.
"Filter_array": {
"type": "Query",
"inputs": {
"from": <array>,
"where": "<condition-or-filter>"
},
"runAfter": {}
}
Required
| Value | Type | Description |
|---|---|---|
| < 배열> | Array | 원본 항목을 제공하는 배열 또는 식입니다. 식을 지정하는 경우 해당 식을 큰따옴표로 묶습니다. |
| < condition-or-filter> | String | 원본 배열의 항목을 필터링하는 데 사용되는 조건 참고: 조건을 충족하는 값이 없으면 작업은 빈 배열을 만듭니다. |
Example
이 작업 정의는 지정된 값(2)보다 더 큰 값을 갖는 배열을 만듭니다.
"Filter_array": {
"type": "Query",
"inputs": {
"from": [ 1, 3, 0, 5, 4, 2 ],
"where": "@greater(item(), 2)"
}
}
응답 작업
이 작업은 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 객체 | 응답에 포함할 하나 이상의 헤더 |
| < 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
다른 작업과 달리 응답 작업에는 특별한 제한이 있습니다.
워크플로가 HTTP 요청 트리거로 시작하는 경우에만 워크플로가 응답 작업을 사용할 수 있습니다. 즉, 워크플로가 HTTP 요청에 의해 트리거되어야 합니다.
워크플로는 Foreach 루프, Until 루프(순차 루프 및 병렬 분기 포함) 내부를 제외한 모든 위치에서 응답 작업을 사용할 수 있습니다.
원래 요청은 응답 작업에 필요한 모든 작업이 HTTP 제한 시간 내에 완료된 경우에만 워크플로의 응답을 가져옵니다.
그러나 워크플로가 다른 논리 앱을 중첩된 워크플로로 호출할 경우, 중첩된 워크플로가 완료되기 전에 얼마나 오랜 시간이 경과되는지에 관계없이 부모 워크플로는 중첩된 워크플로가 완료될 때까지 기다립니다.
워크플로에서 응답 작업 및 동기 응답 패턴을 사용하는 경우 해당 명령이 여러 실행을 만들기 때문에 워크플로는 트리거 정의에서 splitOn 명령을 사용할 수 없습니다. PUT 메서드가 사용되는 경우 이 경우를 확인하고 true이면 "잘못된 요청" 응답을 반환합니다.
그렇지 않은 경우 워크플로에서 splitOn 명령 및 응답 작업을 사용하는 경우 워크플로는 비동기적으로 실행되고 즉시 "202 ACCEPTED" 응답을 반환합니다.
워크플로의 실행이 응답 작업에 도달하지만 들어오는 요청이 이미 응답을 받으면 충돌로 인해 응답 작업이 "실패"로 표시됩니다. 따라서 논리 앱 실행도 "실패" 상태로 표시됩니다.
작업 선택
이 작업은 지정된 맵을 기준으로 다른 배열의 항목을 변형하여 JSON 개체를 포함하는 배열을 만듭니다. 출력 배열과 원본 배열은 항상 동일한 수의 항목을 갖습니다. 출력 배열의 개체 수는 변경할 수 없지만 해당 개체에서 속성 및 해당 값을 추가하거나 제거할 수 있습니다. 이 속성은 select 원본 배열의 항목을 변환하기 위한 맵을 정의하는 하나 이상의 키-값 쌍을 지정합니다. 키-값 쌍은 출력 배열의 모든 개체에서 속성과 해당 값을 나타냅니다.
"Select": {
"type": "Select",
"inputs": {
"from": <array>,
"select": {
"<key-name>": "<expression>",
"<key-name>": "<expression>"
}
},
"runAfter": {}
},
Required
| Value | Type | Description |
|---|---|---|
| < 배열> | Array | 원본 항목을 제공하는 배열 또는 식입니다. 식을 큰따옴표로 묶는지 확인합니다. 참고: 원본 배열이 비어 있으면 작업은 빈 배열을 만듭니다. |
| < key-name> | String |
<의 결과에 할당된 속성 이름입니다.> 출력 배열의 모든 개체에 새 속성을 추가하려면 해당 속성의 < 속성 > 값에 대한 < 제공합니다>. 배열의 모든 개체에서 속성을 제거하려면 해당 속성의 <키 이름을> 생략합니다. |
| < 식> | String | 원본 배열의 항목을 변환하고 결과를 <에 할당하는 식입니다.> |
선택 작업은 배열을 출력으로 만들므로 이 출력을 사용하려는 모든 작업은 배열을 수락하거나 소비자 작업이 허용하는 형식으로 배열을 변환해야 합니다. 예를 들어 출력 배열을 문자열로 변환하려면 해당 배열을 Compose 작업에 전달한 다음 다른 작업의 Compose 작업에서 출력을 참조할 수 있습니다.
Example
이 작업 정의는 정수 배열에서 JSON 개체 배열을 만듭니다. 이 작업은 원본 배열을 반복하고 식을 사용하여 @item() 각 정수 값을 가져오며 각 JSON 개체의 "number" 속성에 각 값을 할당합니다.
"Select": {
"type": "Select",
"inputs": {
"from": [ 1, 2, 3 ],
"select": {
"number": "@item()"
}
},
"runAfter": {}
},
이 작업이 만드는 배열은 다음과 같습니다.
[ { "number": 1 }, { "number": 2 }, { "number": 3 } ]
다른 작업에서 이 배열 출력을 사용하려면 이 출력을 Compose 작업에 전달합니다.
"Compose": {
"type": "Compose",
"inputs": "@body('Select')",
"runAfter": {
"Select": [ "Succeeded" ]
}
},
그런 다음 다른 작업(예: Office 365 Outlook - 전자 메일 보내기 작업)에서 작성 작업의 출력을 사용할 수 있습니다.
"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" ]
}
},
테이블 작업
이 작업은 배열에서 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 또는 HTML> | String | 만들려는 테이블의 형식입니다. |
| < 배열> | Array | 테이블의 원본 항목을 제공하는 배열 또는 식입니다. 참고: 원본 배열이 비어 있으면 작업은 빈 테이블을 만듭니다. |
Optional
열 머리글 및 값을 지정하거나 사용자 지정하려면 배열을 columns 사용합니다. 쌍의 헤더 이름이 같으면 header-value 해당 값이 해당 헤더 이름 아래의 동일한 열에 표시됩니다. 그렇지 않으면 각 고유 헤더는 고유한 열을 정의합니다.
| Value | Type | Description |
|---|---|---|
| < column-name> | String | 열의 헤더 이름 |
| < column-value> | Any | 해당 열의 값 |
예제 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
예제 2
이 작업 정의는 "myItemArray" 변수에서 HTML 테이블을 만듭니다. 속성에서 from 사용하는 식은 함수를 사용하여 "myItemArray"에서 배열을 variables() 가져옵니다.
"Create_HTML_table": {
"type": "Table",
"inputs": {
"format": "HTML",
"from": "@variables('myItemArray')"
},
"runAfter": {}
}
이 작업이 만드는 HTML 테이블은 다음과 같습니다.
| ID | Product_Name |
|---|---|
| 0 | Apples |
| 1 | Oranges |
예 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_ID | Description |
|---|---|
| 0 | 유기농 사과 |
| 1 | 유기농 오렌지 |
작업 종료
이 작업은 워크플로 인스턴스에 대한 실행을 중지하고, 진행 중인 작업을 취소하고, 나머지 작업을 건너뛰고, 지정된 상태를 반환합니다. 예를 들어 논리 앱이 오류 상태에서 완전히 종료되어야 하는 경우 Terminate 작업을 사용할 수 있습니다. 이 작업은 이미 완료된 작업에 영향을 주지 않으며 순차 루프를 포함하여 Foreach 및 Until 루프 내에 나타날 수 없습니다.
"Terminate": {
"type": "Terminate",
"inputs": {
"runStatus": "<status>",
"runError": {
"code": "<error-code-or-name>",
"message": "<error-message>"
}
},
"runAfter": {}
}
Required
| Value | Type | Description |
|---|---|---|
| < 상태> | 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": {}
}
대기 작업
이 작업은 지정된 간격 또는 지정된 시간까지 워크플로 실행을 일시 중지하지만 둘 다 일시 중지하지는 않습니다.
지정된 간격
"Delay": {
"type": "Wait",
"inputs": {
"interval": {
"count": <number-of-units>,
"unit": "<interval>"
}
},
"runAfter": {}
},
지정된 시간
"Delay_until": {
"type": "Wait",
"inputs": {
"until": {
"timestamp": "<date-time-stamp>"
}
},
"runAfter": {}
},
Required
| Value | Type | Description |
|---|---|---|
| < 단위 수> | Integer | 지연 작업의 경우 대기할 단위 수입니다. |
| < 간격> | String | 지연 작업의 경우 대기 간격: "Second", "Minute", "Hour", "Day", "Week", "Month" |
| < date-time-stamp> | String | Delay Until 작업의 경우 실행을 다시 시작할 날짜 및 시간입니다. 이 값은 UTC 날짜 시간 형식을 사용해야 합니다. |
예제 1
이 작업 정의는 워크플로를 15분 동안 일시 중지합니다.
"Delay": {
"type": "Wait",
"inputs": {
"interval": {
"count": 15,
"unit": "Minute"
}
},
"runAfter": {}
},
예제 2
이 작업 정의는 지정된 시간까지 워크플로를 일시 중지합니다.
"Delay_until": {
"type": "Wait",
"inputs": {
"until": {
"timestamp": "2017-10-01T00:00:00Z"
}
},
"runAfter": {}
},
워크플로 작업
이 작업은 이전에 만든 다른 논리 앱을 호출합니다. 즉, 다른 논리 앱 워크플로를 포함하고 다시 사용할 수 있습니다. 자식 논리 앱이 응답을 반환하는 경우 중첩된 논리 앱을 따르는 작업에서 자식 또는 중첩 논리 앱의 출력을 사용할 수도 있습니다.
Azure Logic Apps는 호출하려는 트리거에 대한 액세스를 확인하므로 해당 트리거에 액세스할 수 있는지 확인합니다. 또한 중첩된 논리 앱은 다음 조건을 충족해야 합니다.
부모 논리 앱과 동일한 Azure 구독
부모 논리 앱에서 중첩된 논리 앱의 출력을 사용하려면 중첩된 논리 앱에 응답 작업이 있어야 합니다.
"<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 |
|---|---|---|
| < 헤더 콘텐츠> | JSON 객체 | 통화와 함께 보낼 헤더 |
| < 본문 내용> | JSON 객체 | 통화와 함께 보낼 모든 메시지 콘텐츠 |
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 작업
이 반복 작업은 배열을 반복하고 각 배열 항목에 대해 작업을 수행합니다. 기본적으로 "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 객체 | 실행되는 작업의 정의 |
| < for-each-expression> | String | 지정된 배열의 각 항목을 참조하는 식입니다. |
Optional
| Value | Type | Description |
|---|---|---|
| < 카운트> | Integer | 기본적으로 "for each" 루프 반복은 기본 제한까지 동시에(동시 또는 병렬로) 실행됩니다. 새 <개수> 값을 설정하여 이 제한을 변경하려면 "for each" 루프 동시성 변경을 참조하세요. |
| < operation-option> | String | 병렬이 아닌 "for each" 루프를 순차적으로 실행하려면 <을 > 둘 다로 설정하거나 Sequential<로 >설정합니다1. 자세한 내용은 순차적으로 "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": {}
}
트리거에서 출력으로 전달되는 배열만 지정하기 위해 이 식은 트리거 본문에서 < 배열을 가져옵니다>. 배열이 없는 경우 오류를 방지하기 위해 식은 연산자를 ? 사용합니다.
@triggerBody()?['<array-name>']
If 작업
조건문인 이 작업은 조건을 나타내는 식을 평가하고 조건이 true인지 false인지에 따라 다른 분기를 실행합니다. 조건이 true이면 해당 조건은 “Succeeded” 상태로 표시됩니다. 조건문을 만드는 방법을 알아봅니 다.
"Condition": {
"type": "If",
"expression": { "<condition>" },
"actions": {
"<action-1>": { "<action-definition>" }
},
"else": {
"actions": {
"<action-2>": { "<action-definition" }
}
},
"runAfter": {}
}
| Value | Type | Description |
|---|---|---|
| < 조건> | JSON 객체 | 계산할 식이 될 수 있는 조건 |
| < action-1> | JSON 객체 | < true로 평가되면 실행할 > 작업입니다. |
| < 작업 정의> | JSON 객체 | 작업에 대한 정의 |
| < action-2> | JSON 객체 | < 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('<'>).output.value, parameters('<threshold>'))" | 비교 함수의 경우 작업의 출력 < 이 임계값>을 초과하는 경우에만 <이 > 실행됩니다. |
| "expression": "@or(greater(actions('<'>).output.value, parameters('<threshold>')), less(actions('<same-action>').output.value, 100)" | 논리 함수 및 중첩된 부울 식을 만드는 경우 동작의 < 출력이 임계값>을 초과 < 하거나 100 미만일 때 동작>이 실행됩니다. |
| "expression": "@equals(length(actions('<'>).outputs.errors), 0)" | 배열 함수를 사용하여 배열에 항목이 있는지 여부를 확인할 수 있습니다. 이 작업은 errors 배열이 비어 있을 때 실행됩니다. |
범위 작업
이 작업은 논리적으로 작업을 범위로 그룹화하여 해당 범위의 작업이 실행을 완료한 후 자체 상태를 가져옵니다. 그런 후에는 범위의 상태를 사용하여 다른 작업의 실행 여부를 확인할 수 있습니다. 범위를 만드는 방법을 알아봅니 다.
"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 객체 | 범위 내에서 실행되는 하나 이상의 작업 |
| < action-inputs> | JSON 객체 | 각 작업에 대한 입력 |
스위치 작업
switch 문이라고도 하는 이 작업은 다른 작업을 사례로 구성하고, 기본 사례가 있는 경우를 제외하고 각 사례에 값을 할당합니다. 워크플로가 실행될 때 Switch 작업은 식, 개체 또는 토큰의 값을 각 사례에 대해 지정된 값과 비교합니다. Switch 작업에서 일치하는 사례를 찾으면 워크플로는 해당 사례에 대한 작업만 실행합니다. Switch 작업이 실행 될 때마다 일치하는 사례가 하나만 있거나 일치하는 항목이 없습니다. 일치하는 항목이 없으면 Switch 작업은 기본 작업을 실행합니다. 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 | 일치하는 사례에 대해 실행할 작업의 이름입니다. |
| < 작업 정의> | JSON 객체 | 일치하는 사례에 대해 실행할 작업에 대한 정의입니다. |
| < matching-value> | Varies | 평가된 결과와 비교할 값입니다. |
Optional
| Value | Type | Description |
|---|---|---|
| < default-action-name> | String | 일치하는 사례가 없을 때 실행할 기본 동작의 이름입니다. |
| < default-action-definition> | JSON 객체 | 일치하는 사례가 없는 경우에 실행할 작업에 대한 정의입니다. |
Example
이 작업 정의는 승인 요청 이메일에 응답하는 사람이 "승인" 옵션 또는 "거부" 옵션을 선택했는지 여부를 평가합니다. 이 선택에 따라 Switch 작업은 일치하는 사례에 대한 작업을 실행합니다. 이 작업은 응답자에게 다른 이메일을 보내지만 각 사례마다 다른 표현을 사용합니다.
"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 | 실행할 작업에 대한 입력입니다. |
| < 조건> | String | 루프의 모든 작업이 실행 완료된 후에 평가할 조건 또는 식입니다. |
| < 루프 개수> | Integer | 작업이 실행할 수 있는 가장 많은 루프 수에 대한 제한입니다. 기본 제한 및 최대 제한에 대한 자세한 내용은 Azure Logic Apps에 대한 제한 및 구성을 참조 하세요. |
| < 루프 시간 제한> | String | 루프가 실행될 수 있는 가장 긴 시간의 제한입니다. 기본값 timeout 은 PT1H필수 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": {}
}
웹후크 및 구독
웹후크 기반 트리거 및 작업은 엔드포인트을 주기적으로 검사하지 않지만, 대신 해당 엔드포인트의 특정 이벤트 또는 데이터를 기다립니다. 이러한 트리거 및 작업은 엔드포인트가 응답을 보낼 수 있는 콜백 URL을 제공하여 엔드포인트를 구독합니다.
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 | 동시에 또는 병렬로 실행할 수 있는 워크플로 인스턴스 수에 대한 기본 제한을 변경합니다. 이 값을 조정하면 백 엔드 시스템이 수신하는 요청 수를 제한하는 데 도움이 될 수 있습니다. 속성을 설정 하는 runs 것과 동일한 방식으로 작동 하도록 1 속성을 설정 operationOptions 합니다 SingleInstance. 두 속성 중 하나만 설정할 수 있습니다. 기본 제한을 변경하려면 트리거 동시성 변경 또는 트리거 인스턴스를 순차적으로 참조하세요. |
모든 트리거 |
runtimeConfiguration.concurrency.maximumWaitingRuns |
Integer | 논리 앱이 최대 동시 인스턴스를 이미 실행 중일 때 실행될 때까지 기다려야 하는 워크플로 인스턴스 수에 대한 기본 제한을 변경합니다. 기본 제한을 변경하려면 대기 중인 실행 제한 변경을 참조하세요. |
모든 트리거 |
runtimeConfiguration.concurrency.repetitions |
Integer | 동시에 또는 병렬로 실행할 수 있는 "for each" 루프 반복 수에 대한 기본 제한을 변경합니다. 속성을 설정 하는 repetitions 것과 동일한 방식으로 작동 하도록 1 속성을 설정 operationOptions 합니다 SingleInstance. 두 속성 중 하나만 설정할 수 있습니다. 기본 제한을 변경하려면 "for each" 동시성 변경 또는 "for each" 루프를 순차적으로 실행하세요. |
Action: Foreach |
runtimeConfiguration.paginationPolicy.minimumItemCount |
Integer | 페이지 매김을 지원하고 사용하도록 설정한 특정 작업의 경우 이 값은 검색할 결과의 최소 수를 지정합니다. 페이지 매김을 설정하려면 페이지 매김을 사용하여 대량 데이터, 항목 또는 결과 가져오기를 참조 하세요. |
작업: 다양 |
runtimeConfiguration.secureData.properties |
Array | 많은 트리거 및 작업에서 이러한 설정은 논리 앱의 실행 기록에서 입력, 출력 또는 둘 다를 숨깁니다. 이 데이터를 보호하는 방법에 대한 자세한 내용은 실행 기록에서 입력 및 출력 숨기기를 참조하세요. |
대부분의 트리거 및 작업 |
runtimeConfiguration.staticResult |
JSON 객체 |
정적 결과 설정을 지원하고 설정하는 작업의 경우 개체에는 다음과 같은 특성이 staticResult 있습니다.- name논리 앱 워크플로의 특성에 있는 특성 내부에 staticResults 나타나는 현재 작업의 정적 결과 정의 이름을 참조하는 입니다 definition . 자세한 내용은 정적 결과 - 워크플로 정의 언어에 대한 스키마 참조를 참조 하세요. - staticResultOptions정적 결과가 현재 작업에 대한 것인지 여부를 지정하는 입니다 Enabled . 정적 결과를 설정하려면 정적 결과를 설정하여 모의 데이터로 논리 앱 테스트를 참조하세요. |
작업: 다양 |
작업 옵션
트리거 또는 작업 정의에서 속성을 사용하여 트리거 및 작업에 대한 기본 동작을 operationOptions 변경할 수 있습니다.
| 작업 옵션 | Type | Description | 트리거 또는 작업 |
|---|---|---|---|
DisableAsyncPattern |
String | 비동기식이 아닌 동기적으로 HTTP 기반 작업을 실행합니다. 이 옵션을 설정하려면 동기적으로 작업 실행을 참조 하세요. |
Actions: ApiConnection, HTTP, Response |
IncludeAuthorizationHeadersInOutputs |
String | Microsoft Entra ID를 사용하여 OAuth가 요청 기반 트리거 엔드포인트에 대한 인바운드 호출에 대한 액세스 권한을 부여할 수 있도록 하는 논리 앱의 경우 트리거 출력에 OAuth 액세스 토큰의 헤더를 포함합니다Authorization. 자세한 내용은 요청 트리거 출력에 'Authorization' 헤더 포함을 참조하세요. |
Triggers: Request, HTTP 웹후크 |
Sequential |
String | "for each" 루프 반복을 동시에 실행하는 대신 한 번에 하나씩 실행합니다. 이 옵션은 runtimeConfiguration.concurrency.repetitions 속성을 1로 설정할 때와 동일하게 작동합니다. 두 속성 중 하나만 설정할 수 있습니다. 이 옵션을 설정하려면 순차적으로 "for each" 루프 실행을 참조 하세요. |
Action: Foreach |
SingleInstance |
String | 각 논리 앱 인스턴스에 대한 트리거를 순차적으로 실행하고, 다음 논리 앱 인스턴스를 트리거하기 전에 이전에 활성 실행이 완료될 때까지 기다립니다. 이 옵션은 runtimeConfiguration.concurrency.runs 속성을 1로 설정할 때와 동일하게 작동합니다. 두 속성 중 하나만 설정할 수 있습니다. 이 옵션을 설정하려면 인스턴스를 순차적으로 트리거를 참조하세요. |
모든 트리거 |
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 웹후크 |
트리거 동시성 변경경
기본적으로 논리 앱 워크플로 인스턴스는 모두 동시에(동시 또는 병렬로) 실행됩니다. 이 동작은 이전에 활성 상태였던 워크플로 인스턴스의 실행이 완료되기 전에 각 트리거 인스턴스가 발생한다는 것을 의미합니다. 그러나 동시에 실행 중인 인스턴스의 수는 기본 제한입니다. 동시에 실행되는 워크플로 인스턴스의 수가 이 제한에 도달하면 다른 새 인스턴스가 실행될 때까지 기다려야 합니다. 이 제한은 백 엔드 시스템에서 수신하는 요청 수를 제한하는 데 도움이 됩니다.
트리거의 동시성 제어를 켜면 트리거 인스턴스가 기본 제한까지 병렬로 실행됩니다. 이 기본 동시성 제한을 변경하려면 디자이너를 통해 동시성 설정을 변경하면 기본 트리거 정의에서 속성을 추가하거나 업데이트 runtimeConfiguration.concurrency.runs 하고 그 반대의 경우도 마찬가지이므로 코드 뷰 편집기 또는 워크플로 디자이너를 사용할 수 있습니다. 이 속성은 병렬로 실행할 수 있는 새 워크플로 인스턴스의 최대 수를 제어합니다.
트리거에서 동시성을 사용하도록 설정하기 전에 다음 고려 사항을 검토합니다.
동시성 제어를 사용하도록 설정한 후에는 동시성을 사용하지 않도록 설정할 수 없습니다.
최대 동시 트리거 실행 수가 최대 병렬 처리 정도에 도달하면 후속 트리거 실행에서 제한 또는 "429 - 너무 많은 요청" 오류가 발생할 수 있습니다. 429 오류를 처리하는 재시도 정책을 설정하는 경우 트리거에서 새 트리거 요청 처리에 긴 지연을 초래하는 재시도 및 제한 동작의 주기가 발생할 수 있습니다.
동시성을 사용하도록 설정하면 배열을 분리하기 위해 제한에 대한 분할이 크게 줄어듭니다. 항목 수가 이 제한을 초과하면 분할 기능을 사용할 수 없습니다.
동시성이 사용하도록 설정되면 장기 실행 논리 앱 인스턴스로 인해 새 논리 앱 인스턴스가 대기 중 상태로 전환될 수 있습니다. 이 상태는 Azure Logic Apps가 새 인스턴스를 만들지 못하게 하며 동시 실행 수가 지정된 최대 동시 실행 수보다 작은 경우에도 발생합니다.
이 상태를 중단하려면 여전히 실행 중인 초기 인스턴스를 취소합니다.
논리 앱 메뉴에서 개요를 선택합니다.
실행 기록 섹션에서 계속 실행 중인 가장 빠른 인스턴스를 선택합니다. 예를 들면 다음과 같습니다.
Tip
여전히 실행 중인 인스턴스만 보려면 모두 목록을 열고 실행을 선택합니다.
논리 앱 실행에서 실행 취소를 선택합니다.
이 가능성을 해결하려면 이러한 실행을 보류할 수 있는 모든 작업에 시간 제한을 추가합니다. 코드 편집기에서 작업하는 경우 비동기 기간 변경을 참조하세요. 그렇지 않은 경우 디자이너를 사용하는 경우 다음 단계를 수행합니다.
논리 앱 워크플로에서 시간 제한을 추가할 작업을 선택합니다. 작업의 오른쪽 위 모서리에서 줄임표(...) 단추를 선택한 다음 설정을 선택합니다.
시간 제한에서 ISO 8601 형식으로 시간 제한 기간을 지정합니다.
논리 앱을 순차적으로 실행하려면 코드 뷰 편집기 또는 디자이너를
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로 끌어옵니다.
"for each" 동시성 변경
기본적으로 "for each" 루프 반복은 모두 동시에(동시 또는 병렬로) 실행됩니다. 이 동작은 이전 반복 실행이 완료되기 전에 각 반복이 실행되기 시작한다는 것을 의미합니다. 그러나 동시에 실행 중인 반복의 수는 기본 제한입니다. 동시에 실행 중인 반복 수가 이 제한에 도달하면 다른 모든 반복이 실행되기를 기다려야 합니다.
기본 제한을 변경하려면 디자이너를 통해 동시성 설정을 변경하면 기본 "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
}
}
}
자세한 내용은 런타임 구성 설정을 참조 하세요.
워크플로 디자이너에서 편집
For 각 작업의 오른쪽 위 모서리에서 줄임표(...) 단추를 선택한 다음 설정을 선택합니다.
동시성 제어에서 동시성 제어를 켜기로 설정합니다.
병렬 처리 수준 슬라이더를 원하는 값으로 끌어옵니다. 논리 앱을 순차적으로 실행하려면 슬라이더 값을 1로 끌어옵니다.
실행 대기 제한 변경
기본적으로 논리 앱 워크플로 인스턴스는 모두 동시에(동시 또는 병렬로) 실행됩니다. 이 동작은 이전에 활성 상태였던 워크플로 인스턴스의 실행이 완료되기 전에 각 트리거 인스턴스가 발생한다는 것을 의미합니다. 그러나 워크플로 인스턴스를 동시에 실행하는 수에는 기본 제한이 있습니다. 동시 실행 수가 이 제한에 도달하면 다른 모든 새 워크플로 인스턴스가 실행되기를 기다려야 합니다. 대기 중인 워크플로 인스턴스 수에도 기본 제한이 있습니다. 대기 중인 인스턴스 수가 이 제한에 도달하면 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로 끕다.
"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로 끕다.
동기 작업 패턴에서 작업 실행
기본적으로 Azure Logic Apps의 HTTP 작업 및 APIConnection 작업은 표준 비동기 작업 패턴을 따르는 반면 응답 작업은 동기 작업 패턴을 따릅니다. 비동기 패턴은 동작이 지정된 엔드포인트, 서비스, 시스템 또는 API에 요청을 호출하거나 보낸 후 수신자가 즉시 "202 ACCEPTED" 응답을 반환하도록 지정합니다. 이 코드는 수신기에서 요청을 수락했지만 처리가 완료되지 않았음을 확인합니다. 응답에는 수신자가 처리를 중지하고 location 성공 응답 또는 기타 비 202 응답을 반환할 때까지 호출자가 비동기 요청의 상태를 지속적으로 폴링하거나 확인하는 데 사용할 수 있는 URL 및 새로 고침 ID를 지정하는 헤더가 포함될 수 있습니다. 자세한 내용은 비동기 마이크로서비스 통합에 마이크로서비스 자율성 적용을 참조하세요.
논리 앱 디자이너에서 HTTP 작업, APIConnection 작업 및 응답 작업에는 비동기 패턴 설정이 있습니다. 이 설정이 사용하도록 설정되면 호출자에서 처리가 완료될 때까지 기다리지 않고 다음 작업으로 이동할 수 있지만 처리가 중지될 때까지 상태를 계속 확인하도록 지정합니다. 이 설정이 사용하지 않도록 설정되면 호출자에서 처리가 완료될 때까지 기다린 후에 다음 작업으로 이동하도록 지정합니다. 이 설정을 찾으려면 다음 단계를 수행합니다.
HTTP 작업의 제목 표시줄에서 줄임표(...) 단추를 선택하여 작업의 설정을 엽니다.
비동기 패턴 설정을 찾습니다.
작업의 기본 JSON(JavaScript Object Notation) 정의에서 HTTP 작업 및 APIConnection 작업은 비동기 작업 패턴을 암시적으로 따릅니다.
일부 시나리오에서는 대신 동작이 동기 패턴을 따르도록 할 수 있습니다. 예를 들어 HTTP 작업을 사용하는 경우 다음을 수행할 수 있습니다.
이러한 경우 다음 옵션을 사용하여 작업을 동기적으로 실행할 수 있습니다.
사용 가능한 경우 해당 작업의 폴링 버전을 웹후크 버전으로 바꿉니다.
다음 옵션 중 하나를 수행하여 작업의 비동기 동작을 사용하지 않도록 설정합니다.
Logic Apps 디자이너에서 비동기 패턴 설정을 해제합니다.
비동기 패턴 설정 끄기
논리 앱 디자이너의 작업 제목 표시줄에서 줄임표(...) 단추를 선택하여 작업의 설정을 엽니다.
비동기 패턴 설정을 찾고, 사용하도록 설정된 경우 설정을 해제로 설정하고, 완료를 선택합니다.
작업의 JSON 정의에서 비동기 패턴을 사용하지 않도록 설정
작업의 기본 JSON 정의에서 "operationOptions" 속성을"DisableAsyncPattern" 작업의 "inputs" 섹션 아래에 추가 및 설정합니다. 예를 들면 다음과 같습니다.
"<some-long-running-action>": {
"type": "Http",
"inputs": { "<action-inputs>" },
"operationOptions": "DisableAsyncPattern",
"runAfter": {}
}
트리거 및 작업 인증
HTTP 및 HTTPS 엔드포인트는 다양한 종류의 인증을 지원합니다. 이러한 엔드포인트에 액세스하기 위해 아웃바운드 호출 또는 요청을 수행하는 데 사용하는 트리거 또는 작업에 따라 다양한 인증 유형 중에서 선택할 수 있습니다. 자세한 내용은 아웃바운드 호출에 인증 추가를 참조하세요.
다음 단계
- 워크플로 정의 언어에 대한 자세한 정보