package com.clouck.wrapper.aws; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.BasicAWSCredentials; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3Client; import com.clouck.converter.S3Converter; import com.clouck.model.Account; /** * This exists as a s3 service isolation. * @author steng */ //TODO: properly catch all exceptions from all aws service call @Component public class S3WrapperImpl implements S3Wrapper { private static final Logger log = LoggerFactory.getLogger(S3WrapperImpl.class); @Autowired private S3Converter converter; private AmazonS3 findClient(Account account) { //TODO: need to config client config parameter. ignore it for now. //TODO: need a cached version based on account and region as key AWSCredentials credential = new BasicAWSCredentials(account.getAccessKeyId(), account.getSecretAccessKey()); AmazonS3 s3 = new AmazonS3Client(credential); return s3; } // // @Override // public List<AbstractTaskRecord> listBuckets(Account account) { // AmazonS3 s3 = findClient(account); // // List<AbstractTaskRecord> records = new ArrayList<AbstractTaskRecord>(); // // ListBucketsRequest req = new ListBucketsRequest(); // // List<Bucket> buckets= s3.listBuckets(req); // log.debug("find {} buckets via api.", buckets.size()); // for (Bucket b : buckets) { // records.add(listObjects(account, b.getName())); // } // // return records; // } // // @Override // public S3ListBucketsTaskRecord listObjects(Account account, String bucketName) { // AmazonS3 s3 = findClient(account); // // ListObjectsRequest req = new ListObjectsRequest().withBucketName(bucketName); // // ObjectListing result = s3.listObjects(req); // int numOfObjects = result.getObjectSummaries().size(); // long bucketSize = 0; // for (S3ObjectSummary object : result.getObjectSummaries()) { // bucketSize = bucketSize + object.getSize(); // } // while (result.isTruncated()) { // result = s3.listNextBatchOfObjects(result); // numOfObjects = numOfObjects + result.getObjectSummaries().size(); // for (S3ObjectSummary object : result.getObjectSummaries()) { // bucketSize = bucketSize + object.getSize(); // } // } // S3ListBucketsTaskRecord taskResult = new S3ListBucketsTaskRecord(); // taskResult.setBucketName(bucketName); // taskResult.setBucketSize(bucketSize); // taskResult.setNumOfObjects(numOfObjects); // return taskResult; // } }