API 감지 를 위한 DataPower API Gateway 프록시 콜렉터 구성

DataPower® API Gateway 프록시 데이터 소스 콜렉터를 API 감지 기능에 추가하는 방법입니다.

시작하기 전에

API 검색 DataPower API Gateway 프록시 콜렉터가 제공자 조직에서 데이터를 수집하려면 먼저 제공자 조직 분석 데이터의 공유를 사용으로 설정해야 합니다. API 검색 에 대한 분석 데이터 공유의 내용을 참조하십시오.

소스를 관리하려면 다음 제공자 조직 역할 중 하나가 필요합니다.
  • 조직 관리자
  • 소유자
  • Settings: Manage 권한이 있는 사용자 정의 역할입니다.

이 태스크에 대한 정보

API 검색 은 API 개발 프로세스에 API를 검색하고 추가하는 데 사용할 수 있는 IBM® API Connect 의 추가 기능입니다. API를 감지하기 전에 하나 이상의 데이터 소스 콜렉터를 구성해야 합니다. 그러면 수집기가 공급자 조직에 첫 번째 OpenAPI 문서를 보낼 때 이러한 수집기가 API 관리자 UI의 소스 탭에 자동으로 추가됩니다.

API 감지 DataPower API Gateway 프록시 콜렉터를 구성하기 위해 API Connect의 제공자 조직에서 프록시 API 정의를 작성하거나 기존 프록시 API를 업데이트할 수 있습니다. 이 신규 또는 기존 프록시 API에는 OpenAPI 문서를 검색하는 데 사용할 기존 REST 서비스의 엔드포인트가 포함됩니다. 그런 다음 검색된 OpenAPI 문서를 필요에 따라 드래프트 API에 복사하여 API Manager에서 전체 라이프사이클 관리를 사용으로 설정할 수 있습니다. 기존 프록시 API 정의를 업데이트하는 경우 콜렉션이 발생하는 데 필요한 최소 필드는 1단계의 예제 YAML 에 표시된 invoke 정책 log 세그먼트 및 두 set-variable 세그먼트 모두의 포함입니다.

프로시저

