diff --git a/docs/changelog/126856.yaml b/docs/changelog/126856.yaml
new file mode 100644
index 000000000000..5cc9bdc6946f
--- /dev/null
+++ b/docs/changelog/126856.yaml
@@ -0,0 +1,5 @@
+pr: 126856
+summary: "[ML] Integrate SageMaker with OpenAI Embeddings"
+area: Machine Learning
+type: enhancement
+issues: []
diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml
index 8d01a5d66bde..eb43190a68ba 100644
--- a/gradle/verification-metadata.xml
+++ b/gradle/verification-metadata.xml
@@ -4912,6 +4912,11 @@
+
+
+
+
+
diff --git a/server/src/main/java/org/elasticsearch/TransportVersions.java b/server/src/main/java/org/elasticsearch/TransportVersions.java
index d2d9fe3fea8a..2fea4d30ba82 100644
--- a/server/src/main/java/org/elasticsearch/TransportVersions.java
+++ b/server/src/main/java/org/elasticsearch/TransportVersions.java
@@ -162,6 +162,7 @@ public class TransportVersions {
public static final TransportVersion AMAZON_BEDROCK_TASK_SETTINGS_8_19 = def(8_841_0_17);
public static final TransportVersion BATCHED_QUERY_PHASE_VERSION_BACKPORT_8_X = def(8_841_0_19);
public static final TransportVersion SEARCH_INCREMENTAL_TOP_DOCS_NULL_BACKPORT_8_19 = def(8_841_0_20);
+ public static final TransportVersion ML_INFERENCE_SAGEMAKER_8_19 = def(8_841_0_21);
public static final TransportVersion V_9_0_0 = def(9_000_0_09);
public static final TransportVersion INITIAL_ELASTICSEARCH_9_0_1 = def(9_000_0_10);
public static final TransportVersion COHERE_BIT_EMBEDDING_TYPE_SUPPORT_ADDED = def(9_001_0_00);
@@ -232,6 +233,7 @@ public class TransportVersions {
public static final TransportVersion PROJECT_METADATA_SETTINGS = def(9_066_00_0);
public static final TransportVersion AGGREGATE_METRIC_DOUBLE_BLOCK = def(9_067_00_0);
public static final TransportVersion PINNED_RETRIEVER = def(9_068_0_00);
+ public static final TransportVersion ML_INFERENCE_SAGEMAKER = def(9_069_0_00);
/*
* STOP! READ THIS FIRST! No, really,
diff --git a/server/src/main/java/org/elasticsearch/common/ValidationException.java b/server/src/main/java/org/elasticsearch/common/ValidationException.java
index 67ff85f0bae6..aad91dbac9b4 100644
--- a/server/src/main/java/org/elasticsearch/common/ValidationException.java
+++ b/server/src/main/java/org/elasticsearch/common/ValidationException.java
@@ -53,6 +53,12 @@ public class ValidationException extends IllegalArgumentException {
return validationErrors;
}
+ public final void throwIfValidationErrorsExist() {
+ if (validationErrors().isEmpty() == false) {
+ throw this;
+ }
+ }
+
@Override
public final String getMessage() {
StringBuilder sb = new StringBuilder();
diff --git a/x-pack/plugin/inference/build.gradle b/x-pack/plugin/inference/build.gradle
index b0657968f00f..fba8d9e61f0c 100644
--- a/x-pack/plugin/inference/build.gradle
+++ b/x-pack/plugin/inference/build.gradle
@@ -62,6 +62,7 @@ dependencies {
/* AWS SDK v2 */
implementation("software.amazon.awssdk:bedrockruntime:${versions.awsv2sdk}")
+ implementation("software.amazon.awssdk:sagemakerruntime:${versions.awsv2sdk}")
api "software.amazon.awssdk:protocol-core:${versions.awsv2sdk}"
api "software.amazon.awssdk:aws-json-protocol:${versions.awsv2sdk}"
api "software.amazon.awssdk:third-party-jackson-core:${versions.awsv2sdk}"
@@ -142,6 +143,7 @@ tasks.named("dependencyLicenses").configure {
mapping from: /json-utils.*/, to: 'aws-sdk-2'
mapping from: /endpoints-spi.*/, to: 'aws-sdk-2'
mapping from: /bedrockruntime.*/, to: 'aws-sdk-2'
+ mapping from: /sagemakerruntime.*/, to: 'aws-sdk-2'
mapping from: /netty-nio-client/, to: 'aws-sdk-2'
/* Cannot use REGEX to match netty-* because netty-nio-client is an AWS package */
mapping from: /netty-buffer/, to: 'netty'
diff --git a/x-pack/plugin/inference/qa/inference-service-tests/src/javaRestTest/java/org/elasticsearch/xpack/inference/InferenceGetServicesIT.java b/x-pack/plugin/inference/qa/inference-service-tests/src/javaRestTest/java/org/elasticsearch/xpack/inference/InferenceGetServicesIT.java
index da65da368951..682eebd0fa69 100644
--- a/x-pack/plugin/inference/qa/inference-service-tests/src/javaRestTest/java/org/elasticsearch/xpack/inference/InferenceGetServicesIT.java
+++ b/x-pack/plugin/inference/qa/inference-service-tests/src/javaRestTest/java/org/elasticsearch/xpack/inference/InferenceGetServicesIT.java
@@ -18,163 +18,161 @@ import java.util.List;
import java.util.Map;
import static org.elasticsearch.xpack.inference.InferenceBaseRestTest.assertStatusOkOrCreated;
+import static org.hamcrest.Matchers.containsInAnyOrder;
import static org.hamcrest.Matchers.equalTo;
public class InferenceGetServicesIT extends BaseMockEISAuthServerTest {
- @SuppressWarnings("unchecked")
public void testGetServicesWithoutTaskType() throws IOException {
List