

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 步骤 4：部署后配置
<a name="step-4-post-deployment-configuration"></a>

本节为部署后配置解决方案提供了建议。

## Amazon S3 存储桶版本控制、生命周期策略和跨区域复制
<a name="amazon-s3-bucket-versioning-lifecycle-policies-and-cross-region-replication"></a>

此解决方案不对其创建的存储桶强制执行生命周期配置。我们建议执行下列操作：
+ 为生产部署设置生命周期配置。有关详细信息，请参阅[《*Amazon 简单存储服务用户指南》中的设置存储*桶的生命周期配置](https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-set-lifecycle-configuration-intro.html)。
+ 根据部署解决方案的用例为 Amazon S3 存储桶启用[版本控制](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html)和[跨区域复制](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication.html)。

## 亚马逊 DynamoDB 备份
<a name="amazon-dynamodb-backups"></a>

此解决方案将 DynamoDB 用于多种用途（请参阅本解决方案[中的 AWS 服务](architecture-details.md#aws-services-in-this-solution)）。该解决方案不为其创建的表启用备份。我们建议为生产部署创建此功能的备份。有关详细信息[，请参阅备份 DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Backup.Tutorial.html) 表和[使用 AWS Backup for DynamoD](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/backuprestore_HowItWorksAWS.html) B。

## Amazon CloudWatch 控制面板和警报
<a name="amazon-cloudwatch-dashboard-and-alarms"></a>

该解决方案在中部署了自定义控制面板， CloudWatch 以根据已发布的自定义指标和 AWS 服务指标呈现图表。我们建议根据部署解决方案的用例创建 CloudWatch [警报](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)并添加通知。

## 亚马逊 CloudWatch 日志
<a name="amazon-cloudwatch-logs"></a>

Lambda 日志配置为永不过期，API Gateway 日志配置为有效期为 10 年。您可以更新相应日志组的到期时间，使其与企业的记录保留政策保持一致。

## 带有 TLS v1.2 或更高版本证书的自定义网域
<a name="custom-web-domains-with-tls-v1.2-or-higher-certificates"></a>

该解决方案使用 CloudFront部署网页用户界面和边缘优化 API Gateway。 CloudFront的域不强制执行 TLS v1.2 或更高版本的证书。我们建议使用 A [mazon Route 53](https://aws.amazon.com/route53/) 创建自定义域，使用 [AWS Certificate Manager](https://aws.amazon.com/certificate-manager/) 创建证书，或者如果您的组织拥有现有证书，则使用现有证书。

有关更多详情，请参阅[亚马逊 Route 53 开发者指南](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/domain-register.html)和[在 API Gateway 中为自定义域选择最低的 TLS 版本](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-custom-domain-tls-version.html)。

## 使用 Amazon Kendra 进行扩展
<a name="scaling-with-amazon-kendra"></a>

该解决方案允许使用 Amazon Kendra 对摄取的文档执行 NLP 支持的智能搜索。对于较大的工作负载，您可以使用以下 CloudFormation 参数增加 Amazon Kendra 的容量：


| 参数 | 默认值 | 说明 | 
| --- | --- | --- | 
|   [Amazon Kendra 的额外查询容量](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kendra-index-capacityunitsconfiguration.html#cfn-kendra-index-capacityunitsconfiguration-querycapacityunits)   |   `0`   |  索引的额外查询容量和[GetQuerySuggestions](https://docs.aws.amazon.com/kendra/latest/dg/API_GetQuerySuggestions.html)容量。索引的额外容量单位每天可提供大约 8,000 个查询。  | 
|   [亚马逊 Kendra 额外存储容量](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kendra-index-capacityunitsconfiguration.html#cfn-kendra-index-capacityunitsconfiguration-storagecapacityunits)   |   `0`   |  索引的额外存储容量。单个容量单位可提供 30 GB 的存储空间或 100,000 个文档，以先到者为准。  | 
|   [亚马逊 Kendra 版](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-kendra-index.html)   |   `Developer`   |  Amazon Kendra 提供开发者版和企业版来创建索引。有关亚马逊 Kendra 版本之间差异的更多信息，请参阅亚马逊 Kend [ra](https://aws.amazon.com/kendra/pricing/) 定价。  | 

要修改这些 CloudFormation 参数的值，请在部署堆栈时选择相应的值。有关查询和存储容量单位的更多信息，请参阅[调整容量](https://docs.aws.amazon.com/kendra/latest/dg/adjusting-capacity.html)。

**注意**  
如果未在启用 RAG 的情况下部署文本用例，则不会使用或创建 Amazon Kendra 索引。

## 使用 Idp 联盟设置 SSO
<a name="setting-up-sso-using-idp-federation"></a>

此解决方案允许与支持基于 SAML 或 OIDC 的身份联合的外部身份提供商集成。部署解决方案时，它会为部署控制面板和个人用例创建 Amazon Cognito 用户池和个人应用程序客户端集成。根据外部 Idp，按照《*Amazon Cognito 开发*者指南》的 “[为您的用户池配置身份提供商](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-identity-provider.html)” 部分中提供的步骤进行操作，然后为部署控制面板或您想要设置 SSO 的用例选择应用程序客户端集成。

要将用户组信息传递到基于 RAG 的架构中的知识库或矢量存储，您需要将用户组从外部 Idp 映射到 Amazon Cognito 用户组。该解决方案提供了一个初始脚手架 [Lambda](https://github.com/aws-solutions/generative-ai-application-builder-on-aws/tree/main/source/lambda/ext-idp-group-mapper) 函数触发器，[该](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-pre-token-generation.html)触发器要与令牌生成前阶段进行映射。Lambda 函数有 [group\$1mapping.json](https://github.com/aws-solutions/generative-ai-application-builder-on-aws/tree/main/source/lambda/ext-idp-group-mapper/config/group_mapping.json) 文件，必须更新该文件才能提供组映射。请参阅[使用 Amazon Cognito 支持的 Lambda 触发器自定义用户池工作流程](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-identity-pools-working-with-aws-lambda-triggers.html)。

## 手动配置用户池
<a name="manual-user-pool-configuration"></a>

如果您选择在部署期间不发送管理员或默认用户电子邮件，则必须在 Amazon Cognito 中手动创建相应的用户组以确保权限正确：

1. 对于部署控制面板，`Admin`在您的 Cognito 用户池中创建一个名为的群组。

1. 对于每个用例，`${UseCaseName}-Users`在您的 Cognito 用户池中创建一个名为的群组，其中`${UseCaseName}`是您部署的用例的名称。

授权机制需要这些组才能正常工作。您要向其授予访问权限的任何用户都必须添加到相应的群组中。

如果通过，`placeholder@example.com`则将创建 Cognito 群组，但您仍必须创建关联用户并将其分配到群组。

## 自定义登录屏幕
<a name="customizing-login-screen"></a>

此解决方案使用 [Amazon Cognito 托管的用户界面](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-app-integration.html)来呈现登录页面。*要自定义内置登录页面，请参阅 Amazon Cognito 开发者指南[中的自定义内置登录和注册网](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-app-ui-customization.html)页。*

## 其它安全注意事项
<a name="additional-security-considerations"></a>

根据您部署解决方案的用例，请查看以下安全建议：
+  **客户托管的 AWS KMS 加密密钥**-该解决方案默认使用 AWS 托管的 AWS KMS 密钥，因为这些密钥无需额外付费即可获得。查看您的使用案例，确定是否应更新解决方案以使用[客户托管的 AWS KMS 密钥](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)。
+  **API Gateway 限制规则**-该解决方案在 API Gateway 上使用默认的限制规则进行部署。根据您的用例和预期的交易量，我们建议您为配置限制。 APIs有关详细信息，请参阅 *Amazon API Gateway 开发者指南中的限制 API* [请求以提高吞吐量](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-request-throttling.html)。
+  **启用 AWS CloudTrail**-作为推荐的安全措施，可以考虑 CloudTrail在部署解决方案[的](https://aws.amazon.com/cloudtrail/) AWS 账户中启用 AWS，以便在 AWS 账户中记录 API 调用。有关详细信息，请参阅 A [WS CloudTrail 用户指南](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)。
+  **漂移检测**-我们建议在 CloudFormation 堆栈上配置偏差检测，以识别已部署的解决方案堆栈的无意或恶意更改，并收到通知。有关详细信息，请参阅[实现警报以自动检测 AWS CloudFormation 堆栈中的偏差](https://aws.amazon.com/blogs/mt/implementing-an-alarm-to-automatically-detect-drift-in-aws-cloudformation-stacks/)。
+  **Cognito JSON Web Tokens (JWTs)**-该解决方案使用亚马逊 Cognito 发行的 REST API 终 JWTs 端节点进行身份验证。我们为解决方案配置了 [ID 令牌和[访问令](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-the-access-token.html)牌](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-the-id-token.html)的有效期为五分钟。当用户注销时，他们生成新令牌的能力将被撤销（[刷新令牌](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-the-refresh-token.html)被撤销）。但是，在当前令牌到期之前，任何向 API 端点发出的请求都将成功通过身份验证，因为它们具有有效的令牌。查看您的用例的安全注意事项并调整令牌有效期。

 **自定义生命周期策略：**

对于生产部署，请根据您的保留要求查看和调整生命周期策略。请参阅[《*Amazon 简单存储服务用户指南》中的设置存储*桶的生命周期配置](https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-set-lifecycle-configuration-intro.html)。

## 多模式文件存储和生命周期
<a name="multimodal-file-storage-and-lifecycle"></a>

如果您为用例启用了多模式输入功能（**MultimodalEnabled**设置为`Yes`），则该解决方案会创建一个 Amazon S3 存储桶来存储上传的文件，并创建一个 DynamoDB 表来跟踪文件元数据。

 **默认生命周期策略：**
+  **S3 文件：**48 小时后自动删除
+  **DynamoDB 元数据**：记录将在 24 小时后过期（对话历史记录 TTL）

 **安全注意事项：**
+ 文件按用例 ID、用户 ID、会话 ID 和消息 ID 进行分区，而文件则以 UUID 名称存储。UUID 到文件名的映射可在 DynamoDB 元数据表中找到
+ 用户只能访问他们在自己的对话中上传的文件
+ 文件类型验证是使用幻数检测进行的
+ 我们建议启用[适用于 S3 的 Amazon GuardDuty 恶意软件防护](https://docs.aws.amazon.com/guardduty/latest/ug/gdu-malware-protection-s3.html)，以扫描上传的文件中是否存在恶意内容