|
|
@@ -24,7 +24,6 @@ import com.amazonaws.Protocol;
|
|
|
import com.amazonaws.auth.AWSCredentials;
|
|
|
import com.amazonaws.auth.AWSCredentialsProvider;
|
|
|
import org.elasticsearch.common.settings.MockSecureSettings;
|
|
|
-import org.elasticsearch.common.settings.Setting;
|
|
|
import org.elasticsearch.common.settings.Settings;
|
|
|
import org.elasticsearch.test.ESTestCase;
|
|
|
|
|
|
@@ -35,7 +34,7 @@ public class AwsS3ServiceImplTests extends ESTestCase {
|
|
|
|
|
|
public void testAWSCredentialsWithSystemProviders() {
|
|
|
S3ClientSettings clientSettings = S3ClientSettings.getClientSettings(Settings.EMPTY, "default");
|
|
|
- AWSCredentialsProvider credentialsProvider = InternalAwsS3Service.buildCredentials(logger, deprecationLogger, clientSettings, Settings.EMPTY);
|
|
|
+ AWSCredentialsProvider credentialsProvider = InternalAwsS3Service.buildCredentials(logger, clientSettings);
|
|
|
assertThat(credentialsProvider, instanceOf(InternalAwsS3Service.PrivilegedInstanceProfileCredentialsProvider.class));
|
|
|
}
|
|
|
|
|
|
@@ -58,147 +57,11 @@ public class AwsS3ServiceImplTests extends ESTestCase {
|
|
|
launchAWSCredentialsWithElasticsearchSettingsTest(repositorySettings, settings, "aws_key", "aws_secret");
|
|
|
}
|
|
|
|
|
|
- public void testAWSCredentialsWithElasticsearchAwsSettingsBackcompat() {
|
|
|
- Settings settings = Settings.builder()
|
|
|
- .put(AwsS3Service.KEY_SETTING.getKey(), "aws_key")
|
|
|
- .put(AwsS3Service.SECRET_SETTING.getKey(), "aws_secret")
|
|
|
- .build();
|
|
|
- launchAWSCredentialsWithElasticsearchSettingsTest(Settings.EMPTY, settings, "aws_key", "aws_secret");
|
|
|
- assertSettingDeprecationsAndWarnings(new Setting<?>[]{AwsS3Service.KEY_SETTING, AwsS3Service.SECRET_SETTING});
|
|
|
- }
|
|
|
-
|
|
|
- public void testAWSCredentialsWithElasticsearchS3SettingsBackcompat() {
|
|
|
- Settings settings = Settings.builder()
|
|
|
- .put(AwsS3Service.CLOUD_S3.KEY_SETTING.getKey(), "s3_key")
|
|
|
- .put(AwsS3Service.CLOUD_S3.SECRET_SETTING.getKey(), "s3_secret")
|
|
|
- .build();
|
|
|
- launchAWSCredentialsWithElasticsearchSettingsTest(Settings.EMPTY, settings, "s3_key", "s3_secret");
|
|
|
- assertSettingDeprecationsAndWarnings(new Setting<?>[]{AwsS3Service.CLOUD_S3.KEY_SETTING, AwsS3Service.CLOUD_S3.SECRET_SETTING});
|
|
|
- }
|
|
|
-
|
|
|
- public void testAWSCredentialsWithElasticsearchAwsAndS3SettingsBackcompat() {
|
|
|
- Settings settings = Settings.builder()
|
|
|
- .put(AwsS3Service.KEY_SETTING.getKey(), "aws_key")
|
|
|
- .put(AwsS3Service.SECRET_SETTING.getKey(), "aws_secret")
|
|
|
- .put(AwsS3Service.CLOUD_S3.KEY_SETTING.getKey(), "s3_key")
|
|
|
- .put(AwsS3Service.CLOUD_S3.SECRET_SETTING.getKey(), "s3_secret")
|
|
|
- .build();
|
|
|
- launchAWSCredentialsWithElasticsearchSettingsTest(Settings.EMPTY, settings, "s3_key", "s3_secret");
|
|
|
- assertSettingDeprecationsAndWarnings(new Setting<?>[]{
|
|
|
- AwsS3Service.KEY_SETTING,
|
|
|
- AwsS3Service.SECRET_SETTING,
|
|
|
- AwsS3Service.CLOUD_S3.KEY_SETTING,
|
|
|
- AwsS3Service.CLOUD_S3.SECRET_SETTING});
|
|
|
- }
|
|
|
-
|
|
|
- public void testAWSCredentialsWithElasticsearchRepositoriesSettingsBackcompat() {
|
|
|
- Settings settings = Settings.builder()
|
|
|
- .put(S3Repository.Repositories.KEY_SETTING.getKey(), "repositories_key")
|
|
|
- .put(S3Repository.Repositories.SECRET_SETTING.getKey(), "repositories_secret")
|
|
|
- .build();
|
|
|
- launchAWSCredentialsWithElasticsearchSettingsTest(Settings.EMPTY, settings, "repositories_key", "repositories_secret");
|
|
|
- assertSettingDeprecationsAndWarnings(
|
|
|
- new Setting<?>[]{S3Repository.Repositories.KEY_SETTING, S3Repository.Repositories.SECRET_SETTING});
|
|
|
- }
|
|
|
-
|
|
|
- public void testAWSCredentialsWithElasticsearchAwsAndRepositoriesSettingsBackcompat() {
|
|
|
- Settings settings = Settings.builder()
|
|
|
- .put(AwsS3Service.KEY_SETTING.getKey(), "aws_key")
|
|
|
- .put(AwsS3Service.SECRET_SETTING.getKey(), "aws_secret")
|
|
|
- .put(S3Repository.Repositories.KEY_SETTING.getKey(), "repositories_key")
|
|
|
- .put(S3Repository.Repositories.SECRET_SETTING.getKey(), "repositories_secret")
|
|
|
- .build();
|
|
|
- launchAWSCredentialsWithElasticsearchSettingsTest(Settings.EMPTY, settings, "repositories_key", "repositories_secret");
|
|
|
- assertSettingDeprecationsAndWarnings(new Setting<?>[]{
|
|
|
- AwsS3Service.KEY_SETTING,
|
|
|
- AwsS3Service.SECRET_SETTING,
|
|
|
- S3Repository.Repositories.KEY_SETTING,
|
|
|
- S3Repository.Repositories.SECRET_SETTING});
|
|
|
- }
|
|
|
-
|
|
|
- public void testAWSCredentialsWithElasticsearchAwsAndS3AndRepositoriesSettingsBackcompat() {
|
|
|
- Settings settings = Settings.builder()
|
|
|
- .put(AwsS3Service.KEY_SETTING.getKey(), "aws_key")
|
|
|
- .put(AwsS3Service.SECRET_SETTING.getKey(), "aws_secret")
|
|
|
- .put(AwsS3Service.CLOUD_S3.KEY_SETTING.getKey(), "s3_key")
|
|
|
- .put(AwsS3Service.CLOUD_S3.SECRET_SETTING.getKey(), "s3_secret")
|
|
|
- .put(S3Repository.Repositories.KEY_SETTING.getKey(), "repositories_key")
|
|
|
- .put(S3Repository.Repositories.SECRET_SETTING.getKey(), "repositories_secret")
|
|
|
- .build();
|
|
|
- launchAWSCredentialsWithElasticsearchSettingsTest(Settings.EMPTY, settings, "repositories_key", "repositories_secret");
|
|
|
- assertSettingDeprecationsAndWarnings(new Setting<?>[]{
|
|
|
- AwsS3Service.KEY_SETTING,
|
|
|
- AwsS3Service.SECRET_SETTING,
|
|
|
- AwsS3Service.CLOUD_S3.KEY_SETTING,
|
|
|
- AwsS3Service.CLOUD_S3.SECRET_SETTING,
|
|
|
- S3Repository.Repositories.KEY_SETTING,
|
|
|
- S3Repository.Repositories.SECRET_SETTING});
|
|
|
- }
|
|
|
-
|
|
|
- public void testAWSCredentialsWithElasticsearchRepositoriesSettingsAndRepositorySettingsBackcompat() {
|
|
|
- Settings repositorySettings = generateRepositorySettings("repository_key", "repository_secret", null, null);
|
|
|
- Settings settings = Settings.builder()
|
|
|
- .put(S3Repository.Repositories.KEY_SETTING.getKey(), "repositories_key")
|
|
|
- .put(S3Repository.Repositories.SECRET_SETTING.getKey(), "repositories_secret")
|
|
|
- .build();
|
|
|
- launchAWSCredentialsWithElasticsearchSettingsTest(repositorySettings, settings, "repository_key", "repository_secret");
|
|
|
- assertSettingDeprecationsAndWarnings(new Setting<?>[]{
|
|
|
- S3Repository.Repositories.KEY_SETTING,
|
|
|
- S3Repository.Repositories.SECRET_SETTING,
|
|
|
- S3Repository.Repository.KEY_SETTING,
|
|
|
- S3Repository.Repository.SECRET_SETTING},
|
|
|
- "Using s3 access/secret key from repository settings. Instead store these in named clients and the elasticsearch keystore for secure settings.");
|
|
|
- }
|
|
|
-
|
|
|
- public void testAWSCredentialsWithElasticsearchAwsAndRepositoriesSettingsAndRepositorySettingsBackcompat() {
|
|
|
- Settings repositorySettings = generateRepositorySettings("repository_key", "repository_secret", null, null);
|
|
|
- Settings settings = Settings.builder()
|
|
|
- .put(AwsS3Service.KEY_SETTING.getKey(), "aws_key")
|
|
|
- .put(AwsS3Service.SECRET_SETTING.getKey(), "aws_secret")
|
|
|
- .put(S3Repository.Repositories.KEY_SETTING.getKey(), "repositories_key")
|
|
|
- .put(S3Repository.Repositories.SECRET_SETTING.getKey(), "repositories_secret")
|
|
|
- .build();
|
|
|
- launchAWSCredentialsWithElasticsearchSettingsTest(repositorySettings, settings, "repository_key", "repository_secret");
|
|
|
- assertSettingDeprecationsAndWarnings(new Setting<?>[]{
|
|
|
- AwsS3Service.KEY_SETTING,
|
|
|
- AwsS3Service.SECRET_SETTING,
|
|
|
- S3Repository.Repositories.KEY_SETTING,
|
|
|
- S3Repository.Repositories.SECRET_SETTING,
|
|
|
- S3Repository.Repository.KEY_SETTING,
|
|
|
- S3Repository.Repository.SECRET_SETTING},
|
|
|
- "Using s3 access/secret key from repository settings. Instead store these in named clients and the elasticsearch keystore for secure settings.");
|
|
|
- }
|
|
|
-
|
|
|
- public void testAWSCredentialsWithElasticsearchAwsAndS3AndRepositoriesSettingsAndRepositorySettingsBackcompat() {
|
|
|
- Settings repositorySettings = generateRepositorySettings("repository_key", "repository_secret", null, null);
|
|
|
- Settings settings = Settings.builder()
|
|
|
- .put(AwsS3Service.KEY_SETTING.getKey(), "aws_key")
|
|
|
- .put(AwsS3Service.SECRET_SETTING.getKey(), "aws_secret")
|
|
|
- .put(AwsS3Service.CLOUD_S3.KEY_SETTING.getKey(), "s3_key")
|
|
|
- .put(AwsS3Service.CLOUD_S3.SECRET_SETTING.getKey(), "s3_secret")
|
|
|
- .put(S3Repository.Repositories.KEY_SETTING.getKey(), "repositories_key")
|
|
|
- .put(S3Repository.Repositories.SECRET_SETTING.getKey(), "repositories_secret")
|
|
|
- .build();
|
|
|
- launchAWSCredentialsWithElasticsearchSettingsTest(repositorySettings, settings, "repository_key", "repository_secret");
|
|
|
- assertSettingDeprecationsAndWarnings(new Setting<?>[]{
|
|
|
- AwsS3Service.KEY_SETTING,
|
|
|
- AwsS3Service.SECRET_SETTING,
|
|
|
- AwsS3Service.CLOUD_S3.KEY_SETTING,
|
|
|
- AwsS3Service.CLOUD_S3.SECRET_SETTING,
|
|
|
- S3Repository.Repositories.KEY_SETTING,
|
|
|
- S3Repository.Repositories.SECRET_SETTING,
|
|
|
- S3Repository.Repository.KEY_SETTING,
|
|
|
- S3Repository.Repository.SECRET_SETTING},
|
|
|
- "Using s3 access/secret key from repository settings. Instead store these in named clients and the elasticsearch keystore for secure settings.");
|
|
|
- }
|
|
|
-
|
|
|
- protected void launchAWSCredentialsWithElasticsearchSettingsTest(Settings singleRepositorySettings, Settings settings,
|
|
|
+ private void launchAWSCredentialsWithElasticsearchSettingsTest(Settings singleRepositorySettings, Settings settings,
|
|
|
String expectedKey, String expectedSecret) {
|
|
|
String configName = InternalAwsS3Service.CLIENT_NAME.get(singleRepositorySettings);
|
|
|
S3ClientSettings clientSettings = S3ClientSettings.getClientSettings(settings, configName);
|
|
|
- AWSCredentials credentials = InternalAwsS3Service
|
|
|
- .buildCredentials(logger, deprecationLogger, clientSettings, singleRepositorySettings)
|
|
|
- .getCredentials();
|
|
|
+ AWSCredentials credentials = InternalAwsS3Service.buildCredentials(logger, clientSettings).getCredentials();
|
|
|
assertThat(credentials.getAWSAccessKeyId(), is(expectedKey));
|
|
|
assertThat(credentials.getAWSSecretKey(), is(expectedSecret));
|
|
|
}
|
|
|
@@ -223,58 +86,6 @@ public class AwsS3ServiceImplTests extends ESTestCase {
|
|
|
"aws_proxy_password", 3, false, 10000);
|
|
|
}
|
|
|
|
|
|
- public void testAWSConfigurationWithAwsSettingsBackcompat() {
|
|
|
- Settings settings = Settings.builder()
|
|
|
- .put(AwsS3Service.PROTOCOL_SETTING.getKey(), "http")
|
|
|
- .put(AwsS3Service.PROXY_HOST_SETTING.getKey(), "aws_proxy_host")
|
|
|
- .put(AwsS3Service.PROXY_PORT_SETTING.getKey(), 8080)
|
|
|
- .put(AwsS3Service.PROXY_USERNAME_SETTING.getKey(), "aws_proxy_username")
|
|
|
- .put(AwsS3Service.PROXY_PASSWORD_SETTING.getKey(), "aws_proxy_password")
|
|
|
- .put(AwsS3Service.READ_TIMEOUT.getKey(), "10s")
|
|
|
- .build();
|
|
|
- launchAWSConfigurationTest(settings, Settings.EMPTY, Protocol.HTTP, "aws_proxy_host", 8080, "aws_proxy_username",
|
|
|
- "aws_proxy_password", 3, false, 10000);
|
|
|
- assertSettingDeprecationsAndWarnings(new Setting<?>[]{
|
|
|
- AwsS3Service.PROXY_USERNAME_SETTING,
|
|
|
- AwsS3Service.PROXY_PASSWORD_SETTING,
|
|
|
- AwsS3Service.PROTOCOL_SETTING,
|
|
|
- AwsS3Service.PROXY_HOST_SETTING,
|
|
|
- AwsS3Service.PROXY_PORT_SETTING,
|
|
|
- AwsS3Service.READ_TIMEOUT});
|
|
|
- }
|
|
|
-
|
|
|
- public void testAWSConfigurationWithAwsAndS3SettingsBackcompat() {
|
|
|
- Settings settings = Settings.builder()
|
|
|
- .put(AwsS3Service.PROTOCOL_SETTING.getKey(), "http")
|
|
|
- .put(AwsS3Service.PROXY_HOST_SETTING.getKey(), "aws_proxy_host")
|
|
|
- .put(AwsS3Service.PROXY_PORT_SETTING.getKey(), 8080)
|
|
|
- .put(AwsS3Service.PROXY_USERNAME_SETTING.getKey(), "aws_proxy_username")
|
|
|
- .put(AwsS3Service.PROXY_PASSWORD_SETTING.getKey(), "aws_proxy_password")
|
|
|
- .put(AwsS3Service.READ_TIMEOUT.getKey(), "5s")
|
|
|
- .put(AwsS3Service.CLOUD_S3.PROTOCOL_SETTING.getKey(), "https")
|
|
|
- .put(AwsS3Service.CLOUD_S3.PROXY_HOST_SETTING.getKey(), "s3_proxy_host")
|
|
|
- .put(AwsS3Service.CLOUD_S3.PROXY_PORT_SETTING.getKey(), 8081)
|
|
|
- .put(AwsS3Service.CLOUD_S3.PROXY_USERNAME_SETTING.getKey(), "s3_proxy_username")
|
|
|
- .put(AwsS3Service.CLOUD_S3.PROXY_PASSWORD_SETTING.getKey(), "s3_proxy_password")
|
|
|
- .put(AwsS3Service.CLOUD_S3.READ_TIMEOUT.getKey(), "10s")
|
|
|
- .build();
|
|
|
- launchAWSConfigurationTest(settings, Settings.EMPTY, Protocol.HTTPS, "s3_proxy_host", 8081, "s3_proxy_username",
|
|
|
- "s3_proxy_password", 3, false, 10000);
|
|
|
- assertSettingDeprecationsAndWarnings(new Setting<?>[] {
|
|
|
- AwsS3Service.PROXY_USERNAME_SETTING,
|
|
|
- AwsS3Service.PROXY_PASSWORD_SETTING,
|
|
|
- AwsS3Service.PROTOCOL_SETTING,
|
|
|
- AwsS3Service.PROXY_HOST_SETTING,
|
|
|
- AwsS3Service.PROXY_PORT_SETTING,
|
|
|
- AwsS3Service.READ_TIMEOUT,
|
|
|
- AwsS3Service.CLOUD_S3.PROXY_USERNAME_SETTING,
|
|
|
- AwsS3Service.CLOUD_S3.PROXY_PASSWORD_SETTING,
|
|
|
- AwsS3Service.CLOUD_S3.PROTOCOL_SETTING,
|
|
|
- AwsS3Service.CLOUD_S3.PROXY_HOST_SETTING,
|
|
|
- AwsS3Service.CLOUD_S3.PROXY_PORT_SETTING,
|
|
|
- AwsS3Service.CLOUD_S3.READ_TIMEOUT});
|
|
|
- }
|
|
|
-
|
|
|
public void testGlobalMaxRetries() {
|
|
|
Settings settings = Settings.builder()
|
|
|
.put(S3Repository.Repositories.MAX_RETRIES_SETTING.getKey(), 10)
|
|
|
@@ -284,7 +95,7 @@ public class AwsS3ServiceImplTests extends ESTestCase {
|
|
|
}
|
|
|
|
|
|
public void testRepositoryMaxRetries() {
|
|
|
- Settings repositorySettings = generateRepositorySettings(null, null, null, 20);
|
|
|
+ Settings repositorySettings = generateRepositorySettings(20);
|
|
|
Settings settings = Settings.builder()
|
|
|
.put(S3Repository.Repositories.MAX_RETRIES_SETTING.getKey(), 10)
|
|
|
.build();
|
|
|
@@ -292,7 +103,7 @@ public class AwsS3ServiceImplTests extends ESTestCase {
|
|
|
null, 20, false, 50000);
|
|
|
}
|
|
|
|
|
|
- protected void launchAWSConfigurationTest(Settings settings,
|
|
|
+ private void launchAWSConfigurationTest(Settings settings,
|
|
|
Settings singleRepositorySettings,
|
|
|
Protocol expectedProtocol,
|
|
|
String expectedProxyHost,
|
|
|
@@ -308,8 +119,7 @@ public class AwsS3ServiceImplTests extends ESTestCase {
|
|
|
S3Repository.Repository.USE_THROTTLE_RETRIES_SETTING, S3Repository.Repositories.USE_THROTTLE_RETRIES_SETTING);
|
|
|
|
|
|
S3ClientSettings clientSettings = S3ClientSettings.getClientSettings(settings, "default");
|
|
|
- ClientConfiguration configuration = InternalAwsS3Service.buildConfiguration(logger, clientSettings,
|
|
|
- singleRepositorySettings, maxRetries, null, useThrottleRetries);
|
|
|
+ ClientConfiguration configuration = InternalAwsS3Service.buildConfiguration(clientSettings, maxRetries, useThrottleRetries);
|
|
|
|
|
|
assertThat(configuration.getResponseMetadataCacheSize(), is(0));
|
|
|
assertThat(configuration.getProtocol(), is(expectedProtocol));
|
|
|
@@ -322,52 +132,25 @@ public class AwsS3ServiceImplTests extends ESTestCase {
|
|
|
assertThat(configuration.getSocketTimeout(), is(expectedReadTimeout));
|
|
|
}
|
|
|
|
|
|
- private static Settings generateRepositorySettings(String key, String secret, String endpoint, Integer maxRetries) {
|
|
|
+ private static Settings generateRepositorySettings(Integer maxRetries) {
|
|
|
Settings.Builder builder = Settings.builder();
|
|
|
- if (endpoint != null) {
|
|
|
- builder.put(S3Repository.Repository.ENDPOINT_SETTING.getKey(), endpoint);
|
|
|
- }
|
|
|
- if (key != null) {
|
|
|
- builder.put(S3Repository.Repository.KEY_SETTING.getKey(), key);
|
|
|
- }
|
|
|
- if (secret != null) {
|
|
|
- builder.put(S3Repository.Repository.SECRET_SETTING.getKey(), secret);
|
|
|
- }
|
|
|
if (maxRetries != null) {
|
|
|
builder.put(S3Repository.Repository.MAX_RETRIES_SETTING.getKey(), maxRetries);
|
|
|
}
|
|
|
return builder.build();
|
|
|
}
|
|
|
|
|
|
- public void testDefaultEndpoint() {
|
|
|
- assertEndpoint(generateRepositorySettings("repository_key", "repository_secret", null, null), Settings.EMPTY, "");
|
|
|
- }
|
|
|
-
|
|
|
public void testEndpointSetting() {
|
|
|
Settings settings = Settings.builder()
|
|
|
.put("s3.client.default.endpoint", "s3.endpoint")
|
|
|
.build();
|
|
|
- assertEndpoint(generateRepositorySettings("repository_key", "repository_secret", null, null), settings, "s3.endpoint");
|
|
|
- }
|
|
|
-
|
|
|
- public void testEndpointSettingBackcompat() {
|
|
|
- assertEndpoint(generateRepositorySettings("repository_key", "repository_secret", "repository.endpoint", null),
|
|
|
- Settings.EMPTY, "repository.endpoint");
|
|
|
- assertSettingDeprecationsAndWarnings(new Setting<?>[]{S3Repository.Repository.ENDPOINT_SETTING});
|
|
|
- Settings settings = Settings.builder()
|
|
|
- .put(S3Repository.Repositories.ENDPOINT_SETTING.getKey(), "repositories.endpoint")
|
|
|
- .build();
|
|
|
- assertEndpoint(generateRepositorySettings("repository_key", "repository_secret", null, null), settings,
|
|
|
- "repositories.endpoint");
|
|
|
- assertSettingDeprecationsAndWarnings(new Setting<?>[]{S3Repository.Repositories.ENDPOINT_SETTING});
|
|
|
+ assertEndpoint(Settings.EMPTY, settings, "s3.endpoint");
|
|
|
}
|
|
|
|
|
|
- private void assertEndpoint(Settings repositorySettings, Settings settings,
|
|
|
- String expectedEndpoint) {
|
|
|
+ private void assertEndpoint(Settings repositorySettings, Settings settings, String expectedEndpoint) {
|
|
|
String configName = InternalAwsS3Service.CLIENT_NAME.get(repositorySettings);
|
|
|
S3ClientSettings clientSettings = S3ClientSettings.getClientSettings(settings, configName);
|
|
|
- String foundEndpoint = InternalAwsS3Service.findEndpoint(logger, clientSettings, repositorySettings);
|
|
|
- assertThat(foundEndpoint, is(expectedEndpoint));
|
|
|
+ assertThat(clientSettings.endpoint, is(expectedEndpoint));
|
|
|
}
|
|
|
|
|
|
}
|