加载中

在 Amazon Bedrock 中设置 Claude

在您自己的 AWS 账户中获得 Claude 的首次回复。在终端中以被允许调用 Claude 的角色登录,然后使用 Anthropic 的 Python SDK 运行一个简短的 Python 文件。

25 分钟Claude Platform

使用 Claude in Amazon Bedrock,您可以从自己的 AWS 账户调用 Claude。 您使用自己的 AWS 登录凭证,用量会计入您的 AWS 账单。一个简短的 Python 文件就能让您获得 Claude 的首次回复。您不需要 Anthropic API 密钥。

在开始之前,您需要一个 AWS 账户、Python 3.10 或更高版本,以及 AWS CLI。AWS CLI 是从终端使用 AWS 的工具。

获取调用 Claude 的权限

在本页中,您将以某个角色的身份登录以调用 Claude。角色是 AWS 账户中的一组权限。该角色是在 IAM Identity Center 中创建的,IAM Identity Center 是 AWS 用于登录的服务。IAM Identity Center 也是您以该角色登录的地方。

以下步骤适用于管理您 AWS 账户的人员,如果那不是您本人,请将这些步骤发送给您的管理员。 如果您从未设置过 IAM Identity Center,请先参阅 AWS 的IAM Identity Center 入门指南。

  1. 创建一个权限集。 权限集包含列出角色可以执行哪些操作的策略。请按照 AWS 的步骤创建权限集。向其中添加 AWS 托管策略 AmazonBedrockMantleInferenceAccess,这是 AWS 提供的用于允许调用 Amazon Bedrock 中 Claude 的策略。

  2. 将以下针对 AWS Marketplace(AWS 的商店)的权限添加到同一权限集中。

    • aws-marketplace:Subscribe
    • aws-marketplace:Unsubscribe
    • aws-marketplace:ViewSubscriptions

    在某个账户中首次调用每个 Claude 模型时,可能会通过 AWS Marketplace 启动对该模型的订阅,而该调用需要这些权限。该账户还需要为 AWS Marketplace 购买设置好付款方式。这些权限仅在模型在某账户中首次使用时需要,因此一旦该账户将使用的每个模型的订阅完成,您就可以从权限集中移除它们。

  3. 将权限集分配给将要调用 Claude 的人员。 请在他们将从中调用 Claude 的 AWS 账户中执行此操作,按照 AWS 的步骤将访问权限分配给 AWS 账户。分配权限集会在该账户中创建一个以该权限集命名的角色。

从终端登录

向您的管理员询问登录所需的信息:

  • 要使用的 AWS 账户。
  • 角色的名称。
  • IAM Identity Center 的起始 URL,即您登录时使用的网址。
  • 托管 IAM Identity Center 的 AWS 区域。区域是 AWS 运行其服务的地点之一。

您将使用 AWS CLI 以该角色登录。如果您还没有安装它,请先安装 AWS CLI。然后按顺序完成以下步骤。

  1. 设置登录配置文件。 配置文件是 CLI 保存的一组有名称的登录设置。运行以下命令:

    bash
    aws configure sso

    它会逐个提出问题。按以下方式回答前几个问题:

    1. 对于会话名称,输入任意简短的名称,例如 my-sso。
    2. 对于起始 URL,输入您的管理员提供的那个。
    3. 对于托管 IAM Identity Center 的区域,输入您的管理员提供的那个。
    4. 对于注册范围,输入 sso:account:access。

    接下来该命令会打开您的浏览器,您需要在那里登录。如果浏览器没有打开,请按照该命令打印的说明操作。当该命令列出 AWS 账户,然后列出角色时,选择您管理员指定的账户和角色。

    最后它会询问以下设置:

    1. 对于配置文件的区域,输入 us-east-1,即美国东部(弗吉尼亚北部)。
    2. 对于输出格式,输入 json。
    3. 对于配置文件名称,输入 default。当命令未指定配置文件名称时,CLI 会使用 default 配置文件,因此下面的命令可以按原样运行。
  2. 登录。

    bash
    aws sso login

    您的浏览器会打开。在那里完成登录,终端会打印出以“Successfully logged into Start URL”开头的一行文字。此时 CLI 已持有您的凭证。凭证是向 AWS 证明您身份的短期有效密钥。当凭证过期时,请再次运行此命令。

  3. 检查您当前登录使用的账户和角色。

    bash
    aws sts get-caller-identity

    在输出中,Account 应该是您 AWS 账户的 ID。Arn 是 AWS 为您当前登录所用角色赋予的完整名称,其中应包含您所选角色的名称。如果两者有一个不对,请再次运行 aws configure sso 并选择正确的账户和角色。

