연습 - 기존 API에 다른 Azure Functions 앱 추가

완료됨

다시 말하지만 Azure Functions에 해당하는 모든 별도 마이크로 서비스를 단일 API에 연결하려고 합니다. API Management의 새 인스턴스에 제품 함수 앱을 추가했습니다. 이제 해당 API에 다른 함수 앱을 추가하려고 합니다.

이 연습에서는 Orders 함수 앱을 API에 추가하고 curl 도구를 사용하여 통합 시스템을 테스트합니다.

OrderDetails 함수 테스트

Orders 함수 앱을 API에 추가하기 전에, 이 함수가 호스트하는 함수 OrderDetails를 테스트해 보겠습니다.

  1. Azure 리소스 메뉴 또는 페이지에서 모든 리소스를 선택합니다. 모든 리소스 창이 표시됩니다.

  2. 종류별로 리소스를 정렬한 다음, 이름이 OrderFunction으로 시작하는 함수 앱을 선택합니다. OrderFunction 함수 앱의 개요 창이 표시됩니다.

  3. 함수 앱의 함수 목록에서 OrderDetails를 선택합니다. OrderDetails 함수 개요 창이 나타납니다.

  4. OrderDetails 메뉴의 개발자에서 코드 + 테스트를 선택합니다. OrderDetails 함수의 코드 + 테스트 창이 나타나고 function.json 파일의 내용이 표시됩니다.

    OrderDetails JSON code, with Code + Test in menu and Test/Run in command bar highlighted.

  5. 명령 모음에서 테스트/실행을 선택합니다. OrderDetails 함수에 대한 입력 매개 변수 탭이 표시됩니다.

  6. HTTP 메서드 필드의 드롭다운 목록에서 GET을 선택하고 쿼리에서 매개 변수 추가를 선택한 다음, 이름 필드에 ‘이름’을 입력하고 필드에 Chiba(값이 대/소문자 구분)를 입력한 다음, 실행을 선택합니다.

  7. 로그 콘솔이 열리고 요청 상태가 표시됩니다. 출력 탭에는 HTTP 응답 코드 및 콘텐츠가 JSON 형식으로 표시됩니다.

    Add a new function option page appears.

    필요에 따라 이름값으로 HenriBarriclough를 사용하여 다른 고객 주문을 가져오도록 추가 요청을 실행할 수 있습니다.

  8. 닫기를 선택하여 테스트/실행에 대한 입출력 탭을 닫습니다.

  9. OrderDetails 창의 명령 모음에서 함수 URL 받기를 선택합니다. URL은 azurewebsites.net 도메인 내의 함수 이름입니다.

기존 API에 함수 추가

