package detective.task.aws; import groovy.lang.Closure; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import org.apache.commons.io.IOUtils; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3Client; import com.amazonaws.services.s3.model.AmazonS3Exception; import com.amazonaws.services.s3.model.GetObjectRequest; import com.amazonaws.services.s3.model.ListObjectsRequest; import com.amazonaws.services.s3.model.ObjectListing; import com.amazonaws.services.s3.model.ObjectMetadata; import com.amazonaws.services.s3.model.PutObjectRequest; import com.amazonaws.services.s3.model.S3Object; import com.amazonaws.services.s3.model.S3ObjectSummary; import detective.core.Detective; import detective.core.Parameters; import detective.core.TestTask; import detective.task.AbstractTask; /** * Get information from a S3 bucket, prefix is optional. * * @author James Luo * */ public class S3PutTask extends AbstractTask implements TestTask{ @Override protected void doExecute(Parameters config, Parameters output) { String bucketName = this.readAsString(config, "aws.s3.bucketName", null, false, "aws.s3.bucketName not present in config"); String key = this.readAsString(config, "aws.s3.put.key", null, false, "aws.s3.list.prefix not present"); AmazonS3 client = new AmazonS3Client(AwsUtils.getCredentialProviderC(config), AwsUtils.getClientConfig(config)); client.setRegion(AwsUtils.getRegion(config)); ObjectMetadata metadata = new ObjectMetadata(); // metadata.addUserMetadata(REFER_MODULES, // setToString(codeModule.getReferModuleNames())); byte[] bytes = (byte[]) config.get("aws.s3.put.content"); PutObjectRequest request = new PutObjectRequest(bucketName, key, new ByteArrayInputStream(bytes), metadata); client.putObject(request); } public static S3PutTask s3PutTask(Closure<? extends Object> cl){ return new S3PutTask(); } }