Azure Logic Apps에서 인라인 코드를 사용 하 여 코드 조각 추가 및 실행Add and run code snippets by using inline code in Azure Logic Apps

논리 앱 내에서 코드 조각을 실행 하려는 경우 논리 앱의 워크플로에서 단계로 기본 제공 인라인 코드 작업을 추가할 수 있습니다.When you want to run a piece of code inside your logic app, you can add the built-in Inline Code action as a step in your logic app's workflow. 이 작업은이 시나리오에 적합 한 코드를 실행 하려는 경우에 가장 잘 작동 합니다.This action works best when you want to run code that fits this scenario:

  • JavaScript에서 실행 됩니다.Runs in JavaScript. 더 많은 언어가 제공 될 예정입니다.More languages coming soon.

  • 5 초 이하로 실행을 완료 합니다.Finishes running in five seconds or fewer.

  • 최대 50 크기의 데이터를 처리 합니다.Handles data up to 50 MB in size.

  • 는 아직 지원 되지 않는 Variables 작업을 사용할 필요가 없습니다.Doesn't require working with the Variables actions, which are not yet supported.

  • Node.js 버전 8.11.1을 사용 합니다.Uses Node.js version 8.11.1. 자세한 내용은 표준 기본 제공 개체를 참조 하세요.For more information, see Standard built-in objects.

    참고

    JavaScript를 실행 하는 인라인 코드 작업에서는 require() 함수를 지원 하지 않습니다.The require() function isn't supported by the Inline Code action for running JavaScript.

이 작업은 코드 조각을 실행 하 고 논리 앱의 후속 작업에서 사용할 수 있는 Result라는 토큰으로 해당 코드 조각의 출력을 반환 합니다.This action runs the code snippet and returns the output from that snippet as a token named Result, which you can use in subsequent actions in your logic app. 코드에 대 한 함수를 만들려는 다른 시나리오의 경우 논리 앱에서 Azure 함수를 만들고 호출 해 보세요.For other scenarios where you want to create a function for your code, try creating and calling an Azure function in your logic app.

이 문서에서는 Office 365 Outlook 계정에 새 전자 메일이 도착할 때 예제 논리 앱이 트리거됩니다.In this article, the example logic app triggers when a new email arrives in an Office 365 Outlook account. 코드 조각은 메일 본문에 표시 되는 모든 전자 메일 주소를 추출 하 고 반환 합니다.The code snippet extracts and returns any email addresses that appear in the email body.

예제 개요

전제 조건Prerequisites

  • Azure 구독.An Azure subscription. Azure 구독이 없는 경우 체험 Azure 계정에 등록합니다.If you don't have an Azure subscription, sign up for a free Azure account.

  • 트리거를 포함 하 여 코드 조각을 추가 하려는 논리 앱입니다.The logic app where you want to add your code snippet, including a trigger. 논리 앱이 없는 경우 빠른 시작: 첫 번째 논리 앱 만들기를 참조 하세요.If you don't have a logic app, see Quickstart: Create your first logic app.

    이 항목의 예제 논리 앱에서는 새 전자 메일이 도착 하는 경우 Office 365 Outlook 트리거를 사용 합니다.The example logic app in this topic uses this Office 365 Outlook trigger: When a new email arrives

  • 논리 앱에 연결 된 통합 계정An integration account that's linked to your logic app

    참고

    사용 사례 또는 시나리오에 적합 한 통합 계정을 사용 하 고 있는지 확인 합니다.Make sure that you use an integration account that's appropriate for your use case or scenario. 예를 들어, 무료 계층 통합 계정은 프로덕션 시나리오가 아닌 예비 시나리오와 워크 로드에만 사용 되며, 사용량 및 처리량이 제한 되며, SLA (서비스 수준 계약)에서 지원 되지 않습니다.For example, Free-tier integration accounts are meant only for exploratory scenarios and workloads, not production scenarios, are limited in usage and throughput, and aren't supported by a service-level agreement (SLA). 다른 계층은 비용이 발생 하지만 SLA 지원을 포함 하 여 더 많은 처리량을 제공 하 고 더 높은 한도를 제공 합니다.Other tiers incur costs, but include SLA support, offer more throughput, and have higher limits. 통합 계정 계층, 가격 책정제한에 대해 자세히 알아보세요.Learn more about integration account tiers, pricing, and limits.

