PythonScript 정책 배포 오류 문제 해결

ApigeeApigee Hybrid 문서입니다.
Apigee Edge 문서 보기

InvalidResourceUrlFormat

오류 메시지

다음 오류 메시지와 함께 Apigee UI 또는 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.

예시 스크린샷

버전 2를 prod에 배포하는 중에 오류가 발생했습니다.

원인

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

오류 메시지

다음 오류 메시지와 함께 Apigee UI 또는 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

예시 스크린샷

버전 2를 prod에 배포하는 중에 오류가 발생했습니다.

원인

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

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

API 프록시 편집기 탐색창 스크립트 섹션

또한 리소스 파일을 환경 수준 저장소에 저장할 수 있습니다(예: 환경의 모든 프록시에서 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. Apigee 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
    

잘못된 리소스 URL

해결 방법

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

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

API 프록시 번들의 스크립트 섹션.