API Manager UI를 사용하여 DataPower API Gateway 프록시 콜렉터를 구성하려면 다음 단계를 완료하십시오. 툴킷 CLI 를 사용하여 프록시 API 정의를 작성할 수도 있습니다. 툴킷 CLI 사용 방법에 대한 일반적인 정보는 명령줄 도구 개요를 참조하세요.
  1. 다음 예제와 같이 프록시 API 정의에 대한 YAML 파일을 작성하십시오.
    swagger: '2.0'
    info:
      version: version
      title: title
      x-ibm-name: name
      contact:
        name: contact_name
    basePath: /
    x-ibm-configuration:
      properties:
        target-url:
          value: target_url
          description: url_description
          encoded: false
      cors:
        enabled: true
      gateway: datapower-api-gateway
      type: rest
      phase: realized
      enforced: true
      testable: true
      assembly:
        execute:
          - invoke:
              title: invoke
              version: 2.0.0
              verb: keep
              target-url: $(target-url)$(request.path)$(request.search)
              follow-redirects: false
              timeout: 60
              parameter-control:
                type: allowlist
                values: []
              header-control:
                type: blocklist
                values: []
              inject-proxy-headers: true
              persistent-connection: true
          - log:
              version: 2.1.0
              title: log
              log-level: default
              mode: gather-only
          - set-variable:
              version: 2.0.0
              title: set-variable
              actions:
                - set: log.custom_data.discoveryServiceCollection
                  value: 'true'
                  type: string
              description: Setting specific collector key
          - set-variable:
              version: 2.0.0
              title: set-variable
              actions:
                - set: log.custom_data.apiTargetURL
                  value: $(target-url)
                  type: string
              description: Setting specific collector target URL
        catch: []
        finally: []
      activity-log:
        enabled: true
        success-content: payload
        error-content: payload
      catalogs: {}
      buffering: true
    paths:
      /{+pathparam}:
        get:
          responses:
            '200':
              description: success
              schema:
                type: string
          consumes: []
          produces: []
        post:
          responses:
            '201':
              description: success
              schema:
                type: string
          consumes: []
          produces: []
        put:
          responses:
            '201':
              description: success
              schema:
                type: string
        patch:
          responses:
            '200':
              description: success
              schema:
                type: string
          consumes: []
          produces: []
        delete:
          responses:
            '204':
              description: success
              schema:
                type: string
          consumes: []
          produces: []
        parameters:
          - name: +pathparam
            in: path
            required: true
            type: string
    schemes:
      - https
    
    여기서,
    • version 는 API의 버전 번호입니다.
    • title 는 API의 제목입니다. 예를 들어, My proxy API입니다.
    • name 은 API의 이름입니다. name 필드의 값은 명령에서 API를 식별하는 데 사용할 수 있는 단일 문자열이어야 합니다 (예: my-proxy-api).
    • contact_name 은 API에 대한 컨택의 이름입니다.
    • target_url URL 는 노출하고자 하는 기존 REST 서비스의 엔드포인트입니다. 예를 들어, https://myorg.com/api/입니다.
    • url_description URL 의 설명입니다.
    • $(target-url)$(request.path)$(request.search) 는 기존 REST 서비스의 target_url 엔드포인트 뒤에 와일드카드 경로 및 매개변수를 전달할 수 있도록 하는 invoke 정책입니다. $(target-url)$(request.path)$(request.search)접미부를 추가하는 것은 프록시 OpenAPI 스키마 정의에 명시적으로 정의되지 않은 경우에도 API 사용자가 호출하는 임의의 수 (1-n) 의 요청 경로 및 임의의 수 (1-n) 의 경로 매개변수가 감지 콜렉터에 의해 캡처되고 처리됨을 의미합니다.
    • log 는 사용자 정의 로그를 추가할 수 있도록 하는 log 정책입니다.
    • set-variablediscoveryServiceCollection 이라는 특정 수집기 키를 설정하는 set-variable 정책과 URL 라는 특정 수집기 대상을 설정하는 apiTargetURL 정책입니다. 콜렉터는 discoveryServiceCollection 키를 사용하여 프록시 API 정의와 연관된 이벤트에 대한 분석 데이터를 필터링하고 apiTargetURL 를 사용하여 다른 데이터 소스에서 중복 호출을 필터링합니다.
    • activity-log 는 감지된 OpenAPI 재구성이 완료되는 방법을 결정하는 activity-log 정책입니다. success-contenterror-content 필드를 모두 payload 로 설정하면 요청 및 응답 스키마를 올바르게 작성할 수 있도록 콜렉터에 충분한 데이터를 제공합니다. 이러한 필드를 activity 또는 header 데이터로 설정할 수도 있는데, 두 경우 모두 OpenAPI 구조에서 검색할 수 있는 항목이 줄어듭니다. 콜렉터는 페이로드 값을 보지 않으며 이러한 값은 콜렉터에서 감지 기능으로 전송되기 전에 교정됩니다.
    • paths 를 와일드카드 값(예: {+pathparam})으로 설정하면 프록시 API에서 검색 가능한 경로의 최대 범위를 확보할 수 있습니다. paths.parameters 섹션은 동일한 값으로 정의되어야 합니다. paths:/{+pathparam} 특성 아래에서 get, post, patch, putdelete 에 대한 스텁 메소드를 추가하여 발견할 수 있는 모든 오퍼레이션에 대해 프록시를 통해 최대 범위를 제공할 수 있습니다.
  2. API Manager UI에서 제공자 조직에 로그인하십시오.
  3. 탐색 창에서 [개발 ]을 API UI 탐색 분할창의 개발 아이콘 클릭한 다음 [추가 ] > [API]를 클릭합니다.
    API 유형 선택 화면이 표시됩니다.
  4. 가져오기 섹션에서 기존 OpenAPI 을 클릭한 다음 다음.
  5. 다음 방법 중 하나를 선택하여 YAML 파일을 선택하십시오.
    • 파일을 드래그합니다.
    • 파일을 찾아보십시오.
    • 파일의 파일 이름 확장자( URL )를 지정합니다.
    마법사가 YAML의 유효성을 검사하고 유효성 검증에 성공했음을 나타내는 메시지를 표시합니다.
  6. 선택한 파일을 가져오려면 다음 을 클릭하십시오.
    가져오기의 요약은 API 정의가 작성되었음을 확인합니다.
  7. API 편집을 클릭하십시오.
    API 정의가 디자인 탭에서 열립니다.
  8. 테스트 탭을 클릭하여 API 감지 작성을 시작하십시오.
    요청 필드를 사용하면 프록시 API를 통해 GET, POST, PATCH, PUTDELETE 메소드를 전달하여 API 트래픽을 찾을 수 있습니다. 예를 들어,
    GET https://myorg.com:9443/test/sandbox/users
    사용자의 목록을 리턴합니다.
    Draft comment: jendavidse@uk.ibm.com
    Need some good examples here please :)
    API 트래픽이 발견되면 DataPower API Gateway 프록시 콜렉터가 API 발견 기능에서 사용 가능하게 됩니다.
  9. API 관리자 UI에서 ‘탐색’ 아이콘을 클릭한 발견 아이콘은 검은색 배경에 흰색으로 표시된 쌍안경의 아웃라인입니다. 다음, ‘소스’ 탭을 클릭하여 프록시 DataPower API Gateway 수집기를 확인하세요.
    소스의 상태는 다음과 같습니다.
    • 사용 가능 -소스가 사용 가능하며 해당 구성에 따라 콜렉터와 동기화됩니다.
    • 사용 안함 -소스가 사용 안함으로 설정되고 API Connect 가 콜렉터의 파일을 허용하지 않습니다. 이 상태는 감지 조작이 실패하는 경우 감지 서비스에 의해 설정됩니다.
    • 비정상 -소스 콜렉터를 사용할 수 없습니다.
    • 일시정지됨 -소스가 일시정지되고 API Connect 가 콜렉터의 파일을 승인하지 않습니다.
  10. 선택 사항: 소스 옆에 있는 옵션 옵션 아이콘은 흰색 배경에 세 개의 세로 검은색 점으로 된 세트입니다. 아이콘을 클릭하여 상태를 변경할 수 있습니다.
    • 콜렉터 일시정지 -소스를 일시정지합니다.
    • 콜렉터 삭제 - API Manager UI에서 소스를 삭제합니다. 외부 소스 파일은 삭제되지 않습니다.
    • 콜렉터 재개 -일시정지되었거나 사용 불가능한 소스를 다시 시작합니다.
  11. 선택 사항: 표 머리글에 있는 ‘열 열 관리 아이콘은 흰색 배경에 검은색으로 표시되는 휠의 아웃라인입니다. 관리’ 아이콘을 클릭하여 열의 순서와 표시 방식을 변경할 수 있습니다.

결과

이제 DataPower API Gateway 프록시 데이터 소스 콜렉터에서 API 트래픽 감지를 수행할 준비가 되었습니다. 콜렉터는 프록시의 target_url 뒤에서 사용 가능한 경로에서 액세스할 수 있는 애플리케이션과 상호작용하기 위해 테스트를 위한 수동 요청이 작성되거나 프록시 API가 사용자에게 제공될 때 API Connect 에 대한 업데이트를 게시합니다. API 정의가 발견되고 처리될 때마다 데이터 소스의 마지막 실행 필드가 활동을 반영하도록 변경됩니다.

다음에 수행할 작업

API Manager UI의 검색 섹션에서 API 탭을 클릭하고 데이터 소스 콜렉터에서 API 트래픽을 검토할 수 있습니다. 자세한 내용은 ‘검출된 API 검토’를 참조하세요.