Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -146,6 +146,7 @@ public static List<NamedWriteableRegistry.Entry> getNamedWriteables() {
addCustomElandWriteables(namedWriteables);
addAnthropicNamedWritables(namedWriteables);
addAmazonBedrockNamedWriteables(namedWriteables);
addAwsNamedWriteables(namedWriteables);
addEisNamedWriteables(namedWriteables);
addAlibabaCloudSearchNamedWriteables(namedWriteables);
addJinaAINamedWriteables(namedWriteables);
Expand All @@ -165,14 +166,6 @@ private static void addUnifiedNamedWriteables(List<NamedWriteableRegistry.Entry>
}

private static void addAmazonBedrockNamedWriteables(List<NamedWriteableRegistry.Entry> namedWriteables) {
namedWriteables.add(
new NamedWriteableRegistry.Entry(
AmazonBedrockSecretSettings.class,
AmazonBedrockSecretSettings.NAME,
AmazonBedrockSecretSettings::new
)
);

namedWriteables.add(
new NamedWriteableRegistry.Entry(
ServiceSettings.class,
Expand All @@ -199,6 +192,10 @@ private static void addAmazonBedrockNamedWriteables(List<NamedWriteableRegistry.
);
}

private static void addAwsNamedWriteables(List<NamedWriteableRegistry.Entry> namedWriteables) {
namedWriteables.add(new NamedWriteableRegistry.Entry(AwsSecretSettings.class, AwsSecretSettings.NAME, AwsSecretSettings::new));
}

private static void addMistralNamedWriteables(List<NamedWriteableRegistry.Entry> namedWriteables) {
namedWriteables.add(
new NamedWriteableRegistry.Entry(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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<String, Object> map) {
public static AwsSecretSettings fromMap(@Nullable Map<String, Object> map) {
if (map == null) {
return null;
}
Expand All @@ -62,15 +62,15 @@ public static AmazonBedrockSecretSettings fromMap(@Nullable Map<String, Object>
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();
}
Expand Down Expand Up @@ -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);
}

Expand All @@ -120,6 +120,14 @@ public SecretSettings newSecretSettings(Map<String, Object> newSecrets) {
return fromMap(new HashMap<>(newSecrets));
}

public SecureString accessKey() {
return accessKey;
}

public SecureString secretKey() {
return secretKey;
}

public static class Configuration {
public static Map<String, SettingsConfiguration> get() {
return configuration.getOrCompute();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ protected BedrockRuntimeAsyncClient createAmazonBedrockClient(AmazonBedrockModel
try {
SpecialPermission.check();
return AccessController.doPrivileged((PrivilegedExceptionAction<BedrockRuntimeAsyncClient>) () -> {
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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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()));
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -81,8 +82,8 @@ public AmazonBedrockServiceSettings getServiceSettings() {
}

@Override
public AmazonBedrockSecretSettings getSecretSettings() {
return (AmazonBedrockSecretSettings) super.getSecretSettings();
public AwsSecretSettings getSecretSettings() {
return (AwsSecretSettings) super.getSecretSettings();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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.",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -47,7 +47,7 @@ public AmazonBedrockChatCompletionModel(
name,
AmazonBedrockChatCompletionServiceSettings.fromMap(serviceSettings, context),
AmazonBedrockChatCompletionTaskSettings.fromMap(taskSettings),
AmazonBedrockSecretSettings.fromMap(secretSettings)
AwsSecretSettings.fromMap(secretSettings)
);
}

Expand All @@ -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));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -54,7 +54,7 @@ public AmazonBedrockEmbeddingsModel(
AmazonBedrockEmbeddingsServiceSettings.fromMap(serviceSettings, context),
new EmptyTaskSettings(),
chunkingSettings,
AmazonBedrockSecretSettings.fromMap(secretSettings)
AwsSecretSettings.fromMap(secretSettings)
);
}

Expand All @@ -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),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -27,48 +27,46 @@
import static org.hamcrest.Matchers.containsString;
import static org.hamcrest.Matchers.is;

public class AmazonBedrockSecretSettingsTests extends AbstractBWCWireSerializationTestCase<AmazonBedrockSecretSettings> {
public class AwsSecretSettingsTests extends AbstractBWCWireSerializationTestCase<AwsSecretSettings> {

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(
Expand All @@ -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(
Expand All @@ -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);
Expand All @@ -106,26 +102,26 @@ public static Map<String, Object> getAmazonBedrockSecretSettingsMap(String acces
}

@Override
protected AmazonBedrockSecretSettings mutateInstanceForVersion(AmazonBedrockSecretSettings instance, TransportVersion version) {
protected AwsSecretSettings mutateInstanceForVersion(AwsSecretSettings instance, TransportVersion version) {
return instance;
}

@Override
protected Writeable.Reader<AmazonBedrockSecretSettings> instanceReader() {
return AmazonBedrockSecretSettings::new;
protected Writeable.Reader<AwsSecretSettings> 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)));
}
}
Loading