Manage AI costs with Amazon Bedrock Projects

As organizations scale their AI load on Amazon Bedrock, understanding what drives spending becomes critical. Teams may need to perform back pay, investigate cost overruns, and guide improvement decisions, all of which require cost definition at the workload level.
With Amazon Bedrock Projects, you can associate target costs to specific workloads and analyze them in AWS Cost Explorer and AWS Data Exports. In this post, you will learn how to set up Projects end-to-end, from designing a branding strategy to cost analysis.
How Amazon Bedrock Projects works and how much it costs
A project in Amazon Bedrock is a logical boundary that represents a workload, such as an application, site, or test. To specify project costs, you attach resource tags and pass the project ID to your API calls. You can then use cost allocation tags in AWS Billing to filter, aggregate, and analyze costs in AWS Cost Explorer and AWS Data Exports.
The following diagram shows the end-to-end flow:
Figure 1: End-to-end cost flow with Amazon Bedrock Projects
Notes:
- Amazon Bedrock Projects supports OpenAI-compatible APIs: Responses API and Chat Completions API.
- Requests without a project ID are automatically associated with the default project in your AWS account.
What is required
To follow the steps in this post, you need:
Describe your marking strategy
The tags you attach to projects become dimensions that you can filter and group by in your expense reports. We recommend that you plan these before creating your first project. A common method is to tag by application, location, group, and cost center:
| The key to the marker | The purpose | Prices are exemplary |
| Application | What workload or service | CustomerChatbot, Experiments, DataAnalytics |
| The environment | Life cycle stage | Production, Development, Stage, Research |
| The team | Ownership | Customer Experience, PlatformEngineering, DataScience |
| CostCenter | Financial map | CC-1001, CC-2002, CC-3003 |
For more guidance on creating a cost allocation strategy, see Best Practices for Marking AWS Resources. With your branding strategy defined, you're ready to create projects and start estimating costs.
Create a project
With your branding strategy and permissions in place, you can create your first project. Each project has its own set of cost allocation tags that go into your billing data. The following example shows how to create a project using the Projects API.
First, install the required dependencies:
$ pip3 install openai requests
Create a project with your tag taxonomy:
The OpenAI SDK uses the OPENAI_API_KEY environment variable. Set this to your Bedrock API key.
import os
import requests
# Configuration
BASE_URL = "https://bedrock-mantle..api.aws/v1"
API_KEY = os.environ.get("OPENAI_API_KEY") # Your Amazon Bedrock API key
def create_project(name: str, tags: dict) -> dict:
"""Create a Bedrock project with cost allocation tags."""
response = requests.post(
f"{BASE_URL}/organization/projects",
headers={
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
},
json={"name": name, "tags": tags}
)
if response.status_code != 200:
raise Exception(
f"Failed to create project: {response.status_code} - {response.text}"
)
return response.json()
# Create a production project with full tag taxonomy
project = create_project(
name="CustomerChatbot-Prod",
tags={
"Application": "CustomerChatbot",
"Environment": "Production",
"Team": "CustomerExperience",
"CostCenter": "CC-1001",
"Owner": "alice"
}
)
print(f"Created project: {project['id']}")
The API returns project information, including the project ID and ARN:
{
"id": "proj_123",
"arn": "arn:aws:bedrock-mantle:::project/"
}
Save the project ID. You will use it to correlate the requests for ideas in the next step. The ARN is used for IAM policy attachments if you have to restrict access to this project. Repeat this for each workload. The following table shows a sample project structure for an organization with three applications:
| Name of the project | Application | The environment | The team | Cost Center |
| CustomerChatbot-Prod | CustomerChatbot | Production | CustomerExperience | CC-1001 |
| CustomerChatbot-Dev | CustomerChatbot | Development | CustomerExperience | CC-1001 |
| Experiments-Research | Tests | Production | PlatformEngineering | CC-2002 |
| DataAnalytics-Prod | DataAnalytics | Production | DataScience | CC-3003 |
You can create up to 1,000 projects per AWS account to suit your organization's needs.
Associate requests for ideas with your project
With your created projects, you can associate view requests by passing the project ID to your API calls. The following example uses the Response API:
from openai import OpenAI
client = OpenAI(
base_url="https://bedrock-mantle..api.aws/v1",
project="", # ID returned when you created the project
)
response = client.responses.create(
model="openai.gpt-oss-120b",
input="Summarize the key findings from our Q4 earnings report."
)
print(response.output_text)
To maintain a clean cost attribute, always specify a project ID in your API calls rather than relying on the default project.
Activate the allocation cost tags
Before your project tags appear in expense reports, you must activate them as expense assignment tags in AWS Billing. This one-time setup connects your project tags to the payment channel. For more information about activating cost allocation tags, see the AWS Billing documentation.
It can take up to 24 hours for tags to distribute to AWS Cost Explorer and AWS Data Exports. You can activate your tags immediately after creating your first project to avoid gaps in cost data.
View project costs
With projects created, requests for consideration tagged, and cost allocation tags open, you can see exactly where your Amazon Bedrock money is going. All the dimensions you defined in your taxonomy are now available as a filter or grouping for your AWS cost report.
AWS Cost Explorer
AWS Cost Explorer gives you the fastest way to see your costs per project. Complete the following steps to review your costs for the project:
- Open the AWS Billing and Cost Management console and select Cost Explorer.
- In the Filter pane, expand Service and select Amazon Bedrock.
- Underneath The group withchoose Mark it and select your tag key (for example, Application).

Figure 2: Cost Explorer showing Amazon Bedrock's daily usage grouped by program tag
For more ways to improve your visibility, see Analyzing your costs and spending with AWS Cost Explorer.
For more analysis and line item details on your project tags, see Creating Data Shipments in the AWS Billing documentation.
The conclusion
With Amazon Bedrock Projects, you can aggregate costs for each project and track spending using the AWS tools your organization already relies on. As a measure of your workload, use the tagging strategy and cost visibility patterns covered in this post to maintain accountability across teams and applications.
For more information, see the Amazon Bedrock Projects documentation and the AWS Cost Management User Guide.
About the writers



