

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

# Amazon S3
<a name="kb-managed-ds-s3"></a>

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

## サポートされている機能
<a name="kb-managed-supported-features-s3"></a>
+ 個別のメタデータファイルを使用してメタデータフィールドを文書化する
+ ファイルパターンと S3 キープレフィックスを使用した包含コンテンツフィルターと除外コンテンツフィルター
+ 追加、更新、削除されたコンテンツの増分コンテンツ同期
+ クロスアカウント Amazon S3 バケットアクセス
+ お客様が用意した ACLs ファイルを使用したドキュメントレベルのアクセスコントロール (ACL)

## 前提条件
<a name="kb-managed-prereqs-s3"></a>

**Amazon S3 で、以下を確認してください。**
+ Amazon S3 バケット名とバケット所有者の AWS アカウント ID を書き留めます。バケットは、ナレッジベースと同じ AWS リージョンにある汎用バケットであり、バケットにアクセスするアクセス許可を持っている必要があります。
+ バケットがナレッジベースとは異なる AWS アカウントにある場合、またはカスタマーマネージド KMS キーで暗号化されている場合は、ナレッジベースサービスロールからのアクセスを許可するようにバケットポリシーと (該当する場合) KMS キーポリシーを設定します。「[クロスアカウントおよび KMS 暗号化アクセスのバケットポリシー](#kb-managed-s3-bucket-policies)」を参照してください。

** AWS アカウントで、以下を確認してください**。
+ ナレッジベースの AWS Identity and Access Management (IAM) ロール/アクセス許可ポリシーに、データソースに接続するために必要なアクセス許可を含めます。必要なアクセス許可の詳細については、「」を参照してください[データソースにアクセスするためのアクセス許可](kb-permissions.md#kb-permissions-access-ds)。

## クロスアカウントおよび KMS 暗号化アクセスのバケットポリシー
<a name="kb-managed-s3-bucket-policies"></a>

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

### クロスアカウントバケットポリシー
<a name="kb-managed-s3-cross-account-policy"></a>

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バケットへのアクセスを設定する](https://docs.aws.amazon.com/bedrock/latest/userguide/s3-bucket-access.html)」を参照してください。

### 暗号化されたバケットの KMS キーポリシー
<a name="kb-managed-s3-kms-policy"></a>

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 データソースをセットアップする方法
<a name="kb-managed-s3-workflow"></a>

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

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

1. **データソースを接続します。** AWS マネジメントコンソール または API を使用して、ナレッジベースに Amazon S3 データソースを作成します。「[データソースを作成する](#kb-managed-ds-s3-create)」を参照してください。

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

## データソースを作成する
<a name="kb-managed-ds-s3-create"></a>

------
#### [ Console ]

**Amazon S3 バケットをマネージドナレッジベースに接続するには**

1. **データソース**で、データソースの名前を指定します。

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

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

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

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

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

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

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

------
#### [ API ]

Amazon S3 データソースを作成するには、Amazon Bedrock エージェントのビルドタイムエンドポイントを使用して [CreateDataSource](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_CreateDataSource.html) リクエストを送信します。次の の 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`。「[ドキュメントレベルのアクセスコントロール](kb-managed-ds-s3-acl.md)」を参照してください。

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

------

## コネクタパラメータ
<a name="kb-managed-config-s3"></a>

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


**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には、 に設定します。データソースの作成後にこの設定を変更することはできません。詳細については、「[ドキュメントレベルのアクセスコントロール](kb-managed-ds-s3-acl.md)」を参照してください。 | 
| aclConfiguration | 条件付き | 含む globalAccessControlListS3Uri — キープレフィックスをアクセスコントロールエントリにマッピングする JSON ファイルの Amazon S3 URI。aclEnabled が の場合は必須ですtrue。 が の場合、 aclEnabledは無視されますfalse。「[ドキュメントレベルのアクセスコントロール](kb-managed-ds-s3-acl.md)」を参照してください。 | 

### ドキュメントメタデータファイル
<a name="kb-managed-s3-metadata-files"></a>

サイドカーファイルをアップロードすることで、各ドキュメントにメタデータをアタッチできます。ドキュメントごとに、同じ 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"
            }
        }
    }
}
```

サポートされている属性データ型とクエリ時に適用できるフィルタリング演算子については、[「メタデータとフィルタリング](https://docs.aws.amazon.com/bedrock/latest/userguide/kb-test-config.html)」を参照してください。