Mule ESB: как взять все файлы из папки внутри ведра Amazon S3 (получить содержимое объекта)

я использую 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/* . Выдает ошибку. Пожалуйста, помогите мне в решении вопроса. Заранее спасибо.


person star    schedule 21.09.2014    source источник


Ответы (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>
person Ryan Carter    schedule 21.09.2014
comment
Этот выбирает первые 1000 файлов из корзины S3. У меня в корзине S3 больше 1000 файлов. Как это сделать? - person sumeet kumar; 17.02.2020