概要
今回の記事はこちらの勉強会用の資料になります。
Amazon Bedrock × Cloudflare AI Gateway ハンズオンを行う予定ですが、本記事はAWS側のお話をメインとさせていただいておりますので、
Cloudflare側の操作に関しては kameoncloud様
の記事を参照してください。
本ハンズオンは、Amazon Bedrockで多少の課金が発生いたします。ご了承ください。
Amazon BedrockとCloudflareのAI Gatewayについて
まず最初に軽く、二つのサービスの概要に触れたいと思います。
Amazon Bedrockについて
Amazon Bedrockは、AWSが提供する完全マネージド型の生成系AIサービスです。複数の基盤モデル(Foundation Models)を単一のAPIで利用できる点が特徴です。主な特徴は以下の通りです:
- 多様なモデル:Anthropic、AI21 Labs、Stability AI、Amazon Titan等、様々なプロバイダーのモデルを利用可能
- セキュリティとプライバシー:データはAWS内で処理され、外部に送信されない
- カスタマイズ機能:一部モデルでは、自社データでファインチューニングすることが可能
- 使いやすさ:単一のAPIで複数のモデルにアクセス可能
- コスト効率:従量課金制なので、無駄なコストを抑えることが出来る
Amazon Bedrockを使用することで、開発者は複雑なMLインフラストラクチャの管理なしに、高度なAI機能をアプリケーションに統合できます。
また、料金に関してですが、Amazon Bedrockは使用したモデルに応じて加算される料金単価が違います。
Cloudflare AI Gatewayについて
生成AIのアプリケーションの運用には、ログの分析だったり、コスト・パフォーマンスの管理や最適化、エラー処理などを考えていく必要があるかと思います。CloudflareのAI Gatewayは、これらの課題感を少なめなコード量で適応できるものになっています。
主な特徴をまとめると:
- 分析: リクエスト数、トークン数、実行コストなどのメトリクスを表示し、アプリケーションの使用状況を可視化できる。
- リアルタイムログ: リクエストやエラーの詳細をリアルタイムで確認できる。
- キャッシュ: リクエストをCloudflareのキャッシュから提供することで、速度を向上させ、コストを削減できる。
- レート制限: 一定時間内に受け取るリクエスト数を制限し、アプリケーションの負荷を管理できる。
- リクエスト再試行とフォールバック: エラー発生時に自動でリクエストを再試行し、代替モデルにフォールバックする機能もある。
という感じです。現在対応しているモデルは以下を参照してください。
ハンズオンの流れ
- AWSアカウントの作成と管理者権限を持つIAMユーザーの作成
(ハンズオンで使用可能なコンソール操作用のIAMユーザーを所持している方は不要) - Amazon Bedrockの設定
- IAMユーザーの作成
- Cloudflare側へ
- お片付け
0. AWS側でやることの一覧
- Amazon Bedrockで、
Amazon Titan Text G1 - Express
のモデルを許可しておく - AWS IAMで
AmazonBedrockFullAccess
のポリシーを持っているIAMユーザー(マネコン不要)を作成して、アクセスキーとシークレットアクセスキーをメモする
以上になります。上記のことがすんなりできる方は、kameoncloud様
の記事に飛んでください。
1. AWSアカウントの作成と管理者権限を持つIAMユーザーの作成
既にハンズオンで使用可能なコンソール操作のIAMユーザーを所持している方はこのステップを飛ばしてください。
クリックすると手順の詳細が展開されます。
1-1 AWSアカウントの作成
サインアップまでの手順は公式のほうで説明されておりますので、こちらを参照していただければと思います。
https://aws.amazon.com/jp/register-flow/
1-2 管理者権限を持つIAM ユーザーの作成
rootユーザーでの作業は安全性の観点から推奨されません。そこで、管理者権限を持つ IAM ユーザーを作成し、以降の作業はこのユーザーで行います。
-
左側のメニューから「ユーザー」を選択し、「ユーザーの作成」をクリックします。
-
ユーザー名を入力します(例:「admin-user」)。
-
「AWS マネジメントコンソールへのユーザーアクセスを提供する」にチェックを入れ、「パスワードの設定」で「自動生成されたパスワード」または「カスタムパスワード」を選択します。
-
「次へ」をクリックします。
-
「ポリシーを直接アタッチする」を選択し、検索バーに「AdministratorAccess」と入力します。表示された「AdministratorAccess」ポリシーにチェックを入れ、「次へ」をクリックします。
-
設定内容を確認し、「ユーザーの作成」をクリックします。
-
「.csv ファイルのダウンロード」をクリックし、認証情報をダウンロードします。このファイルは安全な場所に保管してください。
-
「ユーザーリストに戻る」をクリックしてユーザー作成プロセスを完了します。
1-3 新しい管理者ユーザーでログイン
- AWSマネジメントコンソールからサインアウトします。
- ログイン画面で、先ほどダウンロードした .csv ファイルに記載されている「コンソールサインイン URL」をクリックします。
- ユーザー名とパスワードを入力してログインします。
- 初回ログイン時にパスワードの変更を求められるので、新しいパスワードを設定します。
これで、管理者権限を持つ IAMユーザーの作成とログインが完了しました。以降の手順は、このユーザーを使用して実行してください。
セキュリティのため、rootユーザーの認証情報は安全に保管し、日常的な操作には使用しないでください。また、多要素認証(MFA)を有効にすることを強くお勧めします。
2. Amazon Bedrockの設定について
Amazon Bedrockを利用するための設定手順を説明します。
2-1 Amazon Titan Text G1 - Expressを有効にする
まず、Amazon Titan Text G1 - Expressのモデルを有効にします。
-
AWSマネジメントコンソールにログインします。
-
リージョンは「東京」を選択してください。
-
左側のメニューから「モデルアクセス」を選択してください。
-
「Enable specific models」をクリックし「Amazon Titan Text G1 - Express」を選択し「Next」、「Submit」を押してください。
2-2 modelIDを確認する
今回Cloudflare AI Gatewayとの連携にAmazon Bedrockのエンドポイントの情報が必要になります。エンドポイントの形式は、
https://bedrock-runtime.<region>.amazonaws.com/model/<modelID>/invoke
となるため、使用するmodelIDの情報が必要となります。その確認方法は以下の手順です。
2-3 モデルをちょっとだけ試してみる。
- Bedrockコンソールの左側メニューから「プレイグラウンド」の「チャット」をクリックしてください。
- 「モデルを選択」を押して、Titan Text G1 - Expressを選択して「適用」を押してください。
- あとは何か入力して試してみてください。
3. IAMユーザーの作成について
Cloudflare AI GatewayとAmazon Bedrockを連携するために、IAMユーザーを作成します。このユーザーには、Bedrockのモデルを呼び出すための権限を付与します。
3-1 IAMユーザーの作成手順
-
AWSマネジメントコンソールにログインし、「IAM」サービスを選択します。
-
左側のメニューから「ユーザー」を選択し、「ユーザーを作成」をクリックします。
-
ユーザー名を入力します。
cloudflare-handson-20240712
-
今回はマネジメントコンソールへのアクセスは必要ないので、そのまま「次へ」をクリックします。
-
「ポリシーを直接アタッチする」を選択し、
AmazonBedrockFullAccess
を検索してチェックを入れ、「次へ」をクリックします。
-
「ユーザーの作成」をクリックします。
-
ユースケースに「コマンドラインインターフェイス (CLI)」を選択し、「上記のレコメンデーションを理解し、アクセスキーを作成します。」にチェックをつけ「次へ」をクリックします。
-
説明タグは任意で入力可能ですが、今回はそのまま入力せずに「アクセスキーを作成」をクリックします。
-
表示された認証情報(アクセスキーとシークレットアクセスキー)をダウンロードまたはメモしてください。
*これらの認証情報は非常に重要です。安全に保管してください。
補足情報
ポリシー的にはInvokeModelをAllowしておけばいいので、AmazonBedrockFullAccessを使用したくない場合はこちらを利用してください。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "BedrockInvokeModelPolicy",
"Effect": "Allow",
"Action": "bedrock:InvokeModel",
"Resource": "arn:aws:bedrock:*::foundation-model/*"
}
]
}
4. Cloudflare AI Gatewayとの連携に必要な情報の整理
Cloudflare AI Gatewayとの連携に必要な情報は以下の通りです。
IAMユーザーの アクセスキー:
形式: 20文字の英数字(例:AKIAOAOSAIKOUEXAMPLE)
場所: ユーザー作成時にダウンロードしたCSVファイル、または認証情報画面に表示
IAMユーザーの シークレットアクセスキー:
形式: 40文字の英数字(例:wJalrXUtnHOGE/DEMOENG/uHbRfiCYEXAMPLEKEY)
場所: ユーザー作成時にダウンロードしたCSVファイル、または認証情報画面に表示
Amazon Bedrockのモデルを許可したAWSのリージョン:
形式: us-east-1、ap-northeast-1など
確認方法: AWSマネジメントコンソールの右上に表示されているリージョンを確認
備考: 今回は東京の「ap-northeast-1」を使用
Amazon Bedrockのエンドポイント:
形式: https://bedrock-runtime.<region>.amazonaws.com/model/<modelID>/invoke
確認方法: モデルIDに関しては、Bedrockコンソールの「ベースモデル」から、使用するモデルを選択し確認できます。または、以下のページを参照してください。
エンドポイントに関しては下記を参照してください。
備考:今回は、Amazon Titan Text G1 - Expressを使用するので、
https://bedrock-runtime.ap-northeast-1.amazonaws.com/model/amazon.titan-text-express-v1/invoke
こちらになります。
以上で、AWS側の設定手順は完了です。次に、Cloudflare AI Gatewayの設定手順に進みましょう。
5. Cloudflare側へ
こちらのURIに飛んでください。
6. お片付け
- 作成したIAMユーザーの
cloudflare-handson-20240712
を削除