

 Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の Python UDF は、2026 年 6 月 30 日まで引き続き機能します。詳細については、[ブログ記事](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)を参照してください。

# Amazon Redshift ML と Amazon Bedrock の統合
<a name="machine-learning-br"></a>

このセクションでは、Amazon Redshift ML と Amazon Bedrock の統合を使用する方法について説明します。この機能では、SQL を使用して Amazon Bedrock モデルを呼び出すことができ、Amazon Redshift データウェアハウスのデータを使用して、テキスト生成、感情分析、翻訳などの生成 AI アプリケーションを構築できます。

**Topics**
+ [Amazon Redshift ML と Amazon Bedrock の統合のための IAM ロールの作成または更新](#machine-learning-br-iam)
+ [Amazon Redshift ML と Amazon Bedrock の統合用の外部モデルの作成](#machine-learning-br-create)
+ [Amazon Redshift ML と Amazon Bedrock の統合用の外部モデルの使用](#machine-learning-br-use)
+ [Amazon Redshift ML と Amazon Bedrock の統合のためのプロンプトエンジニアリング](#machine-learning-br-prompt)

## Amazon Redshift ML と Amazon Bedrock の統合のための IAM ロールの作成または更新
<a name="machine-learning-br-iam"></a>

このセクションでは、Amazon Redshift ML と Amazon Bedrock の統合で使用する IAM ロールの作成方法について説明します。

Amazon Redshift ML と Amazon Bedrock の統合で使用する IAM ロールに次のポリシーを追加します。
+ `AmazonBedrockFullAccess`

Amazon Redshift が他のサービスとやり取りするロールを引き受けることを許可するには、IAM ロールに以下の信頼ポリシーを追加します。

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
      {
         "Effect": "Allow",
         "Principal": {
            "Service": [
               "redshift.amazonaws.com"
            ]
         },
         "Action": "sts:AssumeRole"
      }
   ]
}
```

------

クラスターまたは名前空間が VPC にある場合は、「[Amazon Redshift ML 管理者によるクラスターと設定のセットアップ](getting-started-machine-learning.md#admin-setup)」の手順に従います。

より制限の厳しいポリシーが必要な場合は、以下のページで指定された Amazon Bedrock アクセス許可のみを含むポリシーを作成できます。
+ [Amazon Redshift ML 管理者によるクラスターと設定のセットアップ](getting-started-machine-learning.md#admin-setup)
+ [Amazon Redshift 機械学習 (ML) を使用するために必要なアクセス許可](https://docs.aws.amazon.com/redshift/latest/mgmt/redshift-iam-access-control-identity-based.html#iam-permission-ml?)

IAM ロールの作成の詳細については、「AWS Identity and Access Management ユーザーガイド」の「[IAM ロールの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html)」を参照してください。**

## Amazon Redshift ML と Amazon Bedrock の統合用の外部モデルの作成
<a name="machine-learning-br-create"></a>

このセクションでは、Amazon Redshift データウェアハウス内で Amazon Bedrock のインターフェイスとして使用する外部モデルを作成する方法について説明します。

Amazon Redshift から Amazon Bedrock モデルを呼び出すには、まず `CREATE EXTERNAL MODEL` コマンドを実行する必要があります。このコマンドは、データベースに外部モデルオブジェクトと、Amazon Bedrock でテキストコンテンツを生成するために使用される関連するユーザー関数を作成します。

次のコード例は、基本的な `CREATE EXTERNAL MODEL` コマンドを示しています。

```
CREATE EXTERNAL MODEL llm_claude
FUNCTION llm_claude_func
IAM_ROLE '<IAM role arn>'
MODEL_TYPE BEDROCK
SETTINGS (
   MODEL_ID 'anthropic.claude-v2:1',
   PROMPT 'Summarize the following text:');
```

`CREATE EXTERNAL MODEL` コマンドには、メッセージをサポートするすべての基盤モデル (FM) 向けの Amazon Bedrock との統一され一貫したインターフェイスがあります。これは、 `CREATE EXTERNAL MODEL` コマンドを使用する場合、またはリクエストタイプを `UNIFIED` に明示的に指定する場合のデフォルトのオプションです。詳細については、「Amazon Bedrock API ドキュメント」の「[Converse API documentation](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Converse.html)」を参照してください。**

FM がメッセージをサポートしていない場合は、次の例で示すように、`request_type` 設定を `RAW` に設定する必要があります。`request_type` を `RAW` に設定する場合、選択した FM に基づいて推論関数を使用する際、Amazon Bedrock に送信するリクエストを作成する必要があります。次の例を実行する前に、Amazon Bedrock で Titan Text G1 – Express モデルへのアクセスを有効にしてください。

```
CREATE EXTERNAL MODEL titan_raw
FUNCTION func_titan_raw
IAM_ROLE '<IAM role arn>'
MODEL_TYPE BEDROCK
SETTINGS (
   MODEL_ID 'amazon.titan-text-express-v1',
   REQUEST_TYPE RAW,
   RESPONSE_TYPE SUPER);
```

合計トークンなど、入力リクエストに関する詳細情報が必要な場合は、モデルの作成時に `RESPONSE_TYPE` が `super` になるよう要求できます。

```
CREATE EXTERNAL MODEL patient_recommendations_v2
FUNCTION patient_recommendations_func_v2
IAM_ROLE '<IAM role arn>'
MODEL_TYPE BEDROCK
SETTINGS (
   MODEL_ID 'anthropic.claude-v2',
   PROMPT 'Generate personalized diet plan for following patient:',
   RESPONSE_TYPE SUPER);
```

`CREATE EXTERNAL MODEL` コマンドの `PROMPT` パラメータは静的プロンプトです。アプリケーションで動的プロンプトが必要な場合は、推論関数を使用する際に指定する必要があります。詳細については、以下を参照してください。[Amazon Redshift ML と Amazon Bedrock の統合のためのプロンプトエンジニアリング](#machine-learning-br-prompt)

`CREATE EXTERNAL MODEL` ステートメントとそのパラメータ、および設定の詳細については、「[CREATE EXTERNAL MODEL](r_create_external_model.md)」を参照してください。

## Amazon Redshift ML と Amazon Bedrock の統合用の外部モデルの使用
<a name="machine-learning-br-use"></a>

このセクションでは、提供されたプロンプトに応答して外部モデルを呼び出してテキストを生成する方法について説明します。外部モデルを呼び出すには、`CREATE EXTERNAL MODEL` で作成した推論関数を使用します。

**Topics**
+ [`UNIFIED` リクエストタイプモデルによる推論](#machine-learning-br-use-unified)
+ [`RAW` リクエストタイプモデルによる推論](#machine-learning-br-use-raw)
+ [リーダーのみの関数としての推論関数](#machine-learning-br-use-leader)
+ [推論関数の使用に関する注意事項](#machine-learning-br-use-usage)

### `UNIFIED` リクエストタイプモデルによる推論
<a name="machine-learning-br-use-unified"></a>

`UNIFIED` リクエストタイプのモデルを使用した推論関数には、関数に順番に渡される次の 3 つのパラメータがあります。
+ **入力テキスト** (必須): このパラメータは、Amazon Redshift が Amazon Bedrock に渡す入力テキストを指定します。
+ **推論設定**と**追加のモデルリクエストフィールド** (オプション): Amazon Redshift はこれらのパラメータを Converse モデル API の対応するパラメータに渡します。

次のコード例は、`UNIFIED` タイプの推論関数の使用方法を示しています。

```
SELECT llm_claude_func(input_text, object('temperature', 0.7, 'maxtokens', 500))
   FROM some_data;
```

### `RAW` リクエストタイプモデルによる推論
<a name="machine-learning-br-use-raw"></a>

`RAW` リクエストタイプのモデルを使用した推論関数には、`SUPER` データタイプのパラメータが 1 つだけあります。このパラメータの構文は、使用する Amazon Bedrock モデルによって異なります。

次のコード例は、`RAW` タイプの推論関数の使用方法を示しています。

```
SELECT llm_titan_func(
    object(
        "inputText", "Summarize the following text: " | input_text,
        "textGenerationConfig", object("temperature", 0.5, "maxTokenCount", 500)
    )
)
FROM some_data;
```

### リーダーのみの関数としての推論関数
<a name="machine-learning-br-use-leader"></a>

Amazon Bedrock モデルの推論関数は、それらを使用するクエリがテーブルを参照しない場合、リーダーノードのみの関数として実行できます。これは、LLM にすぐに質問をしたい場合に役立ちます。

次のコード例は、リーダーのみの推論関数の使用方法を示しています。

```
SELECT general_titan_llm_func('Summarize the benefits of LLM on data analytics in 100 words');
```

### 推論関数の使用に関する注意事項
<a name="machine-learning-br-use-usage"></a>

Amazon Redshift ML と Amazon Bedrock の統合で推論関数を使用する場合は、以下の点に注意してください。
+ すべての Amazon Bedrock モデルのパラメータ名では、大文字と小文字が区別されます。パラメータがモデルに必要なパラメータと一致しない場合、Amazon Bedrock はアラートなしにパラメータを無視することがあります。
+ 推論クエリのスループットは、Amazon Bedrock がさまざまなリージョンで提供するさまざまなモデルのランタイムクォータによって制限されます。詳細については、「Amazon Bedrock ユーザーガイド」の「[Quotas for Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/quotas.html)」を参照してください。**
+ 保証された一貫したスループットが必要な場合は、Amazon Bedrock から必要なモデルのプロビジョニングされたスループットを取得することを検討してください。詳細については、「Amazon Bedrock ユーザーガイド」の「[Increase model invocation capacity with Provisioned Throughput in Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/prov-throughput.html)」を参照してください。**
+ 大量のデータを含む推論クエリでは、スロットリング例外が発生する可能性があります。これは、Amazon Bedrock のランタイムクォータが限られているためです。Amazon Redshift は複数回リクエストを再試行しますが、プロビジョニングされていないモデルのスループットは可変である可能性があるため、クエリはスロットリングされる可能性があります。
+ データが少量にもかかわらず Amazon Bedrock によるスロットリング例外 (`Too many requests, please wait before trying again.` など) が発生する場合は、Amazon Bedrock アカウントの **[サービスクォータ]** でクォータを確認します。適用されているアカウントレベルのクォータが、使用しているモデルに対する **InvokeModel** リクエストの AWS デフォルトクォータ値と少なくとも同じであることを確認してください。

## Amazon Redshift ML と Amazon Bedrock の統合のためのプロンプトエンジニアリング
<a name="machine-learning-br-prompt"></a>

このセクションでは、外部モデルで静的プロンプトを使用する方法について説明します。

外部モデルで静的プレフィックスおよび静的サフィックスプロンプトを使用するには、`CREATE EXTERNAL MODEL` ステートメントの `PROMPT` および `SUFFIX` パラメータを使用してそれらを指定します。これらのプロンプトは、外部モデルを使用してすべてのクエリに追加されます。

次の例は、外部モデルにプレフィックスおよびサフィックスプロンプトを追加する方法を示しています。

```
CREATE EXTERNAL MODEL llm_claude
FUNCTION llm_claude_func
IAM_ROLE '<IAM role arn>'
MODEL_TYPE BEDROCK
SETTINGS (
   MODEL_ID 'anthropic.claude-v2:1',
   PROMPT 'Summarize the following text:',
   SUFFIX 'Respond in an analytic tone');
```

動的プロンプトについては、関数入力で連結して推論関数を使用する際に指定できます。次の例は、推論関数で動的プロンプトを使用する方法を示しています。

```
SELECT llm_claude_func('Summarize the following review:' | input_text | 'The review should have formal tone.')
FROM some_data
```