이 단계에서는 이전 연습에서 만든 API Management 리소스에 Order 함수를 추가합니다. 이 연습에서는 함수 앱 인터페이스 내에서 API Management 인터페이스를 사용했습니다. 여기서는 두 가지 방법을 모두 사용할 수 있다는 것을 보여 주기 위해 Azure Portal 리소스 메뉴를 통해 API Management 인스턴스로 이동합니다.

  1. Azure 리소스 메뉴 또는 페이지에서 모든 리소스를 선택합니다. 모든 리소스 창이 표시됩니다.

  2. 유형을 기준으로 리소스를 정렬한 다음, OnlineStore API Management 서비스를 선택합니다. OnlineStore에 대한 API Management 서비스가 표시됩니다.

  3. 메뉴의 API에서 API를 선택합니다. API 창에 새 API를 정의하는 옵션이 표시됩니다.

  4. Azure 리소스에서 만들기에서 함수 앱을 선택합니다.

    Screenshot of the Add a New API screen with a callout highlighting the Azure Function App option.

    함수 앱에서 만들기 대화 상자가 나타납니다.

  5. 함수 앱을 선택하려면 찾아보기를 선택합니다. Azure Functions 가져오기 창이 나타납니다.

  6. 필수 설정 구성 필드에서 선택을 선택합니다.

    Screenshot of the Import Azure Functions dialog box with Configure required settings field and Select button highlighted.(../media/5-import-azure-function-app-03-expanded.png#lightbox)

    Azure Function 앱 선택 창이 나타납니다.

  7. OrderFunctionNNNNNNN을 선택한 다음, 선택을 선택합니다. OrderDetails 함수 앱이 구성된 상태로 Azure Functions 가져오기 창이 다시 나타납니다.

  8. OrderDetails를 선택한 다음, 페이지 맨 아래에서 선택을 선택하여 함수를 추가합니다. 함수 앱에서 만들기 대화 상자가 나타납니다.

  9. API URL 접미사 필드의 값을 orders로 바꿉니다. 이 변경 내용이 기준 URL을 어떻게 업데이트하는지 확인합니다. 만들기를 선택하여 API를 만듭니다.

    Screenshot of the Create from Function App dialog populated with details of the Orders function.

    OnlineStore API Management 서비스는 OrderDetails에 사용 가능한(GET, POST) API가 모두 나와 있는 디자인 탭을 표시합니다.

포털에서 OnlineStore 주문 엔드포인트 테스트

API에 OrderDetails를 추가했으므로 Azure Portal에서 API Management 도구를 사용하여 테스트해 보겠습니다.

  1. OrderFunctionNNNNNN API 디자인 탭의 모든 작업에서 GET OrderDetails를 선택한 후 테스트 탭을 선택합니다.

  2. 쿼리 매개 변수 섹션에서 매개 변수 추가를 선택하고,이름 필드에 ‘이름’을 입력하고 필드에 Chiba를 입력합니다. 보내기를 선택합니다.

  3. HTTP 응답 메시지 탭에는 고객 이름, 주문의 총 가격, 배송 상태와 함께 주문 ID를 표시하는 JSON 개체와 함께 HTTP 요청 성공(HTTP/1.1/200 OK)이 표시됩니다.

  4. HTTP 요청 섹션으로 스크롤합니다. 요청이 azure-api.net 도메인 내의 하위 도메인과 하위 디렉터리로 전송되었음을 확인할 수 있습니다. 이 위치는 azurewebsites.net 호스트 도메인과는 다릅니다.

조합된 API 테스트

curl 명령줄 도구를 사용하여 API에 요청을 제출할 수 있습니다. cURL은 요청에 올바른 구독 키를 포함할 수 있으므로 이상적입니다. 요청에는 Azure API Management에서 호스트되며 이 경우 Products 및 Orders 함수로 구성되는 API의 위치도 필요합니다.

  1. Azure 리소스 메뉴 또는 홈에서 모든 리소스를 선택합니다.

  2. 유형을 기준으로 리소스를 정렬한 다음, OnlineStore API Management 서비스를 선택합니다. OnlineStore에 대한 API Management 서비스가 표시됩니다.

  3. Essentials 섹션에서 게이트웨이 URL을 마우스로 가리키고 클립보드에 복사 아이콘을 선택합니다.

  4. 오른쪽의 Azure Cloud Shell에서 몇 가지 변수를 정의해 보겠습니다. 다음 명령을 실행하여 <paste URL here> 자리 표시자를 클립보드에 복사한 URL 값으로 바꾼 후 Enter 키를 누릅니다. 이 값은 게이트웨이 변수를 정의합니다.

    GATEWAY_URL=<paste URL here>
    
  5. Azure의 OnlineStore API Management 서비스 메뉴에서 API까지 아래로 스크롤하고 구독을 선택합니다. OnlineStore API Management 인스턴스에 대한 구독 창이 나타납니다.

  6. 기본 제공 모든 액세스 구독에서 해당 열의 맨 오른쪽에 있는 줄임표(...)를 선택한 후 상황에 맞는 메뉴에서 키 표시/숨기기를 선택합니다. API의 기본 키와 보조 키가 나타납니다.

  7. 기본 키 필드에서 ‘클립보드에 복사’ 아이콘을 선택합니다.

  8. Cloud Shell에서 다음 명령을 실행하여 자리 표시자를 클립보드의 값으로 대체한 다음, Enter 키를 누릅니다.

    SUB_KEY=<paste key here>
    
  9. 이제 동일한 API Management 서비스를 쿼리하여 주문 및 제품에 대한 세부 정보를 요청할 수 있습니다.

    1. Henri라는 고객에 대한 세부 정보를 요청하려면 Cloud Shell에서 다음 명령을 실행합니다.

       curl -X GET "$GATEWAY_URL/orders/OrderDetails?name=Henri" -H "Ocp-Apim-Subscription-Key:$SUB_KEY"
      

      응답 내용에는 주문 56224Pascale Henri에게 배송되었음을 보여 주는 주문 세부 정보가 포함된 JSON 코드 블록이 포함되어 있습니다. 다른 결과를 위해 ChibaBarriclough 이름으로 이 명령을 시도할 수도 있습니다.

    2. id2인 제품의 세부 정보를 요청하려면 Cloud Shell에서 다음 명령을 실행합니다.

       curl -X GET "$GATEWAY_URL/products/ProductDetails?id=2" -H "Ocp-Apim-Subscription-Key:$SUB_KEY"
      

      제품의 세부 정보가 포함된 JSON 코드 블록이 응답 내용에 포함됩니다. 다른 결과를 위해 id13을 사용해서 이 명령을 시도할 수도 있습니다.

이제 GATEWAY_URL에서 정의한 대로 Azure API Management에서 사용되는 azure-api.net 도메인 내의 엔드포인트를 통해 이러한 두 함수를 호출할 수 있습니다. 다른 학습 모듈에서는 정책, 보안 설정, 외부 캐시 및 기타 기능을 API Management 게이트웨이의 함수에 적용하는 방법을 배울 수 있습니다. 게이트웨이는 코드를 변경하지 않고 여러 마이크로 서비스를 관리할 수 있는 중앙 제어 지점을 제공합니다.