没有为此提供任何文档。删除对象操作中有两个字段。 1.从表达式2.手动创建对象。但它们都没有接受任何MEL值,例如字符串或对象的位置。
答案 0 :(得分:0)
S3连接器正在尝试将String转换为KeyVersion,但它无法做到。我个人使用Java Transformer和流API实现了这一点。
package com.test;
import java.util.List;
import java.util.stream.Collectors;
import org.mule.api.MuleMessage;
import org.mule.api.transformer.TransformerException;
import org.mule.module.s3.model.KeyVersion;
import org.mule.transformer.AbstractMessageTransformer;
public class CreateKeyVersionList extends AbstractMessageTransformer {
@Override
public Object transformMessage(MuleMessage message, String outputEncoding) throws TransformerException {
@SuppressWarnings("unchecked")
List<String> keys = (List<String>) message.getPayload();
return keys
.stream()
.map(KeyVersion::new)
.collect(Collectors.toList());
}
}
以下是相关的XML:
<set-payload value="#[['list', 'of', 'keys']]" doc:name="Set Payload - Object Keys"/>
<custom-transformer class="com.test.CreateKeyVersionList" doc:name="Transform String to KeyVersion"/>
<s3:delete-objects config-ref="Amazon_S3__Configuration" bucketName="test-bucket" doc:name="Amazon S3">
<s3:keys ref="#[payload]"/>
</s3:delete-objects>