Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Amazon OpenSearch Service ML-Konnektoren für AWS-Services
Wenn Sie Amazon OpenSearch Service Machine Learning (ML) Connectors mit einem anderen Connector verwenden AWS-Service, müssen Sie eine IAM-Rolle einrichten, um den Service sicher mit diesem OpenSearch Service zu verbinden. AWS-Services dass Sie einen Connector einrichten können, der Amazon SageMaker AI und Amazon Bedrock einbezieht. In diesem Tutorial behandeln wir, wie Sie einen Connector von OpenSearch Service zu SageMaker Runtime erstellen. Weitere Informationen zu Konnektoren finden Sie unter Unterstützte Konnektoren
Voraussetzungen
Um einen Connector zu erstellen, benötigen Sie einen Amazon SageMaker AI-Domain-Endpunkt und eine IAM-Rolle, die den OpenSearch Servicezugriff gewährt.
Richten Sie eine Amazon SageMaker AI-Domain ein
Informationen zur Bereitstellung Ihres Modells für maschinelles Lernen finden Sie im Amazon SageMaker AI-Entwicklerhandbuch unter Bereitstellen eines Modells in Amazon AI. SageMaker Notieren Sie sich die Endpunkt-URL für Ihr Modell, die Sie benötigen, um einen AI-Connector zu erstellen.
Erstellen einer IAM-Rolle
Richten Sie eine IAM-Rolle ein, um SageMaker Runtime-Berechtigungen an Service zu OpenSearch delegieren. Informationen zum Erstellen einer neuen Rolle finden Sie unter Erstellen einer IAM-Rolle (Konsole) im IAM-Benutzerhandbuch. Optional können Sie eine vorhandene Rolle verwenden, sofern sie über dieselben Rechte verfügt. Wenn Sie eine neue Rolle erstellen, anstatt eine AWS verwaltete Rolle zu verwenden, ersetzen Sie sie opensearch-sagemaker-role in diesem Tutorial durch den Namen Ihrer eigenen Rolle.
-
Fügen Sie Ihrer neuen Rolle die folgende verwaltete IAM-Richtlinie hinzu, damit OpenSearch Service auf Ihren SageMaker KI-Endpunkt zugreifen kann. Informationen zum Anhängen einer Richtlinie an eine Rolle finden Sie unter Hinzufügen von IAM-Identitätsberechtigungen.
-
Folgen Sie den Anweisungen unter Ändern einer Rollenvertrauensrichtlinie, um die Vertrauensbeziehung der Rolle zu bearbeiten. Ersetzen Sie in der folgenden Richtlinie
service-principaldurch einen der folgenden Dienstprinzipale für OpenSearch Service oder OpenSearch Serverless:- Für Service OpenSearch
-
opensearchservice.amazonaws.com.rproxy.goskope.comoderes.amazonaws.com - Für OpenSearch Serverless
-
ml.opensearchservice.amazonaws.com
Wir empfehlen, dass Sie die
aws:SourceArnBedingungstastenaws:SourceAccountund verwenden, um den Zugriff auf eine bestimmte Domain einzuschränken. DasSourceAccountist die AWS-Konto ID, die dem Eigentümer der Domain gehört, und dasSourceArnist der ARN der Domain. Beispielsweise können Sie der Vertrauensrichtlinie den folgenden Bedingungsblock hinzufügen:"Condition": { "StringEquals": { "aws:SourceAccount": "account-id" }, "ArnLike": { "aws:SourceArn": "arn:aws:es:region:account-id:domain/domain-name" } }
Konfigurieren von -Berechtigungen
Um den Connector zu erstellen, benötigen Sie die Berechtigung, die IAM-Rolle an OpenSearch Service zu übergeben. Sie benötigen außerdem Zugriff auf die Aktion es:ESHttpPost. Um diese beiden Berechtigungen zu erteilen, fügen Sie die folgende Richtlinie an die IAM-Rolle an, deren Anmeldeinformationen zum Signieren der Anforderung verwendet werden:
Wenn Ihr Benutzer oder Ihre Rolle nicht iam:PassRole berechtigt ist, Ihre Rolle zu übergeben, tritt möglicherweise ein Autorisierungsfehler auf, wenn Sie im nächsten Schritt versuchen, ein Repository zu registrieren.
Ordnen Sie die ML-Rolle in OpenSearch Dashboards zu (wenn Sie eine feinkörnige Zugriffskontrolle verwenden)
Fine-grained Mit der Zugriffskontrolle wird ein zusätzlicher Schritt beim Einrichten eines Connectors eingeführt. Auch wenn Sie die HTTP-Basisauthentifizierung für alle anderen Zwecke verwenden, müssen Sie die ml_full_access-Rolle Ihrer IAM-Rolle mit iam:PassRole-Berechtigungen zuordnen, um opensearch-sagemaker-role zu übergeben.
-
Navigieren Sie zum OpenSearch Dashboards-Plugin für Ihre OpenSearch Service-Domain. Sie finden den Dashboards-Endpunkt in Ihrem Domain-Dashboard in der OpenSearch Service-Konsole.
-
Wählen Sie im Hauptmenü Sicherheit , Rollen und dann die Rolle ml_full_access aus.
-
Wählen Sie Zugeordnete Benutzer, Mapping verwalten.
-
Fügen Sie unter Backend-Rollen den ARN der Rolle hinzu, für die Zugriffsberechtigungen gelten.
opensearch-sagemaker-rolearn:aws:iam::account-id:role/role-name -
Wählen Sie Zuordnen und bestätigen Sie, dass der Benutzer oder die Rolle unter Zugeordnete Benutzer angezeigt wird.
Erstellen Sie einen OpenSearch Service Connector
Um einen Connector zu erstellen, senden Sie eine POST Anfrage an den OpenSearch Service-Domain-Endpunkt. Sie können curl, den Python-Beispielclient, Postman oder eine andere Methode verwenden, um eine signierte Anfrage zu senden. Beachten Sie, dass Sie in der POST Kibana-Konsole keine Anfrage verwenden können. Die Anfrage hat das folgende Format:
POSTdomain-endpoint/_plugins/_ml/connectors/_create { "name": "sagemaker: embedding", "description": "Test connector for Sagemaker embedding model", "version": 1, "protocol": "aws_sigv4", "credential": { "roleArn": "arn:aws:iam::account-id:role/opensearch-sagemaker-role" }, "parameters": { "region": "region", "service_name": "sagemaker" }, "actions": [ { "action_type": "predict", "method": "POST", "headers": { "content-type": "application/json" }, "url": "https://runtime.sagemaker.region.amazonaws.com/endpoints/endpoint-id/invocations", "request_body": "{ \"inputs\": { \"question\": \"${parameters.question}\", \"context\": \"${parameters.context}\" } }" } ] }
Wenn sich Ihre Domain in einer Virtual Private Cloud (VPC) befindet, muss Ihr Computer mit der VPC verbunden sein, damit die Anfrage den AI-Connector erfolgreich erstellen kann. Der Zugriff auf eine VPC variiert je nach Netzwerkkonfiguration, erfordert jedoch in der Regel eine Verbindung zu einem VPN- oder Unternehmensnetzwerk. Um zu überprüfen, ob Sie Ihre OpenSearch Service-Domain erreichen können, navigieren Sie https:// in einem Webbrowser zu und überprüfen Sie, ob Sie die Standard-JSON-Antwort erhalten.your-vpc-domain.region.es.amazonaws.com
Beispiel für einen Python-Client
Der Python-Client ist einfacher zu automatisieren als eine HTTP-Anfrage und hat eine bessere Wiederverwendbarkeit. Um den AI-Connector mit dem Python-Client zu erstellen, speichern Sie den folgenden Beispielcode in einer Python-Datei. Der Client benötigt die requests-aws4authrequests
import boto3 import requests from requests_aws4auth import AWS4Auth host = 'domain-endpoint/' region = 'region' service = 'es' credentials = boto3.Session().get_credentials() awsauth = AWS4Auth(credentials.access_key, credentials.secret_key, region, service, session_token=credentials.token) # Register repository path = '_plugins/_ml/connectors/_create' url = host + path payload = { "name": "sagemaker: embedding", "description": "Test connector for Sagemaker embedding model", "version": 1, "protocol": "aws_sigv4", "credential": { "roleArn": "arn:aws:iam::account-id:role/opensearch-sagemaker-role" }, "parameters": { "region": "region", "service_name": "sagemaker" }, "actions": [ { "action_type": "predict", "method": "POST", "headers": { "content-type": "application/json" }, "url": "https://runtime.sagemaker.region.amazonaws.com/endpoints/endpoint-id/invocations", "request_body": "{ \"inputs\": { \"question\": \"${parameters.question}\", \"context\": \"${parameters.context}\" } }" } ] } headers = {"Content-Type": "application/json"} r = requests.post(url, auth=awsauth, json=payload, headers=headers) print(r.status_code) print(r.text)
Registrieren Sie das Modell für die semantische Suche
Wenn Sie das verbundene Modell für die semantische Suche verwenden möchten, müssen Sie den model_config Parameter bei der Registrierung des Modells angeben. Ohne diesen Parameter schlägt die Erstellung eines semantischen Feldindex mit dem Fehler „Die Modellkonfiguration für das Remote-Modell [model_id] ist Null“ fehl.
Fügen Sie ein model_config Objekt in Ihre Registermodellanfrage ein:
POST _plugins/_ml/models/_register { "name": "Bedrock embedding model", "function_name": "remote", "connector_id": "connector_id", "model_config": { "model_type": "TEXT_EMBEDDING", "embedding_dimension": 1536, "framework_type": "SENTENCE_TRANSFORMERS", "additional_config": { "space_type": "l2" } } }
embedding_dimensionErsetzen Sie es durch die Dimension der Ausgabe Ihres Modells (z. B. 1536 für Amazon Titan Embeddings). Informationen zu den unterstützten Raumtypen finden Sie unter k-NN-Suche in Amazon Service. OpenSearch