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 Plattformen von Drittanbietern
In diesem Tutorial behandeln wir, wie Sie einen Connector von OpenSearch Service to Cohere erstellen. Weitere Informationen zu Konnektoren finden Sie unter Unterstützte Konnektoren
Wenn Sie einen Amazon OpenSearch Service-Connector für maschinelles Lernen (ML) mit einem externen Remote-Modell verwenden, müssen Sie Ihre spezifischen Autorisierungsdaten in speichern AWS Secrets Manager. Dies kann ein API-Schlüssel oder eine Kombination aus Benutzername und Passwort sein. Das bedeutet, dass Sie auch eine IAM-Rolle erstellen müssen, die es dem OpenSearch Service ermöglicht, aus Secrets Manager zu lesen.
Voraussetzungen
Um einen Connector für Cohere oder einen externen Anbieter mit OpenSearch Service zu erstellen, benötigen Sie eine IAM-Rolle, die OpenSearch Service Zugriff auf den Speicherort AWS Secrets Manager Ihrer Anmeldeinformationen gewährt. Sie müssen Ihre Anmeldeinformationen auch in Secrets Manager speichern.
Beachten Sie außerdem die folgenden Netzwerkanforderungen:
-
Der externe Anbieter muss eingehenden Datenverkehr von öffentlichen IP-Adressen zulassen, da ML Connector-Anfragen nicht von der OpenSearch VPC stammen.
-
Sie müssen Ihre externe Provider-URL zur Cluster-Einstellung hinzufügen
plugins.ml_commons.trusted_connector_endpoints_regex, damit der Connector mit dem externen Endpunkt kommunizieren kann.
Erstellen einer IAM-Rolle
Richten Sie eine IAM-Rolle ein, um Secrets Manager-Berechtigungen an Service zu OpenSearch delegieren. Sie können auch die vorhandene SecretManagerReadWrite Rolle verwenden. Informationen zum Erstellen einer neuen Rolle finden Sie unter Erstellen einer IAM-Rolle (Konsole) im IAM-Benutzerhandbuch. Wenn Sie eine neue Rolle erstellen, anstatt eine AWS verwaltete Rolle zu verwenden, ersetzen Sie sie opensearch-secretmanager-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 Ihre Secrets Manager-Werte 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 - 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.
Einrichten AWS Secrets Manager
Informationen zum Speichern Ihrer Autorisierungsdaten im Secrets Manager finden Sie unter Create an AWS Secrets Manager Secret im AWS Secrets Manager Benutzerhandbuch.
Nachdem Secrets Manager Ihr Schlüssel-Wert-Paar als Geheimnis akzeptiert hat, erhalten Sie eine ARN im Format:. arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret-a1b2c3 Notieren Sie sich diesen ARN, wie Sie ihn verwenden, und Ihren Schlüssel, wenn Sie im nächsten Schritt einen Connector erstellen.
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": "Cohere Connector: embedding", "description": "The connector to cohere embedding model", "version": 1, "protocol": "http", "credential": { "secretArn": "arn:aws:secretsmanager:region:account-id:secret:cohere-key-id", "roleArn": "arn:aws:iam::account-id:role/opensearch-secretmanager-role" }, "actions": [ { "action_type": "predict", "method": "POST", "url": "https://api.cohere.ai/v1/embed", "headers": { "Authorization": "Bearer ${credential.secretArn.cohere-key-used-in-secrets-manager}" }, "request_body": "{ \"texts\": ${parameters.texts}, \"truncate\": \"END\" }" } ] }
Der Anfragetext für diese Anfrage unterscheidet sich in zweierlei Hinsicht von dem einer Open-Source-Connector-Anfrage. In dem credential Feld übergeben Sie den ARN für die IAM-Rolle, die es dem OpenSearch Service ermöglicht, aus Secrets Manager zu lesen, zusammen mit dem ARN für das What-Secret. Im headers Feld beziehen Sie sich auf das Geheimnis, indem Sie den geheimen Schlüssel und die Tatsache verwenden, dass es von einem ARN stammt.
Wenn sich Ihre Domain in einer Virtual Private Cloud (VPC) befindet, muss Ihr Computer mit der VPC verbunden sein, damit die Anfrage den API-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) path = '_plugins/_ml/connectors/_create' url = host + path payload = { "name": "Cohere Connector: embedding", "description": "The connector to cohere embedding model", "version": 1, "protocol": "http", "credential": { "secretArn": "arn:aws:secretsmanager:region:account-id:secret:cohere-key-id", "roleArn": "arn:aws:iam::account-id:role/opensearch-secretmanager-role" }, "actions": [ { "action_type": "predict", "method": "POST", "url": "https://api.cohere.ai/v1/embed", "headers": { "Authorization": "Bearer ${credential.secretArn.cohere-key-used-in-secrets-manager}" }, "request_body": "{ \"texts\": ${parameters.texts}, \"truncate\": \"END\" }" } ] } headers = {"Content-Type": "application/json"} r = requests.post(url, auth=awsauth, json=payload, headers=headers) print(r.status_code) print(r.text)