Extension Callout 政策部署错误问题排查

<ph type="x-smartling-placeholder"></ph> 您正在查看 Apigee Edge 文档。
转到 Apigee X 文档
信息

InvalidConnectorInstance

错误消息

通过 Edge 界面或 Edge Management API 部署 API 代理失败,并显示以下错误消息:

Error Saving Revision revision_number
In policy_name: Connector must not be empty.

错误消息示例

Error Saving Revision 1
In Extension Callout-1: Connector must not be empty.

错误屏幕截图示例

无效连接器实例错误消息

原因

如果 ExtensionCallout 政策中的 <Connector> 元素缺失或设置为空值,就会发生此错误。

诊断

  1. 识别错误消息中的 ExtensionCallout 政策名称。例如,在以下错误中,ExtensionCallout 政策名称为 Extension Callout-1

    Error Saving Revision 1
    In Extension Callout-1: Connector must not be empty
  2. 检查失败的 ExtensionCallout 政策 XML,并验证 <Connector> 元素是否存在且非空。例如,在下面的政策中,<Connector> 元素为空,且不包含扩展程序的名称:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ConnectorCallout async="false" continueOnError="true" enabled="true" name="Extension-Callout-1">
        <DisplayName>Extension Callout-1</DisplayName>
        <Connector></Connector>
        <Action>downloadFile</Action>
        <Input><![CDATA[
             {}
         ]]></Input>
        <Output>context-variable-name</Output>
    </ConnectorCallout>

由于 <Connector> 元素为空,因此 API 代理的部署将失败。

解决方法

请确保始终指定 Extension Callout 政策的 <Connector> 元素的值,且该值与组织中创建的实际扩展程序的名称匹配。

如需更正上述所示的 ExtensionCallout 政策示例,您可以将 <Connector> 元素部署到部署 API 代理的特定环境中存在的扩展名称。

如需确定扩展程序的名称,请在 Edge 界面中前往管理 >扩展程序。此处会显示您组织中所有扩展程序的名称。应在 <Connector> 元素中设置扩展程序名称。

在 Edge 界面中查看所有扩展程序的名称。

以下是在 <Connector> 元素中正确设置扩展程序名称的示例:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Extension-Callout-1">
    <DisplayName>Extension Callout-1</DisplayName>
    <Connector>cloud_storage_ext</Connector>
    <Action>downloadFile</Action>
    <Input><![CDATA[
         {}
     ]]></Input>
    <Output>context-variable-name</Output>
</ConnectorCallout>

ConnectorInstanceDoesNotExists

错误消息

通过 Edge 界面或 Edge Management API 部署 API 代理失败,并显示以下错误消息:

Error Deploying Revision revision_number to environment
In policy_name: Connector <extension_name> does not exist in environment environment.

错误消息示例

Error Deploying Revision 1 to test
In Extension Callout-1: Connector cloud_storage does not exist in environment test.

错误屏幕截图示例

“连接器实例不存在”错误消息

原因

如果 ExtensionCallout 政策中的 <Connector> 元素已设置为在部署 API 代理的环境中不存在的名称,则会发生此错误。

诊断

  1. 识别 ExtensionCallout 政策名称、ExtensionCallout 政策的 <Connector> 元素中使用的无效扩展程序名称,以及发生错误的环境。您可以在错误消息中找到这些项。

    例如,在以下错误中,ExtensionCallout 政策名称为 Extension Callout-1,,扩展程序的无效 d 名称为 cloud_storage,环境名称为 test

        Error Deploying Revision 1 to test
        In Extension Callout-1: Connector cloud_storage does not exist in environment test.
  2. 检查失败的 ExtensionCallout 政策 XML,并验证为 <Connector> 元素指定的扩展程序名称是否与错误消息中的内容相符。

    在此示例中,在 <Connector> 元素中指定的扩展程序名称为 cloud_storage

        <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <ConnectorCallout async="false" continueOnError="true" enabled="true" name="Extension-Callout-1">
            <DisplayName>Extension Callout-1</DisplayName>
            <Connector>cloud_storage</Connector>
            <Action>downloadFile</Action>
            <Input><![CDATA[
                 {}
             ]]></Input>
            <Output>context-variable-name</Output>
        </ConnectorCallout>
  3. 验证是否已在环境中创建了扩展程序名称(在步骤 1 中确定)。

    在 Edge 界面中,前往 Admin >附加信息 ,然后检查该附加信息是否存在,以及其名称是否与 ExtensionCallout 政策的 <Connector> 元素中指定的名称一致。

    请注意,在下面的屏幕截图中,附加信息 cloud_storage_ext 存在,但它与上面所示 ExtensionCallout 政策示例中指定的 <Connector> 元素不匹配:

    在 Edge 界面中查看所有扩展程序的名称。

    由于 <Connector> 元素中指定的扩展程序名称不存在,您会收到部署错误:

    In Extension Callout-1: Connector cloud_storage does not exist in environment test.

