As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Conectores de ML do Amazon OpenSearch Service para Serviços da AWS
Ao usar conectores de ML (machine learning) do Amazon OpenSearch Service com outro AWS service (Serviço da AWS), você precisa configurar um perfil do IAM para conectar com segurança o OpenSearch Service a esse serviço. Os Serviços da AWS aos quais você pode configurar um conector para incluir o Amazon SageMaker e o Amazon Bedrock. Neste tutorial, abordamos como criar um conector do OpenSearch Service para o SageMaker Runtime. Para obter mais informações sobre conectores, consulte Conectores compatíveis
Pré-requisitos
Para criar um conector, você deve ter um endpoint do domínio do Amazon SageMaker e um perfil do IAM que conceda acesso ao OpenSearch Service.
Configurar um domínio do Amazon SageMaker
Consulte Deploy a Model in Amazon SageMaker (Implantar um modelo no Amazon SageMaker) no Guia do desenvolvedor do Amazon SageMaker para implantar seu modelo de machine learning. Observe o URL do endpoint do seu modelo, que você precisa para criar um conector de IA.
Criar um perfil do IAM
Configure um perfil do IAM para delegar permissões de SageMaker Runtime ao OpenSearch Service. Para criar um novo perfil, consulte Como criar um perfil do IAM (console) no Guia do usuário do IAM. Opcionalmente, você pode usar um perfil existente, desde que tenha o mesmo conjunto de privilégios. Se você criar um novo perfil em vez de usar um perfil gerenciado pela AWS, substitua opensearch-sagemaker-role
neste tutorial pelo nome do seu próprio perfil.
-
Anexe a seguinte política gerenciada de IAM ao seu novo perfil para permitir que o OpenSearch Service acesse seu endpoint do SageMaker. Para anexar uma política ao perfil, consulte Como adicionar permissões de identidade do IAM.
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "sagemaker:InvokeEndpointAsync", "sagemaker:InvokeEndpoint" ], "Effect": "Allow", "Resource": "*" } ] }
-
Siga as instruções em Modificação da política de confiança de um perfil para editar a relação de confiança do perfil. Você deve especificar o OpenSearch Service na declaração
Principal
:{ "Version": "2012-10-17", "Statement": [ { "Action": [ "sts:AssumeRole" ], "Effect": "Allow", "Principal": { "Service": [ "opensearchservice.amazonaws.com" ] } } ] }
Recomendamos que você use as chaves de condição
aws:SourceAccount
eaws:SourceArn
para limitar o acesso a um domínio específico. OSourceAccount
é o ID Conta da AWS que pertence ao proprietário do domínio eSourceArn
o ARN do domínio. Por exemplo, você pode adicionar o bloco de condições a seguir na política de confiança:"Condition": { "StringEquals": { "aws:SourceAccount": "
account-id
" }, "ArnLike": { "aws:SourceArn": "arn:aws:es:region
:account-id
:domain/domain-name
" } }
Configurar permissões do
Para criar o conector, você precisa de permissão para passar o perfil do IAM para o OpenSearch Service. Você também precisa de acesso à ação es:ESHttpPost
. Para conceder ambas as permissões, anexe a seguinte política ao perfil do IAM cujas credenciais estão sendo usadas para assinar a solicitação:
{ "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 seu usuário ou função não tiver permissões iam:PassRole
para passar sua função, talvez você encontre o seguinte erro de autorização ao tentar registrar um repositório na próxima etapa.
Mapear a função de ML nos OpenSearch Dashboards (se estiver usando um controle de acesso detalhado)
O controle minucioso de acesso introduz uma etapa adicional ao configurar um conector. Mesmo que você use a autenticação básica HTTP para todos os outros fins, será necessário mapear o perfil ml_full_access
para o seu perfil do IAM que tem permissões iam:PassRole
para passar opensearch-sagemaker-role
.
-
Navegue até o plug-in OpenSearch Dashboards para seu domínio do OpenSearch Service. Você pode encontrar o endpoint do Dashboards no painel do seu domínio no console do OpenSearch Service.
-
No menu principal, escolha Segurança, Funções e selecione a função ml_full_access.
-
Escolha Usuários mapeados e Gerenciar mapeamento.
-
Em Funções de backend, adicione o ARN da função que tem permissão para aprovar
opensearch-sagemaker-role
.arn:aws:iam::
account-id
:role/role-name
-
Selecione Mapa e confirme se o usuário ou função aparece em Usuários mapeados.
Criar um conector do OpenSearch Service
Para criar um conector, envie uma solicitação POST
para o endpoint do domínio do OpenSearch Service. Você pode usar curl, o cliente Python de amostra, o Postman ou outro método para enviar uma solicitação assinada. Você não pode usar uma solicitação POST
no console do Kibana. O cabeçalho assume o seguinte 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 o domínio residir em uma nuvem privada virtual (VPC), o computador deverá estar conectado à VPC para que a solicitação crie o conector de IA com êxito. O acesso a uma VPC varia de acordo com a configuração de rede, mas geralmente requer uma conexão com VPN ou rede corporativa. Para saber se você pode alcançar seu domínio do OpenSearch Service, navegue até https://
em um navegador da Web e confira se você recebe a resposta JSON padrão.your-vpc-domain
.region
.es.amazonaws.com
Exemplo de cliente do Python
O cliente Python é mais simples de automatizar do que uma solicitação HTTP, além de ser mais fácil reutilizá-lo. Para criar o conector AI com o cliente Python, salve o código de exemplo a seguir em um arquivo Python. O cliente requer os pacotes 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)