확장 프로그램 디버깅

Apigee Edge 문서입니다.
Apigee X 문서로 이동
정보

Trace 도구와 확장 프로그램 로그의 두 위치에 표시되는 메시지를 사용하여 확장 프로그램을 디버그할 수 있습니다. 확장 프로그램이 작동하지 않는 경우 문제를 파악하는 데 두 위치의 정보가 모두 필요할 수 있습니다.

  • Apigee Edge Trace 도구에서는 API 프록시 코드를 개발하면서 반복적으로 테스트하고 수정할 수 있습니다. 추적 메시지에는 API 프록시 및 정책 구성을 비롯한 API 프록시 코드의 오류가 포함됩니다.

    Trace 도구에 표시되는 확장 프로그램 관련 오류는 일반적으로 HTTP 오류 코드와 함께 실패한 확장 프로그램 호출을 제외하고는 세부정보가 많이 포함되어 있지 않습니다. 여기에 유용한 내용이 표시되지 않으면 다음으로 확인할 만한 곳은 사용 중인 확장 프로그램의 로그입니다.

  • 확장 프로그램은 런타임에 로그 항목을 생성합니다. 확장 프로그램 로그는 조직 관리자만 사용할 수 있습니다.

    이러한 로그에는 확장 프로그램이 상호작용하도록 구성된 외부 리소스에서 반환된 항목이 포함됩니다. 예를 들어 확장 프로그램에서 외부 리소스 사용자 인증 정보가 잘못 구성된 경우 여기에 오류가 표시될 수 있습니다.

    로그에는 내부 확장 프로그램 코드의 항목도 포함됩니다. 로그를 살펴볼 때는 일부 항목이 수정 중인 오류와 관련이 없음을 기억하세요. 확장 프로그램 관련 로그 항목은 일반적으로 Cloud Pub/Sub 확장 프로그램의 다음 로그 항목과 같이 details로 시작합니다.

    details: 'Invalid resource name given (name=projects/example-test-123456/topic/extension-example). Refer to https://cloud.google.com/pubsub/docs/admin#resource_names for more information.'
    

오류 유형 및 원인

확장 프로그램 요청 처리는 API 프록시의 ExtensionCallout 정책에서 확장 프로그램을 통해 외부 리소스로 이동한 다음 다시 돌아옵니다. 따라서 이러한 위치 중 어느 곳에서나 오류가 발생할 수 있습니다.

표시되는 오류는 다음 카테고리 중 하나에 해당할 수 있습니다.

확장 프로그램 구성 오류

이는 환경에 확장 프로그램을 추가할 때 조직 관리자가 실행하는 구성입니다.

예를 들어 잘못된 Google Cloud 프로젝트 ID로 Cloud Logging 확장 프로그램을 구성하면 Google Cloud Logging에서 확장 프로그램에 오류를 반환합니다. 이러한 오류에 관한 세부정보는 일반적으로 확장 프로그램 로그에 있습니다.

Trace 도구의 증거

프록시 편집기에서 이러한 오류는 일반적으로 4xx 또는 5xx 수준 오류로 표시됩니다. 그러나 프록시 편집기에는 확장 프로그램이 오류를 반환했다고 표시하는 것 외에는 오류의 원인에 관한 구체적인 내용이 표시되지 않습니다.

{
  "fault": {
    "faultstring":"Execution of ConnectorCallout Logging-Extension failed. Reason: Connector returned error statuscode=500",
    "detail": {
      "errorcode":"steps.connectorcallout.ExecutionFailed"
    }
  }
}

확장 프로그램 로그의 증거

이러한 유형의 오류에 관한 세부정보가 있는 경우 확장 프로그램의 로그 항목에 표시됩니다. Cloud Pub/Sub 서비스에서 반환하는 다음 오류 메시지는 잘못된 형식의 프로젝트 ID로 인해 발생합니다.

details: 'Project does not exist: example-test-12345'

ExtensionCallout 정책 구성 오류

