diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/InferenceNamedWriteablesProvider.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/InferenceNamedWriteablesProvider.java index 767b2ac3eace3..a0691fcfe517e 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/InferenceNamedWriteablesProvider.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/InferenceNamedWriteablesProvider.java @@ -28,6 +28,7 @@ import org.elasticsearch.xpack.inference.action.task.StreamingTaskManager; import org.elasticsearch.xpack.inference.chunking.SentenceBoundaryChunkingSettings; import org.elasticsearch.xpack.inference.chunking.WordBoundaryChunkingSettings; +import org.elasticsearch.xpack.inference.common.amazon.AwsSecretSettings; import org.elasticsearch.xpack.inference.services.alibabacloudsearch.AlibabaCloudSearchServiceSettings; import org.elasticsearch.xpack.inference.services.alibabacloudsearch.completion.AlibabaCloudSearchCompletionServiceSettings; import org.elasticsearch.xpack.inference.services.alibabacloudsearch.completion.AlibabaCloudSearchCompletionTaskSettings; @@ -37,7 +38,6 @@ import org.elasticsearch.xpack.inference.services.alibabacloudsearch.rerank.AlibabaCloudSearchRerankTaskSettings; import org.elasticsearch.xpack.inference.services.alibabacloudsearch.sparse.AlibabaCloudSearchSparseServiceSettings; import org.elasticsearch.xpack.inference.services.alibabacloudsearch.sparse.AlibabaCloudSearchSparseTaskSettings; -import org.elasticsearch.xpack.inference.services.amazonbedrock.AmazonBedrockSecretSettings; import org.elasticsearch.xpack.inference.services.amazonbedrock.completion.AmazonBedrockChatCompletionServiceSettings; import org.elasticsearch.xpack.inference.services.amazonbedrock.completion.AmazonBedrockChatCompletionTaskSettings; import org.elasticsearch.xpack.inference.services.amazonbedrock.embeddings.AmazonBedrockEmbeddingsServiceSettings; @@ -146,6 +146,7 @@ public static List getNamedWriteables() { addCustomElandWriteables(namedWriteables); addAnthropicNamedWritables(namedWriteables); addAmazonBedrockNamedWriteables(namedWriteables); + addAwsNamedWriteables(namedWriteables); addEisNamedWriteables(namedWriteables); addAlibabaCloudSearchNamedWriteables(namedWriteables); addJinaAINamedWriteables(namedWriteables); @@ -165,14 +166,6 @@ private static void addUnifiedNamedWriteables(List } private static void addAmazonBedrockNamedWriteables(List namedWriteables) { - namedWriteables.add( - new NamedWriteableRegistry.Entry( - AmazonBedrockSecretSettings.class, - AmazonBedrockSecretSettings.NAME, - AmazonBedrockSecretSettings::new - ) - ); - namedWriteables.add( new NamedWriteableRegistry.Entry( ServiceSettings.class, @@ -199,6 +192,10 @@ private static void addAmazonBedrockNamedWriteables(List namedWriteables) { + namedWriteables.add(new NamedWriteableRegistry.Entry(AwsSecretSettings.class, AwsSecretSettings.NAME, AwsSecretSettings::new)); + } + private static void addMistralNamedWriteables(List namedWriteables) { namedWriteables.add( new NamedWriteableRegistry.Entry( diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/amazonbedrock/AmazonBedrockSecretSettings.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/common/amazon/AwsSecretSettings.java similarity index 87% rename from x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/amazonbedrock/AmazonBedrockSecretSettings.java rename to x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/common/amazon/AwsSecretSettings.java index 80750063b120e..bad98b64a43ec 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/amazonbedrock/AmazonBedrockSecretSettings.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/common/amazon/AwsSecretSettings.java @@ -5,7 +5,7 @@ * 2.0. */ -package org.elasticsearch.xpack.inference.services.amazonbedrock; +package org.elasticsearch.xpack.inference.common.amazon; import org.elasticsearch.TransportVersion; import org.elasticsearch.TransportVersions; @@ -33,13 +33,13 @@ import static org.elasticsearch.xpack.inference.services.amazonbedrock.AmazonBedrockConstants.ACCESS_KEY_FIELD; import static org.elasticsearch.xpack.inference.services.amazonbedrock.AmazonBedrockConstants.SECRET_KEY_FIELD; -public class AmazonBedrockSecretSettings implements SecretSettings { - public static final String NAME = "amazon_bedrock_secret_settings"; +public class AwsSecretSettings implements SecretSettings { + public static final String NAME = "aws_secret_settings"; - public final SecureString accessKey; - public final SecureString secretKey; + private final SecureString accessKey; + private final SecureString secretKey; - public static AmazonBedrockSecretSettings fromMap(@Nullable Map map) { + public static AwsSecretSettings fromMap(@Nullable Map map) { if (map == null) { return null; } @@ -62,15 +62,15 @@ public static AmazonBedrockSecretSettings fromMap(@Nullable Map throw validationException; } - return new AmazonBedrockSecretSettings(secureAccessKey, secureSecretKey); + return new AwsSecretSettings(secureAccessKey, secureSecretKey); } - public AmazonBedrockSecretSettings(SecureString accessKey, SecureString secretKey) { + public AwsSecretSettings(SecureString accessKey, SecureString secretKey) { this.accessKey = Objects.requireNonNull(accessKey); this.secretKey = Objects.requireNonNull(secretKey); } - public AmazonBedrockSecretSettings(StreamInput in) throws IOException { + public AwsSecretSettings(StreamInput in) throws IOException { this.accessKey = in.readSecureString(); this.secretKey = in.readSecureString(); } @@ -106,7 +106,7 @@ public XContentBuilder toXContent(XContentBuilder builder, Params params) throws public boolean equals(Object object) { if (this == object) return true; if (object == null || getClass() != object.getClass()) return false; - AmazonBedrockSecretSettings that = (AmazonBedrockSecretSettings) object; + AwsSecretSettings that = (AwsSecretSettings) object; return Objects.equals(accessKey, that.accessKey) && Objects.equals(secretKey, that.secretKey); } @@ -120,6 +120,14 @@ public SecretSettings newSecretSettings(Map newSecrets) { return fromMap(new HashMap<>(newSecrets)); } + public SecureString accessKey() { + return accessKey; + } + + public SecureString secretKey() { + return secretKey; + } + public static class Configuration { public static Map get() { return configuration.getOrCompute(); diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/external/amazonbedrock/AmazonBedrockBaseClient.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/external/amazonbedrock/AmazonBedrockBaseClient.java index 0f5b0c6e976d6..aa64e50db8bf8 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/external/amazonbedrock/AmazonBedrockBaseClient.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/external/amazonbedrock/AmazonBedrockBaseClient.java @@ -28,7 +28,7 @@ protected AmazonBedrockBaseClient(AmazonBedrockModel model, @Nullable TimeValue public static Integer getModelKeysAndRegionHashcode(AmazonBedrockModel model, @Nullable TimeValue timeout) { var secretSettings = model.getSecretSettings(); var serviceSettings = model.getServiceSettings(); - return Objects.hash(secretSettings.accessKey, secretSettings.secretKey, serviceSettings.region(), timeout); + return Objects.hash(secretSettings.accessKey(), secretSettings.secretKey(), serviceSettings.region(), timeout); } public final void setClock(Clock clock) { diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/external/amazonbedrock/AmazonBedrockInferenceClient.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/external/amazonbedrock/AmazonBedrockInferenceClient.java index c0ee8d4620661..5098fda5a3bcc 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/external/amazonbedrock/AmazonBedrockInferenceClient.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/external/amazonbedrock/AmazonBedrockInferenceClient.java @@ -142,7 +142,7 @@ protected BedrockRuntimeAsyncClient createAmazonBedrockClient(AmazonBedrockModel try { SpecialPermission.check(); return AccessController.doPrivileged((PrivilegedExceptionAction) () -> { - var credentials = AwsBasicCredentials.create(secretSettings.accessKey.toString(), secretSettings.secretKey.toString()); + var credentials = AwsBasicCredentials.create(secretSettings.accessKey().toString(), secretSettings.secretKey().toString()); var credentialsProvider = StaticCredentialsProvider.create(credentials); var clientConfig = timeout == null ? NettyNioAsyncHttpClient.builder().connectionTimeout(DEFAULT_CLIENT_TIMEOUT_MS) diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/external/http/sender/AmazonBedrockRequestManager.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/external/http/sender/AmazonBedrockRequestManager.java index f75343b038368..65df3ff550db6 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/external/http/sender/AmazonBedrockRequestManager.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/external/http/sender/AmazonBedrockRequestManager.java @@ -43,7 +43,7 @@ public static AmazonBedrockRequestManager.RateLimitGrouping of(AmazonBedrockMode var awsSecretSettings = model.getSecretSettings(); - return new RateLimitGrouping(Objects.hash(awsSecretSettings.accessKey, awsSecretSettings.secretKey)); + return new RateLimitGrouping(Objects.hash(awsSecretSettings.accessKey(), awsSecretSettings.secretKey())); } } diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/amazonbedrock/AmazonBedrockModel.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/amazonbedrock/AmazonBedrockModel.java index 90dfce3b7a76f..0e01871cbceeb 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/amazonbedrock/AmazonBedrockModel.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/amazonbedrock/AmazonBedrockModel.java @@ -12,6 +12,7 @@ import org.elasticsearch.inference.ModelSecrets; import org.elasticsearch.inference.ServiceSettings; import org.elasticsearch.inference.TaskSettings; +import org.elasticsearch.xpack.inference.common.amazon.AwsSecretSettings; import org.elasticsearch.xpack.inference.external.action.ExecutableAction; import org.elasticsearch.xpack.inference.external.action.amazonbedrock.AmazonBedrockActionVisitor; import org.elasticsearch.xpack.inference.services.settings.RateLimitSettings; @@ -81,8 +82,8 @@ public AmazonBedrockServiceSettings getServiceSettings() { } @Override - public AmazonBedrockSecretSettings getSecretSettings() { - return (AmazonBedrockSecretSettings) super.getSecretSettings(); + public AwsSecretSettings getSecretSettings() { + return (AwsSecretSettings) super.getSecretSettings(); } } diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/amazonbedrock/AmazonBedrockService.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/amazonbedrock/AmazonBedrockService.java index 4d1f9044087be..c9ab8f287da38 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/amazonbedrock/AmazonBedrockService.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/amazonbedrock/AmazonBedrockService.java @@ -31,6 +31,7 @@ import org.elasticsearch.rest.RestStatus; import org.elasticsearch.xpack.inference.chunking.ChunkingSettingsBuilder; import org.elasticsearch.xpack.inference.chunking.EmbeddingRequestChunker; +import org.elasticsearch.xpack.inference.common.amazon.AwsSecretSettings; import org.elasticsearch.xpack.inference.external.action.amazonbedrock.AmazonBedrockActionCreator; import org.elasticsearch.xpack.inference.external.amazonbedrock.AmazonBedrockRequestSender; import org.elasticsearch.xpack.inference.external.http.sender.EmbeddingsInput; @@ -459,7 +460,7 @@ public static InferenceServiceConfiguration get() { .build() ); - configurationMap.putAll(AmazonBedrockSecretSettings.Configuration.get()); + configurationMap.putAll(AwsSecretSettings.Configuration.get()); configurationMap.putAll( RateLimitSettings.toSettingsConfigurationWithDescription( "By default, the amazonbedrock service sets the number of requests allowed per minute to 240.", diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/amazonbedrock/completion/AmazonBedrockChatCompletionModel.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/amazonbedrock/completion/AmazonBedrockChatCompletionModel.java index 27dc607d671aa..88ce27b3e225c 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/amazonbedrock/completion/AmazonBedrockChatCompletionModel.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/amazonbedrock/completion/AmazonBedrockChatCompletionModel.java @@ -12,11 +12,11 @@ import org.elasticsearch.inference.ModelSecrets; import org.elasticsearch.inference.TaskSettings; import org.elasticsearch.inference.TaskType; +import org.elasticsearch.xpack.inference.common.amazon.AwsSecretSettings; import org.elasticsearch.xpack.inference.external.action.ExecutableAction; import org.elasticsearch.xpack.inference.external.action.amazonbedrock.AmazonBedrockActionVisitor; import org.elasticsearch.xpack.inference.services.ConfigurationParseContext; import org.elasticsearch.xpack.inference.services.amazonbedrock.AmazonBedrockModel; -import org.elasticsearch.xpack.inference.services.amazonbedrock.AmazonBedrockSecretSettings; import java.util.Map; @@ -47,7 +47,7 @@ public AmazonBedrockChatCompletionModel( name, AmazonBedrockChatCompletionServiceSettings.fromMap(serviceSettings, context), AmazonBedrockChatCompletionTaskSettings.fromMap(taskSettings), - AmazonBedrockSecretSettings.fromMap(secretSettings) + AwsSecretSettings.fromMap(secretSettings) ); } @@ -57,7 +57,7 @@ public AmazonBedrockChatCompletionModel( String service, AmazonBedrockChatCompletionServiceSettings serviceSettings, AmazonBedrockChatCompletionTaskSettings taskSettings, - AmazonBedrockSecretSettings secrets + AwsSecretSettings secrets ) { super(new ModelConfigurations(inferenceEntityId, taskType, service, serviceSettings, taskSettings), new ModelSecrets(secrets)); } diff --git a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/amazonbedrock/embeddings/AmazonBedrockEmbeddingsModel.java b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/amazonbedrock/embeddings/AmazonBedrockEmbeddingsModel.java index 186d977d20672..154bc143dd795 100644 --- a/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/amazonbedrock/embeddings/AmazonBedrockEmbeddingsModel.java +++ b/x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/services/amazonbedrock/embeddings/AmazonBedrockEmbeddingsModel.java @@ -16,11 +16,11 @@ import org.elasticsearch.inference.ServiceSettings; import org.elasticsearch.inference.TaskSettings; import org.elasticsearch.inference.TaskType; +import org.elasticsearch.xpack.inference.common.amazon.AwsSecretSettings; import org.elasticsearch.xpack.inference.external.action.ExecutableAction; import org.elasticsearch.xpack.inference.external.action.amazonbedrock.AmazonBedrockActionVisitor; import org.elasticsearch.xpack.inference.services.ConfigurationParseContext; import org.elasticsearch.xpack.inference.services.amazonbedrock.AmazonBedrockModel; -import org.elasticsearch.xpack.inference.services.amazonbedrock.AmazonBedrockSecretSettings; import java.util.Map; @@ -54,7 +54,7 @@ public AmazonBedrockEmbeddingsModel( AmazonBedrockEmbeddingsServiceSettings.fromMap(serviceSettings, context), new EmptyTaskSettings(), chunkingSettings, - AmazonBedrockSecretSettings.fromMap(secretSettings) + AwsSecretSettings.fromMap(secretSettings) ); } @@ -65,7 +65,7 @@ public AmazonBedrockEmbeddingsModel( AmazonBedrockEmbeddingsServiceSettings serviceSettings, TaskSettings taskSettings, ChunkingSettings chunkingSettings, - AmazonBedrockSecretSettings secrets + AwsSecretSettings secrets ) { super( new ModelConfigurations(inferenceEntityId, taskType, service, serviceSettings, new EmptyTaskSettings(), chunkingSettings), diff --git a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/amazonbedrock/AmazonBedrockSecretSettingsTests.java b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/common/amazon/AwsSecretSettingsTests.java similarity index 59% rename from x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/amazonbedrock/AmazonBedrockSecretSettingsTests.java rename to x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/common/amazon/AwsSecretSettingsTests.java index 88aebd2d9d42b..0cabcdf9a649c 100644 --- a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/amazonbedrock/AmazonBedrockSecretSettingsTests.java +++ b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/common/amazon/AwsSecretSettingsTests.java @@ -5,7 +5,7 @@ * 2.0. */ -package org.elasticsearch.xpack.inference.services.amazonbedrock; +package org.elasticsearch.xpack.inference.common.amazon; import org.elasticsearch.TransportVersion; import org.elasticsearch.common.Strings; @@ -27,48 +27,46 @@ import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.is; -public class AmazonBedrockSecretSettingsTests extends AbstractBWCWireSerializationTestCase { +public class AwsSecretSettingsTests extends AbstractBWCWireSerializationTestCase { public void testNewSecretSettings() { - AmazonBedrockSecretSettings initialSettings = createRandom(); - AmazonBedrockSecretSettings newSettings = createRandom(); + AwsSecretSettings initialSettings = createRandom(); + AwsSecretSettings newSettings = createRandom(); - AmazonBedrockSecretSettings finalSettings = (AmazonBedrockSecretSettings) initialSettings.newSecretSettings( - Map.of(ACCESS_KEY_FIELD, newSettings.accessKey.toString(), SECRET_KEY_FIELD, newSettings.secretKey.toString()) + AwsSecretSettings finalSettings = (AwsSecretSettings) initialSettings.newSecretSettings( + Map.of(ACCESS_KEY_FIELD, newSettings.accessKey().toString(), SECRET_KEY_FIELD, newSettings.secretKey().toString()) ); assertEquals(newSettings, finalSettings); } public void testIt_CreatesSettings_ReturnsNullFromMap_null() { - var secrets = AmazonBedrockSecretSettings.fromMap(null); + var secrets = AwsSecretSettings.fromMap(null); assertNull(secrets); } public void testIt_CreatesSettings_FromMap_WithValues() { - var secrets = AmazonBedrockSecretSettings.fromMap( - new HashMap<>(Map.of(ACCESS_KEY_FIELD, "accesstest", SECRET_KEY_FIELD, "secrettest")) - ); + var secrets = AwsSecretSettings.fromMap(new HashMap<>(Map.of(ACCESS_KEY_FIELD, "accesstest", SECRET_KEY_FIELD, "secrettest"))); assertThat( secrets, - is(new AmazonBedrockSecretSettings(new SecureString("accesstest".toCharArray()), new SecureString("secrettest".toCharArray()))) + is(new AwsSecretSettings(new SecureString("accesstest".toCharArray()), new SecureString("secrettest".toCharArray()))) ); } public void testIt_CreatesSettings_FromMap_IgnoresExtraKeys() { - var secrets = AmazonBedrockSecretSettings.fromMap( + var secrets = AwsSecretSettings.fromMap( new HashMap<>(Map.of(ACCESS_KEY_FIELD, "accesstest", SECRET_KEY_FIELD, "secrettest", "extrakey", "extravalue")) ); assertThat( secrets, - is(new AmazonBedrockSecretSettings(new SecureString("accesstest".toCharArray()), new SecureString("secrettest".toCharArray()))) + is(new AwsSecretSettings(new SecureString("accesstest".toCharArray()), new SecureString("secrettest".toCharArray()))) ); } public void testIt_FromMap_ThrowsValidationException_AccessKeyMissing() { var thrownException = expectThrows( ValidationException.class, - () -> AmazonBedrockSecretSettings.fromMap(new HashMap<>(Map.of(SECRET_KEY_FIELD, "secrettest"))) + () -> AwsSecretSettings.fromMap(new HashMap<>(Map.of(SECRET_KEY_FIELD, "secrettest"))) ); assertThat( @@ -80,7 +78,7 @@ public void testIt_FromMap_ThrowsValidationException_AccessKeyMissing() { public void testIt_FromMap_ThrowsValidationException_SecretKeyMissing() { var thrownException = expectThrows( ValidationException.class, - () -> AmazonBedrockSecretSettings.fromMap(new HashMap<>(Map.of(ACCESS_KEY_FIELD, "accesstest"))) + () -> AwsSecretSettings.fromMap(new HashMap<>(Map.of(ACCESS_KEY_FIELD, "accesstest"))) ); assertThat( @@ -90,9 +88,7 @@ public void testIt_FromMap_ThrowsValidationException_SecretKeyMissing() { } public void testToXContent_CreatesProperContent() throws IOException { - var secrets = AmazonBedrockSecretSettings.fromMap( - new HashMap<>(Map.of(ACCESS_KEY_FIELD, "accesstest", SECRET_KEY_FIELD, "secrettest")) - ); + var secrets = AwsSecretSettings.fromMap(new HashMap<>(Map.of(ACCESS_KEY_FIELD, "accesstest", SECRET_KEY_FIELD, "secrettest"))); XContentBuilder builder = XContentFactory.contentBuilder(XContentType.JSON); secrets.toXContent(builder, null); @@ -106,26 +102,26 @@ public static Map getAmazonBedrockSecretSettingsMap(String acces } @Override - protected AmazonBedrockSecretSettings mutateInstanceForVersion(AmazonBedrockSecretSettings instance, TransportVersion version) { + protected AwsSecretSettings mutateInstanceForVersion(AwsSecretSettings instance, TransportVersion version) { return instance; } @Override - protected Writeable.Reader instanceReader() { - return AmazonBedrockSecretSettings::new; + protected Writeable.Reader instanceReader() { + return AwsSecretSettings::new; } @Override - protected AmazonBedrockSecretSettings createTestInstance() { + protected AwsSecretSettings createTestInstance() { return createRandom(); } @Override - protected AmazonBedrockSecretSettings mutateInstance(AmazonBedrockSecretSettings instance) throws IOException { - return randomValueOtherThan(instance, AmazonBedrockSecretSettingsTests::createRandom); + protected AwsSecretSettings mutateInstance(AwsSecretSettings instance) throws IOException { + return randomValueOtherThan(instance, AwsSecretSettingsTests::createRandom); } - private static AmazonBedrockSecretSettings createRandom() { - return new AmazonBedrockSecretSettings(new SecureString(randomAlphaOfLength(10)), new SecureString(randomAlphaOfLength(10))); + private static AwsSecretSettings createRandom() { + return new AwsSecretSettings(new SecureString(randomAlphaOfLength(10)), new SecureString(randomAlphaOfLength(10))); } } diff --git a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/amazonbedrock/AmazonBedrockServiceTests.java b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/amazonbedrock/AmazonBedrockServiceTests.java index 0eb8e60792560..1b9bba3fa1b01 100644 --- a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/amazonbedrock/AmazonBedrockServiceTests.java +++ b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/amazonbedrock/AmazonBedrockServiceTests.java @@ -38,6 +38,7 @@ import org.elasticsearch.xpack.core.inference.results.ChunkedInferenceEmbedding; import org.elasticsearch.xpack.core.inference.results.TextEmbeddingFloatResults; import org.elasticsearch.xpack.inference.Utils; +import org.elasticsearch.xpack.inference.common.amazon.AwsSecretSettings; import org.elasticsearch.xpack.inference.external.amazonbedrock.AmazonBedrockMockRequestSender; import org.elasticsearch.xpack.inference.external.http.sender.HttpRequestSender; import org.elasticsearch.xpack.inference.external.http.sender.Sender; @@ -72,9 +73,9 @@ import static org.elasticsearch.xpack.inference.Utils.mockClusterServiceEmpty; import static org.elasticsearch.xpack.inference.chunking.ChunkingSettingsTests.createRandomChunkingSettings; import static org.elasticsearch.xpack.inference.chunking.ChunkingSettingsTests.createRandomChunkingSettingsMap; +import static org.elasticsearch.xpack.inference.common.amazon.AwsSecretSettingsTests.getAmazonBedrockSecretSettingsMap; import static org.elasticsearch.xpack.inference.services.ServiceComponentsTests.createWithEmptySettings; import static org.elasticsearch.xpack.inference.services.amazonbedrock.AmazonBedrockProviderCapabilities.getProviderDefaultSimilarityMeasure; -import static org.elasticsearch.xpack.inference.services.amazonbedrock.AmazonBedrockSecretSettingsTests.getAmazonBedrockSecretSettingsMap; import static org.elasticsearch.xpack.inference.services.amazonbedrock.completion.AmazonBedrockChatCompletionServiceSettingsTests.createChatCompletionRequestSettingsMap; import static org.elasticsearch.xpack.inference.services.amazonbedrock.completion.AmazonBedrockChatCompletionTaskSettingsTests.getChatCompletionTaskSettingsMap; import static org.elasticsearch.xpack.inference.services.amazonbedrock.embeddings.AmazonBedrockEmbeddingsServiceSettingsTests.createEmbeddingsRequestSettingsMap; @@ -111,9 +112,9 @@ public void testParseRequestConfig_CreatesAnAmazonBedrockModel() throws IOExcept assertThat(settings.region(), is("region")); assertThat(settings.modelId(), is("model")); assertThat(settings.provider(), is(AmazonBedrockProvider.AMAZONTITAN)); - var secretSettings = (AmazonBedrockSecretSettings) model.getSecretSettings(); - assertThat(secretSettings.accessKey.toString(), is("access")); - assertThat(secretSettings.secretKey.toString(), is("secret")); + var secretSettings = (AwsSecretSettings) model.getSecretSettings(); + assertThat(secretSettings.accessKey().toString(), is("access")); + assertThat(secretSettings.secretKey().toString(), is("secret")); }, exception -> fail("Unexpected exception: " + exception)); service.parseRequestConfig( @@ -393,9 +394,9 @@ public void testParseRequestConfig_MovesModel() throws IOException { assertThat(settings.region(), is("region")); assertThat(settings.modelId(), is("model")); assertThat(settings.provider(), is(AmazonBedrockProvider.AMAZONTITAN)); - var secretSettings = (AmazonBedrockSecretSettings) model.getSecretSettings(); - assertThat(secretSettings.accessKey.toString(), is("access")); - assertThat(secretSettings.secretKey.toString(), is("secret")); + var secretSettings = (AwsSecretSettings) model.getSecretSettings(); + assertThat(secretSettings.accessKey().toString(), is("access")); + assertThat(secretSettings.secretKey().toString(), is("secret")); }, exception -> fail("Unexpected exception: " + exception)); service.parseRequestConfig( @@ -420,9 +421,9 @@ public void testParseRequestConfig_CreatesAnAmazonBedrockEmbeddingsModelWhenChun assertThat(settings.region(), is("region")); assertThat(settings.modelId(), is("model")); assertThat(settings.provider(), is(AmazonBedrockProvider.AMAZONTITAN)); - var secretSettings = (AmazonBedrockSecretSettings) model.getSecretSettings(); - assertThat(secretSettings.accessKey.toString(), is("access")); - assertThat(secretSettings.secretKey.toString(), is("secret")); + var secretSettings = (AwsSecretSettings) model.getSecretSettings(); + assertThat(secretSettings.accessKey().toString(), is("access")); + assertThat(secretSettings.secretKey().toString(), is("secret")); assertThat(model.getConfigurations().getChunkingSettings(), instanceOf(ChunkingSettings.class)); }, exception -> fail("Unexpected exception: " + exception)); @@ -449,9 +450,9 @@ public void testParseRequestConfig_CreatesAnAmazonBedrockEmbeddingsModelWhenChun assertThat(settings.region(), is("region")); assertThat(settings.modelId(), is("model")); assertThat(settings.provider(), is(AmazonBedrockProvider.AMAZONTITAN)); - var secretSettings = (AmazonBedrockSecretSettings) model.getSecretSettings(); - assertThat(secretSettings.accessKey.toString(), is("access")); - assertThat(secretSettings.secretKey.toString(), is("secret")); + var secretSettings = (AwsSecretSettings) model.getSecretSettings(); + assertThat(secretSettings.accessKey().toString(), is("access")); + assertThat(secretSettings.secretKey().toString(), is("secret")); assertThat(model.getConfigurations().getChunkingSettings(), instanceOf(ChunkingSettings.class)); }, exception -> fail("Unexpected exception: " + exception)); @@ -511,9 +512,9 @@ public void testParsePersistedConfigWithSecrets_CreatesAnAmazonBedrockEmbeddings assertThat(settings.region(), is("region")); assertThat(settings.modelId(), is("model")); assertThat(settings.provider(), is(AmazonBedrockProvider.AMAZONTITAN)); - var secretSettings = (AmazonBedrockSecretSettings) model.getSecretSettings(); - assertThat(secretSettings.accessKey.toString(), is("access")); - assertThat(secretSettings.secretKey.toString(), is("secret")); + var secretSettings = (AwsSecretSettings) model.getSecretSettings(); + assertThat(secretSettings.accessKey().toString(), is("access")); + assertThat(secretSettings.secretKey().toString(), is("secret")); } } @@ -543,9 +544,9 @@ public void testParsePersistedConfigWithSecrets_CreatesAnAmazonBedrockEmbeddings assertThat(settings.modelId(), is("model")); assertThat(settings.provider(), is(AmazonBedrockProvider.AMAZONTITAN)); assertThat(model.getConfigurations().getChunkingSettings(), instanceOf(ChunkingSettings.class)); - var secretSettings = (AmazonBedrockSecretSettings) model.getSecretSettings(); - assertThat(secretSettings.accessKey.toString(), is("access")); - assertThat(secretSettings.secretKey.toString(), is("secret")); + var secretSettings = (AwsSecretSettings) model.getSecretSettings(); + assertThat(secretSettings.accessKey().toString(), is("access")); + assertThat(secretSettings.secretKey().toString(), is("secret")); } } @@ -571,9 +572,9 @@ public void testParsePersistedConfigWithSecrets_CreatesAnAmazonBedrockEmbeddings assertThat(settings.modelId(), is("model")); assertThat(settings.provider(), is(AmazonBedrockProvider.AMAZONTITAN)); assertThat(model.getConfigurations().getChunkingSettings(), instanceOf(ChunkingSettings.class)); - var secretSettings = (AmazonBedrockSecretSettings) model.getSecretSettings(); - assertThat(secretSettings.accessKey.toString(), is("access")); - assertThat(secretSettings.secretKey.toString(), is("secret")); + var secretSettings = (AwsSecretSettings) model.getSecretSettings(); + assertThat(secretSettings.accessKey().toString(), is("access")); + assertThat(secretSettings.secretKey().toString(), is("secret")); } } @@ -622,9 +623,9 @@ public void testParsePersistedConfigWithSecrets_DoesNotThrowWhenAnExtraKeyExists assertThat(settings.region(), is("region")); assertThat(settings.modelId(), is("model")); assertThat(settings.provider(), is(AmazonBedrockProvider.AMAZONTITAN)); - var secretSettings = (AmazonBedrockSecretSettings) model.getSecretSettings(); - assertThat(secretSettings.accessKey.toString(), is("access")); - assertThat(secretSettings.secretKey.toString(), is("secret")); + var secretSettings = (AwsSecretSettings) model.getSecretSettings(); + assertThat(secretSettings.accessKey().toString(), is("access")); + assertThat(secretSettings.secretKey().toString(), is("secret")); } } @@ -649,9 +650,9 @@ public void testParsePersistedConfigWithSecrets_DoesNotThrowWhenAnExtraKeyExists assertThat(settings.region(), is("region")); assertThat(settings.modelId(), is("model")); assertThat(settings.provider(), is(AmazonBedrockProvider.AMAZONTITAN)); - var secretSettings = (AmazonBedrockSecretSettings) model.getSecretSettings(); - assertThat(secretSettings.accessKey.toString(), is("access")); - assertThat(secretSettings.secretKey.toString(), is("secret")); + var secretSettings = (AwsSecretSettings) model.getSecretSettings(); + assertThat(secretSettings.accessKey().toString(), is("access")); + assertThat(secretSettings.secretKey().toString(), is("secret")); } } @@ -676,9 +677,9 @@ public void testParsePersistedConfigWithSecrets_NotThrowWhenAnExtraKeyExistsInSe assertThat(settings.region(), is("region")); assertThat(settings.modelId(), is("model")); assertThat(settings.provider(), is(AmazonBedrockProvider.AMAZONTITAN)); - var secretSettings = (AmazonBedrockSecretSettings) model.getSecretSettings(); - assertThat(secretSettings.accessKey.toString(), is("access")); - assertThat(secretSettings.secretKey.toString(), is("secret")); + var secretSettings = (AwsSecretSettings) model.getSecretSettings(); + assertThat(secretSettings.accessKey().toString(), is("access")); + assertThat(secretSettings.secretKey().toString(), is("secret")); } } @@ -703,9 +704,9 @@ public void testParsePersistedConfigWithSecrets_NotThrowWhenAnExtraKeyExistsInSe assertThat(settings.region(), is("region")); assertThat(settings.modelId(), is("model")); assertThat(settings.provider(), is(AmazonBedrockProvider.AMAZONTITAN)); - var secretSettings = (AmazonBedrockSecretSettings) model.getSecretSettings(); - assertThat(secretSettings.accessKey.toString(), is("access")); - assertThat(secretSettings.secretKey.toString(), is("secret")); + var secretSettings = (AwsSecretSettings) model.getSecretSettings(); + assertThat(secretSettings.accessKey().toString(), is("access")); + assertThat(secretSettings.secretKey().toString(), is("secret")); } } @@ -736,9 +737,9 @@ public void testParsePersistedConfigWithSecrets_NotThrowWhenAnExtraKeyExistsInTa assertThat(taskSettings.topP(), is(0.5)); assertThat(taskSettings.topK(), is(0.2)); assertThat(taskSettings.maxNewTokens(), is(128)); - var secretSettings = (AmazonBedrockSecretSettings) model.getSecretSettings(); - assertThat(secretSettings.accessKey.toString(), is("access")); - assertThat(secretSettings.secretKey.toString(), is("secret")); + var secretSettings = (AwsSecretSettings) model.getSecretSettings(); + assertThat(secretSettings.accessKey().toString(), is("access")); + assertThat(secretSettings.secretKey().toString(), is("secret")); } } diff --git a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/amazonbedrock/completion/AmazonBedrockChatCompletionModelTests.java b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/amazonbedrock/completion/AmazonBedrockChatCompletionModelTests.java index 22173943ff432..a12441220a1ba 100644 --- a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/amazonbedrock/completion/AmazonBedrockChatCompletionModelTests.java +++ b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/amazonbedrock/completion/AmazonBedrockChatCompletionModelTests.java @@ -11,8 +11,8 @@ import org.elasticsearch.core.Nullable; import org.elasticsearch.inference.TaskType; import org.elasticsearch.test.ESTestCase; +import org.elasticsearch.xpack.inference.common.amazon.AwsSecretSettings; import org.elasticsearch.xpack.inference.services.amazonbedrock.AmazonBedrockProvider; -import org.elasticsearch.xpack.inference.services.amazonbedrock.AmazonBedrockSecretSettings; import org.elasticsearch.xpack.inference.services.settings.RateLimitSettings; import static org.elasticsearch.xpack.inference.services.amazonbedrock.completion.AmazonBedrockChatCompletionTaskSettingsTests.getChatCompletionTaskSettingsMap; @@ -214,7 +214,7 @@ public static AmazonBedrockChatCompletionModel createModel( "amazonbedrock", new AmazonBedrockChatCompletionServiceSettings(region, model, provider, rateLimitSettings), new AmazonBedrockChatCompletionTaskSettings(temperature, topP, topK, maxNewTokens), - new AmazonBedrockSecretSettings(new SecureString(accessKey), new SecureString(secretKey)) + new AwsSecretSettings(new SecureString(accessKey), new SecureString(secretKey)) ); } diff --git a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/amazonbedrock/embeddings/AmazonBedrockEmbeddingsModelTests.java b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/amazonbedrock/embeddings/AmazonBedrockEmbeddingsModelTests.java index b9452ea0ad233..e9e31cf0ccca2 100644 --- a/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/amazonbedrock/embeddings/AmazonBedrockEmbeddingsModelTests.java +++ b/x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/services/amazonbedrock/embeddings/AmazonBedrockEmbeddingsModelTests.java @@ -16,8 +16,8 @@ import org.elasticsearch.inference.SimilarityMeasure; import org.elasticsearch.inference.TaskType; import org.elasticsearch.test.ESTestCase; +import org.elasticsearch.xpack.inference.common.amazon.AwsSecretSettings; import org.elasticsearch.xpack.inference.services.amazonbedrock.AmazonBedrockProvider; -import org.elasticsearch.xpack.inference.services.amazonbedrock.AmazonBedrockSecretSettings; import org.elasticsearch.xpack.inference.services.settings.RateLimitSettings; import java.util.Map; @@ -116,7 +116,7 @@ public static AmazonBedrockEmbeddingsModel createModel( ), new EmptyTaskSettings(), chunkingSettings, - new AmazonBedrockSecretSettings(new SecureString(accessKey), new SecureString(secretKey)) + new AwsSecretSettings(new SecureString(accessKey), new SecureString(secretKey)) ); } @@ -149,7 +149,7 @@ public static AmazonBedrockEmbeddingsModel createModel( ), new EmptyTaskSettings(), null, - new AmazonBedrockSecretSettings(new SecureString(accessKey), new SecureString(secretKey)) + new AwsSecretSettings(new SecureString(accessKey), new SecureString(secretKey)) ); } }