인라인 코드 추가Add inline code

  1. 아직 Azure Portal하지 않은 경우 논리 앱 디자이너에서 논리 앱을 엽니다.If you haven't already, in the Azure portal, open your logic app in the Logic App Designer.

  2. 디자이너에서 논리 앱의 워크플로에서 원하는 위치에 인라인 코드 작업을 추가 합니다.In the designer, add the Inline Code action at the location that you want in your logic app's workflow.

    • 워크플로의 끝에 작업을 추가 하려면 새 단계를 선택 합니다.To add the action at the end of your workflow, choose New step.

    • 기존 단계 사이에 작업을 추가 하려면 해당 단계를 연결 하는 화살표 위로 마우스 포인터를 이동 합니다.To add the action between existing steps, move your mouse pointer over the arrow that connects those steps. 더하기 기호 ( + )를 선택 하 고 작업 추가를 선택 합니다.Choose the plus sign (+), and select Add an action.

    이 예제에서는 Office 365 Outlook 트리거에서 인라인 코드 작업을 추가 합니다.This example adds the Inline Code action under the Office 365 Outlook trigger.

    새 단계 추가

  3. 작업 선택아래의 검색 상자에 "인라인 코드"를 필터로 입력 합니다.Under Choose an action, in the search box, enter "inline code" as your filter. 작업 목록에서 JavaScript 코드 실행 작업을 선택 합니다.From the actions list, select this action: Execute JavaScript Code

    "JavaScript 코드 실행"을 선택 합니다.

    작업은 디자이너에 표시 되며 return 문을 포함 하 여 몇 가지 기본 예제 코드를 포함 합니다.The action appears in the designer and contains some default example code, including a return statement.

    기본 샘플 코드를 사용 하는 인라인 코드 작업

  4. 코드 상자에서 샘플 코드를 삭제 하 고 실행 하려는 코드를 입력 합니다.In the Code box, delete the sample code, and enter the code that you want to run. 메서드 시그니처를 정의 하지 않고 메서드 내에 배치 하는 코드를 작성 합니다.Write code that you'd put inside a method, but without defining the method signature.

    인식 된 키워드를 입력 하면 사용 가능한 키워드 중에서 선택할 수 있도록 자동 완성 목록이 표시 됩니다. 예를 들면 다음과 같습니다.When you type a recognized keyword, the autocomplete list appears so that you can select from available keywords, for example:

    키워드 자동 완성 목록

    이 예제 코드 조각은 먼저 입력 텍스트에서 일치 하는 패턴을 지정 하는 정규식을 저장 하는 변수를 만듭니다.This example code snippet first creates a variable that stores a regular expression, which specifies a pattern to match in input text. 그런 다음 트리거에서 전자 메일 본문 데이터를 저장 하는 변수를 만듭니다.The code then creates a variable that stores the email body data from the trigger.

    변수 만들기

    트리거와 이전 작업의 결과를 쉽게 참조할 수 있도록 커서를 코드 상자 안에 있는 동안 동적 콘텐츠 목록이 표시 됩니다.To make the results from the trigger and previous actions easier to reference, the dynamic content list appears while your cursor is inside the Code box. 이 예의 경우 목록에는 현재 선택할 수 있는 본문 토큰을 비롯 하 여 트리거에서 사용 가능한 결과가 표시 됩니다.For this example, the list shows available results from the trigger, including the Body token, which you can now select.

    본문 토큰을 선택 하면 인라인 코드 작업에서 토큰을 전자 메일의 Body 속성 값을 참조 하는 workflowContext 개체로 확인 합니다.After you select the Body token, the inline code action resolves the token to a workflowContext object that references the email's Body property value:

    결과 선택

    코드 상자에서 코드 조각이 읽기 전용 workflowContext 개체를 입력으로 사용할 수 있습니다.In the Code box, your snippet can use the read-only workflowContext object as input. 이 개체에는 워크플로의 트리거와 이전 작업의 결과에 대 한 코드 액세스를 제공 하는 하위 속성이 있습니다.This object has subproperties that give your code access to the results from the trigger and previous actions in your workflow. 자세한 내용은이 항목의 뒷부분에 나오는 참조 트리거 및 작업 결과에서 코드를 참조 하세요.For more information, see this section later in this topic: Reference trigger and action results in your code.

    참고

    코드 조각이 점 (.) 연산자를 사용 하는 동작 이름을 참조 하는 경우 해당 동작 이름을 Actions 매개 변수에추가 해야 합니다.If your code snippet references action names that use the dot (.) operator, you must add those action names to the Actions parameter. 이러한 참조는 또한 작업 이름을 대괄호 ([])와 큰따옴표로 묶어야 합니다. 예를 들면 다음과 같습니다.Those references must also enclose the action names with square brackets ([]) and quotation marks, for example:

    // Correct
    workflowContext.actions["my.action.name"].body

    // Incorrect
    workflowContext.actions.my.action.name.body

    인라인 코드 작업에는 return 문이 필요 하지 않지만 return 문의 결과는 이후 작업에서 결과 토큰을 통해 참조할 수 있습니다.The inline code action doesn't require a return statement, but the results from a return statement are available for reference in later actions through the Result token. 예를 들어 코드 조각은 정규식에 대해 전자 메일 본문에서 일치 항목을 찾는 match() 함수를 호출 하 여 결과를 반환 합니다.For example, the code snippet returns the result by calling the match() function, which finds matches in the email body against the regular expression. 작성 작업은 결과 토큰을 사용 하 여 인라인 코드 작업의 결과를 참조 하 고 단일 결과를 만듭니다.The Compose action uses the Result token to reference the results from the inline code action and creates a single result.

    완료된 논리 앱

  5. 완료되면 논리 앱을 저장합니다.When you're done, save your logic app.

