package detective.task.aws; import java.util.ArrayList; import java.util.List; import com.amazonaws.ClientConfiguration; import com.amazonaws.Protocol; import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.AWSCredentialsProvider; import com.amazonaws.auth.AWSCredentialsProviderChain; import com.amazonaws.auth.BasicAWSCredentials; import com.amazonaws.auth.EnvironmentVariableCredentialsProvider; import com.amazonaws.auth.InstanceProfileCredentialsProvider; import com.amazonaws.auth.SystemPropertiesCredentialsProvider; import com.amazonaws.regions.Region; import com.amazonaws.regions.Regions; import detective.core.Parameters; public class AwsUtils { private static class AWSCredentialsConfigFileProvider implements AWSCredentialsProvider{ private final String secretKey; private final String accessId; public AWSCredentialsConfigFileProvider(String accessId, String secretKey){ this.accessId = accessId; this.secretKey = secretKey; } @Override public AWSCredentials getCredentials() { return new BasicAWSCredentials(accessId, secretKey); } @Override public void refresh() { } } public static ClientConfiguration getClientConfig(Parameters config){ ClientConfiguration clientConfig = new ClientConfiguration(); clientConfig.setProtocol(Protocol.valueOf(config.get("aws.protocol").toString().toUpperCase())); String host = config.get("aws.proxy.host").toString(); if (host != null && host.length() > 0){ clientConfig.setProxyHost(host); clientConfig.setProxyPort(Integer.valueOf(config.get("aws.proxy.port").toString())); String username = config.get("aws.proxy.username").toString(); String password = config.get("aws.proxy.password").toString(); if (username != null && username.length() > 0) clientConfig.setProxyUsername(username); if (password != null && password.length() > 0) clientConfig.setProxyPassword(password); } return clientConfig; } public static AWSCredentialsProvider getCredentialProviderC(Parameters config){ List<AWSCredentialsProvider> providers = new ArrayList<AWSCredentialsProvider>(); if ("YES".equals(config.get("aws.credentials.instaneProfile"))) providers.add(new InstanceProfileCredentialsProvider()); if ("YES".equals(config.get("aws.credentials.environmentVariable"))) providers.add(new EnvironmentVariableCredentialsProvider()); if ("YES".equals(config.get("aws.credentials.systemProperties"))) providers.add(new SystemPropertiesCredentialsProvider()); String accessKey = config.get("aws.credentials.accessKey").toString(); String secretKey = config.get("aws.credentials.secretKey").toString(); if (accessKey != null && accessKey.length() > 0){ providers.add(new AWSCredentialsConfigFileProvider(accessKey, secretKey)); } return new AWSCredentialsProviderChain(providers.toArray(new AWSCredentialsProvider[0])); } public static Region getRegion(Parameters config) { return Region.getRegion(Regions.valueOf(config.get("aws.region").toString().toUpperCase())); } }