Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Connettori Amazon OpenSearch Service ML per piattaforme di terze parti
In questo tutorial, spieghiamo come creare un connettore da OpenSearch Service a Cohere. Per ulteriori informazioni sui connettori, consulta Connettori https://opensearch.org/docs/latest/ml-commons-plugin/remote-models/connectors/#supported-connectors
Quando utilizzi un connettore di machine learning (ML) di Amazon OpenSearch Service con un modello remoto esterno, devi archiviare le tue credenziali di autorizzazione specifiche in AWS Secrets Manager. Potrebbe essere una chiave API o una combinazione di nome utente e password. Ciò significa che devi anche creare un ruolo IAM che consenta la lettura dell'accesso al OpenSearch Servizio da Secrets Manager.
Prerequisiti
Per creare un connettore per Cohere o per qualsiasi provider esterno con OpenSearch Service, devi disporre di un ruolo IAM che conceda al OpenSearch Servizio l'accesso a AWS Secrets Manager, dove archiviare le tue credenziali. È inoltre necessario memorizzare le credenziali in Secrets Manager.
Inoltre, tieni presente i seguenti requisiti di rete:
-
Il provider esterno deve consentire il traffico in entrata da indirizzi IP pubblici, poiché le richieste ML Connector non provengono dal OpenSearch VPC.
-
È necessario aggiungere l'URL del provider esterno all'impostazione del cluster
plugins.ml_commons.trusted_connector_endpoints_regexper consentire al connettore di comunicare con l'endpoint esterno.
Creazione di un ruolo IAM
Configura un ruolo IAM per delegare le autorizzazioni di Secrets Manager al servizio. OpenSearch Puoi anche utilizzare il ruolo esistenteSecretManagerReadWrite. Per creare un nuovo ruolo, consulta Creazione di un ruolo IAM (console) nella IAM User Guide. Se crei un nuovo ruolo invece di usare un ruolo AWS gestito, sostituiscilo opensearch-secretmanager-role in questo tutorial con il nome del tuo ruolo.
-
Allega la seguente policy IAM gestita al tuo nuovo ruolo per consentire al OpenSearch Service di accedere ai tuoi valori di Secrets Manager. Per allegare una policy a un ruolo, vedi Aggiungere autorizzazioni di identità IAM.
-
Segui le istruzioni in Modifica della politica di fiducia di un ruolo per modificare la relazione di fiducia del ruolo. Nella seguente politica, sostituiscila
service-principalcon uno dei seguenti principi di servizio per OpenSearch Service o OpenSearch Serverless:- Per l'assistenza OpenSearch
-
opensearchservice.amazonaws.com - Per OpenSearch Serverless
-
ml.opensearchservice.amazonaws.com
Ti consigliamo di utilizzare le chiavi di
aws:SourceArncondizioneaws:SourceAccounte per limitare l'accesso a un dominio specifico.SourceAccountÈ l' Account AWS ID che appartiene al proprietario del dominio eSourceArnè l'ARN del dominio. Ad esempio, puoi aggiungere il seguente blocco di condizioni alla politica di fiducia:"Condition": { "StringEquals": { "aws:SourceAccount": "account-id" }, "ArnLike": { "aws:SourceArn": "arn:aws:es:region:account-id:domain/domain-name" } }
Configurazione delle autorizzazioni
Per creare il connettore, è necessaria l'autorizzazione per passare il ruolo IAM al OpenSearch servizio. Devi inoltre disporre dell'accesso all'operazione es:ESHttpPost. Per concedere entrambe queste autorizzazioni, collega la policy seguente al ruolo IAM le cui credenziali vengono utilizzate per firmare la richiesta:
Se il tuo utente o ruolo non dispone iam:PassRole delle autorizzazioni per passare il tuo ruolo, potresti riscontrare un errore di autorizzazione quando provi a registrare un repository nella fase successiva.
Configurazione AWS Secrets Manager
Per memorizzare le credenziali di autorizzazione in Secrets Manager, consulta Creare un AWS Secrets Manager segreto nella Guida per l'AWS Secrets Manager utente.
Dopo che Secrets Manager accetta la tua coppia chiave-valore come segreta, ricevi un ARN con il formato:. arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret-a1b2c3 Tieni traccia di questo ARN, mentre lo usi e della tua chiave quando crei un connettore nella fase successiva.
Mappa il ruolo ML in OpenSearch Dashboards (se utilizzi un controllo di accesso granulare)
Fine-grained il controllo degli accessi introduce un passaggio aggiuntivo durante la configurazione di un connettore. Anche se si utilizza l'autenticazione di base HTTP per tutti gli altri scopi, è necessario mappare il ruolo ml_full_access al ruolo IAM che dispone delle autorizzazioni iam:PassRole per inviare opensearch-sagemaker-role.
-
Accedi al plug-in OpenSearch Dashboards per il tuo dominio di OpenSearch servizio. Puoi trovare l'endpoint Dashboards nella dashboard del tuo dominio nella console del OpenSearch servizio.
-
Dal menu principale scegli Sicurezza, Ruoli e seleziona il ruolo ml_full_access.
-
Scegliere Utenti mappati, Gestisci mappatura.
-
In Ruoli di backend, aggiungete l'ARN del ruolo che dispone delle autorizzazioni da passare.
opensearch-sagemaker-rolearn:aws:iam::account-id:role/role-name -
Selezionare Mappa e confermare che l'utente o il ruolo venga visualizzato in Utenti mappati.
Crea un connettore di servizio OpenSearch
Per creare un connettore, invia una POST richiesta all'endpoint del dominio OpenSearch Service. Puoi usare curl, il client Python di esempio, Postman o un altro metodo per inviare una richiesta firmata. Nota che non puoi usare una POST richiesta nella console Kibana. La richiesta ha il seguente formato:
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\" }" } ] }
Il corpo della richiesta per questa richiesta è diverso da quello di una richiesta di connettore open source in due modi. All'interno del credential campo, si passa l'ARN per il ruolo IAM che consente al OpenSearch Service di leggere da Secrets Manager, insieme all'ARN per il what secret. Nel headers campo, si fa riferimento al segreto utilizzando la chiave segreta e il fatto che proviene da un ARN.
Se il tuo dominio risiede in un cloud privato virtuale (VPC), il tuo computer deve essere connesso al VPC affinché la richiesta crei correttamente il connettore AI. L'accesso a un VPC varia in base alla configurazione di rete, ma in genere comporta la connessione a una VPN o a una rete aziendale. Per verificare di poter raggiungere il dominio del OpenSearch servizio, accedi a questo indirizzo https:// in un browser Web e verifica di ricevere la risposta JSON predefinita.your-vpc-domain.region.es.amazonaws.com
Esempio di client Python
Il client Python è più semplice da automatizzare rispetto a una richiesta HTTP e ha una migliore riutilizzabilità. Per creare il connettore AI con il client Python, salva il seguente codice di esempio in un file Python. Il client richiede i pacchetti AWS SDK per Python (Boto3)requestsrequests-aws4auth
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)