项目 API - Amazon Bedrock

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

项目 API

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

注意

项目只能与使用兼容 OpenAI APIs 的模型与基岩地幔端点搭配使用。如果您使用的是 bedrock-runtime 端点,请使用推理配置文件代替标记和可观察性。

什么是项目?

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

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

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

何时使用项目

当你需要执行以下操作时,你应该使用项目 API:

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

  • 隔离敏感数据:确保其他应用程序无法访问来自一个应用程序的提示、响应和上下文数据

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

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

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

项目与推理配置文件

Projects API 和推理配置文件都在 Amazon Bedrock 中提供隔离、标记和访问控制功能,但它们因您使用的 API 而异。如果你使用与 OpenAI 兼容的 b edrock- APIs mantle 端点(使用 Mantle 推理引擎),请使用 Projects API。如果您将 Invo ke 或 Converse APIs 与基底运行时端点一起使用,请使用推理配置文件。虽然你可以将 Chat Completions API 与 bedrock-mantle 或基岩运行时端点一起使用,但我们建议你使用 Mantle 端点。

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

项目与 AWS 账户

AWS 账户AWS Org anizations 代表基础设施级别的账单和所有权界限。项目代表单个账户内的工作负载和应用程序边界。

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

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

  • 降低复杂性:管理多个工作负载,避免账户扩张

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

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

项目入门

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

先决条件

在开始之前,请确保您满足以下条件:

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

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

  • 已安装 Python 3.7 或更高版本

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

  • 用于 Amazon Bedrock 身份验证的 API 密钥

步骤 1:设置您的环境

使用您的 Amazon 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)。

注意

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

第 2 步:发现可用型号

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

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

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

使用带有成本监控和可观察性标签的 Create Project API 创建项目。请注意,目前软件开发工具包中仅支持 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" } }

重要注意事项:

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

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

  • arn 字段特定于 Amazon 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/v1/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、-Dev InternalSearch

  • 按团队划分: TeamAlpha-制作, DataScience-实验

  • 按环境划分:生产-WebApp、暂存-MobileApp

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

列出项目

列出所有项目

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

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 天。

使用具有不同内容的项目 APIs

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
  • 单独的环境:为开发、暂存和生产环境使用不同的项目。

  • 实验隔离:为实验创建专门的项目,然后 proof-of-concepts.

项目生命周期管理

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

  • 使用一致的命名:遵循组织命名惯例

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

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

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