코드의 참조 트리거 및 작업 결과Reference trigger and action results in your code

workflowContext 개체는 actions, triggerworkflow 하위 속성을 포함 하는이 구조를 포함 합니다.The workflowContext object has this structure, which includes the actions, trigger, and workflow subproperties:

{
   "workflowContext": {
      "actions": {
         "<action-name-1>": @actions('<action-name-1>'),
         "<action-name-2>": @actions('<action-name-2>')
      },
      "trigger": {
         @trigger()
      },
      "workflow": {
         @workflow()
      }
   }
}

이 테이블에는 다음 하위 속성에 대 한 자세한 내용이 포함 되어 있습니다.This table contains more information about these subproperties:

자산Property TypeType 설명Description
actions 개체 컬렉션Object collection 코드 조각이 실행 되기 전에 실행 되는 작업의 결과 개체입니다.Result objects from actions that run before your code snippet runs. 각 개체에는 키가 동작 이름인 키-값 쌍이 있으며 값은 @actions('<action-name>')를 사용 하 여 actions () 함수 를 호출 하는 것과 같습니다.Each object has a key-value pair where the key is the name of an action, and the value is equivalent to calling the actions() function with @actions('<action-name>'). 작업 이름은 기본 워크플로 정의에 사용 되는 것과 동일한 동작 이름을 사용 합니다 .이 이름은 작업 이름의 공백 ("")을 밑줄 ()로 대체 합니다.The action's name uses the same action name that's used in the underlying workflow definition, which replaces spaces (" ") in the action name with underscores (). 이 개체는 현재 워크플로 인스턴스 실행에서 작업 속성 값에 대 한 액세스를 제공 합니다.This object provides access to action property values from the current workflow instance run.
trigger ObjectObject 트리거의 결과 개체 이며 trigger () 함수를 호출 하는 것과 동일 합니다.Result object from the trigger and equivalent to calling the trigger() function. 이 개체는 현재 워크플로 인스턴스 실행의 트리거 속성 값에 대 한 액세스를 제공 합니다.This object provides access to trigger property values from the current workflow instance run.
workflow ObjectObject 워크플로 개체 이며 workflow () 함수를 호출 하는 것과 동일 합니다.The workflow object and equivalent to calling the workflow() function. 이 개체를 사용 하면 현재 워크플로 인스턴스가 실행 되는 워크플로 이름, 실행 ID 등의 워크플로 속성 값에 액세스할 수 있습니다.This object provides access to workflow property values, such as the workflow name, run ID, and so on, from the current workflow instance run.

