Connettori Amazon OpenSearch Service ML per Servizi AWS - OpenSearch Servizio Amazon

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 Servizi AWS

Quando utilizzi connettori di apprendimento automatico (ML) di Amazon OpenSearch Service con un altro Servizio AWS, devi impostare un IAM ruolo per connettere in modo sicuro OpenSearch Service a quel servizio. Servizi AWS che puoi configurare un connettore per includere Amazon SageMaker e Amazon Bedrock. In questo tutorial, spieghiamo come creare un connettore da OpenSearch Service a SageMaker Runtime. Per ulteriori informazioni sui connettori, consulta Connettori supportati.

Prerequisiti

Per creare un connettore, devi disporre di un endpoint Amazon SageMaker Domain e di un IAM ruolo che consenta l'accesso OpenSearch al Servizio.

Configura un SageMaker dominio Amazon

Consulta Deploy a Model in Amazon SageMaker nell'Amazon SageMaker Developer Guide per distribuire il tuo modello di machine learning. Prendi nota dell'endpoint URL del tuo modello, di cui hai bisogno per creare un connettore AI.

Creare un ruolo IAM.

Imposta un IAM ruolo per delegare le autorizzazioni SageMaker di Runtime a Service. OpenSearch Per creare un nuovo ruolo, vedi Creazione di un IAM ruolo (console) nella Guida per l'IAMutente. Facoltativamente, puoi utilizzare un ruolo esistente purché abbia lo stesso set di privilegi. Se crei un nuovo ruolo invece di usare un ruolo AWS gestito, sostituiscilo opensearch-sagemaker-role in questo tutorial con il nome del tuo ruolo.

  1. Allega la seguente IAM policy gestita al tuo nuovo ruolo per consentire al OpenSearch Servizio di accedere al tuo SageMaker endpoint. Per allegare una policy a un ruolo, vedi Aggiungere autorizzazioni di IAM identità.

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "sagemaker:InvokeEndpointAsync", "sagemaker:InvokeEndpoint" ], "Effect": "Allow", "Resource": "*" } ] }
  2. Segui le istruzioni riportate in Modifica della politica di fiducia di un ruolo per modificare la relazione di trust del ruolo. È necessario specificare OpenSearch Service nella Principal dichiarazione:

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "sts:AssumeRole" ], "Effect": "Allow", "Principal": { "Service": [ "opensearchservice.amazonaws.com" ] } } ] }

    Ti consigliamo di utilizzare i tasti aws:SourceAccount e aws:SourceArn condition per limitare l'accesso a un dominio specifico. Il SourceAccount è l' Account AWS ID che appartiene al proprietario del dominio e il SourceArn è il nome 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 IAM ruolo a OpenSearch Service. Devi inoltre disporre dell'accesso all'operazione es:ESHttpPost. Per concedere entrambe queste autorizzazioni, allega la seguente politica al IAM ruolo le cui credenziali vengono utilizzate per firmare la richiesta:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::account-id:role/opensearch-sagemaker-role" }, { "Effect": "Allow", "Action": "es:ESHttpPost", "Resource": "arn:aws:es:region:account-id:domain/domain-name/*" } ] }

Se l'utente o il ruolo non dispone iam:PassRole delle autorizzazioni necessarie per assegnare il ruolo, è possibile che si verifichi un errore di autorizzazione quando si tenta di registrare un repository nel passaggio successivo.

Mappa il ruolo ML nelle OpenSearch dashboard (se utilizzi un controllo di accesso granulare)

Il controllo granulare degli accessi introduce un passaggio aggiuntivo per la configurazione di un connettore. Anche se si utilizza l'autenticazione HTTP di base per tutti gli altri scopi, è necessario associare il ml_full_access ruolo al IAM ruolo che dispone iam:PassRole delle autorizzazioni necessarie. opensearch-sagemaker-role

  1. Vai al plug-in OpenSearch Dashboards per il tuo dominio di OpenSearch servizio. Puoi trovare l'endpoint Dashboards nella dashboard del tuo dominio nella OpenSearch console di servizio.

  2. Dal menu principale scegli Sicurezza, Ruoli e seleziona il ruolo ml_full_access.

  3. Scegliere Utenti mappati, Gestisci mappatura.

  4. In Ruoli di backend, aggiungi il ruolo che ha ARN le autorizzazioni da passare. opensearch-sagemaker-role

    arn:aws:iam::account-id:role/role-name
  5. 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 di OpenSearch servizio. 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:

POST domain-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}\" } }" } ] }

Se il tuo dominio risiede all'interno di un cloud privato virtuale (VPC), il tuo computer deve essere connesso ad esso VPC affinché la richiesta crei correttamente il connettore AI. L'accesso a VPC varia in base alla configurazione di rete, ma in genere implica la connessione a una rete VPN o a una rete aziendale. Per verificare di poter accedere al dominio OpenSearch del servizio, accedi a https://your-vpc-domain.region.es.amazonaws.com In un browser Web e verifica di ricevere la JSON risposta predefinita.

Client Python di esempio

Il client Python è più semplice da automatizzare rispetto a una HTTP richiesta e ha una migliore riusabilità. 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 for Python (Boto3)requests, e requests-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) # 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)