Azure Logic Apps에서 인바운드 HTTPS 요청 수신 및 응답Receive and respond to inbound HTTPS requests in Azure Logic Apps

Azure Logic Apps 및 기본 제공 요청 트리거 및 응답 작업을 사용 하 여 HTTPS를 통해 인바운드 요청을 받을 수 있는 자동화 된 작업 및 워크플로를 만들 수 있습니다.With Azure Logic Apps and the built-in Request trigger and Response action, you can create automated tasks and workflows that can receive inbound requests over HTTPS. 아웃 바운드 요청을 대신 보내려면 기본 제공 http 트리거 또는 http 동작을 사용 합니다.To send outbound requests instead, use the built-in HTTP trigger or HTTP action.

예를 들어 논리 앱을 통해 다음을 수행할 수 있습니다.For example, you can have your logic app:

  • 온-프레미스 데이터베이스에서 데이터에 대한 HTTPS 요청을 수신하고 응답합니다.Receive and respond to an HTTPS request for data in an on-premises database.

  • 외부 웹후크 이벤트가 발생하는 경우 워크플로를 트리거합니다.Trigger a workflow when an external webhook event happens.

  • 다른 논리 앱의 HTTPS 호출을 수신하고 응답합니다.Receive and respond to an HTTPS call from another logic app.

이 문서에서는 논리 앱이 인바운드 호출을 수신 하 고 응답할 수 있도록 요청 트리거 및 응답 작업을 사용 하는 방법을 보여 줍니다.This article shows how to use the Request trigger and Response action so that your logic app can receive and respond to inbound calls.

TLS (전송 계층 보안), 이전에 SSL(SECURE SOCKETS LAYER) (SSL) 또는 Azure Active Directory 오픈 인증 (Azure AD OAuth)과 같은 논리 앱에 대 한 인바운드 호출에 대 한 암호화, 보안 및 권한 부여에 대 한 자세한 내용은 요청 기반 트리거에 대 한 인바운드 호출에 대 한 보안 액세스 및 데이터 액세스를 참조 하세요.For information about encryption, security, and authorization for inbound calls to your logic app, such as Transport Layer Security (TLS), previously known as Secure Sockets Layer (SSL), or Azure Active Directory Open Authentication (Azure AD OAuth), see Secure access and data - Access for inbound calls to request-based triggers.

사전 요구 사항Prerequisites

요청 트리거 추가Add Request trigger

이 기본 제공 트리거는 HTTPS를 통한 인바운드 요청만 처리할 수 있는 수동으로 호출할 수 있는 끝점을 만듭니다.This built-in trigger creates a manually callable endpoint that can handle only inbound requests over HTTPS. 호출자가이 끝점에 요청을 보내면 요청 트리거가 발생 하 고 논리 앱이 실행 됩니다.When a caller sends a request to this endpoint, the Request trigger fires and runs the logic app. 이 트리거를 호출 하는 방법에 대 한 자세한 내용은 Azure Logic Apps에서 HTTPS 끝점을 사용 하 여 워크플로 호출, 트리거 또는 중첩을 참조 하세요.For more information about how to call this trigger, see Call, trigger, or nest workflows with HTTPS endpoints in Azure Logic Apps.

논리 앱은 제한 된 시간동안만 인바운드 요청을 열어 둡니다.Your logic app keeps an inbound request open only for a limited time. 논리 앱이 응답 작업을 포함 하 고 있다고 가정 하면 논리 앱이이 시간이 지난 후에 호출자에 게 응답을 보내지 않는 경우 논리 앱 504 GATEWAY TIMEOUT 은 호출자에 게 상태를 반환 합니다.Assuming that your logic app includes a Response action, if your logic app doesn't send a response back to the caller after this time passes, your logic app returns a 504 GATEWAY TIMEOUT status to the caller. 논리 앱에 응답 동작이 포함 되지 않은 경우If your logic app doesn't include a Response action,

