Parte #2: criar um modelo de endpoint com o Amazon SageMaker, o AWS Lambda e o AWS API Gateway
Amazon SageMaker + Atlas Vector Search
. No Part 1, mostrei como configurar uma arquitetura que usa ambas as ferramentas para criar incorporações para seus dados e como usá-las para pesquisar semanticamente seus dados.- Extrair e analisar dados: extraia, processe e analise documentos automaticamente para obter uma Investigação mais precisa e uma tomada de decisão mais rápida.
- Detecção de fraudes: automatize a detecção de transações suspeitas com mais rapidez e alerta seus clientes para reduzir possíveis perdas econômicas.
- Predição de rotatividade de clientes: preveja a probabilidade de rotatividade de clientes e melhore a retenção analisando os prováveis abandonadores e realizando ações corretivas, como ofertas promocional.
- Recomendações personalizadas: ofereça experiências personalizadas e exclusivas aos clientes para melhorar a satisfação do cliente e expandir seus negócios rapidamente.
RStudio
(mais sobre isso mais tarde) e JumpStart
. Você pode conferir ambos na página depreços do Amazon SageMaker verificando se a região desejada aparece na lista On-Demand Pricing
.Set up for a single user
. Isso configurará um domínio e um usuário de início rápido.
- O próprio domínio, que contém um AWS EC2 no qual os modelos serão implantados. Isso contém inerentemente uma lista de usuários autorizados e uma variedade de configurações de segurança, aplicativos, políticas e do Amazon Virtual Private Cloud (Amazon VPC).
- O
UserProfile
, que representa um único usuário em um domínio com o qual você trabalhará. - Um
shared space
, que consiste em um aplicativo JupyterServer compartilhado e um diretório compartilhado. Todos os usuários do domínio têm acesso ao mesmo espaço compartilhado. - Um
App
, que representa um aplicativo que suporta a experiência de leitura e execução dos notebooks, terminais e consoles do usuário.



All MiniLM L6 v2
da Hugging Face.
Deploy
e o SageMaker deixará tudo pronto para você.

In service
, tudo estará pronto para ser usado.
jumpstart-dft-hf-textembedding-all-20240117-062453
. Anote o nome do endpoint — você precisará dele na próxima etapa.AWS Lambda
e clique em Create function
.
Author from scratch
, forneça um nome à sua função (sageMakerLambda
, por exemplo) e escolha o tempo de execução. Para este exemplo, estaremos executando no Python.

<YOUR_ENDPOINT_NAME>
pelo nome real do endpoint da seção anterior.lambda_handler
retorna um código de status e um corpo. Ele está pronto para ser exposto como um endpoint para usar Amazon Web Services API Gateway.1 import json 2 import boto3 3 4 sagemaker_runtime_client = boto3.client("sagemaker-runtime") 5 6 def lambda_handler(event, context): 7 try: 8 # Extract the query parameter 'query' from the event 9 query_param = event.get('queryStringParameters', {}).get('query', '') 10 11 if query_param: 12 embedding = get_embedding(query_param) 13 return { 14 'statusCode': 200, 15 'body': json.dumps({'embedding': embedding}) 16 } 17 else: 18 return { 19 'statusCode': 400, 20 'body': json.dumps({'error': 'No query parameter provided'}) 21 } 22 23 except Exception as e: 24 return { 25 'statusCode': 500, 26 'body': json.dumps({'error': str(e)}) 27 } 28 29 def get_embedding(synopsis): 30 input_data = {"text_inputs": synopsis} 31 response = sagemaker_runtime_client.invoke_endpoint( 32 EndpointName="<YOUR_ENDPOINT_NAME>", 33 Body=json.dumps(input_data), 34 ContentType="application/json" 35 ) 36 result = json.loads(response["Body"].read().decode()) 37 embedding = result["embedding"][0] 38 return embedding
Deploy
!
Configuration
da função Lambda e depois para Permissions
. Você pode simplesmente clicar no linkRole Name
para acessar o papel associado no AWS Identity e Access Management (IAM).
Add permissions
.
Attach policies
anexar políticas pré-criadas da lista de políticas do IAM.
AmazonSageMakerFullAccess
, mas lembre-se de selecionar somente as permissões necessárias para seu aplicativo específico.
Create API
e depois em Build
em REST API
.
sageMakerApi
.
Create API
.

/
. Escolha um nome comosageMakerResource
.
Create method
. Precisamos de um método GET que se integre a uma função lambda.
Lambda proxy integration
e escolha a função lambda que você criou na seção anterior. Em seguida, crie o método.

TEST
pode ser uma boa escolha.
Resources
deverá ter a seguinte aparência.
Resources
, click em GET
again e vá para a tab Method request
. ClickEdit
.
URL query string parameters
, você deseja adicionar uma nova string de query dando um nome a ela. Escolhemos query
aqui. Defina como Required
, mas não em cache, e salve-o.
Stages
abrindo o estágio e o endpoint e clicando em GET
. Neste exemplo, é https://4ug2td0e44.execute-api.ap-northeast-2.amazonaws.com/TEST/sageMakerResource
. Sua URL deve ser semelhante.
1 curl -X GET 'https://4ug2td0e44.execute-api.ap-northeast-2.amazonaws.com/TEST/sageMakerResource?query=foo'
1 {"embedding": [0.01623343490064144, -0.007662375457584858, 0.01860642433166504, 0.031969036906957626,................... -0.031003709882497787, 0.008777940645813942]}
Principais comentários nos fóruns
Olá, está funcionando com o código abaixo:
import json
import boto3
sageMaker_runtime_client = boto3. cliente("sagemaker-runtime")
def lambda_handler(evento, contexto):
tente:
# Extraia o parâmetro de consulta 'query' do evento
query_param = evento.get('queryStringParameters', {}).get('query', '')
if query_param:
embedding = get_embedding(query_param)
return {
'statusCode': 200,
'body': json.dumps({'embedding': embedding})
}
else:
return {
'statusCode': 400,
'body': json.dumps({'error': 'No query parameter provided didi'})
}
except Exception as e:
return {
'statusCode': 500,
'body': json.dumps({'error': str(e)})
}
def get_embedding(sinopse):
input_data = {"inputs ": resumo}
resposta = sageMaker_runtime_client.invoke_endpoint(
EndpointName="jumpstart-dft-hf-textembedding-all-20250417-123155",
Corpo=json.dumps(input_data),
ContentType="application/json"
)
result = json.loads(response["Body"].read().decode())
incorporação = resultado[0]
retornar incorporação
Estou recebendo este erro: curl -X GET 'https://lpeg644c9b.execute-api.us-east-1.amazonaws.com/prodddi/sageMakerResource?query=foo'
{ {"error": "An error occurred (ModelError) when calling the InvokeEndpoint operation: Received client error (422) from primary with message "Failed to deserialize the JSON body into the target type: missing field
inputs
at line 1 column 22". See https://eu-central-1.console.aws.amazon.com/cloudwatch/home?region=eu-central-1#logEventViewer:group=/aws/sagemaker/Endpoints/jumpstart-dft-hf-textembedding-all-20250417-123155 in account 102570980430 for more information."}% (base) fez bitibini@Didis-Air atlas_starter_python-master %