Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Connecteurs Amazon OpenSearch Service ML pour plateformes tierces
Dans ce didacticiel, nous expliquons comment créer un connecteur entre OpenSearch Service et Cohere. Pour plus d'informations sur les connecteurs, voir Connecteurs pris en charge
Lorsque vous utilisez un connecteur d'apprentissage automatique (ML) Amazon OpenSearch Service avec un modèle de télécommande externe, vous devez y stocker vos informations d'autorisation spécifiques AWS Secrets Manager. Il peut s'agir d'une clé API ou d'une combinaison de nom d'utilisateur et de mot de passe. Cela signifie que vous devez également créer un rôle IAM permettant à l'accès au OpenSearch service de lire à partir de Secrets Manager.
Conditions préalables
Pour créer un connecteur pour Cohere ou tout autre fournisseur externe doté de OpenSearch Service, vous devez disposer d'un rôle IAM qui accorde l'accès au OpenSearch Service auquel AWS Secrets Manager vous stockez vos informations d'identification. Vous devez également stocker vos informations d'identification dans Secrets Manager.
En outre, tenez compte des exigences réseau suivantes :
-
Le fournisseur externe doit autoriser le trafic entrant provenant d'adresses IP publiques, car les requêtes ML Connector ne proviennent pas du OpenSearch VPC.
-
Vous devez ajouter l'URL de votre fournisseur externe au paramètre du cluster
plugins.ml_commons.trusted_connector_endpoints_regexpour permettre au connecteur de communiquer avec le point de terminaison externe.
Créer un rôle IAM
Configurez un rôle IAM pour déléguer les autorisations de Secrets Manager à OpenSearch Service. Vous pouvez également utiliser le SecretManagerReadWrite rôle existant. Pour créer un nouveau rôle, consultez la section Création d'un rôle IAM (console) dans le Guide de l'utilisateur IAM. Si vous créez un nouveau rôle au lieu d'utiliser un rôle AWS géré, remplacez-le opensearch-secretmanager-role dans ce didacticiel par le nom de votre propre rôle.
-
Associez la politique IAM gérée suivante à votre nouveau rôle pour permettre au OpenSearch Service d'accéder aux valeurs de votre Gestionnaire de secrets. Pour associer une politique à un rôle, consultez la section Ajout d'autorisations d'identité IAM.
-
Suivez les instructions de la section Modification de la politique de confiance d'un rôle pour modifier la relation de confiance du rôle. Dans la politique suivante, remplacez-le
service-principalpar l'un des principaux de service suivants pour OpenSearch Service ou OpenSearch Serverless :- Pour le OpenSearch service
-
opensearchservice.amazonaws.com - Pour OpenSearch Serverless
-
ml.opensearchservice.amazonaws.com
Nous vous recommandons d'utiliser les touches de
aws:SourceArnconditionaws:SourceAccountet pour limiter l'accès à un domaine spécifique.SourceAccountIl s'agit de l' Compte AWS ID qui appartient au propriétaire du domaine etSourceArnde l'ARN du domaine. Par exemple, vous pouvez ajouter le bloc de conditions suivant à la politique de confiance :"Condition": { "StringEquals": { "aws:SourceAccount": "account-id" }, "ArnLike": { "aws:SourceArn": "arn:aws:es:region:account-id:domain/domain-name" } }
Configurer les autorisations
Pour créer le connecteur, vous devez être autorisé à transmettre le rôle IAM à OpenSearch Service. Vous avez également besoin de l'accès à l'action es:ESHttpPost. Pour accorder ces deux autorisations, attachez la politique suivante au rôle IAM dont les informations d'identification sont utilisées pour signer la demande :
Si votre utilisateur ou votre rôle n'est pas autorisé à transmettre votre rôle, vous risquez de rencontrer une erreur d'autorisation lorsque vous tenterez d'enregistrer un référentiel à l'étape suivante. iam:PassRole
Configuration AWS Secrets Manager
Pour stocker vos informations d'autorisation dans Secrets Manager, voir Créer un AWS Secrets Manager secret dans le Guide de AWS Secrets Manager l'utilisateur.
Une fois que Secrets Manager a accepté votre paire clé-valeur en tant que secret, vous recevez un ARN au format :. arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret-a1b2c3 Conservez un enregistrement de cet ARN au fur et à mesure que vous l'utilisez, ainsi que de votre clé lorsque vous créez un connecteur à l'étape suivante.
Mappez le rôle du machine learning dans OpenSearch les tableaux de bord (si vous utilisez un contrôle d'accès précis)
Fine-grained le contrôle d'accès introduit une étape supplémentaire lors de la configuration d'un connecteur. Même si vous utilisez l'authentification de base HTTP à toutes les autres fins, vous devez mapper le rôle ml_full_access à votre rôle IAM qui a les autorisations iam:PassRole pour transmettre opensearch-sagemaker-role.
-
Accédez au plug-in OpenSearch Dashboards pour votre domaine OpenSearch de service. Le point de terminaison Dashboards se trouve sur le tableau de bord de votre domaine sur la console OpenSearch de service.
-
Dans le menu principal, choisissez Sécurité, Rôles, puis sélectionnez le rôle ml_full_access.
-
Choisissez Mapped users (Utilisateurs mappés), Manage mapping (Gérer le mappage).
-
Sous Rôles du backend, ajoutez l'ARN du rôle autorisé à transmettre
opensearch-sagemaker-role.arn:aws:iam::account-id:role/role-name -
Sélectionnez Mapper et vérifiez que l'utilisateur ou le rôle s'affiche sous Utilisateurs mappés.
Création d'un connecteur OpenSearch de service
Pour créer un connecteur, envoyez une POST demande au point de terminaison du domaine de OpenSearch service. Vous pouvez utiliser curl, l'exemple de client Python, Postman ou une autre méthode pour envoyer une demande signée. Notez que vous ne pouvez pas utiliser de POST requête dans la console Kibana. La demande se présente au format suivant :
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\" }" } ] }
Le corps de cette demande est différent de celui d'une demande de connecteur open source de deux manières. Dans le credential champ, vous transmettez l'ARN du rôle IAM qui permet au OpenSearch Service de lire à partir de Secrets Manager, ainsi que l'ARN du quel secret. Dans le headers champ, vous faites référence au secret en utilisant la clé secrète et au fait qu'il provient d'un ARN.
Si votre domaine se trouve dans un cloud privé virtuel (VPC), votre ordinateur doit être connecté au VPC pour que la demande crée correctement le connecteur AI. L'accès à un VPC varie en fonction de la configuration réseau, mais implique généralement la connexion à un VPN ou à un réseau d'entreprise. Pour vérifier que vous pouvez accéder à votre domaine de OpenSearch service, accédez à https:// dans un navigateur Web et vérifiez que vous recevez la réponse JSON par défaut.your-vpc-domain.region.es.amazonaws.com
Exemple de client Python
Le client Python est plus simple à automatiser qu'une requête HTTP et offre une meilleure réutilisation. Pour créer le connecteur AI avec le client Python, enregistrez l'exemple de code suivant dans un fichier Python. Le client a besoin AWS SDK pour Python (Boto3)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)