status.getTargetBucketName()); try { configuration.setContainers(new S3BucketListService(session, new S3LocationFeature.S3Region(session.getHost().getRegion())).list( new Path(String.valueOf(Path.DELIMITER), EnumSet.of(Path.Type.volume, Path.Type.directory)), new DisabledListProgressListener()).toList());
bucket.attributes().setRegion(b.getLocation()); if(region.getIdentifier() != null) { final String location; if(!b.isLocationKnown()) { location = b.getLocation(); if(!StringUtils.equals(location, region.getIdentifier())) { log.warn(String.format("Skip bucket %s in region %s", bucket, location)); continue;
return new S3Region(cache.getRegionForBucketName(container.getName())); region = new S3Region("us-east-1"); region = new S3Region(session.getHost().getProtocol().getRegion()); switch(location) { case "US": region = new S3Region("us-east-1"); break; case "EU": region = new S3Region("eu-west-1"); break; default: region = new S3Region(location); break; cache.putRegionForBucketName(container.getName(), region.getIdentifier()); return region;
distribution.setContainers(new S3BucketListService(session, new S3LocationFeature.S3Region(session.getHost().getRegion())).list( new Path(String.valueOf(Path.DELIMITER), EnumSet.of(Path.Type.volume, Path.Type.directory)), new DisabledListProgressListener()).toList());
if(directory.isRoot()) { return new S3BucketListService(session, new S3LocationFeature.S3Region(session.getHost().getRegion())).list(directory, listener);
distribution.setContainers(new S3BucketListService(session, new S3LocationFeature.S3Region(session.getHost().getRegion())).list( new Path(String.valueOf(Path.DELIMITER), EnumSet.of(Path.Type.volume, Path.Type.directory)), new DisabledListProgressListener()).toList());
@Override protected Map<Path, Distribution> operate(final PasswordCallback callback, final Path file) throws BackgroundException { final DistributionConfiguration feature = session.getFeature(DistributionConfiguration.class); if(null == feature) { return Collections.emptyMap(); } final AttributedList<Path> containers = new S3BucketListService(session, new S3LocationFeature.S3Region(session.getHost().getRegion())).list(file, new DisabledListProgressListener()); final Map<Path, Distribution> distributions = new ConcurrentHashMap<>(); for(Path container : containers) { for(Distribution.Method method : feature.getMethods(container)) { if(Distribution.WEBSITE.equals(method)) { continue; } if(Distribution.WEBSITE_CDN.equals(method)) { continue; } final Distribution distribution = feature.read(container, method, new DisabledLoginCallback()); if(distribution.isEnabled()) { if(log.isInfoEnabled()) { log.info(String.format("Cache distribution %s", distribution)); } distributions.put(container, distribution); } } } return distributions; } }
@Override public Distribution read(final Path container, final Distribution.Method method, final LoginCallback prompt) throws BackgroundException { if(method.equals(Distribution.WEBSITE)) { try { final WebsiteConfig configuration = session.getClient().getWebsiteConfig(container.getName()); final Distribution distribution = new Distribution(this.getOrigin(container, method), method, configuration.isWebsiteConfigActive()); distribution.setStatus(LocaleFactory.localizedString("Deployed", "S3")); // http://example-bucket.s3-website-us-east-1.amazonaws.com/ distribution.setUrl(URI.create(String.format("%s://%s", method.getScheme(), this.getWebsiteHostname(container)))); distribution.setIndexDocument(configuration.getIndexDocumentSuffix()); distribution.setContainers(new S3BucketListService(session, new S3LocationFeature.S3Region(session.getHost().getRegion())).list( new Path(String.valueOf(Path.DELIMITER), EnumSet.of(Path.Type.volume, Path.Type.directory)), new DisabledListProgressListener()).toList()); return distribution; } catch(ServiceException e) { // Not found. Website configuration not enabled. final Distribution distribution = new Distribution(this.getOrigin(container, method), method, false); distribution.setStatus(e.getErrorMessage()); distribution.setUrl(URI.create(String.format("%s://%s", method.getScheme(), this.getWebsiteHostname(container)))); return distribution; } } else { return super.read(container, method, prompt); } }
@Override public Set<Location.Name> getRegions() { return new HashSet<Location.Name>(Arrays.asList( new S3LocationFeature.S3Region("us-east-1"), new S3LocationFeature.S3Region("us-east-2"), new S3LocationFeature.S3Region("us-west-1"), new S3LocationFeature.S3Region("us-west-2"), new S3LocationFeature.S3Region("ca-central-1"), new S3LocationFeature.S3Region("eu-west-1"), new S3LocationFeature.S3Region("eu-west-2"), new S3LocationFeature.S3Region("eu-west-3"), new S3LocationFeature.S3Region("eu-north-1"), new S3LocationFeature.S3Region("eu-central-1"), new S3LocationFeature.S3Region("ap-southeast-1"), new S3LocationFeature.S3Region("ap-southeast-2"), new S3LocationFeature.S3Region("ap-northeast-1"), new S3LocationFeature.S3Region("ap-northeast-2"), new S3LocationFeature.S3Region("ap-south-1"), new S3LocationFeature.S3Region("sa-east-1") )); }
public S3BucketListService(final S3Session session) { this(session, new S3LocationFeature.S3Region(null)); }
@Override public Set<Name> getLocations() { if(StringUtils.isNotBlank(session.getHost().getRegion())) { return Collections.singleton(new S3Region(session.getHost().getRegion())); } // Only for AWS if(session.getHost().getHostname().endsWith(PreferencesFactory.get().getProperty("s3.hostname.default"))) { return session.getHost().getProtocol().getRegions(); } return Collections.emptySet(); }
@Override public String toString() { final String identifier = getIdentifier(); if(null == identifier) { return LocaleFactory.localizedString("Unknown"); } return LocaleFactory.localizedString(identifier, "S3"); } }
@Override public Set<Location.Name> getRegions() { return new HashSet<Location.Name>(Arrays.asList( new S3LocationFeature.S3Region("US"), new S3LocationFeature.S3Region("EU") )); }
@Override public AttributedList<Path> list(final Path directory, final ListProgressListener listener) throws BackgroundException { if(directory.isRoot()) { return new S3BucketListService(session, new S3LocationFeature.S3Region(session.getHost().getRegion())).list(directory, listener); } return new S3ObjectListService(session).list(directory, listener); }