Amazon Bedrock

Amazon Bedrock is a managed service that provides foundation models from various AI providers, available through a unified API.

Spring AI supports all the Chat and Embedding AI models available through Amazon Bedrock by implementing the Spring interfaces ChatClient, StreamingChatClient, and EmbeddingClient.

Additionally, Spring AI provides Spring Auto-Configurations and Boot Starters for all clients, making it easy to bootstrap and configure for the Bedrock models.

Getting Started

There are a few steps to get started

  • Add Boot Starter: Add the Spring Boot starter for Bedrock to your project.

  • Obtain AWS credentials: If you don’t have an AWS account and AWS CLI configured yet, this video guide can help you configure it: AWS CLI & SDK Setup in Less Than 4 Minutes!. You should be able to obtain your access and security keys.

  • Enable Bedrock models to use: Go to Amazon Bedrock and from the Model Access menu on the left, configure access to the models you are going to use.

Project Dependencies

Then add the Spring Boot Starter dependency to your project’s Maven pom.xml build file:

<dependency>
 <artifactId>spring-ai-bedrock-ai-spring-boot-starter</artifactId>
 <groupId>org.springframework.ai</groupId>
</dependency>

or to your Gradle build.gradle build file.

dependencies {
    implementation 'org.springframework.ai:spring-ai-bedrock-ai-spring-boot-starter'
}
Refer to the Dependency Management section to add the Spring AI BOM to your build file.

Connect to AWS Bedrock

Use the BedrockAwsConnectionProperties to configure AWS credentials and region:

spring.ai.bedrock.aws.region=us-east-1

spring.ai.bedrock.aws.access-key=YOUR_ACCESS_KEY
spring.ai.bedrock.aws.secret-key=YOUR_SECRET_KEY

The region property is compulsory.

AWS credentials are resolved in the following order:

  1. Spring-AI Bedrock spring.ai.bedrock.aws.access-key and spring.ai.bedrock.aws.secret-key properties.

  2. Java System Properties - aws.accessKeyId and aws.secretAccessKey.

  3. Environment Variables - AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY.

  4. Web Identity Token credentials from system properties or environment variables.

  5. Credential profiles file at the default location (~/.aws/credentials) shared by all AWS SDKs and the AWS CLI.

  6. Credentials delivered through the Amazon EC2 container service if the AWS_CONTAINER_CREDENTIALS_RELATIVE_URI environment variable is set and the security manager has permission to access the variable.

  7. Instance profile credentials delivered through the Amazon EC2 metadata service or set the AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY environment variables.

Enable selected Bedrock model

By default, all models are disabled. You have to enable the chosen Bedrock models explicitly using the spring.ai.bedrock.<model>.<chat|embedding>.enabled=true property.

Here are the supported <model> and <chat|embedding> combinations:

Model Chat Chat Streaming Embedding

llama2

Yes

Yes

No

cohere

Yes

Yes

Yes

anthropic

Yes

Yes

No

jurassic2 (WIP)

Yes

No

No

titan

Yes

Yes

Yes (however, no batch support)

For example, to enable the Bedrock Llama2 Chat client, you need to set spring.ai.bedrock.llama2.chat.enabled=true.

Next, you can use the spring.ai.bedrock.<model>.<chat|embedding>.* properties to configure each model as provided.

For more information, refer to the documentation below for each supported model.