View a markdown version of this page

Amazon S3 - Amazon Bedrock

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon S3

Amazon S3 は、データをオブジェクトとしてバケットに保存するオブジェクトストレージサービスです。Amazon S3 バケットをマネージドナレッジベースのデータソースとして接続して、そこに保存しているオブジェクトを取り込むことができます。

サポートされている機能

  • 個別のメタデータファイルを使用してメタデータフィールドを文書化する

  • ファイルパターンと S3 キープレフィックスを使用した包含コンテンツフィルターと除外コンテンツフィルター

  • 追加、更新、削除されたコンテンツの増分コンテンツ同期

  • クロスアカウント Amazon S3 バケットアクセス

  • お客様が用意した ACLs ファイルを使用したドキュメントレベルのアクセスコントロール (ACL)

前提条件

Amazon S3 で、以下を確認してください。

  • Amazon S3 バケット名とバケット所有者の AWS アカウント ID を書き留めます。バケットは、ナレッジベースと同じ AWS リージョンにある汎用バケットであり、バケットにアクセスするアクセス許可を持っている必要があります。

  • バケットがナレッジベースとは異なる AWS アカウントにある場合、またはカスタマーマネージド KMS キーで暗号化されている場合は、ナレッジベースサービスロールからのアクセスを許可するようにバケットポリシーと (該当する場合) KMS キーポリシーを設定します。「クロスアカウントおよび KMS 暗号化アクセスのバケットポリシー」を参照してください。

AWS アカウントで、以下を確認してください

  • ナレッジベースの AWS Identity and Access Management (IAM) ロール/アクセス許可ポリシーに、データソースに接続するために必要なアクセス許可を含めます。必要なアクセス許可の詳細については、「」を参照してくださいデータソースにアクセスするためのアクセス許可

クロスアカウントおよび KMS 暗号化アクセスのバケットポリシー

Amazon S3 バケットがナレッジベースとは異なる AWS アカウントにある場合、またはカスタマーマネージド KMS キーで暗号化されている場合は、リソースベースのポリシーを追加してナレッジベースのサービスロールにアクセス権を付与します。次の例は、必要な最小ステートメントを示しています。

クロスアカウントバケットポリシー