논리 앱 202 ACCEPTED 은 호출자에 게 즉시 상태를 반환 합니다.your logic app immediately returns a 202 ACCEPTED status to the caller.

  1. Azure Portal에 로그인합니다.Sign in to the Azure portal. 빈 논리 앱을 만듭니다.Create a blank logic app.

  2. 논리 앱 디자이너가 열린 후, 검색 상자에 http request를 필터로 입력합니다.After Logic App Designer opens, in the search box, enter http request as your filter. 트리거 목록에서 HTTP 요청을 받을 때 트리거를 선택 합니다.From the triggers list, select the When an HTTP request is received trigger.

    요청 트리거 선택

    요청 트리거는 다음과 같은 속성을 표시합니다.The Request trigger shows these properties:

    요청 트리거

    속성 이름Property name JSON 속성 이름JSON property name 필수Required DescriptionDescription
    HTTP POST URLHTTP POST URL {없음}{none} Yes 논리 앱을 저장한 후에 생성되고 논리 앱을 호출하는 데 사용되는 엔드포인트 URL입니다.The endpoint URL that's generated after you save the logic app and is used for calling your logic app
    요청 본문 JSON 스키마Request Body JSON Schema schema No 들어오는 요청 본문의 속성 및 값을 설명하는 JSON 스키마입니다.The JSON schema that describes the properties and values in the incoming request body
  3. 요청 본문 JSON 스키마 상자에서 들어오는 요청의 본문을 설명하는 JSON 스키마를 선택적으로 입력합니다. 예를 들면 다음과 같습니다.In the Request Body JSON Schema box, optionally enter a JSON schema that describes the body in the incoming request, for example:

    JSON 스키마 예제

    디자이너는 이 스키마를 사용하여 요청에서 속성에 대한 토큰을 생성합니다.The designer uses this schema to generate tokens for the properties in the request. 이렇게 하면 논리 앱에서 트리거를 통해 요청에서 데이터를 구문 분석하고, 사용하여 워크플로로 전달할 수 있습니다.That way, your logic app can parse, consume, and pass along data from the request through the trigger into your workflow.

    다음은 샘플 스키마입니다.Here is the sample schema:

    {
       "type": "object",
       "properties": {
          "account": {
             "type": "object",
             "properties": {
                "name": {
                   "type": "string"
                },
                "ID": {
                   "type": "string"
                },
                "address": {
                   "type": "object",
                   "properties": {
                      "number": {
                         "type": "string"
                      },
                      "street": {
                         "type": "string"
                      },
                      "city": {
                         "type": "string"
                      },
                      "state": {
                         "type": "string"
                      },
                      "country": {
                         "type": "string"
                      },
                      "postalCode": {
                         "type": "string"
                      }
                   }
                }
             }
          }
       }
    }
    

    JSON 스키마를 입력하면 요청에 Content-Type 헤더를 포함하고 해당 헤더 값을 application/json으로 설정하는 미리 알림이 디자이너에 표시됩니다.When you enter a JSON schema, the designer shows a reminder to include the Content-Type header in your request and set that header value to application/json. 자세한 내용은 콘텐츠 유형 처리를 참조하세요.For more information, see Handle content types.

    “Content-Type” 헤더를 포함하는 미리 알림

    JSON 형식의 이 헤더는 다음과 같습니다.Here's what this header looks like in JSON format:

    {
       "Content-Type": "application/json"
    }
    

    예상 페이로드(데이터)를 기반으로 하는 JSON 스키마를 생성하려면 JSONSchema.net과 같은 도구를 사용하거나 다음 단계를 수행합니다.To generate a JSON schema that's based on the expected payload (data), you can use a tool such as JSONSchema.net, or you can follow these steps:

    1. 요청 트리거에서 샘플 페이로드를 사용하여 스키마 생성을 선택합니다.In the Request trigger, select Use sample payload to generate schema.

      "샘플 페이로드를 사용 하 여 스키마 생성"을 선택 하는 스크린샷

    2. 샘플 페이로드를 입력하고 완료를 선택합니다.Enter the sample payload, and select Done.

      샘플 페이로드를 입력 하 여 스키마 생성

      다음은 샘플 페이로드입니다.Here is the sample payload:

      {
         "account": {
            "name": "Contoso",
            "ID": "12345",
            "address": {
               "number": "1234",
               "street": "Anywhere Street",
               "city": "AnyTown",
               "state": "AnyState",
               "country": "USA",
               "postalCode": "11111"
            }
         }
      }
      
  4. 인바운드 호출에 지정 된 스키마와 일치 하는 요청 본문이 있는지 확인 하려면 다음 단계를 수행 합니다.To check that the inbound call has a request body that matches your specified schema, follow these steps:

    1. 요청 트리거의 제목 표시줄에서 줄임표 단추 (...)를 선택 합니다.In the Request trigger's title bar, select the ellipses button (...).

    2. 트리거의 설정에서 스키마 유효성 검사를 켜고 완료를 선택 합니다.In the trigger's settings, turn on Schema Validation, and select Done.

      인바운드 호출의 요청 본문이 스키마와 일치 하지 않는 경우 트리거는 오류를 반환 합니다 HTTP 400 Bad Request .If the inbound call's request body doesn't match your schema, the trigger returns an HTTP 400 Bad Request error.

  5. 추가 속성을 지정하려면 새 매개 변수 추가 목록을 열고 추가하려는 매개 변수를 선택합니다.To specify additional properties, open the Add new parameter list, and select the parameters that you want to add.

    속성 이름Property name JSON 속성 이름JSON property name 필수Required DescriptionDescription
    메서드Method method No 들어오는 요청에서 논리 앱을 호출하는 데 사용해야 하는 메서드The method that the incoming request must use to call the logic app
    상대 경로Relative path relativePath No 논리 앱의 엔드포인트의 URL이 수락할 수 있는 매개 변수에 대한 상대 경로입니다.The relative path for the parameter that the logic app's endpoint URL can accept

    이 예제에서는 메서드 속성을 추가합니다.This example adds the Method property:

    메서드 매개 변수 추가

    목록에서 메서드를 선택할 수 있도록 메서드 속성이 트리거에 표시됩니다.The Method property appears in the trigger so that you can select a method from the list.

    Select 메서드

  6. 이제 워크플로의 다음 단계로 다른 작업을 추가합니다.Now, add another action as the next step in your workflow. 트리거 아래에서 다음 단계를 선택하면 추가하려는 작업을 찾을 수 있습니다.Under the trigger, select Next step so that you can find the action that you want to add.

    예를 들어 사용자 지정된 응답을 반환하는 데 사용할 수 있으며 이 토픽의 뒷부분에서 설명하는 응답 작업을 추가하여 요청에 응답할 수 있습니다.For example, you can respond to the request by adding a Response action, which you can use to return a customized response and is described later in this topic.

    논리 앱은 제한된 시간 동안만 들어오는 요청을 열어 둡니다.Your logic app keeps the incoming request open only for a limited time. 논리 앱 워크플로에 응답 작업이 포함되어 있다고 가정하면 논리 앱이 이 시간 경과 후 응답을 반환하지 않는 경우 논리 앱은 호출자에게 504 GATEWAY TIMEOUT을 반환합니다.Assuming that your logic app workflow includes a Response action, if the logic app doesn't return a response after this time passes, your logic app returns a 504 GATEWAY TIMEOUT to the caller. 그렇지 않은 경우 논리 앱에 응답 작업이 포함되어 있지 않으면 논리 앱은 즉시 호출자에게 202 ACCEPTED 응답을 반환합니다.Otherwise, if your logic app doesn't include a Response action, your logic app immediately returns a 202 ACCEPTED response to the caller.

  7. 완료되면 논리 앱을 저장합니다.When you're done, save your logic app. 디자이너 도구 모음에서 저장을 선택합니다.On the designer toolbar, select Save.

    이 단계에서는 논리 앱을 트리거하는 요청을 보내는 데 사용할 URL을 생성합니다.This step generates the URL to use for sending the request that triggers the logic app. 이 URL을 복사하려면 URL 옆에 있는 복사 아이콘을 선택합니다.To copy this URL, select the copy icon next to the URL.

    논리 앱을 트리거하는 데 사용할 URL

    참고

    # 요청 트리거를 호출할 때 해시 또는 파운드 기호 ()를 URI에 포함 하려면이 인코딩된 버전을 대신 사용 합니다.%25%23If you want to include the hash or pound symbol (#) in the URI when making a call to the Request trigger, use this encoded version instead: %25%23

  8. 논리 앱을 트리거하려면 생성된 URL에 HTTP POST를 보냅니다.To trigger your logic app, send an HTTP POST to the generated URL.

    예를 들어 Postman과 같은 도구를 사용하여 HTTP POST를 보낼 수 있습니다.For example, you can use a tool such as Postman to send the HTTP POST. 트리거의 기본 JSON 정의 및 이 트리거를 호출하는 방법에 대한 자세한 내용은 요청 트리거 형식Azure Logic Apps의 HTTP 엔드포인트를 통해 워크플로 호출, 트리거 또는 중첩을 참조하세요.For more information about the trigger's underlying JSON definition and how to call this trigger, see these topics, Request trigger type and Call, trigger, or nest workflows with HTTP endpoints in Azure Logic Apps.

