本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon S3
Amazon S3 是一种对象存储服务,可将数据以对象形式存储在存储桶中。您可以连接 Amazon S3 存储桶作为托管知识库的数据源,以提取存储在那里的对象。
支持的功能
-
通过单独的元数据文件记录元数据字段
-
使用文件模式和 S3 密钥前缀筛选包含和排除内容
-
对添加、更新和删除的内容进行增量内容同步
-
Cross-account 亚马逊 S3 存储桶访问权限
-
Document-level 访问控制 (ACL),使用客户提供的 ACL 文件
先决条件
在 Amazon S3 中,请确保:
-
记下 Amazon S3 存储桶名称和存储桶所有者的 AWS 账户 ID。该存储桶必须是与您的知识库位于同一 AWS 区域的通用存储桶,并且您必须具有访问权限。
-
如果存储桶与知识库位于不同的 AWS 账户中,或者使用客户管理的 KMS 密钥加密,请配置存储桶策略和 KMS 密钥策略(如果适用),以允许您的知识库服务角色进行访问。请参阅跨账户和 KMS-encrypted 访问权限的存储桶政策。
在您的 AWS 账户中,请确保:
-
在知识库的 AWS Identity and Access Management (IAM) role/permissions 政策中包括连接到数据源的必要权限。有关所需权限的信息,请参阅访问数据来源的权限。
跨账户和 KMS-encrypted 访问权限的存储桶政策
如果您的 Amazon S3 存储桶与知识库位于不同的 AWS 账户中,或者使用客户管理的 KMS 密钥进行加密,请添加基于资源的策略以授予您的知识库服务角色访问权限。以下示例显示了所需的最低语句。
Cross-account 存储桶政策
在拥有 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 数据源涉及以下步骤:
-
准备好你的水桶。确认存储桶名称、账户 ID 和(用于跨账户访问)存储桶政策。如果您计划使用文档元数据,请决定
.metadata.json文件所在的 Amazon S3 前缀。 -
连接数据源。使用 AWS 管理控制台 或 API 在知识库中创建 Amazon S3 数据源。请参阅创建数据源。
-
(可选)启用文档级访问控制。按客户提供的 ACL 文件中定义的用户权限筛选查询结果。请参阅Document-level 访问控制。
创建数据源
连接器参数
数据源配置使用以下连接器参数。要连接到 Amazon S3,请将输入指定S3为连接器connectorParameters。有关换行字段connectorParameters(例如deletionProtectionConfiguration和mediaExtractionConfiguration),请参阅连接数据来源。
| 字段 | 必填 | 描述 |
|---|---|---|
bucketName |
是 | Amazon S3 桶的名称。 |
bucketOwnerAccountId |
有条件 | 存储桶所有者的 AWS 账户 ID。跨账户访问是必需的。 |
| 字段 | 必填 | 说明 |
|---|---|---|
inclusionPrefixes |
否 | 要包含的 Amazon S3 密钥前缀列表(例如,documents/)。 |
exclusionPrefixes |
否 | 要排除的 Amazon S3 密钥前缀列表(例如,archive/)。 |
inclusionPatterns |
否 | 正则表达式列表。只有密钥与至少一种模式匹配的对象才会被载入。 |
exclusionPatterns |
否 | 正则表达式列表。密钥匹配任何模式的对象都不会被载入。 |
maxFileSizeInMegaBytes |
否 | 连接器接收的任何单个文件的最大大小(以兆字节为单位)。以数字字符串形式提供(例如,"500")。默认值为 "500"。 |
| 字段 | 必填 | 说明 |
|---|---|---|
metadataFilesPrefix |
否 | 存储文档元数据文件 (.metadata.json) 的 Amazon S3 前缀。 |
aclEnabled |
否 | 设置为true以启用文档级访问控制。创建数据源后,您无法更改此设置。有关更多信息,请参阅 Document-level 访问控制。 |
aclConfiguration |
有条件 | 包含 globalAccessControlListS3Uri — JSON 文件的 Amazon S3 URI,该文件将密钥前缀映射到访问控制条目。为必填项true;aclEnabledaclEnabled为时忽略false。请参阅Document-level 访问控制。 |
文档元数据文件
您可以通过在每个文档旁边上传一个 sidecar 文件,将元数据附加到每个文档中。对于每个文档,在同一 Amazon S3 路径中创建一个名为的文件。元数据文件不得超过 10 KB。例如,除此之外filename.extension.metadata.jsonreport.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" } } } }
有关支持的属性数据类型以及可在查询时应用的筛选运算符的信息,请参阅元数据和筛选。