この記事では前回構築した環境を使って、実際にAmazon Bedrockと連携する設定を行います。どすこい。
私の環境
- macOS 14.6
- JDK 21
- Spring Boot 3.5.7
- Spring AI 1.1.0
やること
- AWS認証情報の設定
- application.propertiesの設定
- ChatControllerの実装
- 動作確認
AWS認証情報の設定
ローカル環境での実行となるので、まずはAWSのアクセスキー / シークレットアクセスキーを作成します。
※ Amazon BedrockにはAPIキーという2025年7月にリリースされた新しい認証方式がありますが、Spring AIのドキュメントでは、アクセスキーを使用した方法のみしか記載されていないため、今回はIAMアクセスキーを使用します。
IAMユーザー / アクセスキー作成
マネジメントコンソールにログイン > IAM > ユーザー > ユーザーの作成を選択
適当な名前を入力して次へを選択します。
今回は、ユーザー名をspring-ai-userとしています。
また、作成するユーザー名はマネジメントコンソールにアクセスしないことから、「AWS マネジメントコンソールへのユーザーアクセスを提供する」 のチェックは行いません。

ポリシーを直接アタッチする > 許可ポリシーでAmazonBedrockFullAccessを検索、選択 > 次へを選択
※ 検証のため強い権限をアタッチしていますが、実運用では最小権限の原則に従い、必要な権限のみを付与しましょう。

作成したユーザーを選択 > セキュリティ認証情報タブを選択 > アクセスキーの作成を選択

ローカルコードを選択 > 「上記のレコメンデーションを理解し、アクセスキーを作成します。」にチェック > 次へを選択

説明タグを入力します。
こちらは任意なので入力しなくても問題ないですが、使用用途が後から分かりやすいように、今回はuse-spring-aiとしておきます。

入力後、「アクセスキーを作成」を選択
アクセスキー / シークレットアクセスキーが表示されるのでメモしておきましょう。

これで、アクセスキーの作成は完了です。
AWS CLIで認証情報の設定
AWS CLIを下記コマンドでインストール
brew install awscli
下記コマンドを実行し、バージョンが表示されれば問題なくインストールされています。
aws --version
表示例:
aws-cli/2.31.24 Python/3.13.9 Darwin/23.6.0 source/arm64
次に以下コマンドで認証情報を設定します。
aws configure
プロンプトに従って以下を入力します。
アクセスキー / シークレットアクセスキーは先ほどコピーしたものを貼り付けてください。
AWS Access Key ID [None]: YOUR_ACCESS_KEY_ID
AWS Secret Access Key [None]: YOUR_SECRET_ACCESS_KEY
Default region name [None]: us-east-1
Default output format [None]: json
これで ~/.aws/credentials ファイルが作成され、Spring AI が自動的に認証情報を読み取るようになります。
application.propertiesの設定
プロジェクトの src/main/resources/application.properties を開き、以下を追加します。
spring.ai.bedrock.aws.region=us-east-1
spring.ai.bedrock.converse.chat.options.model=amazon.nova-lite-v1:0
spring.ai.bedrock.converse.chat.options.temperature=0.8
設定内容:
region:Amazon Bedrock を利用する AWS リージョン
model:使用する AI モデルの ID(今回はAmazon Nova Liteを使用)
temperature:生成する応答のランダム性(0.0〜1.0)数値が高いほど、同じ質問でも回答のバリエーションが豊富になります。

他のモデルを使ってみたい方は、Supported foundation modelsからモデルIDを確認することができますので、試してみてください!
ChatControllerの実装
src/main/java/com/example/spring_ai_sample/controller ディレクトリを作成し、ChatController.java を追加します。

以下のように「Java ファイルはモジュールソースルート外にあるため、コンパイルされません」と警告が表示される場合は、ソースルートとして認識されていない状態です。

その場合は、src/main/java フォルダを右クリック > 「ディレクトリをマークする」 > 「ソース ルート」を選択するを実行することによって正しくソースとして設定され、警告が消えます。

作成した ChatController.java に以下のコードを記述します。
もし、メソッド・シンボルを解決できませんのエラーが発生した場合は、Mavenを再ロードしてみてください。
package com.example.spring_ai_sample.controller;
import org.springframework.ai.chat.client.ChatClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* Amazon Bedrock との対話を行う REST コントローラー
*/
@RestController
public class ChatController {
private final ChatClient chatClient;
/**
* コンストラクタ
* Spring AI が application.properties の設定を読み込み、自動で準備した Builder を受け取る
*/
@Autowired
public ChatController(ChatClient.Builder chatClientBuilder) {
this.chatClient = chatClientBuilder.build();
}
/**
* /chat エンドポイント
* 受け取ったプロンプトを Amazon Bedrock に送信し、応答を返す
*/
@GetMapping("/chat")
public String chat(@RequestParam String prompt) {
return chatClient.prompt(prompt).call().content();
}
}
ディレクトリ構造を確認しておきましょう。
最終的には以下のようになっています。
src/main/java/com/example/spring_ai_sample/
├── SpringAiSampleApplication.java
└── controller/
└── ChatController.java
実行確認
アプリケーションを起動します。
SpringAiSampleApplication を実行してください。

現時点ではフロントを用意していないのでcurlコマンドで確認していきましょう。
下記コマンドを実行してください。
curl -G "http://localhost:8080/chat" --data-urlencode "prompt=どすこいはんぺん"
問題なく設定できていれば答えが返ってきます
(どすこいはんぺんはスラングらしいです。どすこい。)
「どすこいはんぺん」という言葉は、日本語のスラングやインターネットスラングに由来する表現です。この言葉は「どすこい」と「はんぺん」を組み合わせたもので、主に以下のように使われています:
1. **どすこい**:相撲の取り口で、相手を投げ飛ばすなどの強烈な動きを表す言葉。転じて、何かを力強くやったときや、大成功したときに使われる。
2. **はんぺん**:白身魚をすり身にして練り上げた練り製品で、主に魚肉練り製品の一種として知られています。
「どすこいはんぺん」という言葉は、主にインターネット上で使われ、何かを力強くやったときに「どすこい!」と叫びながら、その成功を「はんぺん」に例えて表現する遊び心のある表現です。例えば、何かのテストで高得点を取ったときや、スポーツで勝利したときに使われます。
おわりに
この記事では、Amazon BedrockとSpring AIを連携させるための基本的な設定から、実際に動作する簡易的なAPIの実装までを扱いました。
次回はストリーミング応答やマルチモーダル入力など、より実践的な機能を試していきます。
では、ここで一旦まわしを締め直して終わりとします。どすこい。