트리거 출력Trigger outputs

요청 트리거의 출력에 대한 자세한 내용은 다음과 같습니다.Here's more information about the outputs from the Request trigger:

JSON 속성 이름JSON property name 데이터 형식Data type DescriptionDescription
headers ObjectObject 요청의 헤더를 설명하는 JSON 개체입니다.A JSON object that describes the headers from the request
body ObjectObject 요청의 본문 콘텐츠를 설명하는 JSON 개체입니다.A JSON object that describes the body content from the request

응답 작업 추가Add a Response action

요청 트리거를 사용 하 여 인바운드 요청을 처리 하는 경우 기본 제공 응답 작업을 사용 하 여 응답을 모델링 하 고 페이로드 결과를 다시 호출자에 게 보낼 수 있습니다.When you use the Request trigger to handle inbound requests, you can model the response and send the payload results back to the caller by using the built-in Response action. 응답 작업은 요청 트리거와 함께 사용할 수 있습니다.You can use the Response action only with the Request trigger. 요청 트리거 및 응답 작업과 함께이 조합은 요청-응답 패턴을 만듭니다.This combination with the Request trigger and Response action creates the request-response pattern. Foreach 루프와 Until 루프, 병렬 분기를 제외 하 고, 워크플로의 아무 곳에 나 응답 작업을 추가할 수 있습니다.Except for inside Foreach loops and Until loops, and parallel branches, you can add the Response action anywhere in your workflow.

