LoginSignup
12
11

DifyをEC2上に構築して、IAMロールでBedrockを呼び出す

Posted at

話題のDifyをEC2上に構築してみました。Amazon Linux 2023(t3.medium)で試しました。

環境準備

Gitインストール

sudo dnf install -y git

Dockerインストール

sudo dnf install -y docker

sudo usermod -aG docker $USER

一度ログアウトして再度ログイン

sudo systemctl start docker
docker version
Client:
 Version:           25.0.3
 API version:       1.44
 Go version:        go1.20.12
 Git commit:        4debf41
 Built:             Mon Feb 12 00:00:00 2024
 OS/Arch:           linux/amd64
 Context:           default

Server:
 Engine:
  Version:          25.0.3
  API version:      1.44 (minimum version 1.24)
  Go version:       go1.20.12
  Git commit:       f417435
  Built:            Mon Feb 12 00:00:00 2024
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.7.11
  GitCommit:        64b8a811b07ba6288238eefc14d898ee0b5b99ba
 runc:
  Version:          1.1.11
  GitCommit:        4bccb38cc9cf198d52bebf2b3a90cd14e7af8c06
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

Docker Composeインストール

mkdir $HOME/.docker
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
mkdir -p $DOCKER_CONFIG/cli-plugins

curl -SL https://github.com/docker/compose/releases/latest/download/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
docker compose version
Docker Compose version v2.27.0

構築

docker-composeが用意されてます。

git clone https://github.com/langgenius/dify.git
cd dify/docker
docker compose up

コンテナイメージをPULLしたあとで起動。

簡単ですね!

使ってみる

ログインしてみましょう。

Bedrockを設定します。右上のメニューから設定をクリックします。

モデルプロバイダーを選択すると、Bedrockがいます。

しかし、この画面、アクセスキーシークレットアクセスキーが必須入力です。

54.152.11.196_install(1280x720) (4).png

せっかくEC2上で起動しているので、 権限管理はIAMロールでしたい

2024/5/7時点で、Issueが上がっていますが、まだOpen状態です。

ということで、無理やりIAMロールでBedrockを呼び出す形式に変更します。

追加するもの

以前こちらで紹介したLiteLLMを使います。

手順

一度、Docker Composeを停止します。(trl + C

まず、LiteLLMの設定ファイルを作成します。

dify/docker/litellm/config.yaml
model_list:
  - model_name: bedrock/claude-3-haiku
    litellm_params:
      model: bedrock/anthropic.claude-3-haiku-20240307-v1:0

つづいて、docker-compose.yamlにLiteLLMを追加します。末尾に以下の記述を追加します。

dify/docker/docker-compose.yaml
  litellm:
    image: ghcr.io/berriai/litellm:main-latest
    volumes:
      - ./litellm/config.yaml:/app/config.yaml
    environment:
      AWS_REGION: us-east-1
    expose:
      - 4000
    command: [ "--config", "/app/config.yaml" ]

以上です。

docker compose up

モデルプロバイダーの画面でOpenAI-API-compatibleを選択します。

以下の値で設定します。

項目
Model Name bedrock/claude-3-haiku
API Key sk-**********
※必須項目ではないですが、入力が必要です
API endpoint URL http://litellm:4000

これでめでたく、アクセスキーとシークレットキー無しでBedrockが呼び出せます

こういう用途にもLiteLLMいいですね!

12
11
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
12
11