FlowCallout 정책 런타임 오류 문제 해결

현재 Apigee Edge 문서를 보고 있습니다.
Apigee X 문서.
정보

SharedFlowNotFound

오류 코드

flow.SharedFlowNotFound

오류 응답 본문

{
    "fault": {
        "faultstring": "Shared Flow shared_flow_name Not Found",
        "detail": {
            "errorcode": "flow.SharedFlowNotFound"
        }
    }
}

가능한 원인

이 오류의 가능한 원인은 다음과 같습니다.

원인 설명
공유 흐름을 사용할 수 없습니다. 공유 흐름이 존재하지 않습니다.
공유 흐름이 배포되지 않았습니다. 공유 흐름이 있지만 배포되지 않았습니다.

원인: 공유 흐름을 사용할 수 없음

흐름 콜아웃 정책에서 <SharedFlowBundle> 요소 내에 정의된 공유 흐름이 환경에 없으면 이 오류가 발생합니다.

예를 들어 흐름 콜아웃 정책의 <SharedFlowBundle> 요소에 SharedFlow_Sample이라는 공유 흐름이 포함되어 있고 이 공유 흐름이 환경에 없으면 오류가 발생합니다.

오류 메시지 예

{
    "fault": {
        "faultstring": "Shared Flow SharedFlow_Sample Not Found",
        "detail": {
            "errorcode": "flow.SharedFlowNotFound"
        }
    }
}

진단

  1. 존재하지 않는 공유 흐름을 식별합니다. 오류 응답의 faultstring 요소에서 확인할 수 있습니다. 예를 들어 다음 faultstring에서 공유 흐름 이름은 SharedFlow_Sample입니다.

    "faultstring": "Shared Flow SharedFlow_Sample Not Found"

  2. 오류가 발생한 특정 API 프록시의 모든 흐름 콜아웃 정책을 검사합니다. 위의 1단계에서 식별된 흐름 이름으로 <SharedFlowBundle> 요소가 지정된 흐름 콜아웃 정책이 있는지 확인합니다.

    예를 들어 다음 정책은 <SharedFlowBundle>SharedFlow_Sample로 지정하며, 이는 오류 문자열의 내용과 일치합니다.

    <FlowCallout async="false" continueOnError="false" enabled="true" name="Auth-Flow-Callout">
       <DisplayName>Auth Flow Callout</DisplayName>
       <SharedFlowBundle>SharedFlow_Sample</SharedFlowBundle>
    </FlowCallout>
    
  3. Edge UI에서 API > 공유 흐름 아래에 이 공유 흐름이 있는지 확인합니다. 존재하지 않으면 이것이 오류의 원인입니다. (New Edge UI에서는 개발 탭에서 공유 흐름을 찾을 수 있습니다.)

    예를 들어 아래 스크린샷에서 공유 흐름 SharedFlow_Sample은 존재하지 않습니다.

    이 공유 흐름이 존재하지 않으므로 다음 오류 코드가 표시됩니다.

    flow.SharedFlowNotFound
    

해결 방법

흐름 콜아웃 정책의 <SharedFlowBundle> 요소에 지정된 공유 흐름이 API 요청이 실행되는 특정 환경에 존재하고 배포되어 있는지 확인합니다.

다음 방법 중 하나를 선택하여 문제를 해결할 수 있습니다.

  1. 아래와 같이 SharedFlow_Sample라는 공유 흐름을 만들고 아래와 같이 테스트 환경에 배포합니다.

  2. 흐름 콜아웃 정책에서 테스트 환경에 배포된 기존 공유 흐름을 사용합니다. 예를 들어 흐름 콜아웃 정책에서 SharedFlow_demo를 지정할 수 있습니다.

    <FlowCallout async="false" continueOnError="false" enabled="true" name="Auth-Flow-Callout">
      <DisplayName>Auth Flow Callout</DisplayName>
      <SharedFlowBundle>SharedFlow_demo</SharedFlowBundle>
    </FlowCallout>
    

    테스트 환경에 API를 호출하면 흐름 콜아웃도 테스트 환경에 배포되므로 더 이상 오류가 표시되지 않습니다.

원인: 공유 흐름이 배포되지 않음

예를 들어 흐름 콜아웃 정책의 <SharedFlowBundle> 요소에 지정된 공유 흐름이 배포되지 않으면 이 오류가 발생합니다.

예를 들어 API 요청이 이루어진 특정 환경에 배포되지 않은 SharedFlow_example이라는 공유 흐름이 흐름 콜아웃 정책의 <SharedFlowBundle> 요소에 포함되어 있으면 오류가 발생합니다.

오류 메시지 예

{
    "fault": {
        "faultstring": "Shared Flow Shared-Flow_example Not Found",
        "detail": {
            "errorcode": "flow.SharedFlowNotFound"
        }
    }
}

진단

  1. 배포되지 않은 공유 흐름을 식별합니다. 오류 응답의 faultstring 요소에서 확인할 수 있습니다. 예를 들어 다음 faultstring에서 공유 흐름 이름은 Shared-Flow_example입니다.

    "faultstring": "Shared Flow Shared-Flow_example Not Found"

  2. Edge UI에서 이 공유 흐름이 배포되었는지 확인합니다.

    예를 들어 아래 스크린샷에서 공유 흐름 SharedFlow_example이 있지만 배포되지 않았음을 확인할 수 있습니다.

    이 공유 흐름은 배포되지 않으므로 오류 코드가 수신됩니다.

    flow.SharedFlowNotFound
    

해결 방법

흐름 콜아웃 정책의 <SharedFlowBundle> 요소에 지정된 공유 흐름이 API 요청이 실행되는 특정 환경에 존재하고 배포되어 있는지 확인합니다.

위의 예시를 수정하려면 아래와 같이 테스트 환경에 SharedFlow_example라는 공유 흐름을 배포합니다.

테스트 환경에 API를 호출하면 흐름 콜아웃도 테스트 환경에 배포되므로 더 이상 오류가 표시되지 않습니다.