

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

# プロジェクト API
<a name="projects"></a>

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

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

## プロジェクトとは
<a name="projects-what-is"></a>

プロジェクトは、Amazon Bedrock 内のアプリケーション、環境、実験などのワークロードを分離するために使用される論理的な境界です。Project でできることは以下のとおりです。
+ **アクセス分離**: [AWS Identity and Access Management (IAM) ポリシー](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)を使用して特定のプロジェクトリソースにアクセスできるユーザーを制御する
+ **コストモニタリング**: [AWS タグ](https://docs.aws.amazon.com/whitepapers/latest/tagging-best-practices/what-are-tags.html)と [AWS Cost Explorer](https://docs.aws.amazon.com/cost-management/latest/userguide/ce-what-is.html) を使用してプロジェクトレベルで支出を追跡する

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

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

## プロジェクトを使用するタイミング
<a name="projects-when-to-use"></a>

次の必要がある場合は、Projects API を使用する必要があります。
+ **ビジネス構造別に整理**する: ビジネスユニット、チーム、アプリケーション、コストセンターなどの組織の分類に基づいて Bedrock の使用を管理します。
+ **機密データを分離**する: あるアプリケーションからのプロンプト、レスポンス、コンテキストデータが他のアプリケーションにアクセスできないようにする
+ **コストを正確に追跡**する: 特定のチーム、プロジェクト、または環境に AI 支出をモニタリングして割り当てる
+ **アクセスポリシーを適用する**: 詳細な IAM アクセス許可を適用して、特定の AI ワークロードにアクセスできるユーザーを制御する
+ **本番ワークロードのスケーリング**: 運用上の境界とモニタリングを明確にして複数の本番アプリケーションを実行する

## プロジェクトと推論プロファイル
<a name="projects-vs-inference-profiles"></a>

プロジェクト API [と推論プロファイル](inference-profiles-create.md)はどちらも Amazon Bedrock で分離、タグ付け、アクセスコントロール機能を提供しますが、使用する API によって異なります。Mantle 推論エンジンを使用する [bedrock-mantle](endpoints.md) エンドポイントで OpenAI 互換 APIs を使用している場合は、Projects API を使用します。[bedrock-runtime](endpoints.md) エンドポイントで 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.\$1region\$1.api.aws | bedrock-runtime.\$1region\$1.amazonaws.com | 
| ユースケース | OpenAI 互換エンドポイントを使用するアプリケーション | ネイティブ Bedrock APIsを使用するアプリケーション | 
| アクセスコントロール | IAM ポリシーのリソースとしてのプロジェクト | 推論プロファイル ARN の IAM ポリシー | 
| コスト追跡 | プロジェクトの AWS タグ | 推論プロファイルの AWS タグ | 

## プロジェクトと AWS アカウント
<a name="projects-vs-aws-accounts"></a>

[AWS アカウント](https://docs.aws.amazon.com/accounts/latest/reference/accounts-welcome.html)と [AWS Organizations](https://docs.aws.amazon.com/controltower/latest/userguide/organizations.html) は、インフラストラクチャレベルでの請求と所有権の境界を表します。プロジェクトは、1 つのアカウント内のワークロードとアプリケーションの境界を表します。

個別の AWS アカウントの代わりにプロジェクトを使用すると、次のことが可能になります。
+ **セットアップの高速化**: API コールを使用して数秒でプロジェクトを作成する
+ **複雑さの軽減**: アカウントスプロールなしで複数のワークロードを管理する
+ **オペレーションの簡素化**: 1 つのアカウント内の一元管理
+ **オーバーヘッドの削減**: クロスアカウント IAM ロールやリソース共有が不要

## プロジェクトの開始方法
<a name="projects-getting-started"></a>

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

### 前提条件
<a name="projects-prerequisites"></a>

開始する前に、以下を確認してください。
+ Amazon Bedrock アクセスを持つ AWS アカウント
+ Bedrock プロジェクトを作成および管理するための IAM アクセス許可
+ Python 3.7 以降がインストールされている
+ OpenAI Python SDK がインストールされました。 `pip install openai boto3`
+ Amazon Bedrock 認証の [API キー](api-keys.md) 

### ステップ 1: 環境をセットアップする
<a name="projects-setup-environment"></a>

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 種類のキー](https://docs.aws.amazon.com/bedrock/latest/userguide/api-keys-how.html)があります。Amazon Bedrock の探索には長期 API キーを使用できますが、セキュリティ要件の厳しいアプリケーションには短期キーをお勧めします。プロジェクトで長期キーを使用する場合、長期キーにアタッチされたデフォルトのポリシーでは、プロジェクトの取得と一覧表示のみが許可されますが、create/update/archiveは許可されません。長期キーでプロジェクトを管理する場合は、これらのオペレーションを有効にするために追加の IAM ポリシーをキーに割り当てる必要があります。

### ステップ 2: 使用可能なモデルを検出する
<a name="projects-discover-models"></a>

`list()` API を使用して、Projects API と互換性のあるモデルのリストを取得します。

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

### ステップ 3: 最初のプロジェクトを作成する
<a name="projects-create-first"></a>

コストのモニタリングとオブザーバビリティのために、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: 推論リクエストをプロジェクトに関連付ける
<a name="projects-associate-inference"></a>

推論リクエストにプロジェクトを関連付けるには、クライアントの作成時にプロジェクト 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: プロジェクトのセットアップを確認する
<a name="projects-verify-setup"></a>

すべてのプロジェクトを一覧表示して、プロジェクトが正常に作成されたことを確認します。

```
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"
}
```

### 次のステップ
<a name="projects-next-steps"></a>

最初のプロジェクトを作成したら、次のことができます。
+ **アクセスコントロールの設定**: IAM ポリシーをアタッチしてプロジェクトアクセスを制限する
+ **コスト追跡の設定**: コスト配分に AWS タグを追加する
+ **モニタリングを有効にする**: CloudWatch メトリクスとアラームを設定する
+ **追加のプロジェクトを作成する**: チーム、環境、またはアプリケーションごとにワークロードを整理する

## プロジェクト作業
<a name="projects-working-with"></a>

このページでは、ライフサイクル全体にわたるプロジェクトの管理に関する詳細情報を提供します。

### プロジェクトの作成
<a name="projects-creating"></a>

#### 基本的なプロジェクトの作成
<a name="projects-basic-creation"></a>

名前、説明、タグを使用してプロジェクトを作成します。

```
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 のプロジェクトを持つことができます。

#### 推奨される命名規則
<a name="projects-naming-conventions"></a>

組織構造を反映した明確でわかりやすい名前を使用します。
+ **アプリケーション別**: CustomerChatbot-Prod、InternalSearch-Dev
+ **チーム別**: TeamAlpha-Production、DataScience-Experiments
+ **環境別**: Production-WebApp、Staging-MobileApp
+ **コストセンター別**: CostCenter-2152-Production

### プロジェクトの一覧表示
<a name="projects-listing"></a>

#### すべてのプロジェクトを一覧表示する
<a name="projects-list-all"></a>

アカウント内のすべてのプロジェクトを取得します。

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

### プロジェクトの詳細の取得
<a name="projects-retrieving-details"></a>

特定のプロジェクトに関する詳細情報を取得します。

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

### プロジェクトの更新
<a name="projects-updating"></a>

名前などのプロジェクトプロパティを変更します。

```
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"
  }'
```

### プロジェクトタグの管理
<a name="projects-managing-tags"></a>

新しいタグを追加するか、既存のタグ値を更新します。

```
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"]
  }'
