Conectores de ML de Amazon OpenSearch Service para Servicios de AWS - OpenSearch Servicio Amazon

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Conectores de ML de Amazon OpenSearch Service para Servicios de AWS

Cuando utilice los conectores de machine learning (ML) de Amazon OpenSearch Service con otro Servicio de AWS, necesitará configurar un rol de IAM para conectar OpenSearch Service a ese servicio de forma segura. Los Servicios de AWS a los que puede configurar un conector incluyen Amazon SageMaker y Amazon Bedrock. En este tutorial, explicamos cómo crear un conector de OpenSearch Service a tiempo de ejecución de SageMaker. Para obtener más información sobre los conectores, consulte Conectores compatibles.

Requisitos previos

Para crear un conector, debe tener un punto de conexión de dominio de Amazon Sagemaker y un rol de IAM que conceda acceso a OpenSearch Service.

Configuración de un dominio de Amazon SageMaker

Consulte Implementar un modelo en Amazon SageMaker en la Guía para desarrolladores de Amazon SageMaker para implementar su modelo de machine learning. Anote la URL del punto de conexión de su modelo, que necesitará para crear un conector de IA.

Creación de un rol de IAM

Configure un rol de IAM para delegar permisos de tiempo de ejecución de Sagemaker a OpenSearch Service. Para crear un rol nuevo, consulte Creación de roles de IAM (consola) en la Guía del usuario de IAM. Si lo desea, puede utilizar un rol existente siempre que tenga el mismo conjunto de privilegios. Si crea un rol nuevo en lugar de usar un rol administrado por AWS, sustituya opensearch-sagemaker-role en este tutorial por el nombre de su propio rol.

  1. Adjunte la siguiente política de IAM administrada a su nuevo rol para permitir que OpenSearch Service acceda al punto de conexión de SageMaker. Para adjuntar una política a un rol, consulte Adición de permisos de identidad de IAM.

    { "Version": "2012-10-17", "Statement": [ { "Action": [ "sagemaker:InvokeEndpointAsync", "sagemaker:InvokeEndpoint" ], "Effect": "Allow", "Resource": "*" } ] }
  2. Siga las instrucciones de Modificación de una política de confianza de rol para editar la relación de confianza del rol. Debe especificar OpenSearch Service en la instrucción de Principal:

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

    Le recomendamos que utilice las claves de condición aws:SourceAccount y aws:SourceArn para limitar el acceso a un dominio específico. La SourceAccount es el ID de Cuenta de AWS que pertenece al propietario del dominio y el SourceArn es el ARN del dominio. Por ejemplo, puede agregar el siguiente bloque de condición a la política de confianza:

    "Condition": { "StringEquals": { "aws:SourceAccount": "account-id" }, "ArnLike": { "aws:SourceArn": "arn:aws:es:region:account-id:domain/domain-name" } }

Configuración de permisos de

Para crear el conector, necesita permiso para transferir el rol de IAM a OpenSearch Service. También necesita tener acceso a la acción es:ESHttpPost. Para conceder estos dos permisos, asocie la siguiente política al rol de IAM cuyas credenciales se utilicen para firmar la solicitud:

{ "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/*" } ] }

Si su usuario o rol no tiene permisos de iam:PassRole para transferir su rol, puede que se produzca un error de autorización cuando intente registrar un repositorio en el siguiente paso.

Asigne el rol de ML en OpenSearch Dashboards (si utiliza el control de acceso detallado)

El control de acceso detallado presenta un paso adicional al configurar un conector. Incluso si utiliza autenticación HTTP básica para todos los demás fines, debe asignar el rol ml_full_access al rol de IAM que tenga permisos iam:PassRole para transferir opensearch-sagemaker-role.

  1. Desplácese hasta el complemento de OpenSearch Dashboards para ver su dominio de OpenSearch Service. Puede encontrar el punto de conexión de Dashboards en el panel del dominio de la consola de OpenSearch Service.

  2. En el menú principal, seleccione Seguridad, Roles y seleccione el rol ml_full_access.

  3. Seleccione Usuarios asignados, Administrar mapeo.

  4. En Roles de backend, agregue el ARN del rol que tenga permisos para transferir opensearch-sagemaker-role.

    arn:aws:iam::account-id:role/role-name
  5. Seleccione Asignar y confirme que el usuario o el rol aparecen en Usuarios asignados.

Cómo crear un conector de OpenSearch Service

Para crear un conector, envíe una solicitud POST al punto de conexión de dominio de OpenSearch Service. Puede usar curl, el cliente Python de muestra, Postman u otro método para enviar una solicitud firmada. Tenga en cuenta que no puede usar una solicitud POST en la consola de Kibana. La solicitud tiene el siguiente 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}\" } }" } ] }

Si el dominio reside en una nube privada virtual (VPC), la computadora debe estar conectada a la VPC para que la solicitud cree correctamente el conector de IA. El acceso a una VPC depende de la configuración de red, pero generalmente implica conectarse a una VPN o una red corporativa. Para comprobar que tiene acceso al dominio de OpenSearch Service, diríjase a https://your-vpc-domain.region.es.amazonaws.com en un navegador web y compruebe que recibe la respuesta JSON predeterminada.

Cliente Python de muestra

El cliente de Python es más simple de automatizar que una solicitud HTTP y tiene una mejor reutilización. Para crear el conector de IA con el cliente Python, guarde el siguiente código de ejemplo en un archivo Python. El cliente necesita los paquetes AWS SDK for Python (Boto3), requests y 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)