获取首次回复

现在从 Python 向 Claude 发送一个请求。

  1. 安装 Anthropic 的 Python SDK,并包含其 Amazon Bedrock 支持。 该 SDK 是 Anthropic 用于从代码中调用 Claude 的库。

    bash
    pip install -U "anthropic[bedrock]"
  2. 将此文件保存为 first_reply.py。

    python
    from anthropic import (
        AnthropicBedrockMantle,
    )
    
    client = AnthropicBedrockMantle(
        aws_region="us-east-1",
    )
    
    message = client.messages.create(
        model="anthropic.claude-sonnet-5",
        max_tokens=1024,
        messages=[{
            "role": "user",
            "content": "Hello, Claude",
        }],
    )
    
    for block in message.content:
        if block.type == "text":
            print(block.text)

    该文件创建了一个客户端,即您的代码用来发送请求的对象。此客户端面向 us-east-1 区域(即您在配置文件中指定的区域)中 Amazon Bedrock 里的 Claude。

    该客户端会自行查找您的 AWS 凭证,包括来自您 IAM Identity Center 登录的凭证,因此文件中不需要填入密钥。

    然后该文件向 Claude Sonnet 5 发送一条消息,“Hello, Claude”。model 这一行通过模型 ID 指定该模型。最后,该文件打印出 Claude 回复的文本。

  3. 运行该文件。

    bash
    python first_reply.py

    Claude 的回复会打印在您的终端中。如果 Python 反而因错误而停止,请转到下方的“如果请求失败”部分。

  4. 再次检查账户。 在同一终端中运行 aws sts get-caller-identity。它会显示您当前登录所使用的账户和角色。由于用量会计入您的 AWS 账单,请确保该账户是您管理员所指定的账户。

如果请求失败

当请求失败时,SDK 会抛出一个错误,Python 会将其打印在终端中。在该输出中查找 PermissionDeniedError 或 NotFoundError。

权限错误

PermissionDeniedError 表示 AWS 以状态码 403 拒绝了该请求。状态码是服务器发回的数字,用于说明请求的处理情况。您发送的凭证不允许发起此请求。请按以下顺序尝试修复:

  1. 重新登录,因为您的登录可能已过期。运行 aws sso login,然后再次运行 first_reply.py。
  2. 请您的管理员检查该角色和账户是否具备“获取调用 Claude 的权限”部分中列出的所有内容。
  3. 如果这是您账户中首次调用 Claude Sonnet 5,请在权限设置到位后等待 2 分钟,然后再次运行 first_reply.py。对该模型的订阅最多可能需要 2 分钟才能完成,在此之前调用可能会被拒绝。

未找到错误

NotFoundError 表示 AWS 以状态码 404 响应,并且未能找到请求中指定的某个对象。请检查 first_reply.py 中的模型 ID。Claude in Amazon Bedrock 中的模型 ID 以 anthropic. 开头,因此它必须准确地写为 anthropic.claude-sonnet-5。

其他任何错误

请在 AWS 的Amazon Bedrock 错误代码页面上查找其他任何错误。

接下来该做什么

接下来,可以学习Claude Platform 101课程,该课程讲授如何在 Claude Platform 上进行构建。该课程的多个课时都有使用 anthropic.Anthropic() 创建客户端的 Python 示例。

在那些示例中,请改用 first_reply.py 中的导入方式、客户端代码行以及模型 ID。 该课程的一些示例使用了 Claude in Amazon Bedrock 不支持的功能,Claude in Amazon Bedrock 文档页面列出了这些功能。