0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Spring AI検証:Amazon Bedrock 連携設定

Last updated at Posted at 2025-12-01

この記事では前回構築した環境を使って、実際に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 マネジメントコンソールへのユーザーアクセスを提供する」 のチェックは行いません。
image.png

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

確認画面になるので、内容を確認 > ユーザーの作成を選択
image.png

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

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

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

入力後、「アクセスキーを作成」を選択

アクセスキー / シークレットアクセスキーが表示されるのでメモしておきましょう。
image.png

これで、アクセスキーの作成は完了です。

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)数値が高いほど、同じ質問でも回答のバリエーションが豊富になります。
image.png
他のモデルを使ってみたい方は、Supported foundation modelsからモデルIDを確認することができますので、試してみてください!

ChatControllerの実装

src/main/java/com/example/spring_ai_sample/controller ディレクトリを作成し、ChatController.java を追加します。
image.png

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

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

作成した 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 を実行してください。
image.png

現時点ではフロントを用意していないのでcurlコマンドで確認していきましょう。
下記コマンドを実行してください。

curl -G "http://localhost:8080/chat" --data-urlencode "prompt=どすこいはんぺん"

問題なく設定できていれば答えが返ってきます
(どすこいはんぺんはスラングらしいです。どすこい。)

「どすこいはんぺん」という言葉は、日本語のスラングやインターネットスラングに由来する表現です。この言葉は「どすこい」と「はんぺん」を組み合わせたもので、主に以下のように使われています:

1. **どすこい**:相撲の取り口で、相手を投げ飛ばすなどの強烈な動きを表す言葉。転じて、何かを力強くやったときや、大成功したときに使われる。
   
2. **はんぺん**:白身魚をすり身にして練り上げた練り製品で、主に魚肉練り製品の一種として知られています。

「どすこいはんぺん」という言葉は、主にインターネット上で使われ、何かを力強くやったときに「どすこい!」と叫びながら、その成功を「はんぺん」に例えて表現する遊び心のある表現です。例えば、何かのテストで高得点を取ったときや、スポーツで勝利したときに使われます。

おわりに

この記事では、Amazon BedrockとSpring AIを連携させるための基本的な設定から、実際に動作する簡易的なAPIの実装までを扱いました。
次回はストリーミング応答やマルチモーダル入力など、より実践的な機能を試していきます。

では、ここで一旦まわしを締め直して終わりとします。どすこい。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?