AWS CDK デプロイガイド
このガイドでは、AWS CDK を使用して Difyエンタプライス版を AWS 上にデプロイする方法を説明します。
AWS CDK アーキテクチャ図
テストデプロイ
コンポーネント | Helmチャート 設定 | 数量 | vCPU | メモリ (GB) | ストレージ (GB) | メモ |
---|---|---|---|---|---|---|
S3 | persistence | 1 | ||||
Redis DB | externalRedis | 1 | 2 | 6.38 | ||
RDS Postgres DB | externalPostgres | 2 | 2 | 8 | ||
K8S Worker Node | 1 | 4 | 16 | 100 | ||
OpenSearch | vectorDB | 1 | 2 | 16 | 100 |
本番デプロイ
コンポーネント | Helmチャート 設定 | 数量 | vCPU | メモリ (GB) | ストレージ (GB) | メモ |
---|---|---|---|---|---|---|
S3 | persistence | 1 | ||||
Redis DB | externalRedis | 1 | 2 | 12.93 | ||
RDS Postgres DB | externalPostgres | 1 | 4 | 32 | ||
K8S Worker Node | 6 | 8 | 32 | 100 | ||
OpenSearch | vectorDB | 2 | 8 | 64 | 100 |
デプロイ手順
すべての工程は約60分かかると予測されます。
-
AWS CLI の設定:
AWS CLI をインストールし、設定を行います:
-
リポジトリのクローン:
-
NodeJS 依存パッケージのインストール:
-
環境変数の設定:
.env
ファイル内の環境変数を適切に設定します。-
ENVIRONMENT
:デプロイ環境を指定;test
またはprod
が必要です。 -
CDK_DEFAULT_REGION
:Difyエンタプライス版をデプロイする AWS リージョン。 -
CDK_DEFAULT_ACCOUNT
:AWS アカウント ID。 -
DEPLOY_VPC_ID
:使用する既存 VPC の IDを指定します。未設定の場合、新しい VPC が作成されます。 -
注意: 既存の VPC を使用する場合は以下を確認してください
-
确保您有 2 个或更多的公共子网用于应用负载均衡器,以及 2 个或更多的私有子网可以访问互联网(与 NAT 关联)以从互联网拉取 docker 镜像。
-
2つ以上のパブリックサブネットが必要です(アプリケーションロードバランサー用)。
-
2つ以上のインターネットにアクセス可能なプライベートサブネット(NAT付き)も必要です。
-
サブネットにタグを追加してください(タグ付けされていないと、ステップ6で警告が表示され、ロードバランサーが作成されません):
サブネットタイプ タグキー タグ値 パブリック kubernetes.io/role/elb 1 プライベート kubernetes.io/role/internal-elb 1
-
-
サブネット設定(
DEPLOY_VPC_ID
必須、カンマ区切り、スペースなし、プライベートサブネットの使用を推奨):EKS_CLUSTER_SUBNETS
:EKS コントロールプレーン用サブネット ID。少なくとも2つの異なるアベイラビリティゾーン (AZ) が必要です。EKS_NODES_SUBNETS
:EKS ワーカーノード用サブネット ID。少なくとも2つの異なる AZ が必要です。REDIS_SUBNETS
:Redis デプロイ用サブネット ID。RDS_SUBNETS
:RDS データベース用サブネット ID。(少なくとも2つの異なる AZ が必要)OPENSEARCH_SUBNETS
:OpenSearch デプロイ用サブネット ID。OPENSEARCH_ADMINNAME
:OpenSearch ドメイン管理者名。OPENSEARCH_PASSWORD
:OpenSearch ドメイン管理者パスワード。
-
AWS_EKS_CHART_REPO_URL
:(AWS 中国リージョンのみ)AWS EKS Helmチャート リポジトリ URL。 -
RDS_PUBLIC_ACCESSIBLE
:RDS を公開アクセス可能にする場合はtrue
に設定します(推奨されません)。
注意:
- AWS 中国リージョンを使用している場合、
AWS_EKS_CHART_REPO_URL
の設定が必要です。詳細は Dify チームにお問い合わせください。 - 既存の VPC を使用することでリソースへのアクセスが容易になります。
-
-
CDK ブートストラップ:
CDK 環境を初期化します:
-
CDK デプロイ:
-
Difyエンタプライス版をデプロイします:
-
-
AWS EKS アクセス権の更新:
- EKS クラスターのパネルに移動し、「アクセス」メニューを選択し、「管理アクセス」をクリックします。
EKS クラスターのアクセス管理
- 「管理アクセス」ダイアログで、「EKS API と ConfigMap」を選択し、「変更を保存」をクリックします。
- IAM アクセスエントリパネルで、「アクセスエントリを作成」をクリックします。
IAMアクセスエントリ
- あなたの IAM ユーザーを追加し、以下の権限を割り当てます:
AmazonEKSAdminPolicy
AmazonEKSAdminViewPolicy
AmazonEKSClusterAdminPolicy
- EKS クラスターのパネルに移動し、「アクセス」メニューを選択し、「管理アクセス」をクリックします。
-
Kubernetes (K8S) クラスターにローカルでアクセスするように
kubeconfig
を構成します。ローカルで Kubernetes クラスターにアクセスするために、以下のコマンドを実行します:
region
とname
をデプロイに合わせて調整してください:- region: クラスターがデプロイされている AWS リージョン。
- name: EKS 集群名称。
-
データ永続化設定:
Helm
values.yaml
ファイルを編集します。以下のようにpersistence
部分を修正し、{your-region-name}
と{your-s3-bucket-name}
を CDK が作成したリソース名に置き換え、useAwsManagedIam
を有効にしてください。 -
データベース設定:
Helm
values.yaml
ファイルを編集し、postgre
部分を削除して、externalPostgres
部分を以下のように修正します。{your-postgres-endpoint}
と{your-postgres-password}
を AWS Secrets Manager に保存された情報に置き換えます。 -
Redis 設定:
Helm
values.yaml
ファイルを編集し、redis
部分を削除して、externalRedis
部分を以下のように修正します。{your-redis-host}
を ElastiCache-Redis のPrimary endpoint
に置き換えます。注意:
Primary endpoint
のポート番号は削除してください -
ベクターデータベース設定:
Helmの
values.yaml
ファイルを変更し、externalType
の部分を以下のように修正してください:- AWS OpensearchインスタンスのDomain endpointである
<openSearch_endpoint>
を置き換え、https://
を削除した残りの部分を使用します。 .env
で設定した値を用いて<OPENSEARCH_ADMINNAME>
と<OPENSEARCH_PASSWORD>
を置き換えます。
- AWS OpensearchインスタンスのDomain endpointである
-
Docker イメージプルキーの設定:
Difyエンタプライス版をインストールする前に、Docker イメージプルキーを設定する必要があります。
注意: ユーザー名とパスワードを取得していない場合は、サポートにお問い合わせください。メールアドレス:Support@dify.ai
-
TLS 設定:
テストの場合:
デプロイプロセスをテストするだけであれば、このステップをスキップできます。
本番の場合:
AWS
ACM
に移動して、Helmチャート 設定ファイルvalues.yaml
で宣言されたドメイン名の証明書を申請します。これらのドメインは次のようになります:
ドメイン名サービスプロバイダー(cloud flare、aws route53 など)にて、
cname
を設定してドメインの所有権を証明してください。values.yaml パラメータの
global.useTLS
を変更 -
AWS ロードバランサーの設定:
Helm
values.yaml
ファイルで AWS アプリケーションロードバランサー(ALB)を使用してイングレスを設定します。以下のようにingress
部分を修正してください:テストの場合:
本番の場合:
-
Difyエンタプライス版のインストール:
Difyエンタプライス版は Helm を使用してデプロイされます。
-
Difyエンタプライス版へのアクセス:
テストの場合:
設定が完了したら、ALB の一時的な外部 IP を取得します。
その後、以下の行を
/etc/hosts
ファイルに追加します。本番の場合:
ドメイン名サービスプロバイダーにて、DNS を ALB アドレスに設定します(AWS EC2 の Load Balancer に移動し、ALB の DNS を取得)。
ドメイン名 cname api.xxxx.com alb_dns app.xxxx.com alb_dns upload.xxxx.com alb_dns enterprise.xxxx.com alb_dns console.xxxx.com alb_dns -
インストールの確認:
警告:Dify Enterprise Dashboard
http://enterprise.dify.local
にログインする前に、Dify Consolehttp://console.dify.local
を設定する必要があります。-
Dify Console:
http://console.dify.local
にアクセスし、インストールを完了します。 -
Enterprise Dashboard:
http://enterprise.dify.local
にアクセスし、デフォルトのメールとパスワードでログインします。ログイン後、パスワードを変更できます。
-
破棄手順
この工程には約20分かかる可能性があります。
.env
ファイルで指定された ENVIRONMENT
環境のデプロイを破棄します。
注意:AWS コンソールにログインし、VPC を確認して、CDK が作成した VPC が正しく破棄されていることを確認してください。破棄されていない場合、Cloudformation
をチェックし、削除操作を実行してください。
高度な設定
カスタムデプロイメント設定を行うには、test.tsファイル、または本番環境のprod.tsファイルを変更してください。