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 Amazon OpenSearch Service ML para Servicios de AWS
Cuando utilizas conectores de aprendizaje automático (ML) de Amazon OpenSearch Service con otro Servicio de AWS, debes configurar un rol de IAM para conectar el OpenSearch Servicio a ese servicio de forma segura. Servicios de AWS que puedes configurar un conector para incluir Amazon SageMaker AI y Amazon Bedrock. En este tutorial, explicamos cómo crear un conector desde OpenSearch Service hasta SageMaker Runtime. Para obtener más información sobre los conectores, consulte Conectores compatibles
Requisitos previos
Para crear un conector, debe tener un punto de enlace de Amazon SageMaker AI Domain y un rol de IAM que otorgue acceso al OpenSearch servicio.
Configurar un dominio de Amazon SageMaker AI
Consulte Implementación de un modelo en Amazon SageMaker AI en la Guía para desarrolladores de Amazon SageMaker AI para implementar su modelo de aprendizaje automático. 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 los permisos SageMaker de tiempo de ejecución al OpenSearch servicio. 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 AWS administrado, opensearch-sagemaker-role
sustitúyalo en este tutorial por el nombre de su propio rol.
-
Adjunta la siguiente política de IAM gestionada a tu nueva función para permitir que el OpenSearch Servicio acceda a tu terminal de SageMaker IA. 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": "*" } ] }
-
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 el OpenSearch servicio en la
Principal
declaración:{ "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
yaws:SourceArn
para limitar el acceso a un dominio específico.SourceAccount
Es el Cuenta de AWS ID que pertenece al propietario del dominio ySourceArn
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
Para crear el conector, necesita permiso para transferir la función 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 la función de aprendizaje automático en los OpenSearch paneles de control (si utiliza un 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
.
-
Navegue hasta el complemento OpenSearch Dashboards de su dominio de servicio. OpenSearch Puedes encontrar el punto de conexión de Dashboards en el panel de control de tu dominio, en la consola de OpenSearch servicio.
-
En el menú principal, seleccione Seguridad, Roles y seleccione el rol ml_full_access.
-
Seleccione Usuarios asignados, Administrar mapeo.
-
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
-
Seleccione Asignar y confirme que el usuario o el rol aparecen en Usuarios asignados.
Crea un conector de OpenSearch servicio
Para crear un conector, envíe una POST
solicitud al punto final del dominio de OpenSearch servicio. 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 puedes acceder a tu dominio de OpenSearch servicio, navega https://
en un navegador web y comprueba que recibes la respuesta JSON predeterminada.your-vpc-domain
.region
.es.amazonaws.com
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
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)