Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Rufen Sie den Inhalt von Dokumenten aus der Wissensdatenbank ab
Die GetDocumentContent API ermöglicht es Ihnen, den Inhalt von Dokumenten abzurufen, die in eine Amazon Bedrock Knowledge Base aufgenommen wurden. Diese API gibt eine vorsignierte URL zurück, die temporären, sicheren Zugriff zum Herunterladen oder Anzeigen des ursprünglichen oder extrahierten Inhalts eines Dokuments bietet.
Das ist nützlich, wenn Sie:
Greifen Sie auf das Quelldokument zu, auf das in einer
RetrieveAPI-Antwort verwiesen wirdLaden Sie die Originaldatei (PDF, Word, HTML usw.) aus einer Wissensdatenbank herunter
Rufen Sie den extracted/parsed Textinhalt eines Dokuments im JSON-Format ab
Erstellen Sie Anwendungen, mit denen Benutzer Quelldokumente hinter
RetrieveAPI-Antworten anzeigen oder herunterladen können
Funktionsweise
Sie rufen
GetDocumentContentmit der Knowledge-Base-ID, der Datenquellen-ID und der Dokument-ID an.Der Service validiert Ihre Zugriffsberechtigungen (einschließlich aller in der Wissensdatenbank konfigurierten ACL-based Zugriffskontrollen).
Die API gibt eine vorsignierte URL und den MIME-Typ des Dokuments zurück.
Sie verwenden die vorsignierte URL, um den Inhalt des Dokuments herunterzuladen. Die URL läuft nach 5 Minuten ab.
IAM-Berechtigungen
Für das Aufrufen GetDocumentContent sind bedrock:Retrieve sowohl bedrock:GetDocumentContent IAM-Aktionen als auch IAM-Aktionen für die Wissensdatenbank-Ressource erforderlich. Dies liegt daran, dass die API den Zugriff auf Abrulebene intern validiert, bevor der Dokumentinhalt zurückgegeben wird. Stellen Sie sicher, dass Ihre IAM-Richtlinie beide Aktionen umfasst:
{ "Effect": "Allow", "Action": [ "bedrock:Retrieve", "bedrock:GetDocumentContent" ], "Resource": "arn:aws:bedrock:region:account-id:knowledge-base/kb-id" }
Verwendungsbeispiele
Dasselbe Konto mit aktivierter ACL
Wenn in Ihrer Wissensdatenbank die ACL-based Zugriffskontrolle aktiviert ist, geben userContext Sie die Identität des Benutzers an, um sicherzustellen, dass die Berechtigungen auf Dokumentebene überprüft werden:
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)
Dasselbe Konto ohne aktivierte ACL
Wenn ACLs nicht konfiguriert sind, lassen Sie Folgendes weg: 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 ohne aktivierte ACL
Für den kontoübergreifenden Zugriff muss der Besitzer der Wissensdatenbank seiner Wissensdatenbank eine Ressourcenrichtlinie hinzufügen, die dem Anrufer die Kontoberechtigung erteilt. Dann verwendet der Anrufer den vollständigen Knowledge-Base-ARN.
Schritt 1: Der KB-Besitzer fügt der Wissensdatenbank eine Ressourcenrichtlinie hinzu
Das Konto, dem die Wissensdatenbank gehört (z. B.999999999999), muss eine Ressourcenrichtlinie anhängen, die dem Anruferkonto (z. B.111111111111) Zugriff gewährt:
{ "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" } ] }
Dies erfolgt über die PutKnowledgeBaseResourcePolicy API oder über die Amazon Bedrock-Konsole.
Schritt 2: Das Anruferkonto verfügt über IAM-Berechtigungen zum Aufrufen der API
Das IAM role/user (im Konto111111111111) des Anrufers benötigt eine IAM-Richtlinie, die die Aktionen auf dem kontoübergreifenden KB-ARN zulässt:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "bedrock:Retrieve", "bedrock:GetDocumentContent" ], "Resource": "arn:aws:bedrock:us-east-1:999999999999:knowledge-base/KBID1234567" } ] }
Schritt 3: Rufen Sie die API mit dem vollständigen KB-ARN auf
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)
Sowohl die Ressourcenrichtlinie (auf der KB-Eigentümerseite) als auch die IAM-Richtlinie (auf der Anruferseite) müssen vorhanden sein. Der Zugriff wird verweigert, wenn einer der beiden fehlt.