View a markdown version of this page

项目 (OpenAI-compatible) - Amazon Bedrock

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

项目 (OpenAI-compatible)

Amazon Bedrock Projects API 使用 API 为您的生成式 AI 工作负载提供应用程序级隔离。 OpenAI-compatible 项目使您能够通过改进整个组织的访问控制、成本跟踪和可观察性来组织和管理您的 AI 应用程序。

提示

对于新应用程序,我们推荐使用bedrock-runtime终端节点。如果您不需要项目 API,请使用推理配置文件进行隔离、标记和成本跟踪。bedrock-runtime

注意

项目只能与对基岩地壳端点使用 OpenAI-compatible API 的模型一起使用。如果您使用的是基础运行时端点,请使用推理配置文件而不是标记和可观察性。

什么是项目?

项目是一个逻辑边界,用于在 Amazon Bedrock 中隔离应用程序、环境或实验等工作负载。项目提供以下功能:

项目允许您在生产环境中管理多个生成式 AI 工作负载,无需创建单独的 AWS 账户或组织,从而降低运营复杂性,同时保持安全性和监管。

每个 AWS 账户都有一个默认项目,所有推理请求都与该项目相关联。您可以使用项目 API 在您的账户中创建更多项目。

注意

对项目的支持因端点而异。在bedrock-mantle终端节点上,您可以使用项目 API 创建和管理自己的项目。在bedrock-runtime端点上,只有默认项目可用——你还不能在那里创建项目。请求bedrock-runtime解析到您账户的默认项目,其 ARN 为arn:aws:bedrock:region:account-id:project/default。默认项目无法被标记或删除,其数据保留设置始终继承自账户,也永远不是计费锚点:使用量归因bedrock-runtime于推理目标,就像今天一样。有关引用默认项目的权限,请参阅运行模型推理的先决条件

何时使用项目

当你需要时,你应该使用项目 API:

  • 按业务结构组织:根据您的组织分类法(例如业务单位、团队、应用程序或成本中心)管理 Bedrock 使用情况

  • 准确跟踪成本:监控并将 AI 支出分配给特定团队、项目或环境

  • 强制执行访问策略:应用精细的 IAM 权限来控制谁可以访问特定的 AI 工作负载

  • 扩展生产工作负载:在明确的操作边界和监控下运行多个生产应用程序

项目与推理概况

项目 API 和推理配置文件都在 Amazon Bedrock 中提供隔离、标记和访问控制功能,但它们因您使用的终端节点而异。如果你使用带有 b edrock-mantle 端点 OpenAI-compatible 的 API,请使用项目 API。如果你使用的是基准运行时端点(推荐用于新应用程序),请使用推理配置文件。聊天完成 API 在两个端点上都可用;项目 API 仅在上bedrock-mantle可用。

功能 项目 API 推理概况
支持的 API OpenAI-compatible API(响应、聊天完成) 原生 Bedrock API(调用、交谈)、 OpenAI-compatible API(聊天完成)
端点 bedrock-mantle.{region}.api.aws bedrock-runtime.{region}.amazonaws.com
使用场景 使用 OpenAI-compatible 端点的应用程序 使用原生 Bedrock API 的应用程序
访问控制 在 IAM 政策中将项目作为资源 关于推理配置文件 ARN 的 IAM 政策
成本跟踪 AWS 项目上的标签 AWS 推理配置文件上的标签

项目 vs. AWS accounts

AWS 账户AWS 组织代表基础设施层面的账单和所有权边界。项目代表单个账户中的工作负载和应用程序边界。

使用项目代替单独的 AWS 账户可以:

  • 更快的设置:通过 API 调用在几秒钟内创建项目。

  • 降低复杂性:无需账户蔓延即可管理多个工作负载

  • 简化操作:在单个账户内进行集中管理

  • 降低开销:无需跨账户 IAM 角色或资源共享

项目入门

此页面引导您创建第一个项目、将其与推理请求关联以及管理项目资源。

先决条件

