2014-09-21 78 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> 
相關問題