

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 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. （選用） 輸入**中繼資料檔案字首** — Amazon S3 字首，其中存放此資料來源的文件中繼資料檔案 (`.metadata.json`)。

1. （選用） 展開 **S3 字首篩選條件模式**，以包含或排除特定路徑。

1. （選用） 展開**檔案篩選模式**以新增 regex 模式，以包含或排除特定檔案。

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`請將 設定為 `aclConfiguration`，`true`並使用 新增 `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 | 否 | 規則表達式的清單。只會擷取其金鑰符合至少一個模式的物件。 | 
| exclusionPatterns | 否 | 規則表達式的清單。金鑰符合任何模式的物件不會擷取。 | 
| maxFileSizeInMegaBytes | 否 | 連接器擷取之任何單一檔案的大小上限，以 MB 為單位。提供 做為數值字串 （例如，"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)。