```

**重要な注意事項**  
**完全な置き換えなし**: タグセット全体を一度に置き換えるオペレーションはありません。追加するタグと削除するタグを明示的に指定する必要があります。
**エラー処理**: 適切なエラー処理と検証を実装する

### プロジェクトのアーカイブ
<a name="projects-archiving"></a>

使用されなくなったアーカイブプロジェクト:

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

**重要**  
アーカイブされたプロジェクトを新しい推論リクエストに使用することはできませんが、履歴データとメトリクスには最大 30 日間アクセスできます。

### 異なる APIs
<a name="projects-using-apis"></a>

------
#### [ 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)
```

------

### ベストプラクティス
<a name="projects-best-practices"></a>

#### 推奨されるプロジェクト構造
<a name="projects-recommended-structure"></a>

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

```
├── CustomerChatbot-Production
├── CustomerChatbot-Staging
├── CustomerChatbot-Development
├── InternalSearch-Production
└── InternalSearch-Development
```
+ **個別の環境**: 開発、ステージング、本番環境には異なるプロジェクトを使用します。
+ **実験分離**: 実験とproof-of-concepts。

#### プロジェクトのライフサイクル管理
<a name="projects-lifecycle-management"></a>
+ **プロジェクトを早期に作成する**: アプリケーションをデプロイする前にプロジェクトをセットアップする
+ **一貫した命名**を使用する: 組織の命名規則に従う
+ **ドキュメントプロジェクトの目的**: 明確な説明を含める
+ **定期的な監査**: 未使用のプロジェクトを定期的にレビューしてアーカイブする
+ **使用状況のモニタリング**: プロジェクトメトリクスを追跡して最適化の機会を特定する