Amazon S3 バケットを所有するアカウントで、バケットポリシーに次のステートメントを追加します。kb-account-id をナレッジベースが作成されたアカウント ID に、kb-service-role をナレッジベースサービスロールの名前に、bucket-name をバケット名に置き換えます。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowBedrockKnowledgeBaseAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::kb-account-id:role/kb-service-role" }, "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::bucket-name", "arn:aws:s3:::bucket-name/*" ] } ] }

一般的なガイダンスについては、Amazon S3バケットへのアクセスを設定する」を参照してください。

暗号化されたバケットの KMS キーポリシー

Amazon S3 バケットがカスタマーマネージド KMS キーで暗号化されている場合は、キーポリシーに次のステートメントを追加します。クロスアカウントバケットポリシーと同じプレースホルダーを使用します。キーポリシーの変更が反映されるまで数分かかります。

{ "Sid": "AllowBedrockKnowledgeBaseKmsAccess", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::kb-account-id:role/kb-service-role" }, "Action": [ "kms:Decrypt", "kms:DescribeKey" ], "Resource": "*" }

"Resource": "*" ここでのスコープは、ポリシーがアタッチされているキーです。

Amazon S3 データソースをセットアップする方法

Amazon S3 データソースのセットアップには、次のステップが含まれます。

  1. バケットを準備します。バケット名、アカウント ID、およびバケットポリシー (クロスアカウントアクセスの場合) を確認します。ドキュメントメタデータを使用する場合は、.metadata.jsonファイルが保存されている Amazon S3 プレフィックスを決定します。

  2. データソースを接続します。 AWS マネジメントコンソール または API を使用して、ナレッジベースに Amazon S3 データソースを作成します。「データソースを作成する」を参照してください。

  3. (オプション) ドキュメントレベルのアクセスコントロールを有効にします。お客様が用意した ACL ファイルで定義されたユーザーアクセス許可でクエリ結果をフィルタリングします。「ドキュメントレベルのアクセスコントロール」を参照してください。

データソースを作成する

Console
Amazon S3 バケットをマネージドナレッジベースに接続するには
  1. データソースで、データソースの名前を指定します。

  2. データソースドロップダウンから Amazon S3 を選択します。

  3. データソースの場所で、Amazon S3 バケットがこの AWS アカウントにあるか、その他の AWS アカウントにあるかを選択します。

  4. バケットの Amazon S3 URI を入力します。S3 を参照 を選択してバケットを選択できます。

  5. (オプション) メタデータファイルのプレフィックスを入力します。これは、このデータソースのドキュメントメタデータファイル (.metadata.json) が保存される Amazon S3 プレフィックスです。

  6. (オプション) S3 プレフィックスフィルターパターンを展開して、特定のパスを含めるか除外します。

  7. (オプション) ファイルフィルターパターンを展開して、特定のファイルを含めるか除外する正規表現パターンを追加します。

  8. (オプション) ドキュメントレベルのアクセスコントロールを有効にするには、ACLs を使用してドキュメントアクセスを制御するを選択し、グローバル ACL ファイルの Amazon S3 URI を指定します。このオプションは、作成後に変更することはできません。詳細については、「ドキュメントレベルのアクセスコントロール」を参照してください。

API

Amazon S3 データソースを作成するには、Amazon Bedrock エージェントのビルドタイムエンドポイントを使用して CreateDataSource リクエストを送信します。次の の AWS Command Line Interface 例では、プレフィックスフィルターとパターンフィルターを使用して、同じアカウントのバケットのデータソースを作成します。各フィールドの説明については、以下のコネクタパラメータリファレンスを参照してください。

aws bedrock-agent create-data-source \ --name "S3-connector" \ --knowledge-base-id "your-knowledge-base-id" \ --data-source-configuration file://s3-managed-connector.json

s3-managed-connector.json ファイルには以下が含まれています。

{ "type": "MANAGED_KNOWLEDGE_BASE_CONNECTOR", "managedKnowledgeBaseConnectorConfiguration": { "connectorParameters": { "type": "S3", "version": "1", "connectionConfiguration": { "bucketName": "my-knowledge-base-bucket", "bucketOwnerAccountId": "123456789012" }, "filterConfiguration": { "inclusionPrefixes": ["documents/"], "inclusionPatterns": [".*\\.pdf", ".*\\.txt"], "exclusionPatterns": [".*\\.tmp"] }, "metadataFilesPrefix": "metadata/" } } }

ドキュメントレベルのアクセスコントロールを有効にするには、 aclEnabledを に設定trueし、 aclConfigurationで を追加しますglobalAccessControlListS3Uri。「ドキュメントレベルのアクセスコントロール」を参照してください。

マネージドナレッジベースの場合、 CreateDataSourceは非同期です。オペレーションが完了すると、データソースのステータスは から CREATING に移行AVAILABLEします。

コネクタパラメータ

データソース設定では、次のコネクタパラメータを使用します。Amazon S3 に接続するには、 でコネクタタイプS3として を指定しますconnectorParameters。ラップするフィールド connectorParameters ( deletionProtectionConfigurationや などmediaExtractionConfiguration) については、「」を参照してくださいデータソースを接続する

connectionConfiguration
フィールド 必要 説明
bucketName はい Amazon S3 バケットの名前です。
bucketOwnerAccountId 条件付き バケット所有者の AWS アカウント ID。クロスアカウントアクセスに必要です。
filterConfiguration (オプション)
フィールド 必要 説明
inclusionPrefixes いいえ 含める Amazon S3 キープレフィックスのリスト (例: documents/)。
exclusionPrefixes いいえ 除外する Amazon S3 キープレフィックスのリスト (例: archive/)。
inclusionPatterns いいえ 正規表現のリスト。キーが少なくとも 1 つのパターンに一致するオブジェクトのみが取り込まれます。
exclusionPatterns いいえ 正規表現のリスト。いずれかのパターンに一致するキーを持つオブジェクトは取り込まれません。
maxFileSizeInMegaBytes いいえ コネクタが取り込む 1 つのファイルの最大サイズ、メガバイト単位。数値文字列として を指定します (例: "500")。デフォルトは "500" です。
最上位コネクタパラメータ (オプション)
フィールド 必要 説明
metadataFilesPrefix いいえ ドキュメントメタデータファイル (.metadata.json) が保存される Amazon S3 プレフィックス。
aclEnabled いいえ ドキュメントレベルのアクセスコントロールを有効にするtrueには、 に設定します。データソースの作成後にこの設定を変更することはできません。詳細については、「ドキュメントレベルのアクセスコントロール」を参照してください。
aclConfiguration 条件付き 含む globalAccessControlListS3Uri — キープレフィックスをアクセスコントロールエントリにマッピングする JSON ファイルの Amazon S3 URI。aclEnabled が の場合は必須ですtrue。 が の場合、 aclEnabledは無視されますfalse。「ドキュメントレベルのアクセスコントロール」を参照してください。

ドキュメントメタデータファイル

サイドカーファイルをアップロードすることで、各ドキュメントにメタデータをアタッチできます。ドキュメントごとに、同じ Amazon S3 パスfilename.extension.metadata.jsonに という名前のファイルを作成します。メタデータファイルは 10 KB を超えることはできません。たとえば、 と一緒にreport.pdf、次の内容report.pdf.metadata.jsonでアップロードします。

{ "metadataAttributes": { "company": { "value": { "type": "STRING", "stringValue": "BioPharm Innovations" } }, "created_date": { "value": { "type": "NUMBER", "numberValue": 20221205 } }, "author": { "value": { "type": "STRING", "stringValue": "Lisa Thompson" } } } }

サポートされている属性データ型とクエリ時に適用できるフィルタリング演算子については、「メタデータとフィルタリング」を参照してください。