本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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 前缀。 -
Connect 数据源。使用 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。当aclEnabled为时为必填项true;当aclEnabled为时忽略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" } } } }
有关支持的属性数据类型和可在查询时应用的筛选运算符的信息,请参阅元数据和筛选。