Hello,
I am trying to upload a file of size approximately 11.4MB , I am getting the below response from Apigee . We have a requirement to upload files upto 1.5GB.
My Proxy endpoint looks like this .
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ProxyEndpoint name="default">
<Description/>
<FaultRules>
<FaultRule name="signatureError">
<Step>
<Name>FA-Error</Name>
</Step>
</FaultRule>
</FaultRules>
<PreFlow name="PreFlow">
<Request>
<Step>
<Condition>(request.path MatchesPath "/*/init/**")</Condition>
<Name>Extract-RelayState</Name>
</Step>
<Step>
<Condition>(request.path MatchesPath "/*/init/**")</Condition>
<Name>Assign-Message-1</Name>
</Step>
<Step>
<Condition>(request.path MatchesPath "/*/init/**")</Condition>
<Name>Java-SamlDecode</Name>
</Step>
<Step>
<Condition>(request.path MatchesPath "/*/init/**")</Condition>
<Name>AM-ContrivedMessage-1</Name>
</Step>
<Step>
<Condition>(request.path MatchesPath "/*/init/**")</Condition>
<Name>SAML_Assertion</Name>
</Step>
<Step>
<Condition>(request.path MatchesPath "/*/init/**")</Condition>
<Name>Java_XPath</Name>
</Step>
<Step>
<Condition>(request.path MatchesPath "/*/init/**")</Condition>
<Name>Create_SOAP_Request</Name>
</Step>
<Step>
<Condition>(request.path MatchesPath "/*/init/**")</Condition>
<Name>Service-Callout-Fed-Auth</Name>
</Step>
<Step>
<Condition>(request.path MatchesPath "/*/init/**")</Condition>
<Name>Extract-variables-from-FedAuth-Response</Name>
</Step>
<Step>
<Condition>(request.path MatchesPath "/*/init/**")</Condition>
<Name>Set-FTF-Headers</Name>
</Step>
<Step>
<Condition>(request.path MatchesPath "/*/init/**")</Condition>
<Name>Assign-Message-2</Name>
</Step>
</Request>
<Response/>
</PreFlow>
<PostFlow name="PostFlow">
<Request/>
<Response/>
</PostFlow>
<Flows/>
<HTTPProxyConnection>
<BasePath>/ftf-angular/*</BasePath>
<Properties/>
</HTTPProxyConnection>
<RouteRule name="init">
<TargetEndpoint>init</TargetEndpoint>
<Condition>(request.path MatchesPath "/*/init/**")</Condition>
</RouteRule>
<RouteRule name="rd">
<TargetEndpoint>rd</TargetEndpoint>
<Condition>(request.path MatchesPath "/*/rd/**")</Condition>
</RouteRule>
<RouteRule name="assets">
<TargetEndpoint>assets</TargetEndpoint>
<Condition>(request.path MatchesPath "/*/assets/**")</Condition>
</RouteRule>
<RouteRule name="api">
<TargetEndpoint>api</TargetEndpoint>
<Condition>(request.path MatchesPath "/**/api/**")</Condition>
</RouteRule>
<RouteRule name="default">
<TargetEndpoint>default</TargetEndpoint>
</RouteRule>
</ProxyEndpoint>
If i enable the below
<Properties>
<Property name="allow.http10">true</Property>
<Property name="response.streaming.enabled">true</Property>
<Property name="request.streaming.enabled">true</Property>
</Properties>
My existing flows are failing.
as my base path is something like /ftf-angular/* .
How do i selectively enable streaming for the api call something like
/ftf-angular/internal/stats/api/uploadfile
Thanks
I am getting the below response from Apigee .
You didn't show any error message.
We have a requirement to upload files upto 1.5GB.
That exceeds the documented limit of 10mb. Apigee won't work for streaming large data files. So I think you need to consider alternative designs.
One is to use a Google Cloud Storage bucket to store the file, and allow Apigee to act as the control channel for the transfer, using signed URLs. This Github repo shows a Java callout that you can use to help implement that pattern.
And here is a screencast that explains the pattern.
User | Count |
---|---|
1 | |
1 | |
1 | |
1 | |
1 |