mule - 在 Anypoint Studio 中从 AWS S3 存储桶获取对象时过滤文件类型
问题描述
我正在使用 Mule 4 和 Anypoint Studio 7,我只想从 AWS 中的 S3 存储桶中获取 Excel 文件。我正在寻找一种方法来过滤 *.xlsx 之类的 Excel 文件类型,但不确定我可以在连接器中的何处执行此操作。
我的代码如下:
<?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>
谢谢
解决方案
连接器仅支持完整密钥。因此,您可以将 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 连接器启动流程。”
这也可能有帮助,但我找不到任何示例 atm。
推荐阅读
- java - 嵌套微调器 Android 设计问题 ConstraintLayout
- html - 我的问题是指在单独的 css 样式文件中自定义 R markdown iosslides 演示文稿(问题:28207912)
- javascript - 为什么在使用 defaultValue 时 useState 不能与对象一起使用
- jenkins - 我可以在 Jenkins 共享库调用之间保持状态吗?
- c# - 防止回码(如... tbControl.Text = "value" )在 asp 中工作的对象类型列表
- database - TDengine jdbc 时区
- javascript - 通用但相等前缀的正则表达式
- php - PHP:静态类数组导致“使用未定义的常量”警告 - “新”关键字是适当的解决方案吗?
- php - WooCommerce 中产品类别(不同变体)的最小项目数量
- javascript - 查找每月的第一个星期一日期