이 항목의 예제에서 workflowContext 개체에는 코드에서 액세스할 수 있는 다음과 같은 속성이 있습니다.In this topic's example, the workflowContext object has these properties that your code can access:

{
   "workflowContext": {
      "trigger": {
         "name": "When_a_new_email_arrives",
         "inputs": {
            "host": {
               "connection": {
                  "name": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group-name>/providers/Microsoft.Web/connections/office365"
               }
            },
            "method": "get",
            "path": "/Mail/OnNewEmail",
            "queries": {
               "includeAttachments": "False"
            }
         },
         "outputs": {
            "headers": {
               "Pragma": "no-cache",
               "Content-Type": "application/json; charset=utf-8",
               "Expires": "-1",
               "Content-Length": "962095"
            },
            "body": {
               "Id": "AAMkADY0NGZhNjdhLTRmZTQtNGFhOC1iYjFlLTk0MjZlZjczMWRhNgBGAAAAAABmZwxUQtCGTqSPpjjMQeD",
               "DateTimeReceived": "2019-03-28T19:42:16+00:00",
               "HasAttachment": false,
               "Subject": "Hello World",
               "BodyPreview": "Hello World",
               "Importance": 1,
               "ConversationId": "AAQkADY0NGZhNjdhLTRmZTQtNGFhOC1iYjFlLTk0MjZlZjczMWRhNgAQ",
               "IsRead": false,
               "IsHtml": true,
               "Body": "Hello World",
               "From": "<sender>@<domain>.com",
               "To": "<recipient-2>@<domain>.com;<recipient-2>@<domain>.com",
               "Cc": null,
               "Bcc": null,
               "Attachments": []
            }
         },
         "startTime": "2019-05-03T14:30:45.971564Z",
         "endTime": "2019-05-03T14:30:50.1746874Z",
         "scheduledTime": "2019-05-03T14:30:45.8778117Z",
         "trackingId": "1cd5ffbd-f989-4df5-a96a-6e9ce31d03c5",
         "clientTrackingId": "08586447130394969981639729333CU06",
         "originHistoryName": "08586447130394969981639729333CU06",
         "code": "OK",
         "status": "Succeeded"
      },
      "workflow": {
         "id": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group-name>/providers/Microsoft.Logic/workflows/<logic-app-workflow-name>",
         "name": "<logic-app-workflow-name>",
         "type": "Microsoft.Logic/workflows",
         "location": "<Azure-region>",
         "run": {
            "id": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group-name>/providers/Microsoft.Logic/workflows/<logic-app-workflow-name>/runs/08586453954668694173655267965CU00",
            "name": "08586453954668694173655267965CU00",
            "type": "Microsoft.Logic/workflows/runs"
         }
      }
   }
}

매개 변수 추가Add parameters

트리거 또는 작업 매개 변수를 추가 하 여 코드에서 종속성으로 참조 하는 트리거 또는 특정 작업의 결과가 인라인 코드 작업에 포함 되도록 명시적으로 지정 해야 하는 경우도 있습니다.In some cases, you might have to explicitly require that the Inline Code action includes results from the trigger or specific actions that your code references as dependencies by adding the Trigger or Actions parameters. 이 옵션은 참조 된 결과가 런타임에 없는 시나리오에 유용 합니다.This option is useful for scenarios where the referenced results aren't found at run time.

코드를 다시 사용 하려는 경우 트리거 또는 작업을 명시적 종속성으로 추가 하는 대신 코드에 확인 된 토큰 참조가 포함 되도록 코드 상자를 사용 하 여 속성에 대 한 참조를 추가 합니다.If you plan to reuse your code, add references to properties by using the Code box so that your code includes the resolved token references, rather than adding the trigger or actions as explicit dependencies.

