APIM策略中的泛型打破了Terraform

时间:2019-06-26 13:26:46

标签: azure terraform apim

以下APIM策略无法通过Terraform部署:

<policies>
    <inbound>
        <send-request mode="new" response-variable-name="xxx" timeout="20" ignore-error="true">
            <set-url>https://xxx/api/v1/xxx?code={{xxx}}</set-url>
            <set-method>GET</set-method>
        </send-request>
        <return-response>
            <set-status code="302" reason="Redirect" />
            <set-header name="Location" exists-action="override">
                <value>@{
                         var response = context;
                         IResponse variable = context.Variables["xxx"] as IResponse;
                         var content = variable.Body;
                         JObject obj = content.As<JObject>(); <------------ < and > characters
                         JProperty urlprop = obj.Property("xxx");
                         return "" + urlprop.Value;
                       }
                  </value>
            </set-header>
        </return-response>
    </inbound>
    ...
</policies>

出现以下错误:The 'JObject' start tag on line 15 position 26 does not match the end tag of 'value'. Line 18, position 4.

这是由于content.As<JObject>引起的。

该策略的定义如the Terraform documentation

使用xml_content = "${file("xxx")}"时出现相同的错误。

除了找到不使用content.As<JObject>的解决方法之外,如何进行?

1 个答案:

答案 0 :(得分:0)

多行语句(@{ })可以包含XML不友好的字符,但不能通过Terraform XML阅读器。

如果XML策略由Terraform设置,请使用&lt;&gt;