/
Configuring the Amazon S3 Fault Handler Sequence
This site contains the documentation that is relevant to older WSO2 product versions and offerings.
For the latest WSO2 documentation, visit https://wso2.com/documentation/.
Configuring the Amazon S3 Fault Handler Sequence
This documentation is for Amazon S3 connector version 1.0.4. If you are using Amazon S3 connector version 1.0.5, go to the WSO2 Amazon S3 connector GitHub repository to view the latest documentation.
Following is a sample proxy service and fault handler sequence you can use as a starting point for handling faults when integrating with Amazon S3. Customize this sample to match your requirements.
Sample Proxy
<proxy xmlns="http://ws.apache.org/ns/synapse" name="AmazonS3_sampleProxy" transports="https,http" statistics="disable" trace="disable" startOnLoad="true"> <target> <inSequence onError="faultHandlerSeq"> <init> </init> <filter source="$axis2:HTTP_SC" regex="^[^2][0-9][0-9]"> <then> <switch source="$axis2:HTTP_SC"> <case regex="401"> <!--Fill with your Error code value and expression--> <property name="ERROR_CODE" value=""/> <property name="ERROR_MESSAGE" value | expression /> </case> <case regex="422"> <property name="ERROR_CODE" value=""/> <property name="ERROR_MESSAGE" value | expression/> </case> <case regex="404"> <property name="ERROR_CODE" value=""/> <property name="ERROR_MESSAGE" value | expression/> </case> <case regex="403"> <property name="ERROR_CODE" value=""/> <property name="ERROR_MESSAGE" value | expression/> </case> <case regex="400"> <property name="ERROR_CODE" value=""/> <property name="ERROR_MESSAGE" value | expression/> </case> <case regex="500"> <property name="ERROR_CODE" value=""/> <property name="ERROR_MESSAGE" value | expression/> </case> <default> <property name="ERROR_CODE" expression="$axis2:HTTP_SC"/> <property name="ERROR_MESSAGE" value | expression/> </default> </switch> <sequence key="faultHandlerSeq" /> </then> </filter> <respond /> </inSequence> <outSequence> <send></send> </outSequence> </target> </proxy>
faultHandlerSeq
<sequence xmlns="http://ws.apache.org/ns/synapse" name="faultHandlerSeq"> <property xmlns:ns="http://org.apache.synapse/xsd" name="contentTypeValue" expression="get-property('transport', 'Content-Type')"></property> <filter xmlns:ns="http://org.apache.synapse/xsd" xpath="get-property('contentTypeValue') = 'application/json' or get-property('contentTypeValue') = 'text/json'"> <then> <payloadFactory media-type="json"> <format> {"error_code":"$1", "error_message":"$2"} </format> <args> <arg expression="get-property('ERROR_CODE')" evaluator="xml"></arg> <arg expression="get-property('ERROR_MESSAGE')" evaluator="xml"></arg> </args> </payloadFactory> <property name="messageType" value="application/json" scope="axis2"></property> </then> </filter> <filter xmlns:ns="http://org.apache.synapse/xsd" xpath="get-property('contentTypeValue') = 'application/xml' or get-property('contentTypeValue') = 'text/xml'"> <then> <payloadFactory media-type="xml"> <format> <error_info> <error_code>$1</error_code> <error_message>$2</error_message> </error_info> </format> <args> <arg expression="get-property('ERROR_CODE')" evaluator="xml"></arg> <arg expression="get-property('ERROR_MESSAGE')" evaluator="xml"></arg> </args> </payloadFactory> <property name="messageType" value="text/xml" scope="axis2"></property> </then> </filter> <respond></respond> </sequence>