AWS

Bedrock Claude Chatをデプロイしてみた

はじめに

こんにちは、ディーネットの山田です。

世間では、ChatGPTが流行っておりますが、AWSさんからもClaudeを使ったChatGPTみたいなサンプルが提供されておりましたので、AWS環境にデプロイしてみました。

https://github.com/aws-samples/bedrock-claude-chat/blob/main/docs/README_ja.md

今回は、IPアドレス制限を設けたいので、Cloud9上でCDKのソースコードを修正しつつデプロイします。

事前準備

1. us-east-1(バージニア北部)リージョンでBedrockのモデルに対するアクセスを申請

https://us-east-1.console.aws.amazon.com/bedrock/home?region=us-east-1#/modelaccess

ドキュメントによると、以下の3種類を有効化する必要があるとのこと。

  • Anthropic Claude
  • Anthropic Claude Instant
  • Cohere Embed Multilingual

私の環境では、すでにすべて有効化していたので、特に対応しませんでした。

2. Cloud9でCDKが実行できる環境を準備

私の環境では、Amazon Linux 2023で構成されたCloud9を使いました。

$ npm --version
10.3.0

$ node --version
v20.11.0

$ cdk --version
2.122.0 (build 7e77e02)

デプロイ手順

基本的には、READMEに従って対応を進めました。

https://github.com/aws-samples/bedrock-claude-chat/blob/main/docs/README_ja.md#deploy-using-cdk

1. bedrock-claude-chatのプロジェクトをクローン

$ git clone https://github.com/aws-samples/bedrock-claude-chat

2. npmのパッケージをインストール

$ cd bedrock-claude-chat
$ cd cdk
$ npm ci

3. AWS CDKをインストール

インストール済みの場合は対応不要とのこと。

$ npm i -g aws-cdk

4. デプロイ先リージョンを指定

CDKに関しては、初心者過ぎるので、理解が及んでいませんがCDKToolkitを東京リージョンだけだとエラーになったので、リージョン指定せずに実行してバージニア北部にもCDKToolkitを作りました。

$ cdk bootstrap aws://{AWSのアカウントID}/ap-northeast-1
$ cdk bootstrap

5. IPアドレス制限

社内からのアクセスのみに制限したいので、以下のファイルにある allowedIpV4AddressRangesallowedIpV6AddressRanges の記述をそれぞれ書き換えました。

IPv6については、ループバックアドレスのみにして実質誰もアクセスできないようにしました。

  • bedrock-claude-chat/cdk/cdk.json
"allowedIpV4AddressRanges": ["{当社のIPアドレスに制限}"],
"allowedIpV6AddressRanges": ["::1/128"],

6. Cognitoのセルフサインアップを無効化

知らない人が勝手にCognitoにサインアップして使われても困るんで、セルフサインアップを無効化しました。

selfSignUpEnabledtrue から false に書き換えました。

  • bedrock-claude-chat/cdk/lib/constructs/auth.ts
const userPool = new UserPool(this, "UserPool", {
      passwordPolicy: {
        requireUppercase: true,
        requireSymbols: true,
        requireDigits: true,
        minLength: 8,
      },
      selfSignUpEnabled: false,
      signInAliases: {
        username: false,
        email: true,
      },
    });

7. CDKプロジェクトをデプロイ

$ cdk deploy --require-approval never --all

8. CDKのデプロイ完了

私の環境の場合、大体20分ぐらいかかりました。

正常にデプロイが完了すれば、以下のような結果が出ます。

✅  BedrockChatStack

✨  Deployment time: 635.32s

Outputs:
BedrockChatStack.AuthUserPoolClientIdXXXXXXXXXXXX = XXXXXXXXXXXX
BedrockChatStack.AuthUserPoolIdXXXXXXXXXXXX = ap-northeast-1_XXXXXXXXXXXX
BedrockChatStack.BackendApiBackendApiUrlXXXXXXXXXXXX = https://XXXXXXXXXXXX.execute-api.ap-northeast-1.amazonaws.com
BedrockChatStack.DocumentBucketName = bedrockchatstack-documentbucketXXXXXXXXXXXX-XXXXXXXXXXXX
BedrockChatStack.FrontendURL = https://XXXXXXXXXXXX.cloudfront.net
BedrockChatStack.WebSocketWebSocketEndpointXXXXXXXXXXXX = wss://XXXXXXXXXXXX.execute-api.ap-northeast-1.amazonaws.com/dev
Stack ARN:
arn:aws:cloudformation:ap-northeast-1:XXXXXXXXXXXX:stack/BedrockChatStack/XXXXXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX

✨  Total time: 652.33s

※Outputsについては、公開されると面倒な部分はすべて伏せてます。

9. CloudFrontのURLにアクセス

BedrockChatStack.FrontendURL = https://XXXXXXXXXXXX.cloudfront.net

※セルフサインアップを無効化しているので、AWSマネジメントコンソールにあるCognito画面からアカウントを作成する必要があります。

10. ログイン後の画面

若干使用した後なので、会話履歴が残っていますが、ログインして真っ先に思ったのは、ChatGPTにUIを似せているんですかね?

備考

  • 自作でUIを作らなくても、AWSさんが用意してくれているので、ソースコードを少し修正すれば社内専用のチャットボットが作れそう。
  • ChatGPTとの比較はやっていませんが、スクリプトも作ってくれたので、結構使えそうな気がしています。
  • AuroraがServerlessだったり、DynamoDBがオンデマンドだったりするので、そのままがっつり使うのであれば、利用料金と必ずご相談ください。
  • ChatGPTにもありますが、RAG(社内ナレッジを提供させる)を活用したボットを作れるみたいなので、機会あれば試してみます。

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA