2014-09-21 3 views
0

Amazon S3를 사용하고 있습니다. 버킷에는 입력 폴더에 여러 개의 파일이 있습니다 .i는 모든 파일을 폴더를 만들고 그것을 처리, 지금은 하나의 파일을 가지고 열쇠 값을 제공하여 처리 할 수 ​​있습니다. 하지만 한 번에 버킷의 모든 파일을 가져 오는 방법 (입력은 버킷의 내 폴더 이름 임)을 알지 못합니다. 제 설정을 아래에서 찾으십시오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>