Фильтр по типу файла при получении объектов из корзины AWS S3 в Anypoint Studio - PullRequest
0 голосов
/ 25 января 2019

Я использую Mule 4 и Anypoint Studio 7 и хочу получать файлы Excel только из моего хранилища S3 в AWS.Я ищу способ фильтрации по типу файла Excel, например * .xlsx, но не уверен, где я могу сделать это в соединителе.

Мой код указан ниже:

<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:s3="http://www.mulesoft.org/schema/mule/s3"
    xmlns:sftp="http://www.mulesoft.org/schema/mule/sftp"
    xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core" xmlns:file="http://www.mulesoft.org/schema/mule/file" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd
http://www.mulesoft.org/schema/mule/ee/core http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd
http://www.mulesoft.org/schema/mule/sftp http://www.mulesoft.org/schema/mule/sftp/current/mule-sftp.xsd
http://www.mulesoft.org/schema/mule/s3 http://www.mulesoft.org/schema/mule/s3/current/mule-s3.xsd">
    <flow name="getExcelFiles" doc:id="21bd363a-166e-4fc2-9246-dd6f48763db7" >
        <flow-ref doc:name="logStartFlow" doc:id="b2504769-bd82-44a2-aab3-d6427c04bbde" name="logStartFlow"/>
        <s3:list-objects doc:name="List objects" doc:id="640ed7a3-2e0f-4c5d-99a1-fd503d02f055" config-ref="Amazon_S3_Configuration" bucketName="myBucket"/>
        <foreach doc:name="For Each" doc:id="f0989986-2d2e-4cc9-b51e-d61cf9d01210" >
            <s3:get-object doc:name="Get File from AWS S3" doc:id="568ed3c4-d7f8-4657-a515-835e5671b72c" config-ref="Amazon_S3_Configuration" bucketName="#[payload.bucketName]" key="#[payload.key]"/>
        </foreach>
        <flow-ref doc:name="logCompletedFlow" doc:id="e4df0b09-4e4b-4016-bacd-2b34062356a2" name="logCompletedFlow"/>
    </flow>
</mule>

Спасибо

1 Ответ

0 голосов
/ 26 января 2019

Разъем поддерживает только полные ключи. Таким образом, вместо этого вы можете обернуть вызов get-object в выбор, чтобы обрабатывать только те ключи, которые совпадают, используя endsWith для расширения файла. Вы можете изменить это, чтобы проверить регулярные выражения и т.д .:

  <foreach doc:name="For Each" doc:id="f0989986-2d2e-4cc9-b51e-d61cf9d01210" >
       <choice>
          <when expression="#[payload.key endsWith ".xlsx"]">
                <s3:get-object doc:name="Get File from AWS S3" doc:id="568ed3c4-d7f8-4657-a515-835e5671b72c" config-ref="Amazon_S3_Configuration" bucketName="#[payload.bucketName]" key="#[payload.key]"/>
          </when>
       </choice
   </foreach>

Также на будущее в примечаниях к выпуску соединителя упоминается:

"Триггеры - теперь вы можете запустить поток с помощью Amazon S3 Connector каждый раз, когда объект определенного типа создается, обновляется или удален. "

Это также может быть полезно, но я не могу найти никаких примеров.

...