Khắc phục sự cố lỗi triển khai chính sách PythonScript

Bạn đang xem tài liệu về Apigee Edge.
Truy cập vào tài liệu Apigee X.
thông tin

InvalidResourceUrlFormat

Thông báo lỗi

Việc triển khai một proxy API thông qua giao diện người dùng Edge hoặc API quản lý Edge không thành công và bạn nhận được thông báo lỗi sau:

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

Thông báo lỗi mẫu

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

Ảnh chụp màn hình ví dụ

Nguyên nhân

Nếu định dạng của URL tài nguyên được chỉ định trong <ResourceURL> hoặc phần tử <IncludeURL> của chính sách PythonScript không hợp lệ, thì quá trình triển khai proxy API sẽ không thành công.

Định dạng chính xác như sau:

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

Ví dụ: nếu phần tử <ResourceURL> được chỉ định như minh hoạ dưới đây, thì việc triển khai proxy API sẽ không thành công vì không tuân theo mẫu bắt buộc:

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

Chẩn đoán

  1. Xác định định dạng URL tài nguyên không hợp lệ được dùng trong chính sách PythonScript. Bạn có thể tìm thấy thông tin này trong thông báo lỗi. Ví dụ: trong lỗi sau, định dạng URL tài nguyên không hợp lệ là py:myscript.py:

    Invalid resource url format. Resource url is py:myscript.py.
  2. Kiểm tra tất cả các chính sách PythonScript trong API Proxy cụ thể nơi xảy ra lỗi. Nếu có bất kỳ chính sách PythonScript nào mà URL tài nguyên được chỉ định trong phần tử <ResourceURL> hoặc <IncludeURL> khớp với mục nhập không hợp lệ được xác định ở bước 1 ở trên, thì đó là nguyên nhân gây ra lỗi.

    Ví dụ: chính sách sau đây chỉ định URL tài nguyên là py:myscript.py, khớp với nội dung trong thông báo lỗi:

    <?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>

    Vì URL tài nguyên được chỉ định là py:myscript.py (không hợp lệ), nên việc triển khai API Proxy sẽ không thành công và gặp lỗi:

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

Độ phân giải

Đảm bảo rằng định dạng URL tài nguyên được chỉ định trong phần tử <ResourceURL> của chính sách PythonScript là hợp lệ. Ví dụ:

<?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

Thông báo lỗi

Việc triển khai một proxy API thông qua giao diện người dùng Edge hoặc API quản lý Edge không thành công và bạn nhận được thông báo lỗi sau:

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

Thông báo lỗi mẫu

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

Ảnh chụp màn hình ví dụ

Nguyên nhân

Nếu các phần tử <ResourceURL> và <IncludeURL> đề cập đến một tệp PythonScript không tồn tại, thì việc triển khai proxy API sẽ không thành công. Nếu bạn đang triển khai một gói proxy từ máy cục bộ, thì các tệp nguồn PythonScript phải được lưu trữ trong /apiproxy/resources/py(trong phạm vi proxy API).

Trong giao diện người dùng Edge, các tệp nguồn PythonScript sẽ xuất hiện trong py trong phần Tập lệnh của ngăn Navigator của trình chỉnh sửa proxy API như minh hoạ bên dưới:

Bạn cũng có thể lưu trữ các tệp tài nguyên trong kho lưu trữ cấp tổ chức và môi trường (ví dụ: để cung cấp mã PythonScript cho tất cả các proxy trong một tổ chức hoặc môi trường). Nếu không tìm thấy bất kỳ tệp tài nguyên nào được chỉ định trong chính sách, thì lỗi này sẽ xảy ra.

Chẩn đoán

  1. Xác định chính sách PythonScript nơi xảy ra lỗi và tham chiếu URL tài nguyên không hợp lệ. Bạn có thể tìm thấy thông tin này trong thông báo lỗi. Ví dụ: trong lỗi sau đây, tên chính sách là Python_script và giá trị tham chiếu URL tài nguyên không hợp lệ là py://myscript.py:

    Invalid resource url ref py://myscript.py in policy Python_script in myorg
  2. Xác minh rằng giá trị tham chiếu URL tài nguyên được chỉ định trong chính sách PythonScript không thành công khớp với giá trị được xác định trong thông báo lỗi (bước 1 ở trên). Ví dụ: chính sách sau đây chỉ định giá trị tham chiếu URL tài nguyên là py://myscript.py, khớp với giá trị trong thông báo lỗi:

    <?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. Kiểm tra xem tệp được xác định trong tệp ở bước 1 có thuộc gói API Proxy cụ thể hay không, hoặc có tồn tại ở phạm vi tổ chức hoặc môi trường hay không.

    1. Để kiểm tra xem tệp có thuộc gói API Proxy cụ thể hay không, hãy làm theo một trong các bước bên dưới:
      1. Trong giao diện người dùng Edge, hãy kiểm tra xem tệp này có nằm trong phần Tập lệnh của proxy API hay không.
      2. Tải gói API Proxy xuống và tìm xem tệp có tồn tại hay không.
    2. Nếu tệp không thuộc gói API Proxy cụ thể, hãy kiểm tra xem tệp đó có tồn tại ở cấp tổ chức hoặc môi trường hay không. Bạn có thể dùng Resource Files API cho hoạt động điều tra này.

    Nếu tệp không tồn tại ở cấp API Proxy, tổ chức hoặc môi trường, thì đó là nguyên nhân gây ra lỗi.

    Trong ví dụ trên, tên tệp PythonScript không hợp lệ là myscript.py. Trong ảnh chụp màn hình bên dưới, hãy lưu ý rằng tệp được chỉ định làm URL tài nguyên trong chính sách không xuất hiện trong phần Tập lệnh. Ngoài ra, tệp này không tồn tại ở cấp tổ chức hoặc môi trường. Do đó, việc triển khai API Proxy không thành công với lỗi:

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

Độ phân giải

Đảm bảo rằng các tệp PythonScript được chỉ định trong các phần tử <ResourceURL> và <IncludeURL> tham chiếu đến một tệp hợp lệ tồn tại ở cấp độ API Proxy, tổ chức hoặc môi trường.

Để sửa chính sách PythonScript mẫu như trên, hãy thêm tệp myscript.py vào gói API Proxy. Trong ảnh chụp màn hình bên dưới, bạn có thể thấy rằng các tệp PythonScript được chỉ định trong các phần tử <ResourceURL> và <IncludeURL> xuất hiện trong phần Tập lệnh của gói API Proxy: