Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Recupera il contenuto dei documenti dalla knowledge base
L'GetDocumentContentAPI consente di recuperare il contenuto dei documenti che sono stati inseriti in una Knowledge Base di Amazon Bedrock. Questa API restituisce un URL prefirmato che fornisce un accesso temporaneo e sicuro per scaricare o visualizzare il contenuto originale o estratto di un documento.
Questa funzionalità è utile quando si desidera:
Accedere al documento sorgente a cui si fa riferimento in una risposta
RetrieveAPIScarica il file originale (PDF, Word, HTML, ecc.) da una knowledge base
Recupera il contenuto extracted/parsed testuale di un documento in formato JSON
Crea applicazioni che consentano agli utenti di visualizzare o scaricare i documenti sorgente protetti dalle risposte delle API
Retrieve
Come funziona
Chiamate
GetDocumentContentcon l'ID della knowledge base, l'ID della fonte di dati e l'ID del documento.Il servizio convalida le autorizzazioni di accesso (inclusi eventuali controlli di ACL-based accesso configurati nella knowledge base).
L'API restituisce un URL prefirmato e il tipo MIME del documento.
L'URL prefirmato viene utilizzato per scaricare il contenuto del documento. L'URL scade dopo 5 minuti.
autorizzazioni IAM
GetDocumentContentLa chiamata richiede entrambe le azioni bedrock:Retrieve e le azioni bedrock:GetDocumentContent IAM sulla risorsa della knowledge base. Questo perché l'API convalida internamente l'accesso a livello di recupero prima di restituire il contenuto del documento. Assicurati che la tua policy IAM includa entrambe le azioni:
{ "Effect": "Allow", "Action": [ "bedrock:Retrieve", "bedrock:GetDocumentContent" ], "Resource": "arn:aws:bedrock:region:account-id:knowledge-base/kb-id" }
Esempi di utilizzo
Stesso account con ACL abilitato
Quando nella knowledge base è abilitato il controllo degli ACL-based accessi, inserisci l'identità dell'utente per garantire i controlli userContext delle autorizzazioni a livello di 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)
Stesso account senza ACL abilitato
Quando gli ACL non sono configurati, ometti: userContext
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 senza ACL abilitato
Per l'accesso da più account, il proprietario della knowledge base deve allegare alla propria knowledge base una politica delle risorse che conceda l'autorizzazione all'account del chiamante. Quindi il chiamante utilizza l'ARN della knowledge base completa.
Fase 1: il proprietario della KB allega una politica delle risorse alla knowledge base
L'account proprietario della knowledge base (ad esempio,999999999999) deve allegare una politica delle risorse che conceda all'account del chiamante (ad esempio,111111111111) l'accesso:
{ "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" } ] }
Questa operazione viene eseguita tramite l'PutKnowledgeBaseResourcePolicyAPI o tramite la console Amazon Bedrock.
Passaggio 2: l'account chiamante dispone delle autorizzazioni IAM per richiamare l'API
L'IAM role/user (in account111111111111) del chiamante necessita di una policy IAM che consenta le azioni sull'ARN KB tra account:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "bedrock:Retrieve", "bedrock:GetDocumentContent" ], "Resource": "arn:aws:bedrock:us-east-1:999999999999:knowledge-base/KBID1234567" } ] }
Passaggio 3: richiama l'API utilizzando l'ARN KB completo
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)
Devono essere valide sia la politica delle risorse (sul lato del proprietario della KB) che la politica IAM (sul lato del chiamante). L'accesso è negato se manca una delle due.