开始之前,请确保您已具备以下条件:

  • 拥有亚马逊 Bedrock 访问权限的 AWS 账户

  • 创建和管理 Bedrock 项目的 IAM 权限

  • 已安装 Python 3.7 或更新版本

  • 安装了 OpenAI Python SDK:pip install openai boto3

  • 亚马逊 Bedrock 身份验证的 API 密钥

第 1 步:设置您的环境

使用您的亚马逊 Bedrock 凭证配置您的环境变量:

export OPENAI_API_KEY="<your-bedrock-key>" export OPENAI_BASE_URL="https://bedrock-mantle.<your-region>.api.aws/v1"

<your-region>替换为您的 AWS 区域(例如,us-east-1、us-west-2)。

注意

亚马逊 Bedrock 提供两种类型的密钥:短期和长期。虽然您可以使用长期 API 密钥来探索 Amazon Bedrock,但我们建议对安全要求更高的应用程序使用短期密钥。如果您在项目中使用长期密钥,请注意,附加到长期密钥的默认策略仅允许您获取和列出项目,而不允许您 create/update /存档项目。如果您希望使用长期密钥来管理项目,则必须为密钥分配额外的 IAM 策略以启用这些操作。

第 2 步:发现可用模型

使用 list() API 检索与项目 API 兼容的模型列表:

curl -X GET $OPENAI_BASE_URL/models \ -H "Authorization: Bearer $OPENAI_API_KEY"

第 3 步:创建你的第一个项目

使用带有用于成本监控和可观察性的标签的创建项目 API。请注意,目前 SDK 仅支持 cURL。

curl -X POST $OPENAI_BASE_URL/organization/projects \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "Project ABC", "tags": { "Project": "CustomerChatbot", "Environment": "Production", "Owner": "TeamAlpha", "CostCenter": "21524" } }' -v

响应:

{ "arn": "arn:aws:bedrock-mantle:ap-northeast-1:673693429514:project/proj_5d5ykleja6cwpirysbb7", "created_at": 1772135628, "id": "proj_5d5ykleja6cwpirysbb7", "name": "Project ABC", "object": "organization.project", "status": "active", "tags": { "Owner": "TeamAlpha", "Project": "CustomerChatbot", "Environment": "Production", "CostCenter": "21524" } }

重要注意事项:

  • 亚马逊 Bedrock 忽略了 OpenAI API 规范中的地理参数。

  • 该区域由您的终端节点配置决定。

  • arn 字段专用于亚马逊 Bedrock,为 IAM 政策附件提供 ARN。

  • 标签可以在项目创建期间指定,并在所有项目响应中返回。

第 4 步:将推理请求与您的项目关联起来

要将您的项目关联到推理请求,请在创建客户端时提供项目 ID:

cURL
curl -X POST $OPENAI_BASE_URL/responses \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -H "Content-Type: application/json" \ -H "OpenAI-Project: proj_5d5ykleja6cwpirysbb7" \ -d '{ "model": "openai.gpt-oss-120b", "input": "Explain the benefits of using projects in Amazon Bedrock" }'
Python
from openai import OpenAI client = OpenAI(project="proj_5d5ykleja6cwpirysbb7")

使用该客户端提出的所有推理请求都将与指定的项目相关联,从而确保适当的隔离、成本跟踪和访问控制。

第 5 步:验证您的项目设置

列出所有项目以验证您的项目是否已成功创建:

curl -X GET $OPENAI_BASE_URL/organization/projects \ -H "Authorization: Bearer $OPENAI_API_KEY"

响应:

{ "data": [ { "arn": "arn:aws:bedrock-mantle:ap-northeast-1:673693429514:project/default", "created_at": 1764460800, "id": "default", "name": "default", "object": "organization.project", "status": "active", "tags": {} }, { "arn": "arn:aws:bedrock-mantle:ap-northeast-1:673693429514:project/proj_2z766pfxmkij5vwubv75", "created_at": 1771823259, "id": "proj_2z766pfxmkij5vwubv75", "name": "Project ABC", "object": "organization.project", "status": "active", "tags": {} } ], "first_id": "default", "has_more": false, "last_id": "proj_znaruqn723npmjqnxqfd", "object": "list" }