分辨率

确保已创建在 ExtensionCallout 政策的 <Connector> 元素中指定的扩展程序,并且名称已正确指定。

如需了解如何创建扩展程序,请参阅教程:使用扩展程序

如要修正上面的示例,请修正相应名称,使其与实际扩展名匹配:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Extension-Callout-1">
    <DisplayName>Extension Callout-1</DisplayName>
    <Connector>cloud_storage_ext</Connector>
    <Action>downloadFile</Action>
    <Input><![CDATA[
         {}
     ]]></Input>
    <Output>context-variable-name</Output>
</ConnectorCallout>

InvalidAction

错误消息

通过 Edge 界面或 Edge Management API 部署 API 代理失败,并显示以下错误消息:

Error Saving Revision revision_number
In policy_name: Action must not be empty.

错误消息示例

Error Saving Revision 1
In Extension Callout-1: Action must not be empty.

错误屏幕截图示例

无效操作错误消息

原因

如果 ExtensionCallout 政策中的 <Action> 元素缺失或设置为空值,就会发生此错误。

诊断

  1. 识别 ExtensionCallout 政策名称。您可以在错误消息中找到此信息。例如,在以下错误中,ExtensionCallout 政策名称为 Extension Callout-1:

        Error Saving Revision 1
        In Extension Callout-1: Action must not be empty.
  2. 检查失败的 ExtensionCallout 政策 XML,并验证操作是否已在 <Action> 元素中指定。如果 <Action> 元素缺失或为空,这就是导致错误的原因。

    在此示例中,<Action> 元素为空:

        <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <ConnectorCallout async="false" continueOnError="true" enabled="true" name="Extension-Callout-1">
            <DisplayName>Extension Callout-1</DisplayName>
            <Connector>cloud_storage_ext</Connector>
            <Action></Action>
            <Input><![CDATA[
                 {}
             ]]></Input>
            <Output>context-variable-name</Output>
        </ConnectorCallout>

解决方法

确保始终在 ExtensionCallout 政策中指定 <Action> 元素,且不能为空。

如需了解如何创建扩展程序以及如何在政策中与正确的 <Action> 元素搭配使用,请参阅教程:使用扩展程序

要解决上述问题,请为扩展程序指定正确的操作:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ConnectorCallout async="false" continueOnError="true" enabled="true" name="Extension-Callout-1">
    <DisplayName>Extension Callout-1</DisplayName>
    <Connector>cloud_storage_ext</Connector>
    <Action>downloadFile</Action>
    <Input><![CDATA[
         {}
     ]]></Input>
    <Output>context-variable-name</Output>
</ConnectorCallout>

AllowExtensionsInPostClientFlow

错误消息

通过 Edge 界面或 Edge Management API 部署 API 代理失败,并显示以下错误消息:

Error Deploying Revision revision_number to environment
In policy_name: Policy is not allowed in PostClientFlow.

错误消息示例

Error Deploying Revision 1 to test
In Extension Callout-1: Policy is not allowed in PostClientFlow.

错误屏幕截图示例

Allow Extensions In Post Client Flow 错误消息

原因

PostClient Flow 中不得包含 ExtensionCallout 政策。如果 PostClient Flow 中存在 ExtensionCallout 政策,则 API 代理的部署将失败并显示此错误。

诊断

  1. 识别 ExtensionCallout 政策名称。您可以在错误消息中找到此信息。例如,在以下错误中,ExtensionCallout 政策名称为 Extension Callout-1:

    In Extension Callout-1: Policy is not allowed in PostClientFlow.
  2. 检查发生故障的特定 API 代理的所有端点中的所有 PostClient Flow。请参阅控制如何使用流执行代理一文。

    如果您发现 ExtensionCallout 政策(在第 1 步中确定)位于 PostClient 流中,那么这就是导致错误的原因。

    例如,以下 PostClient Flow 中包含 ExtensionCallout Policy:

        ...
        <PostClientFlow>
                <Request/>
                <Response>
                    <Step>
                        <Name>Extension-Callout-1</Name>
                    </Step>
                </Response>
            </PostClientFlow>
        ...

解决方法

确保 PostClient Flow 中不存在 ExtensionCallout 政策。

要解决上述问题,您应将 ExtensionCallout 政策移至其他流。

...
<PreFlow name="PreFlow">
    <Request/>
    <Response>
        <Step>
            <Name>Extension-Callout-1</Name>
        </Step>
    </Response>
</PreFlow>
...