PythonScript 정책 배포 오류 문제 해결

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

InvalidResourceUrlFormat

오류 메시지

Edge UI 또는 Edge 관리 API를 통한 API 프록시 배포가 다음 오류 메시지와 함께 실패합니다.

Error Deploying Revision revision_number to environment
Invalid resource url format. Resource url is invalid_URL.

오류 메시지 예시

Error Deploying Revision 2 to prod
Invalid resource url format. Resource url is py:myscript.py.

예시 스크린샷

원인

PythonScript 정책의 <ResourceURL> 또는 <IncludeURL> 요소 내에서 지정된 리소스 URL 형식이 잘못된 경우 API 프록시 배포가 실패합니다.

올바른 형식은 다음과 같습니다.

<ResourceURL>py://file_name.py</ResourceURL>
<IncludeURL>py://file_name.py</IncludeURL>

예를 들어 <ResourceURL> 요소가 아래와 같이 지정되면 요구된 패턴을 따르지 않기 때문에 API 프록시 배포가 실패합니다.

<ResourceURL>py:myscript.py</ResourceURL>

진단

  1. PythonScript 정책에 사용된 잘못된 리소스 URL 형식을 식별합니다. 이 정보는 오류 메시지에서 확인할 수 있습니다. 예를 들어 다음 오류에서 잘못된 리소스 URL 형식은 py:myscript.py입니다.

    Invalid resource url format. Resource url is py:myscript.py.
    
  2. 오류가 발생한 특정 API 프록시의 모든 PythonScript 정책을 검사합니다. <ResourceURL> 또는 <IncludeURL> 요소에 지정된 리소스 URL이 위의 1단계에서 식별된 잘못된 항목과 일치하는 PythonScript 정책이 있는 경우 이는 오류의 원인이 됩니다.

    예를 들어 다음 정책은 리소스 URL을 py:myscript.py로 지정하며 오류 메시지의 내용과 일치합니다.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <Script async="false" continueOnError="false" enabled="true" timeLimit="200" name="py-TotalVariable">
        <DisplayName>py-TotalVariable</DisplayName>
        <Properties/>
        <ResourceURL>py:myscript.py</ResourceURL>
    </Script>
    

    리소스 URL이 잘못된 py:myscript.py로 지정되었으므로 오류가 발생하며 API 프록시 배포에 실패합니다.

    Invalid resource url format. Resource url is py:myscript.py.
    

해상도

PythonScript 정책의 <ResourceURL> 요소에 지정된 리소스 URL 형식이 올바른지 확인하세요. 예를 들면 다음과 같습니다.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Script async="false" continueOnError="false" enabled="true" timeLimit="200" name="py-TotalVariable">
    <DisplayName>py-TotalVariable</DisplayName>
    <Properties/>
    <ResourceURL>py://myscript.py</ResourceURL>
</Script>

InvalidResourceUrlReference

오류 메시지

Edge UI 또는 Edge 관리 API를 통한 API 프록시 배포가 다음 오류 메시지와 함께 실패합니다.

Error Deploying Revision revision_number to environment
Invalid resource url ref invalid_reference in policy policy_name in org_name

오류 메시지 예시

Error Deploying Revision 2 to prod
Invalid resource url ref py://myscript.py in policy Python_script in myorg

예시 스크린샷

원인

<ResourceURL><IncludeURL> 요소가 존재하지 않는 PythonScript 파일을 참조하는 경우 API 프록시 배포가 실패합니다. 로컬 머신에서 프록시 번들을 배포하는 경우 PythonScript 소스 파일을 /apiproxy/resources/py(API 프록시 범위)에 저장해야 합니다.

Edge UI에서 PythonScript 소스 파일은 아래와 같이 API 프록시 편집기의 탐색기 창에 있는 스크립트 섹션의 py 아래에 표시됩니다.

예를 들어 조직 또는 환경의 모든 프록시에서 PythonScript 코드를 사용할 수 있도록 하기 위해 조직 및 환경 수준 저장소에 리소스 파일을 저장할 수도 있습니다. 정책에 지정된 리소스 파일을 찾을 수 없는 경우 이 오류가 발생합니다.

진단

  1. 오류가 발생한 PythonScript 정책과 잘못된 리소스 URL 참조를 확인합니다. 이 정보는 오류 메시지에서 확인할 수 있습니다. 예를 들어 다음 오류에서 정책 이름은 Python_script이고 잘못된 리소스 URL 참조는 py://myscript.py입니다.

    Invalid resource url ref py://myscript.py in policy Python_script in myorg
    
  2. 실패한 PythonScript 정책에 지정된 리소스 URL 참조가 오류 메시지에 식별된 값과 일치하는지 확인합니다(위의 1단계). 예를 들어 다음 정책은 리소스 URL 참조를 py://myscript.py로 지정하며 이는 오류 메시지의 내용과 일치합니다.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <Script async="false" continueOnError="false" enabled="true" name="Python_script">
        <DisplayName>Python-1</DisplayName>
        <Properties/>
        <ResourceURL>py://myscript.py</ResourceURL>
    </Script>
    
  3. 1단계에서 확인한 파일이 특정 API 프록시 번들의 일부인지, 아니면 조직 또는 환경 범위에 있는지 확인합니다.

    1. 파일이 특정 API 프록시 번들에 속하는지 확인하려면 다음 단계 중 하나를 따르세요.
      1. Edge UI에서 이 파일이 API 프록시의 스크립트 섹션에 있는지 확인합니다.
      2. API 프록시 번들을 다운로드하고 파일이 있는지 검색합니다.
    2. 파일이 특정 API 프록시 번들의 일부가 아닌 경우 조직 또는 환경 수준에 존재하는지 확인합니다. 이 조사를 위해 Resource Files API를 사용할 수 있습니다.

    API 프록시, 조직 또는 환경 수준에 파일이 없는 경우 이로 인해 오류가 발생한 것입니다.

    위의 예시에서 잘못된 PythonScript 파일 이름은 myscript.py입니다. 아래 스크린샷에서는 정책에서 리소스 URL로 지정된 파일이 스크립트 섹션에 나타나지 않습니다. 또한 조직 또는 환경 수준에 파일이 존재하지 않습니다. 따라서 다음 오류와 함께 API 프록시 배포가 실패합니다.

    Invalid resource url ref py://myscript.py in policy Python_script in myorg
    

해상도

<ResourceURL><IncludeURL> 요소에 지정된 PythonScript 파일이 API 프록시, 조직 또는 환경 수준에 있는 유효한 파일을 참조하는지 확인합니다.

위에 나온 PythonScript 정책 예시를 수정하려면 API 프록시 번들에 myscript.py 파일을 추가하세요. 아래 스크린샷에서는 <ResourceURL><IncludeURL> 요소에 지정된 PythonScript 파일을 API 프록시 번들의 스크립트 섹션에 볼 수 있습니다.