后续步骤

现在你已经创建了你的第一个项目,你可以:

  • 配置访问控制:附加 IAM 策略以限制项目访问权限

  • 设置成本跟踪:为成本分配添加 AWS 标签

  • 启用监控:配置 CloudWatch 指标和警报

  • 创建其他项目:按团队、环境或应用程序组织工作负载

处理 项目

此页面提供有关在项目的整个生命周期中管理项目的详细信息。

创建项目

基础项目创建

使用名称、描述和标签创建项目:

curl -X POST $OPENAI_BASE_URL/organization/projects \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "Development Environment", "tags": { "Project": "InternalTools", "Environment": "Development", "Owner": "TeamAlpha", "CostCenter": "30156" } }'

每个账户最多可以有 1000 个项目。

推荐的命名规范

使用清晰的描述性名称来反映您的组织结构:

  • 按应用程序: CustomerChatbot-Prod, InternalSearch-Dev

  • 按团队划分: TeamAlpha-Production, DataScience-Experiments

  • 按环境划分: Production-WebApp, Staging-MobileApp

  • 按成本中心划分: CostCenter-2152-Production

列出项目

列出所有项目

检索您账户中的所有项目:

curl -X GET $OPENAI_BASE_URL/organization/projects \ -H "Authorization: Bearer $OPENAI_API_KEY"

检索项目详情

获取有关特定项目的详细信息:

curl -X GET $OPENAI_BASE_URL/organization/projects/proj_5d5ykleja6cwpirysbb7 \ -H "Authorization: Bearer $OPENAI_API_KEY"

更新项目

修改项目属性,例如名称:

curl -X POST $OPENAI_BASE_URL/organization/projects/proj_5d5ykleja6cwpirysbb7 \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "Production Chatbot v2" }'

管理项目标签

添加新标签或更新现有标签值:

curl -X POST $OPENAI_BASE_URL/organization/projects/proj_5d5ykleja6cwpirysbb7 \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "add_tags": { "Application": "WebApp", "Version": "2.0", "Team": "Engineering" } }'

通过其密钥删除特定标签:

curl -X POST $OPENAI_BASE_URL/organization/projects/proj_5d5ykleja6cwpirysbb7 \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "remove_tag_keys": ["Version", "OldTagKey"] }'
重要提示
  • 无法完全替换:没有一次替换整个标签集的操作。必须明确指定要添加和移除哪些标签。

  • 错误处理:实施正确的错误处理和验证

存档项目

存档不再使用的项目:

curl -X POST $OPENAI_BASE_URL/organization/projects/proj_abc123/archive \ -H "Authorization: Bearer $OPENAI_API_KEY" \ -H "Content-Type: application/json"
重要

存档项目不能用于新的推理请求,但历史数据和指标最多可访问 30 天。

使用具有不同 API 的项目

Responses API
from openai import OpenAI client = OpenAI(project="proj_abc123") response = client.responses.create( model="openai.gpt-oss-120b", input="What are the key features of Amazon Bedrock?" ) print(response)
Chat Completions API
from openai import OpenAI client = OpenAI(project="proj_abc123") response = client.chat.completions.create( model="openai.gpt-oss-120b", messages=[ {"role": "user", "content": "Explain how projects improve security"} ] ) print(response.choices[0].message.content)

最佳实践

每个应用程序一个项目:为每个不同的应用程序或服务创建单独的项目。

├── CustomerChatbot-Production ├── CustomerChatbot-Staging ├── CustomerChatbot-Development ├── InternalSearch-Production └── InternalSearch-Development
  • 单独的环境:将不同的项目用于开发、暂存和生产环境。

  • 实验隔离:为实验和概念验证创建专门的项目。

项目生命周期管理

  • 尽早创建项目:在部署应用程序之前设置项目

  • 使用一致的命名:遵循组织命名规范

  • 记录项目目的:包括清晰的描述

  • 定期审计:定期审查和存档未使用的项目

  • 监控使用情况:跟踪项目指标以确定优化机会