🐿️

DifyとAWS Bedrock連携で遭遇した「Got unknown model prefix amazon」エラーについて

に公開

はじめに

DifyをDocker環境にgithubからクローンすることで構築し、AWS Bedrockとの連携を試みました。このプロセス中に、「Got unknown model prefix amazon」 というエラーに遭遇したため、その解消のために確認したことについてまとめました。

本記事は、エラーの具体的な解消方法、デバッグの過程について解説します。DifyとBedrockの連携をよりスムーズに行いたい方は、ぜひ参考にしてください。すぐに解決策(確認項目)を知りたい場合は「結論」セクションを参照してください。

環境

Dify 1.4.0
Dify Bedrock Plugin Version: 0.0.17 (問題発生時) -> 0.0.10 (問題解決時)
Docker Engine Version: 28.0.4
Docker Desktop Version: 4.40.0 (build 187762)
ホストOS: Windows11(WSL2環境)

結論

本記事で解説するデバッグプロセスを経て、DifyとAWS Bedrockの連携問題で特に重要な確認ポイントは以下の3つであると考えられます。同様の問題に直面している方はまずこれらの項目をチェックすることをお勧めします。

1. DifyとBedrockの連携モジュール(プラグイン)のバージョン互換性

2025/05/19時点でDifyの最新バージョンは1.4.0であり、Bedrockプラグインの最新バージョンは0.0.17となっておりますが、このバージョンの組み合わせではモデルがうまく読み込まれませんでした(「Got unknown model prefix amazon」エラーが生じます)。Bedrockのバージョンを0.0.10に落とすことでIAMで有効化したモデルが使用できるようになります。

2. Dockerコンテナ上で環境変数が正しく読み込めているか

ホストの.envファイルに設定したAWSのアクセスキー、シークレットキー、リージョンが、DifyのAPIコンテナ(例:docker-api-1)の環境変数として正しく反映されているかをdocker execコマンドで確認します。.envファイルの書式やdocker-compose.ymlの記述が原因で、変数がコンテナにわたっていないケースがあります。

3. AWS IAM権限(ポリシー等)が適切に設定されているか

Difyで使用するIAMユーザーまたはロールに、Bedrockのモデルをリストアップするため(bedrock:ListFoundationModels)や呼び出すため(bedrock:InvokeModel)の適切な権限が付与されていることを確認します。また、Bedrockコンソールで利用したいモデルへのアクセスが実際に有効化されていることも確認してください。

エラー詳細

Dify UI上でBedrockセットアップ時にAWS Regionのみを選択して保存をすると以下の写真のように「Got unknown model prefix amazon」というエラーが表示されました。

また、AWS RegionだけでなくAvailable Model NameにIAMで有効化したモデルIDを入力した場合、モデルがAmazon社のモデルなら「Got unknown model prefix amazon」、

ClaudeなどAnthropic社のモデルであれば「Got unknown model prefix anthropic」というエラーが出力されました。

1. 認証情報がコンテナに渡らない問題の特定

DifyとAWS Bedrockの連携を試みた際、上記のエラーが生じる原因としてAWS認証情報がDifyに認識されていないことがあります。docker-compose.ymlが存在する docker ディレクトリ内に.envファイルを配置し、AWSのアクセスキー、シークレットキー、リージョンを記述しているにも関わらず、DifyがBedrockにアクセスできない状況です。
この問題が発生しているか検証します。
まず、Dockerコンテナが起動していることを確認し、dify-apiイメージを使用しているコンテナ名を取得します。

docker compose ps

次に、取得したコンテナ名(例:docker-api-1)を用いて、コンテナ内に移動し、AWS_という文字列を含む環境変数を確認します。

# コンテナ内に移動
docker exec -it コンテナ名 sh

# AWS_という文字列をもつ環境変数を取得
env | grep AWS_

このコマンドを実行し、.envファイルに定義した以下の3つの環境変数が表示されているかを確認します。(自分のIAMからキーを発行していない場合は発行してから.envファイルに以下の変数を用いて定義しておいてください。)

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • AWS_REGION

この出力結果にこれらの環境変数が表示されていなければコンテナに渡せていないということになります。docker-compose.ymlはデフォルトで同じディレクトリにある.envファイルを読み込みますが、確実に読み込ませるためにdocker-compose.ymlのapi serviceという部分で以下のように記述することで解消できました。

docker-compose.yml
services:
  # API service
  api:
    image: langgenius/dify-api:1.4.0
    restart: always
    environment:
      ~
      (省略)
      ~
      AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
      AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
      AWS_REGION: ${AWS_REGION}

ソースコードを変更するなどした場合は変更を反映させるために以下のコマンドでコンテナを再起動してください。

