如何在mulesoft(anypoint studio)的amazon s3接口中使用删除对象操作?

时间:2017-09-13 10:37:07

标签: amazon-s3 mule

没有为此提供任何文档。删除对象操作中有两个字段。 1.从表达式2.手动创建对象。但它们都没有接受任何MEL值,例如字符串或对象的位置。

1 个答案:

答案 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>