use of com.amazonaws.services.s3.model.Bucket in project elasticsearch by elastic.
the class S3BlobStoreTests method testInitCannedACL.
public void testInitCannedACL() throws IOException {
String[] aclList = new String[] { "private", "public-read", "public-read-write", "authenticated-read", "log-delivery-write", "bucket-owner-read", "bucket-owner-full-control" };
//empty acl
assertThat(S3BlobStore.initCannedACL(null), equalTo(CannedAccessControlList.Private));
assertThat(S3BlobStore.initCannedACL(""), equalTo(CannedAccessControlList.Private));
// it should init cannedACL correctly
for (String aclString : aclList) {
CannedAccessControlList acl = S3BlobStore.initCannedACL(aclString);
assertThat(acl.toString(), equalTo(aclString));
}
// it should accept all aws cannedACLs
for (CannedAccessControlList awsList : CannedAccessControlList.values()) {
CannedAccessControlList acl = S3BlobStore.initCannedACL(awsList.toString());
assertThat(acl, equalTo(awsList));
}
}
use of com.amazonaws.services.s3.model.Bucket in project ice by Netflix.
the class BillingFileProcessor method poll.
@Override
protected void poll() throws Exception {
TreeMap<DateTime, List<BillingFile>> filesToProcess = Maps.newTreeMap();
Map<DateTime, List<BillingFile>> monitorFilesToProcess = Maps.newTreeMap();
// list the tar.gz file in billing file folder
for (int i = 0; i < config.billingS3BucketNames.length; i++) {
String billingS3BucketName = config.billingS3BucketNames[i];
String billingS3BucketPrefix = config.billingS3BucketPrefixes.length > i ? config.billingS3BucketPrefixes[i] : "";
String accountId = config.billingAccountIds.length > i ? config.billingAccountIds[i] : "";
String billingAccessRoleName = config.billingAccessRoleNames.length > i ? config.billingAccessRoleNames[i] : "";
String billingAccessExternalId = config.billingAccessExternalIds.length > i ? config.billingAccessExternalIds[i] : "";
logger.info("trying to list objects in billing bucket " + billingS3BucketName + " using assume role, and external id " + billingAccessRoleName + " " + billingAccessExternalId);
List<S3ObjectSummary> objectSummaries = AwsUtils.listAllObjects(billingS3BucketName, billingS3BucketPrefix, accountId, billingAccessRoleName, billingAccessExternalId);
logger.info("found " + objectSummaries.size() + " in billing bucket " + billingS3BucketName);
TreeMap<DateTime, S3ObjectSummary> filesToProcessInOneBucket = Maps.newTreeMap();
Map<DateTime, S3ObjectSummary> monitorFilesToProcessInOneBucket = Maps.newTreeMap();
// for each file, download&process if not needed
for (S3ObjectSummary objectSummary : objectSummaries) {
String fileKey = objectSummary.getKey();
DateTime dataTime = AwsUtils.getDateTimeFromFileNameWithTags(fileKey);
boolean withTags = true;
if (dataTime == null) {
dataTime = AwsUtils.getDateTimeFromFileName(fileKey);
withTags = false;
}
if (dataTime != null && !dataTime.isBefore(config.startDate)) {
if (!filesToProcessInOneBucket.containsKey(dataTime) || withTags && config.resourceService != null || !withTags && config.resourceService == null)
filesToProcessInOneBucket.put(dataTime, objectSummary);
else
logger.info("ignoring file " + objectSummary.getKey());
} else {
logger.info("ignoring file " + objectSummary.getKey());
}
}
for (S3ObjectSummary objectSummary : objectSummaries) {
String fileKey = objectSummary.getKey();
DateTime dataTime = AwsUtils.getDateTimeFromFileNameWithMonitoring(fileKey);
if (dataTime != null && !dataTime.isBefore(config.startDate)) {
monitorFilesToProcessInOneBucket.put(dataTime, objectSummary);
}
}
for (DateTime key : filesToProcessInOneBucket.keySet()) {
List<BillingFile> list = filesToProcess.get(key);
if (list == null) {
list = Lists.newArrayList();
filesToProcess.put(key, list);
}
list.add(new BillingFile(filesToProcessInOneBucket.get(key), accountId, billingAccessRoleName, billingAccessExternalId, billingS3BucketPrefix));
}
for (DateTime key : monitorFilesToProcessInOneBucket.keySet()) {
List<BillingFile> list = monitorFilesToProcess.get(key);
if (list == null) {
list = Lists.newArrayList();
monitorFilesToProcess.put(key, list);
}
list.add(new BillingFile(monitorFilesToProcessInOneBucket.get(key), accountId, billingAccessRoleName, billingAccessExternalId, billingS3BucketPrefix));
}
}
for (DateTime dataTime : filesToProcess.keySet()) {
startMilli = endMilli = dataTime.getMillis();
init();
boolean hasNewFiles = false;
boolean hasTags = false;
long lastProcessed = lastProcessTime(AwsUtils.monthDateFormat.print(dataTime));
for (BillingFile billingFile : filesToProcess.get(dataTime)) {
S3ObjectSummary objectSummary = billingFile.s3ObjectSummary;
if (objectSummary.getLastModified().getTime() < lastProcessed) {
logger.info("data has been processed. ignoring " + objectSummary.getKey() + "...");
continue;
}
hasNewFiles = true;
}
if (!hasNewFiles) {
logger.info("data has been processed. ignoring all files at " + AwsUtils.monthDateFormat.print(dataTime));
continue;
}
long processTime = new DateTime(DateTimeZone.UTC).getMillis();
for (BillingFile billingFile : filesToProcess.get(dataTime)) {
S3ObjectSummary objectSummary = billingFile.s3ObjectSummary;
String fileKey = objectSummary.getKey();
File file = new File(config.localDir, fileKey.substring(billingFile.prefix.length()));
logger.info("trying to download " + fileKey + "...");
boolean downloaded = AwsUtils.downloadFileIfChangedSince(objectSummary.getBucketName(), billingFile.prefix, file, lastProcessed, billingFile.accountId, billingFile.accessRoleName, billingFile.externalId);
if (downloaded)
logger.info("downloaded " + fileKey);
else {
logger.info("file already downloaded " + fileKey + "...");
}
logger.info("processing " + fileKey + "...");
boolean withTags = fileKey.contains("with-resources-and-tags");
hasTags = hasTags || withTags;
processingMonitor = false;
processBillingZipFile(file, withTags);
logger.info("done processing " + fileKey);
}
if (monitorFilesToProcess.get(dataTime) != null) {
for (BillingFile monitorBillingFile : monitorFilesToProcess.get(dataTime)) {
S3ObjectSummary monitorObjectSummary = monitorBillingFile.s3ObjectSummary;
if (monitorObjectSummary != null) {
String monitorFileKey = monitorObjectSummary.getKey();
logger.info("processing " + monitorFileKey + "...");
File monitorFile = new File(config.localDir, monitorFileKey.substring(monitorFileKey.lastIndexOf("/") + 1));
logger.info("trying to download " + monitorFileKey + "...");
boolean downloaded = AwsUtils.downloadFileIfChangedSince(monitorObjectSummary.getBucketName(), monitorBillingFile.prefix, monitorFile, lastProcessed, monitorBillingFile.accountId, monitorBillingFile.accessRoleName, monitorBillingFile.externalId);
if (downloaded)
logger.info("downloaded " + monitorFile);
else
logger.warn(monitorFile + "already downloaded...");
FileInputStream in = new FileInputStream(monitorFile);
try {
processingMonitor = true;
processBillingFile(monitorFile.getName(), in, true);
} catch (Exception e) {
logger.error("Error processing " + monitorFile, e);
} finally {
in.close();
}
}
}
}
if (dataTime.equals(filesToProcess.lastKey())) {
int hours = (int) ((endMilli - startMilli) / 3600000L);
logger.info("cut hours to " + hours);
cutData(hours);
}
// now get reservation capacity to calculate upfront and un-used cost
for (Ec2InstanceReservationPrice.ReservationUtilization utilization : Ec2InstanceReservationPrice.ReservationUtilization.values()) processReservations(utilization);
if (hasTags && config.resourceService != null)
config.resourceService.commit();
logger.info("archiving results for " + dataTime + "...");
archive();
logger.info("done archiving " + dataTime);
updateProcessTime(AwsUtils.monthDateFormat.print(dataTime), processTime);
if (dataTime.equals(filesToProcess.lastKey())) {
sendOndemandCostAlert();
}
}
logger.info("AWS usage processed.");
}
use of com.amazonaws.services.s3.model.Bucket in project presto by prestodb.
the class TestPrestoS3FileSystem method testGetMetadataRetryCounter.
@SuppressWarnings({ "OverlyStrongTypeCast", "ConstantConditions" })
@Test
public void testGetMetadataRetryCounter() {
int maxRetries = 2;
try (PrestoS3FileSystem fs = new PrestoS3FileSystem()) {
MockAmazonS3 s3 = new MockAmazonS3();
s3.setGetObjectMetadataHttpCode(SC_INTERNAL_SERVER_ERROR);
Configuration configuration = new Configuration();
configuration.set(S3_MAX_BACKOFF_TIME, "1ms");
configuration.set(S3_MAX_RETRY_TIME, "5s");
configuration.setInt(S3_MAX_CLIENT_RETRIES, maxRetries);
fs.initialize(new URI("s3n://test-bucket/"), configuration);
fs.setS3Client(s3);
fs.getS3ObjectMetadata(new Path("s3n://test-bucket/test"));
} catch (Throwable expected) {
assertInstanceOf(expected, AmazonS3Exception.class);
assertEquals(((AmazonS3Exception) expected).getStatusCode(), SC_INTERNAL_SERVER_ERROR);
assertEquals(PrestoS3FileSystem.getFileSystemStats().getGetMetadataRetries().getTotalCount(), maxRetries);
}
}
use of com.amazonaws.services.s3.model.Bucket in project exhibitor by soabase.
the class S3PseudoLock method createFile.
@Override
protected void createFile(String key, byte[] contents) throws Exception {
ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentLength(contents.length);
PutObjectRequest request = new PutObjectRequest(bucket, key, new ByteArrayInputStream(contents), metadata);
client.putObject(request);
}
use of com.amazonaws.services.s3.model.Bucket in project exhibitor by soabase.
the class S3PseudoLock method getFileNames.
@Override
protected List<String> getFileNames(String lockPrefix) throws Exception {
ListObjectsRequest request = new ListObjectsRequest();
request.setBucketName(bucket);
request.setPrefix(lockPrefix);
ObjectListing objectListing = client.listObjects(request);
return Lists.transform(objectListing.getObjectSummaries(), new Function<S3ObjectSummary, String>() {
@Override
public String apply(S3ObjectSummary summary) {
return summary.getKey();
}
});
}
Aggregations