プロジェクト API - Amazon Bedrock

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

プロジェクト API

Amazon Bedrock Projects API は、OpenAI 互換 APIs を使用して生成 AI ワークロードをアプリケーションレベルで分離します。プロジェクトを使用すると、組織全体のアクセスコントロール、コスト追跡、オブザーバビリティが改善され、AI アプリケーションを整理および管理できます。

注記

プロジェクトは、bedrock-mantle エンドポイントに対して OpenAI 互換 APIs を使用するモデルでのみ使用できます。bedrock-runtime エンドポイントを使用している場合は、タグ付けとオブザーバビリティの代わりに推論プロファイルを使用してください。

プロジェクトとは

プロジェクトは、Amazon Bedrock 内のアプリケーション、環境、実験などのワークロードを分離するために使用される論理的な境界です。Project でできることは以下のとおりです。

プロジェクトを使用すると、個別の AWS アカウントや組織を作成することなく、本番環境で複数の生成 AI ワークロードを管理できるため、セキュリティとガバナンスを維持しながら運用の複雑さを軽減できます。

各 AWS アカウントには、すべての推論リクエストが関連付けられているデフォルトのプロジェクトがあります。Projects API を使用して、アカウントでさらにプロジェクトを作成できます。

プロジェクトを使用するタイミング

次の必要がある場合は、Projects API を使用する必要があります。

  • ビジネス構造別に整理する: ビジネスユニット、チーム、アプリケーション、コストセンターなどの組織の分類に基づいて Bedrock の使用を管理します。

  • 機密データを分離する: あるアプリケーションからのプロンプト、レスポンス、コンテキストデータが他のアプリケーションにアクセスできないようにする

  • コストを正確に追跡する: 特定のチーム、プロジェクト、または環境に AI 支出をモニタリングして割り当てる

  • アクセスポリシーを適用する: 詳細な IAM アクセス許可を適用して、特定の AI ワークロードにアクセスできるユーザーを制御する

  • 本番ワークロードのスケーリング: 運用上の境界とモニタリングを明確にして複数の本番アプリケーションを実行する

プロジェクトと推論プロファイル

プロジェクト API と推論プロファイルはどちらも Amazon Bedrock で分離、タグ付け、アクセスコントロール機能を提供しますが、使用する API によって異なります。Mantle 推論エンジンを使用する bedrock-mantle エンドポイントで OpenAI 互換 APIs を使用している場合は、Projects API を使用します。bedrock-runtime エンドポイントで Invoke API または Converse APIs を使用している場合は、推論プロファイルを使用します。チャット完了 API は bedrock-mantle エンドポイントまたは bedrock-runtime エンドポイントで使用できますが、Mantle エンドポイントを使用することをお勧めします。

機能 プロジェクト API 推論プロファイル
サポートされている API OpenAI 互換 APIs (応答、チャット完了) ネイティブ Bedrock APIs (Invoke、Converse)、OpenAI 互換 API (Chat Completions)
Endpoint bedrock-mantle.{region}.api.aws bedrock-runtime.{region}.amazonaws.com
ユースケース OpenAI 互換エンドポイントを使用するアプリケーション ネイティブ Bedrock APIsを使用するアプリケーション
アクセスコントロール IAM ポリシーのリソースとしてのプロジェクト 推論プロファイル ARN の IAM ポリシー
コスト追跡 プロジェクトの AWS タグ 推論プロファイルの AWS タグ

プロジェクトと AWS アカウント

AWS アカウントAWS Organizations は、インフラストラクチャレベルでの請求と所有権の境界を表します。プロジェクトは、1 つのアカウント内のワークロードとアプリケーションの境界を表します。

個別の AWS アカウントの代わりにプロジェクトを使用すると、次のことが可能になります。

  • セットアップの高速化: API コールを使用して数秒でプロジェクトを作成する

  • 複雑さの軽減: アカウントスプロールなしで複数のワークロードを管理する

  • オペレーションの簡素化: 1 つのアカウント内の一元管理

  • オーバーヘッドの削減: クロスアカウント IAM ロールやリソース共有が不要

プロジェクトの開始方法

このページでは、最初のプロジェクトの作成、推論リクエストとの関連付け、プロジェクトリソースの管理について説明します。

前提条件

開始する前に、以下を確認してください。

  • Amazon 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"

を AWS リージョン (us-east-1、us-west-2 など) <your-region>に置き換えます。

注記

Amazon Bedrock には、短期と長期の 2 種類のキーがあります。Amazon Bedrock の探索には長期 API キーを使用できますが、セキュリティ要件の厳しいアプリケーションには短期キーをお勧めします。プロジェクトで長期キーを使用する場合、長期キーにアタッチされたデフォルトのポリシーでは、プロジェクトの取得と一覧表示のみが許可されますが、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 とタグを使用してプロジェクトを作成します。現時点では、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" } }

重要な注意事項:

  • OpenAI API 仕様のジオグラフィパラメータは、Amazon Bedrock によって無視されます。

  • リージョンはエンドポイント設定によって決まります。

  • 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、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 日間アクセスできます。

異なる 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)

ベストプラクティス

アプリケーションごとに 1 つのプロジェクト: 個別のアプリケーションまたはサービスごとに個別のプロジェクトを作成します。

├── CustomerChatbot-Production ├── CustomerChatbot-Staging ├── CustomerChatbot-Development ├── InternalSearch-Production └── InternalSearch-Development
  • 個別の環境: 開発、ステージング、本番環境には異なるプロジェクトを使用します。

  • 実験分離: 実験とproof-of-concepts。

プロジェクトのライフサイクル管理

  • プロジェクトを早期に作成する: アプリケーションをデプロイする前にプロジェクトをセットアップする

  • 一貫した命名を使用する: 組織の命名規則に従う

  • ドキュメントプロジェクトの目的: 明確な説明を含める

  • 定期的な監査: 未使用のプロジェクトを定期的にレビューしてアーカイブする

  • 使用状況のモニタリング: プロジェクトメトリクスを追跡して最適化の機会を特定する