docker compose down
docker compose up -d

2. IAM権限周りの問題の特定

1. Bedrockコンソールでモデルが有効になっているか確認

Difyから利用したい特定の基盤モデルは、AWS Bedrockコンソール上で明示的にアクセスを有効化する必要があります。

  1. AWSマネジメントコンソールの検索バーから「Bedrock」と検索し、サービスに移動します。
  2. 左側のナビゲーション項目で「Bedrock configuration」の下にある「モデルアクセス」をクリックします。
  3. 「モデルアクセスを管理」を選択し、利用したいモデルの左側にあるチェックボックスにチェックを入れ、アクセスをリクエストします。Claudeなどの一部モデルは、追加で会社情報の入力が必要な場合があります。
  4. アクセスが有効化されると、「アクセスのステータス」の項目に「アクセスが付与されました」と表示されます。ご自身の画面でこの状態になっていることを確認してください。

2. IAMポリシーの確認

Difyに設定しているAWSアクセスキーとシークレットキーに関連付けられたIAMユーザーまたはロールが、Bedrockにアクセスするための適切なポリシーを持っているかを確認します。

必要な主要な権限:

  • bedrock:ListFoundationModels: 利用可能な基盤モデルの一覧を取得するために必要です。
  • bedrock:InvokeModel: 基盤モデルを呼び出して推論を実行するために必要です。
  • bedrock:GetFoundationModel: 特定の基盤モデルの詳細情報を取得するために必要です。

これらの権限がIAMポリシーの Effect: Allow で許可されていることを確認してください。デバッグの初期段階では、一時的にAmazonBedrockFullAccessというAWS管理ポリシーをIAMユーザー/ロールにアタッチしてテストすることで、権限不足が原因であるかを迅速に切り分けることができます。例としてAmazonBedrockFullAccessをアタッチするまでの方法を以下に示します。

  1. AWSマネジメントコンソールの検索バーから「IAM」と検索し、サービスに移動してから左側のナビゲーション項目で「アクセス管理」の中にある「ユーザー」をクリックします。
  2. アタッチするIAMユーザー名をクリックします。
  3. 許可ポリシーの欄の右側にある「許可を追加」から再度「許可を追加」を押し、許可のオプションでは「ポリシーを直接アタッチする」を選択します。
  4. 許可ポリシーの検索バーからAmazonBedrockFullAccessと入力して、ポリシー名をクリックし、そのまま指示に従いアタッチを完了させます。

3. DifyとBedrockプラグインのバージョン互換性

本環境はGitHubをdocker上にクローンして構築しました。Difyのバージョンは現時点で最新となっている1.4.0です。また、Bedrockプラグインのバージョンは最新が0.0.17です。

デバッグの過程で、エラーログをdockerコンテナのログ及びDify UIの検証ページから確認すると「Got unknown model prefix amazon」エラーがDifyのバックエンドから返されていることが判明し、DifyがBedrockのモデル名を処理する際の互換性問題が疑われました。しかし、Dify本体のバージョン(1.4.0)は最新であり、このエラーに関する具体的な情報もDifyのログには詳細に出力されていませんでした。

そこでBedrock連携モジュールのバージョンを 0.0.17(最新)から0.0.10へダウングレードしたところ、DifyのWebインターフェースにIAMで有効化したBedrockモデルが正常に表示されるようになりました。

Bedrockの他のバージョンでも検証したところ以下の挙動が確認されました。

# 有効化したモデルが表示された
0.0.13
0.0.12
0.0.11
0.0.10

# 表示されなかった
0.0.17
0.0.16
0.0.15

今後のアップデート等で解消される可能性もありますので、本情報はあくまで参考としてご活用ください。また、参考までにBedrockプラグインのバージョン変更方法を以下に示します。

  1. Difyワークスペースの右上、アイコン左隣にある「プラグイン」をクリックします。
  2. Amazon Bedrockをクリックすると画面右側に利用可能モデル一覧が表示されます。
  3. Amazon Bedrockという表記の右側にはプラグインのバージョン(添付写真では「0.0.11」)が表示されておりますのでここを押すとバージョンの切り替えができます。利用したいバージョンを選択しインストールすると利用できるようになります。

まとめ

今回は、DifyとAWS Bedrock連携時に遭遇した「Got unknown model prefix amazon」というエラーに焦点を当て、その解消に至るまでの確認項目と対処方法を段階的に解説しました。本記事が、同様の現象に直面し解決策を求めている方々にとって、このエラーを解決するための具体的な手助けとなることを願っております。

参考

https://github.com/langgenius/dify
https://zenn.dev/delta_tsuruta/articles/eab3d061acbaef

UPGRADE tech blog

Discussion