확장 프로그램 디버깅

현재 Apigee Edge 문서가 표시되고 있습니다.
Apigee X 문서로 이동
정보

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

  • Apigee Edge 추적 도구를 사용하면 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 프록시의 ExtensionCall 정책에서 확장 프로그램을 통해 외부 리소스로 흘러 다시 돌아옵니다. 따라서 이러한 위치에서 오류가 발생할 수 있습니다.

표시되는 오류는 다음 카테고리로 분류됩니다.

확장 프로그램 구성 오류

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

예를 들어 잘못된 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'

확장 콜아웃 정책 구성 오류

이 오류는 정책 구성 구문 오류 또는 잘못된 구성 키나 값으로 Extension콜아웃 정책이 잘못 구성된 경우에 발생합니다. 이러한 오류는 정책 구성 방식에 따라 두 가지 형태로 표시됩니다.

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

    이 문제는 구성 오류가 확장 프로그램에는 유효한 것으로 보이지만 외부 리소스에 대해서는 유효하지 않은 경우에 발생할 수 있습니다. 예를 들어 확장 프로그램이 잘못된 데이터베이스 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'