이러한 오류는 정책 구성 문법 오류 또는 잘못된 구성 키나 값으로 인해 ExtensionCallout 정책이 잘못 구성된 경우에 발생합니다. 이러한 오류는 정책 구성 방식에 따라 두 가지 형식을 취합니다.

  • 외부 리소스에서 평가한 잘못된 값

    이는 구성 오류가 확장 프로그램에는 유효하지만 외부 리소스에는 유효하지 않은 경우에 발생할 수 있습니다. 예를 들어 확장 프로그램이 잘못된 데이터베이스 ID를 Cloud Spanner에 전달하면 Cloud Spanner는 확장 프로그램 로그에 기록된 오류를 반환합니다.

    details: 'Database not found: projects/example-test-123456/instances/spanner-extension-example-db/databases/my-business-d'
    

    정책의 <Input> 요소에 잘못된 구성 JSON이 있는 경우에도 이 오류가 발생할 수 있습니다. 일부 확장 프로그램의 경우 JSON의 일부는 확장 프로그램에서 처리되고 일부는 리소스에 전달됩니다. 예를 들어 Cloud Logging 확장 프로그램 구성 JSON에는 콘텐츠가 Cloud Logging에 전달되는 metadata 객체가 포함되어 있습니다. type 대신 typ와 같이 잘못된 키 이름이 있으면 외부 리소스의 오류가 반환되어 확장 프로그램 로그에 항목으로 표시될 수 있습니다.

    details: 'Resource type cannot be empty'
    
  • 확장 프로그램에서 평가한 잘못된 값

    이러한 오류에는 <Input> 요소 JSON의 정책 평가 부분에 있는 문법 오류, <Action> 요소의 작업 이름 철자 오류 등이 포함됩니다. 이러한 오류는 일반적으로 Trace 도구에 표시되지만 확장 프로그램 로그에는 표시되지 않습니다.

Trace 도구의 증거

프록시 편집기에서 이러한 오류는 일반적으로 4xx 또는 5xx 수준 오류로 표시됩니다. 그러나 프록시 편집기에는 확장 프로그램이 오류를 반환했다고 표시하는 것 외에는 오류의 원인에 관한 구체적인 내용이 표시되지 않습니다. Cloud Firestore 확장 프로그램에서 작업 이름을 잘못 입력하면 Trace 도구에 다음 오류가 표시됩니다.

{
  "fault":{
    "faultstring":"Execution of ConnectorCallout Add-User-Data failed. Reason: Connector returned error statuscode=404","detail":
    {
      "errorcode":"steps.connectorcallout.ExecutionFailed"
    }
  }
}

확장 프로그램 로그의 증거

정책 구성으로 인해 외부 리소스에 처리 오류가 발생하면 일반적으로 로그에 오류가 표시됩니다.

확장 프로그램과 관련 없는 이유로 외부 리소스에 대한 요청이 성공하지 못한 오류입니다.

예를 들어 Cloud Spanner 확장 프로그램을 사용하여 데이터베이스에 행을 추가하고 있는데 행의 기본 키 값이 이미 기존 행에서 사용되고 있다고 가정해 보겠습니다. Cloud Spanner는 확장 프로그램에 오류를 반환하여 확장 프로그램 로그에 오류를 추가합니다.

Trace 도구의 증거

프록시 편집기에서 이러한 오류는 일반적으로 4xx 또는 5xx 수준 오류로 표시됩니다. 그러나 프록시 편집기에는 확장 프로그램이 오류를 반환했다고 표시하는 것 외에는 오류의 원인에 관한 구체적인 내용이 표시되지 않습니다.

{
  "fault":{
    "faultstring":"Execution of ConnectorCallout Add-User-Data failed. Reason: Connector returned error statuscode=404",
    "detail":{
      "errorcode":"steps.connectorcallout.ExecutionFailed"
    }
  }
}

확장 프로그램 로그의 증거

로그에는 일반적으로 외부 리소스 자체의 메시지가 포함된 항목이 있습니다. 다음 Cloud Spanner 로그 메시지에는 기존 기본 키 값 오류가 설명되어 있습니다.

details: 'Row [jonesy42] in table user already exists'