☁️ AWS 部署

简单的 AWS 部署#

您可以在长时间运行的服务器上部署 Chroma,并远程连接到它。

有许多可能的配置,但为了方便起见,我们提供了一个非常简单的 AWS CloudFormation 模板,用于在 AWS 上的 EC2 上实验部署 Chroma。

第 1 步:获取 AWS 账户#

您需要一个 AWS 账户。您可以使用已有的账户,或创建一个新账户

第 2 步:获取凭证#

在此示例中,我们将使用 AWS 命令行接口。有几种方法来配置 AWS CLI,但为了这些示例的目的,我们假设您已获取 AWS 访问密钥,并将使用环境变量来配置 AWS。

在您的 shell 中导出 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY 环境变量:

shell

您还可以使用 AWS_REGION 环境变量配置 AWS 使用您选择的区域:

shell

第 3 步:运行 CloudFormation#

Chroma 为每个版本发布了一个 CloudFormation 模板 到 S3。

要使用 AWS CloudFormation 启动模板,请运行以下命令行调用。

如果需要,请将 --stack-name my-chroma-stack 替换为不同的堆栈名称。

Command Line

等待几分钟让服务器启动,Chroma 将可用!您可以使用 AWS 控制台或使用以下命令获取新 Chroma 服务器的公共 IP 地址:

Command Line

请注意,即使实例的 IP 地址可用,Chroma 可能仍需要几分钟才能完全运行。

自定义堆栈(可选)#

CloudFormation 模板允许您传递特定的键/值对来覆盖堆栈的某些方面。可用的键包括:

  • InstanceType - 要运行的 AWS 实例类型(默认:t3.small
  • KeyName - 要使用的 AWS EC2 KeyPair,允许通过 SSH 访问实例(默认:无)

要使用 AWS CLI 设置 CloudFormation 堆栈的参数,请使用以下命令: --parameters 命令行选项。参数必须使用格式 ParameterName={parameter},ParameterValue={value} 指定。

例如,以下命令启动一个与上述类似的新堆栈,但在 m5.4xlarge EC2 实例上,并添加一个名为 mykey 的 KeyPair,以便任何拥有关联私钥的人都可以通过 SSH 进入机器:

shell

步骤 4:Chroma 客户端设置#

一旦您的 EC2 实例启动并运行 Chroma,您需要做的就是配置您的 HttpClient 以使用服务器的 IP 地址和端口 8000。由于您在 AWS 上运行 Chroma 服务器,我们的 thin-client 包 可能足以满足您的应用程序需求。

python

步骤 5:清理(可选)#

要销毁堆栈并删除所有 AWS 资源,请使用 AWS CLI 的 delete-stack 命令。

shell

使用 AWS 进行身份验证#

默认情况下,我们的 CloudFormation 模板创建的 EC2 实例将不带身份验证运行。有许多方法可以在 AWS 上保护您的 Chroma 实例。在本指南中,我们将使用 Chroma 的本地身份验证支持进行简单的设置。

您可以在 身份验证指南 中了解更多关于 Chroma 身份验证的信息。

静态 API 令牌身份验证#

自定义 Chroma 的 CloudFormation 堆栈#

例如,如果您希望静态 API 令牌为 "test-token",请在创建 Chroma 堆栈时传递以下参数。这将设置 Authorization: Bearer test-token 作为您的身份验证头。

shell

要使用 X-Chroma-Token: test-token 类型的身份验证头,您可以设置 ChromaAuthTokenTransportHeader 参数:

shell

客户端设置#

CHROMA_CLIENT_AUTH_CREDENTIALS 环境变量添加到您的本地环境中,并将其设置为您提供给服务器的令牌(在本例中为 test-token):

shell

我们将使用 Chroma 的 Settings 对象在客户端上定义身份验证方法。

python

如果您使用自定义的 CHROMA_AUTH_TOKEN_TRANSPORT_HEADER(如 X-Chroma-Token),请将其添加到您的 Settings 中:

python

故障排除#

错误:该用户没有默认的VPC#

如果在创建 ChromaInstanceSecurityGroup 时遇到 No default VPC for this user 的错误,请前往 AWS VPC 部分 为您的用户创建一个默认的VPC。