Aurora PostgreSQL から Amazon Bedrock へ直接アクセスできるようになりました

2023.12.22

こんにちは、森田です。

以下のアップデートで、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へアクセスができるようになるアップデートですので、ぜひチェックしてみてください。

参考