こんにちは、森田です。
以下のアップデートで、Amazon Aurora PostgreSQL から Amazon Bedrock へ直接アクセスできるようになりました。
Bedrockへアクセスする際には、Auroraのロール設定とSQL関数を利用することで可能です。
本記事では、実際に Amazon Aurora PostgreSQL から Amazon Bedrock へ直接アクセスするまでの手順をご紹介します。
やってみる
Aurora PostgreSQL作成
Aurora PostgreSQLをコンソールから作成します。
2023/12/22時点では、以下のアップデートでサポートされたPostgreSQLのバージョンでBedrock(aws_ml2.0)の利用が可能です。
Aurora PostgreSQL (Compatible with PostgreSQL 15.5)を選択して、作成を行います。
IAMロール作成
続いて、IAMロールの作成を行います。
特にポリシーは付与せず、作成を行います。
ポリシーを設定
IAMロール作成後に、インラインポリシーを設定します。
Aurora から Bedrock の実行を行うため、BedrockのInvokeModelをAllowするポリシーを作成します。
bedrock-policy
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "bedrock:InvokeModel",
"Resource": "arn:aws:bedrock:*::foundation-model/*"
}
]
}
設定後は以下のようになります。
IAMロールをAuroraへ追加
コンソールで先ほど作成したAuroraを開き、接続とセキュリティにあるIAMロールの管理から作成したロールを指定します。
以上で、コンソールでの Aurora の設定は完了です。
続いて、データベースに接続を行い、拡張機能のインストールを行います。
拡張機能のインストール
psqlクライアントを利用して、データベースへ接続を行います。
psql -h エンドポイント名\
-U postgres \
-p 5432 \
-d データベース名 \
-W
接続後、以下のコマンドを実行して、aws_mlのインストールを行います。
=> CREATE EXTENSION IF NOT EXISTS aws_ml CASCADE;
NOTICE: installing required extension "aws_commons"
CREATE EXTENSION
Bedrockの実行が可能なaws_mlのバージョンは、2.0ですので、以下コマンドを実行して確認します。
=> select * FROM pg_available_extensions where name like 'aws%';
name | default_version | installed_version | comment
-------------+-----------------+-------------------+---------------------------------------------
aws_lambda | 1.0 | | AWS Lambda integration
aws_commons | 1.2 | 1.2 | Common data types across AWS services
aws_ml | 2.0 | 2.0 | ml integration
aws_s3 | 1.2 | | AWS S3 extension for importing data from S3
インストール後は以下のようにaws_bedrockを利用して、Bedrock へ直接アクセスすることが可能です。
SELECT aws_bedrock.invoke_model (
'amazon.titan-text-express-v1',
'application/json',
'application/json',
'{"inputText": "what is orange"}'
);
上記では、以下のように引数を指定しております。
- モデルの識別子:amazon.titan-text-express-v1
- モデルへの入力値(プロンプト): {"inputText": "what is orange"}
実行結果は以下となります。
実行結果
{
"inputTextTokenCount": 3,
"results": [
{
"tokenCount": 8,
"outputText": "\nAn orange is a citrus fruit.",
"completionReason": "FINISH"
}
]
}
実行結果からも正常にBedrockへアクセスが行われていることが確認できました。
さいごに
今回は、aws_bedrock.invoke_modelでモデルの実行を行いましたが、他にもaws_bedrock.invoke_model_get_embeddingsといった埋め込みベクトルを取得する関数も用意されています。
データベースから簡単にBedrockへアクセスができるようになるアップデートですので、ぜひチェックしてみてください。