📝

【AWS】Amazon Bedrock Studio(プレビュー)を試してみる【生成 AI】

2024/07/03に公開

AWS 管理コンソールへの権限がない人にも IAM Identity Center のユーザさえあれば Bedrock と周辺機能を利用できる Bedrock Studio を試してみました。

https://docs.aws.amazon.com/bedrock/latest/userguide/administer-create-workspace.html#administer-creating-roles

Step 1: Set up AWS IAM Identity Center for Amazon Bedrock Studio

AWS Identity Center must be enabled in the same AWS Region as your Bedrock Studio workspace. Currently, AWS Identity Center can only be enabled in a single AWS Region.

Studio は IAM IdC と同一リージョンである必要がある。現状はバージニア北部とオレゴンリージョンのみ対応。
既に有効化済のため割愛。IAM IdC の有効化は管理アカウントで実行する必要があるので注意。

Step 2: Create permissions boundary, service role, and provisioning role

手動でパーミッションバウンダリーやロールを作成するか、以下のスクリプトを利用してセットアップを行う。

https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/python/example_code/bedrock/scenarios/bedrock_studio_bootstrapper.py

今回はスクリプトを CloudShell 経由で実行する。

curl -O https://raw.githubusercontent.com/awsdocs/aws-doc-sdk-examples/main/python/example_code/bedrock/scenarios/bedrock_studio_bootstrapper.py

以下のような Python ファイルを用意して実行。

import bedrock_studio_bootstrapper

default_bootstrapper = bedrock_studio_bootstrapper.BedrockStudioBootstrapper(region="us-west-1")
default_bootstrapper.run()

実行結果

2024-07-03 01:08:11 INFO: ======================================================
2024-07-03 01:08:11 INFO: Preparing the Bootstrapper for Bedrock Studio
2024-07-03 01:08:11 INFO: ======================================================
2024-07-03 01:08:11 INFO: Initializing AWS session...
2024-07-03 01:08:11 INFO: --------------------------------------------------------------------------------
2024-07-03 01:08:12 INFO: Account ID: ************
2024-07-03 01:08:12 INFO: AWS Region: us-west-1
2024-07-03 01:08:12 INFO: User/Role ARN: arn:aws:sts::************:role/Admin
2024-07-03 01:08:12 INFO: ======================================================
2024-07-03 01:08:12 INFO: Using default configuration:
2024-07-03 01:08:12 INFO: ------------------------------------------------------
2024-07-03 01:08:12 INFO: - Provisioning role name: DataZoneBedrockProvisioningRole
2024-07-03 01:08:12 INFO: - Service role name: DataZoneBedrockServiceRole
2024-07-03 01:08:12 INFO: ================================================================================
2024-07-03 01:08:12 INFO: Running Bootstrapper for Bedrock Studio ...
2024-07-03 01:08:12 INFO: ======================================================
2024-07-03 01:08:12 INFO: Step 1: Create Provisioning Role.
2024-07-03 01:08:12 INFO: ------------------------------------------------------
2024-07-03 01:08:12 INFO: Creating role: 'DataZoneBedrockProvisioningRole'...
2024-07-03 01:08:12 INFO: Role created: arn:aws:iam::************:role/DataZoneBedrockProvisioningRole
2024-07-03 01:08:12 INFO: Attaching inline policy to 'DataZoneBedrockProvisioningRole'...
2024-07-03 01:08:13 INFO: Inline policy successfully attached.
2024-07-03 01:08:13 INFO: ======================================================
2024-07-03 01:08:13 INFO: Step 2: Create Service Role.
2024-07-03 01:08:13 INFO: ------------------------------------------------------
2024-07-03 01:08:13 INFO: Creating role: 'DataZoneBedrockServiceRole'...
2024-07-03 01:08:13 INFO: Role created: arn:aws:iam::************:role/DataZoneBedrockServiceRole
2024-07-03 01:08:13 INFO: Attaching inline policy to 'DataZoneBedrockServiceRole'...
2024-07-03 01:08:13 INFO: Inline policy successfully attached.
2024-07-03 01:08:13 INFO: ================================================================================
2024-07-03 01:08:13 INFO: Step 3: Create Permission Boundary.
2024-07-03 01:08:13 INFO: --------------------------------------------------------------------------------
2024-07-03 01:08:13 INFO: Creating permission boundary: 'AmazonDataZoneBedrockPermissionsBoundary'...
2024-07-03 01:08:13 INFO: Permission boundary policy created.
2024-07-03 01:08:13 INFO: ================================================================================
2024-07-03 01:08:13 INFO: All resources have been created.

Step 3: Create an Amazon Bedrock Studio workspace

以下のように設定しました。
サービスロールと Provisioning role は Step 2 で作成したものを利用します。
スクリプト使っている場合は DataZoneBedrockServiceRoleDataZoneBedrockProvisioningRole という名前になります。

無事に作成できました。IAM IdC 利用するので管理アカウントでしか作成できないかと思いましたがメンバーアカウントでも問題ありませんでした。

とりあえず URL 踏んでみるとカッコいい感じの UI が出てきました。

IdC のユーザと Bedrock Studio のアプリケーションを紐づける必要があるので次のステップを行います。

Step 4: Add workspace members

↓のワークスペース Name を選択します。(以下だと test_workspace)

User management タブから ユーザーまたはグループを追加 を選択します。

今回はユーザを追加して 確認 を選択します。

ユーザが追加されました。

カッコいい UI に戻って Sign in with SSO を選択します。

IAM IdC のログインを行うと Studio に入ることができました!

さすがに Bedrock Studio については知らないようでがっつりハルシネーションです。(プロンプト入力中に漢字変換して Enter 押しても送信されなかったのでそこの UX は Amazon Q Business と違って問題なさそうです)

右上の Build を選択すると自動的にプロジェクトが作成されます。

Create app でアプリケーション作成できます。

アプリケーションでは、システムプロンプトやサンプルのプロンプト(プロンプトライブラリ的な)等を保存することができます。Data の部分から KnowledgeBase が作成できたり Functions から Agents が作成できるようです。

FAQ

  • Q: Bedrock Studio の起動は管理アカウントで行う必要がある?
    • A: No. IAM Identity Center は管理アカウントで有効化する必要がある(アカウントインスタンスは不可)が Studio はメンバーアカウントで問題ない。ユーザと Bedrock Studio の紐付けもメンバーアカウント側で可能
  • Q: Converse API は利用できる?
    • A: No. Converse API 利用してドキュメントアップロード等利用する場合は SDK 経由で InvokeModel 叩くしかなさそう。

Discussion