2014-09-21 55 views
0

我正在使用Amazon S3,我的存储桶中有多个文件在输入文件夹中。我需要将所有文件文件夹并对其进行处理,现在我可以通过提供关键值来获取一个文件并对其进行处理。但不知道如何一次性读取存储桶中的所有文件(输入是我的文件夹名称)。请在下面找到我的配置Mule ESB:如何获取Amazon S3桶中的文件夹中的所有文件(获取对象内容)

<s3:config name="Amazon_S3" accessKey="myKey" secretKey="MySecretkey" doc:name="Amazon S3"/> 
<flow name="s3Flow1" doc:name="s3Flow1"> 
    <http:inbound-endpoint exchange-pattern="one-way" host="localhost" port="8081" doc:name="HTTP"/> 
    <logger message="*********Inside yes************" level="INFO" doc:name="Logger"/> 
    <s3:list-objects config-ref="Amazon_S3" bucketName="getfiles" doc:name="Amazon S3" maxKeys="5" delimiter="/" prefix="input/"/> 
    <json:object-to-json-transformer doc:name="Object to JSON"/> 
    <logger message="..InsidePay..#[payload]********" level="INFO" doc:name="Logger"/> 
    <s3:get-object-content config-ref="Amazon_S3" bucketName="my_backetName" key="input/test.xml" doc:name="Amazon S3"/> 
    <file:outbound-endpoint path="C:\OUT" responseTimeout="10000" doc:name="File" outputPattern="#[function:dateStamp].xml"/> 
</flow> 

当它尝试在Key = input/*中添加更多文件名或*值时。这是抛出错误。请帮我解决这个问题。 在此先感谢。

回答

1

您需要获取每个文件的对象内容。为此,您可以使用foreach路由器并使用#[payload.getKey()]获取当前对象的密钥:

<s3:list-objects config-ref="Amazon_S3" bucketName="getfiles" doc:name="Amazon S3" maxKeys="5" delimiter="/" prefix="input/"/> 

<foreach doc:name="For Each file"> 
<s3:get-object-content config-ref="Amazon_S3" bucketName="my_backetName" key="#[payload.getKey()]" doc:name="Amazon S3"/> 
</foreach> 
相关问题