예를 들어 Office 365 Outlook 커넥터에 대 한 승인 전자 메일 보내기 작업의 SelectedOption 결과를 참조 하는 코드가 있다고 가정 합니다.For example, suppose you have code that references the SelectedOption result from the Send approval email action for the Office 365 Outlook connector. 만든 시간에 Logic Apps 엔진은 코드를 분석 하 여 트리거 또는 작업 결과를 참조 하 고 해당 결과를 자동으로 포함 하는지 여부를 확인 합니다.At create time, the Logic Apps engine analyzes your code to determine whether you've referenced any trigger or action results and includes those results automatically. 런타임에는 지정 된 workflowContext 개체에서 참조 된 트리거 또는 작업 결과를 사용할 수 없다는 오류가 표시 됩니다. 해당 트리거나 작업을 명시적 종속성으로 추가할 수 있습니다.At run time, should you get an error that the referenced trigger or action result isn't available in the specified workflowContext object, you can add that trigger or action as an explicit dependency. 이 예제에서는 작업 매개 변수를 추가 하 고 인라인 코드 작업에 승인 전자 메일 보내기 작업의 결과가 명시적으로 포함 되도록 지정 합니다.In this example, you add the Actions parameter and specify that the Inline Code action explicitly include the result from the Send approval email action.

이러한 매개 변수를 추가 하려면 새 매개 변수 추가 목록을 열고 원하는 매개 변수를 선택 합니다.To add these parameters, open the Add new parameter list, and select the parameters you want:

매개 변수 추가

매개 변수를 포함해야 합니다.Parameter 설명Description
ActionsActions 이전 작업의 결과를 포함 합니다.Include results from previous actions. 작업 결과 포함을 참조 하세요.See Include action results.
트리거Trigger 트리거의 결과를 포함 합니다.Include results from the trigger. 트리거 결과 포함을 참조 하세요.See Include trigger results.

트리거 결과 포함Include trigger results

트리거를 선택 하면 트리거 결과를 포함할지 여부를 묻는 메시지가 표시 됩니다.If you select Triggers, you're prompted whether to include trigger results.

  • 트리거 목록에서 를 선택 합니다.From the Trigger list, select Yes.

작업 결과 포함Include action results

작업을 선택 하면 추가 하려는 작업을 묻는 메시지가 표시 됩니다.If you select Actions, you're prompted for the actions that you want to add. 그러나 작업 추가를 시작 하기 전에 논리 앱의 기본 워크플로 정의에 표시 되는 작업 이름의 버전이 필요 합니다.However, before you start adding actions, you need the version of the action name that appears in the logic app's underlying workflow definition.

  • 이 기능은 변수, 루프 및 반복 인덱스를 지원 하지 않습니다.This capability doesn't support variables, loops, and iteration indexes.

  • 논리 앱의 워크플로 정의에 있는 이름은 공백이 아닌 밑줄 ()을 사용 합니다.Names in your logic app's workflow definition use an underscore (), not a space.

  • 점 연산자 (.)를 사용 하는 작업 이름에는 다음과 같은 연산자를 포함 합니다.For action names that use the dot operator (.), include those operators, for example:

    My.Action.Name

  1. 디자이너 도구 모음에서 코드 보기를 선택 하 고 작업 이름에 대 한 actions 특성 내에서 검색 합니다.On the designer toolbar, choose Code view, and search inside the actions attribute for the action name.

    예를 들어 Send_approval_email_승인 전자 메일 보내기 작업의 JSON 이름입니다.For example, Send_approval_email_ is the JSON name for the Send approval email action.

    JSON에서 작업 이름 찾기

  2. 디자이너 뷰로 돌아가려면 코드 보기 도구 모음에서 디자이너를 선택 합니다.To return to designer view, on the code view toolbar, choose Designer.

  3. 첫 번째 작업을 추가 하려면 작업 항목-1 상자에 작업의 JSON 이름을 입력 합니다.To add the first action, in the Actions Item - 1 box, enter the action's JSON name.

    첫 번째 작업 입력

  4. 다른 작업을 추가 하려면 추가 새 항목을 선택 합니다.To add another action, choose Add new item.

참조Reference

워크플로 정의 언어를 사용 하 여 논리 앱의 기본 워크플로 정의에서 JavaScript 코드 작업의 구조 및 구문을 실행 하는 방법에 대 한 자세한 내용은이 작업의 참조 섹션을 참조 하세요.For more information about the Execute JavaScript Code action's structure and syntax in your logic app's underlying workflow definition using the Workflow Definition Language, see this action's reference section.

다음 단계Next steps

Azure Logic Apps 커넥터 에 대 한 자세한 정보Learn more about Connectors for Azure Logic Apps