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á.
Recupere o conteúdo dos documentos da base de conhecimento
A GetDocumentContent API permite que você recupere o conteúdo de documentos que foram ingeridos em uma Base de Conhecimento Amazon Bedrock. Essa API retorna uma URL pré-assinada que fornece acesso temporário e seguro para baixar ou visualizar o conteúdo original ou extraído de um documento.
Isso é útil quando você quer:
Acesse o documento de origem referenciado em uma resposta
Retrieveda APIBaixe o arquivo original (PDF, Word, HTML etc.) de uma base de conhecimento
Recupere o conteúdo de extracted/parsed texto de um documento no formato JSON
Crie aplicativos que permitam que os usuários visualizem ou baixem documentos de origem por trás das respostas
Retrieveda API
Como funciona
Você liga
GetDocumentContentcom a ID da base de conhecimento, a ID da fonte de dados e a ID do documento.O serviço valida suas permissões de acesso (incluindo quaisquer controles de ACL-based acesso configurados na base de conhecimento).
A API retorna uma URL pré-assinada e o tipo MIME do documento.
Você usa o URL pré-assinado para baixar o conteúdo do documento. O URL expira após 5 minutos.
Permissões do IAM
A chamada GetDocumentContent exige ações bedrock:Retrieve tanto bedrock:GetDocumentContent do IAM quanto do IAM no recurso da base de conhecimento. Isso ocorre porque a API valida internamente o acesso em nível de recuperação antes de retornar o conteúdo do documento. Certifique-se de que sua política do IAM inclua as duas ações:
{ "Effect": "Allow", "Action": [ "bedrock:Retrieve", "bedrock:GetDocumentContent" ], "Resource": "arn:aws:bedrock:region:account-id:knowledge-base/kb-id" }
Exemplos de uso
Mesma conta com ACL habilitada
Quando sua base de conhecimento tiver o controle de ACL-based acesso ativado, informe userContext a identidade do usuário para garantir verificações de permissão em nível de documento:
import boto3 import requests client = boto3.client('bedrock-agent-runtime') # Step 1: Retrieve relevant documents retrieve_response = client.retrieve( knowledgeBaseId='KBID1234567', retrievalQuery={'text': 'What is the refund policy?'} ) # Step 2: Get the full document content for the top result result = retrieve_response['retrievalResults'][0] doc_response = client.get_document_content( knowledgeBaseId='KBID1234567', dataSourceId=result['metadata']['_data_source_id'], documentId=result['documentId'], outputFormat='RAW', userContext={ 'userId': 'user-email', 'groups': [ {'id': 'group-engineering'}, {'id': 'group-project-alpha'} ] } ) # Step 3: Download the document download = requests.get(doc_response['presignedUrl']) with open('document.pdf', 'wb') as f: f.write(download.content)
Mesma conta sem ACL habilitada
Quando as ACLs não estiverem configuradas, userContext omita:
import boto3 import requests client = boto3.client('bedrock-agent-runtime') # Step 1: Retrieve relevant documents retrieve_response = client.retrieve( knowledgeBaseId='KBID1234567', retrievalQuery={'text': 'What is the refund policy?'} ) # Step 2: Get the full document content result = retrieve_response['retrievalResults'][0] doc_response = client.get_document_content( knowledgeBaseId='KBID1234567', dataSourceId=result['metadata']['_data_source_id'], documentId=result['documentId'], outputFormat='RAW' ) # Step 3: Download the document download = requests.get(doc_response['presignedUrl']) with open('document.pdf', 'wb') as f: f.write(download.content)
Cross-account sem ACL habilitada
Para acesso entre contas, o proprietário da base de conhecimento deve anexar uma política de recursos à base de conhecimento que conceda permissão à conta do chamador. Em seguida, o chamador usa o ARN completo da base de conhecimento.
Etapa 1: o proprietário do KB anexa uma política de recursos à base de conhecimento
A conta proprietária da base de conhecimento (por exemplo,999999999999) deve anexar uma política de recursos que conceda à conta do chamador (por exemplo,111111111111) acesso:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "111111111111" }, "Action": [ "bedrock:Retrieve", "bedrock:GetDocumentContent" ], "Resource": "arn:aws:bedrock:us-east-1:999999999999:knowledge-base/KBID1234567" } ] }
Isso é feito por meio da PutKnowledgeBaseResourcePolicy API ou do console Amazon Bedrock.
Etapa 2: a conta do chamador tem permissões do IAM para invocar a API
O IAM do chamador role/user (na conta111111111111) precisa de uma política de IAM que permita as ações no KB ARN da conta cruzada:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "bedrock:Retrieve", "bedrock:GetDocumentContent" ], "Resource": "arn:aws:bedrock:us-east-1:999999999999:knowledge-base/KBID1234567" } ] }
Etapa 3: chame a API usando o ARN completo da KB
import boto3 import requests client = boto3.client('bedrock-agent-runtime') CROSS_ACCOUNT_KB_ARN = 'arn:aws:bedrock:us-east-1:999999999999:knowledge-base/KBID1234567' # Step 1: Retrieve relevant documents using the KB ARN retrieve_response = client.retrieve( knowledgeBaseId=CROSS_ACCOUNT_KB_ARN, retrievalQuery={'text': 'What is the refund policy?'} ) # Step 2: Get the full document content using the same ARN result = retrieve_response['retrievalResults'][0] doc_response = client.get_document_content( knowledgeBaseId=CROSS_ACCOUNT_KB_ARN, dataSourceId=result['metadata']['_data_source_id'], documentId=result['documentId'], outputFormat='RAW' ) # Step 3: Download the document download = requests.get(doc_response['presignedUrl']) with open('document.pdf', 'wb') as f: f.write(download.content)
Tanto a política de recursos (no lado do proprietário do KB) quanto a política do IAM (no lado do chamador) devem estar em vigor. O acesso é negado se algum deles estiver ausente.