快速部署¶
使用 CloudFormation 进行快速部署。
支持的区域¶
CloudFormation 模板已在以下区域进行验证:
- us-east-1
- us-west-2
前提条件¶
在您的区域中启用 Claude 3 Sonnet 或 Haiku - 如果您是首次使用 Anthropic 模型,请访问 Amazon Bedrock 控制台,在左侧窗格底部选择 Model access。分别为 Claude 3 Sonnet 或 Haiku 请求访问权限。
组件¶
此 CloudFormation 模板将包含以下关键组件:
- Cloudfront
- 在 Lambda 或 EC2 上运行的 BRConnector
- RDS PostgreSQL、EC2 上的 PostgreSQL 容器或无数据库
- 启用了 pull through 缓存的 ECR
部署模式¶
以下是一些推荐的部署模式:
- 在 EC2 上部署带有集成数据库(或独立数据库)的 BRConnector,在 EC2 前面配置 Cloudfront
- 在 Lambda 上部署带有独立数据库(或无数据库)的 BRConnector,在公共 Lambda 函数 URL 前面配置 Cloudfront
- 在 Lambda 上部署带有独立数据库(或无数据库)的 BRConnector,在具有 AWS_IAM 授权类型的 Lambda 函数 URL 前面配置 Cloudfront
- 在 ECS 集群上部署带有独立数据库(或无数据库)的 BRConnector,在暴露 ECS 服务的 ALB 前面配置 Cloudfront
部署指南¶
- (如果需要带有 AWS_IAM 认证类型的 lambda 函数 URL,则必须执行此步骤)在 us-east-1 区域部署 lambda@edge 用于 Cloudfront Origin Request。部署成功后,从输出页面获取 lambda 版本 ARN。如果跳过此步骤,lambda 函数 URL 将是公开的。
-
在任何支持的区域中,为 BRConnector 部署 VPC 堆栈,如果您已经有 BRConnector 的 VPC,可以跳过此步骤
-
部署 BRConnector。下载 quick-build-brconnector.yaml 并上传到 Cloudformation 控制台,或点击此按钮直接启动。
- VPC 参数
- 首先部署 VPC 堆栈,并在此处填写堆栈名称。
- 为 EC2/ECS 选择 2 个公有子网,为 Lambda 和 RDS 选择 2 个私有子网(子网组至少需要 2 个可用区)
- 计算参数
- 为 BRConnector 选择计算类型,Lambda 或 EC2
- EC2 设置
- 目前仅支持 Amazon Linux 2023
- 您可以选择在同一 EC2 上创建 PostgreSQL 容器(DatabaseMode 设为
EC2Integrated
),或创建独立的 RDS PostgreSQL 作为后端(DatabaseMode 设为Standalone
)
- Lambda 设置
EcrRepo
定义您的私有仓库名称前缀字符串LambdaArch
定义您的 lambda 架构使用 arm64 或 amd64- 如果
LambdaEdgeVersionArn
为空,将使用公共函数 URL。请确保此安全设置可接受 - 您可以选择创建 RDS PostgreSQL(DatabaseMode 设为
Standalone
)或不使用数据库(DatabaseMode 设为NoDB
)
- ECS 设置
- 默认 ECS 任务 CPU 为 1024
- 默认 ECS 任务内存为 2GB
- ECS 服务中的默认任务数量为 2
- PostgreSQL 参数
- DatabaseMode 选择:
EC2Integrated
– 在 EC2 中部署 PostgreSQL 容器Standalone
– 部署 RDS PostgreSQLNoDB
– 不部署任何后端数据库,在此模式下只有 ADMIN KEY 可以访问默认模型
- 将 PerformanceMode 设置为
true
,聊天历史将不会保存。 - 默认 PostgreSQL 密码为
mysecretpassword
- 调试参数
- 如果您选择 Lambda 作为计算类型,可以选择在所有资源部署成功后删除 EC2。此 EC2 用于临时编译和构建 BRConnector 容器。
- 如果您选择 EC2 作为计算类型,请不要删除 EC2
- 如果您将 AutoUpdateBRConnector 设置为
true
,将在 ec2 crontab 中添加一个脚本
- 部署成功后,转到输出页面并复制 Cloudfront URL 和第一个用户密钥到您的 bedrock 客户端设置页面。
- 您还可以使用 SSM 会话管理器连接到
BRConnector
EC2 实例 (docs)
更新 BRConnector¶
AutoUpdate 为 true¶
- 检查您的 ECR 设置,如果在拉取缓存页面中有规则,则您已启用此功能以使用上游存储库自动更新 ECR 映像。
- 转到 codebuild 页面,将触发一个项目定期构建以自动更新您的 lambda 映像
- EC2 中的映像将使用 SSM 中的状态管理器自动更新。
AutoUpdate 为 false¶
- 检查您的 ECR 设置,如果在拉取缓存页面中有规则,则您已启用此功能以使用上游存储库自动更新 ECR 映像。
- 转到 codebuild 页面,可以触发一个项目来手动更新您的 lambda 映像。单击“开始构建”以更新 lambda 映像。
- 由于未创建关联,EC2 中的映像将不会使用 SSM 中的状态管理器自动更新。参考 SSM 中的文档以手动在 EC2 中执行命令。
未启用拉取缓存的 ECR(仅适用于以前的 cfn 版本)¶
- 如果您未启用 ECR 拉取缓存,请按照此脚本手动更新映像
export AWS_DEFAULT_REGION=us-west-2
export ACCOUNT_ID=00000000000000
export PrivateECRRepository=your_private_repo_name
aws ecr get-login-password --region ${AWS_DEFAULT_REGION} | docker login --username AWS --password-stdin ${ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com
# pull/tag/push arm64 image for lambda
docker pull --platform=linux/arm64 public.ecr.aws/x6u9o2u4/sample-connector-for-bedrock-lambda
docker tag public.ecr.aws/x6u9o2u4/sample-connector-for-bedrock-lambda ${ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com/${PrivateECRRepository}:arm64
docker push ${ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com/${PrivateECRRepository}:arm64
# pull/tag/push amd64 image for lambda
docker pull --platform=linux/amd64 public.ecr.aws/x6u9o2u4/sample-connector-for-bedrock-lambda
docker tag public.ecr.aws/x6u9o2u4/sample-connector-for-bedrock-lambda ${ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com/${PrivateECRRepository}:amd64
docker push ${ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com/${PrivateECRRepository}:amd64
# create/push manifest file
docker manifest create ${ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com/${PrivateECRRepository}:latest --amend ${ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com/${PrivateECRRepository}:arm64 --amend ${ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com/${PrivateECRRepository}:amd64
docker manifest annotate ${ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com/${PrivateECRRepository}:latest ${ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com/${PrivateECRRepository}:arm64 --os linux --arch arm64
docker manifest annotate ${ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com/${PrivateECRRepository}:latest ${ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com/${PrivateECRRepository}:amd64 --os linux --arch amd64
docker manifest push ${ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com/${PrivateECRRepository}:latest
- 使用正确的架构更新 lambda 映像
运行在 EC2 上的 BRConnector¶
- 登录到 ec2 以更新本地映像并重新启动 brconnector 容器
aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws
docker pull public.ecr.aws/x6u9o2u4/sample-connector-for-bedrock
docker restart brconnector
迁移到新的 PostgreSQL 数据库¶
您可以选择在 ECR 或 RDS 上的容器中直接部署 PostgreSQL,这里列出了一些命令供您在 PG 中迁移数据的参考。
将 BRConnector 数据从 EC2 上的 PG 容器迁移到 RDS¶
-
列出您的数据库名称
-
dump 整库
-
在 RDS 中找到您的 PG 端点 (Endpoint)
-
我们将在您的本地临时运行一个 docker 作为 postgres 客户端,而不是安装 postgresql
-
复制整库导出的文件到新的容器中
-
创建目标数据库,然后导入数据
docker exec -it postgres-client sh # # psql -U postgres -h pg-endpoint.xxx.us-west-2.rds.amazonaws.com Password for user postgres: postgres=> CREATE DATABASE brconnector_db; postgres=> ^D # psql -U postgres -h pg-endpoint.xxx.us-west-2.rds.amazonaws.com -d brconnector_db </tmp/db.sql Password for user postgres: #
- 清理临时 docker on local
不支持的区域¶
中国区域暂时不支持部署,由于:
- Lambda URL 在中国区域不支持
- Cloudfront 在中国区域需要使用已备案的自有域名
- ALB 暴露 443 端口需要使用已备案的自有域名