如何在wso2ei 6.6中使用AmazonS3连接器来获取特定子文件夹中的所有对象



我在bucket"aaa"中的对象"bbb"中有多个csv文件。我可以使用带有"getObject"功能的AmazonS3连接器下载如下所示的单个文件本地条目如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<localEntry key="AMAZON_S3_CONNECTION_1" xmlns="http://ws.apache.org/ns/synapse">
<amazons3.init>
<awsAccessKeyId>**</awsAccessKeyId>
<name>AMAZON_S3_CONNECTION_1</name>
<region>**</region>
<connectionType>amazons3</connectionType>
<awsSecretAccessKey>**</awsSecretAccessKey>
</amazons3.init>
</localEntry>
<?xml version="1.0" encoding="UTF-8"?>
<proxy name="AmazonConnectivity" startOnLoad="true" transports="http https vfs" xmlns="http://ws.apache.org/ns/synapse">
<target>
<inSequence>
<log level="full">
<property name="log" value="====S3 to Local===="/>
</log>
<amazons3.getObject configKey="AMAZON_S3_CONNECTION_1">
<bucketName>aaa</bucketName>
<objectKey>bbb/xyz.csv</objectKey>
</amazons3.getObject>
<log level="full">
<property name="log" value="====After Amazon S3 Init===="/>
</log>
</inSequence>
<outSequence/>
<faultSequence/>
</target>
<parameter name="transport.PollInterval">5</parameter>
<parameter name="transport.vfs.FileURI">vfs:file:///C:/amazon-s3</parameter>
<parameter name="transport.vfs.ContentType">text/plain</parameter>
<parameter name="transport.vfs.ActionAfterProcess">MOVE</parameter>
<parameter name="transport.vfs.MoveAfterFailure">vfs:file:///C:/failure</parameter>
<parameter name="transport.vfs.ActionAfterFailure">MOVE</parameter>
<parameter name="transport.vfs.FileNamePattern">.*.rdy</parameter>
<parameter name="transport.vfs.MoveAfterProcess">vfs:file:///C:/out</parameter>
</proxy>

但现在我想批量下载对象"bbb"中的所有文件。有人能帮我吗。我使用的是AmazonS3连接器2.0.2版本。

我建议您参考此处的WSO2 S3连接器文档。

但是,下面是可用于此场景的getObjectsInBucket的示例用例。

您可以在<prefix></prefix>中为要列出的目标子文件夹设置值。

要列出的示例请求:

<getObjectsInBucket>
<accessKeyId>ACCESS_KEY</accessKeyId>
<secretAccessKey>ACCESS_SECRET</secretAccessKey>
<region>REGION</region>
<delimiter>DELIMITER</delimiter>
<encodingType>ENCODING_TYPE</encodingType>
<methodType>GET</methodType>
<bucketName>aaa</bucketName>
<bucketUrl>BUCKET_URL</bucketUrl>
<host>HOST_URL</host>
<prefix>bbb</prefix>
</getObjectsInBucket>

编辑:

下载示例请求:

<getObject>
<accessKeyId>AKIXXXXXHXQXXG5XX</accessKeyId>
<secretAccessKey>qHXXBXXXXASYQc4oMCEOj+343HD82s</secretAccessKey>
<methodType>GET</methodType>
<contentType>application/xml</contentType>
<region>us-east-2</region>
<host>s3.us-east-2.amazonaws.com</host>
<bucketUrl>http://s3.us-east-2.amazonaws.com/signv4test</bucketUrl>
<bucketName>signv4test</bucketName>
<isXAmzDate>true</isXAmzDate>
<xAmzSecurityToken/>
<contentMD5/>
<objectName>Tree2.png</objectName>
<rangeBytes/>
<responseContentType/>
<responseContentLanguage/>
<responseExpires/>
<responseCacheControl/>
<responseContentDisposition/>
<range/>
<ifModifiedSince/>
<ifUnmodifiedSince/>
<ifMatch/>
<ifNoneMatch/>
</getObject>

但是,对于AWS S3文档,不支持下载多个对象。有一些建议的解决方案类似于这里的

最新更新