중요

응답 작업에 이러한 헤더가 포함된 경우 Logic Apps는 경고 또는 오류를 표시하지 않고 생성된 응답 메시지에서 이러한 헤더를 제거합니다.If a Response action includes these headers, Logic Apps removes these headers from the generated response message without showing any warning or error:

  • Allow
  • Content-Disposition, Content-EncodingContent-Type과 같은 예외가 있는 Content-*Content-* with these exceptions: Content-Disposition, Content-Encoding, and Content-Type
  • Cookie
  • Expires
  • Last-Modified
  • Set-Cookie
  • Transfer-Encoding

논리 앱에서 사용자가 이러한 헤더를 사용하여 응답 작업이 있는 논리 앱을 저장할 수는 있지만, 논리 앱은 이러한 헤더를 무시합니다.Although Logic Apps won't stop you from saving logic apps that have a Response action with these headers, Logic Apps ignores these headers.

  1. 논리 앱 디자이너에서 응답 작업을 추가하려는 단계 아래에서 새 단계를 선택합니다.In the Logic App Designer, under the step where you want to add a Response action, select New step.

    예를 들어 앞에 나온 요청 트리거를 사용합니다.For example, using the Request trigger from earlier:

    새 단계 추가

    단계 사이에 작업을 추가하려면 해당 단계 사이에 있는 화살표 위로 포인터를 이동합니다.To add an action between steps, move your pointer over the arrow between those steps. 표시되는 더하기 기호( + )를 선택한 다음, 작업 추가를 선택합니다.Select the plus sign (+) that appears, and then select Add an action.

  2. 작업 선택아래의 검색 상자에서를 response 필터로 입력 하 고 응답 작업을 선택 합니다.Under Choose an action, in the search box, enter response as your filter, and select the Response action.

    응답 작업 선택

    이 예제에서는 편의상 요청 트리거가 축소되어 있습니다.The Request trigger is collapsed in this example for simplicity.

  3. 응답 메시지에 필요한 값을 추가합니다.Add any values that are required for the response message.

    일부 필드에서 상자 내부를 클릭하면 동적 콘텐츠 목록이 열립니다.In some fields, clicking inside their boxes opens the dynamic content list. 그런 다음, 워크플로의 이전 단계에서 사용 가능한 출력을 나타내는 토큰을 선택할 수 있습니다.You can then select tokens that represent available outputs from previous steps in the workflow. 이전 예제에 지정된 스키마의 속성이 이제 동적 콘텐츠 목록에 표시됩니다.Properties from the schema specified in the earlier example now appear in the dynamic content list.

    예를 들어 헤더 상자의 경우 이 토픽의 앞부분에서 설명한 것처럼 Content-Type을 키 이름으로 포함하고 키 값을 application/json으로 설정합니다.For example, for the Headers box, include Content-Type as the key name, and set the key value to application/json as mentioned earlier in this topic. 본문 상자의 경우 동적 콘텐츠 목록에서 트리거 본문 출력을 선택할 수 있습니다.For the Body box, you can select the trigger body output from the dynamic content list.

    응답 작업 세부 정보

    헤더를 JSON 형식으로 보려면 텍스트 뷰로 전환를 선택합니다.To view the headers in JSON format, select Switch to text view.

    머리글 - 텍스트 뷰로 전환

    응답 작업에서 설정할 수 있는 속성에 대한 자세한 내용은 다음을 참조하세요.Here is more information about the properties that you can set in the Response action.

    속성 이름Property name JSON 속성 이름JSON property name 필수Required DescriptionDescription
    상태 코드Status Code statusCode Yes 응답에 반환할 상태 코드The status code to return in the response
    헤더Headers headers No 응답에 포함할 하나 이상의 헤더를 설명하는 JSON 개체입니다.A JSON object that describes one or more headers to include in the response
    본문Body body No 응답 본문The response body
  4. 응답 본문에 대한 JSON 스키마와 같은 추가 속성을 지정하려면 새 매개 변수 추가 목록을 열고 추가하려는 매개 변수를 선택합니다.To specify additional properties, such as a JSON schema for the response body, open the Add new parameter list, and select the parameters that you want to add.

  5. 완료되면 논리 앱을 저장합니다.When you're done, save your logic app. 디자이너 도구 모음에서 저장을 선택합니다.On the designer toolbar, select Save.

다음 단계Next steps