Amazon Bedrock AIコネクタ構成ガイド
この記事では、Amazon Bedrock AIコネクタの構成方法について説明します。
AWS Bedrockでのロールと権限の作成
Tealiumは、サーバーサイドコネクタからBedrockモデルおよびリソースを使用するために、AWSアカウント内のAmazon Bedrockへの接続を必要とします。接続認証には2つのオプションがあります:
アクセスキーとシークレットキーの認証情報
AWSアクセスキーとシークレットキーを作成するには:
- AWS管理コンソールにログインし、IAM(Identity and Access Management)サービスに移動します。
- ユーザーをクリックし、ユーザーを追加をクリックします。
- ユーザー名を入力します。例:
TealiumBedrockUser。 - ユーザーにポリシーをアタッチします。詳細については、ポリシーのアタッチを参照してください。
- キーを作成します。
- セキュリティ認証情報タブに移動し、アクセスキーの作成をクリックします。
- アクセスキーIDとシークレットアクセスキーをコピーし、安全に保存します。
STS認証情報
STS認証情報を作成するには:
- AWS管理コンソールにログインし、IAM(Identity and Access Management)サービスに移動します。
- ロールをクリックし、ロールの作成をクリックします。
- 信頼されたエンティティタイプで、AWSアカウントを選択します。
- 他のAWSアカウントを選択し、TealiumアカウントID
757913464184を入力します。 - (オプション)外部IDが必要のチェックボックスを選択し、使用する外部IDを指定します。外部IDは256文字までの長さで、英数字(
A-Z,a-z,0-9)およびハイフン(-)、アンダースコア(_)、ピリオド(.)などの記号を含むことができます。 - ロールに名前を付けます。ロール名は
TealiumBedrockで始まる必要があります。例:TealiumBedrock-RoleName。 - ロールにポリシーをアタッチします。詳細については、ポリシーのアタッチを参照してください。
- 信頼ポリシーを作成します。
- 信頼関係タブに移動し、信頼関係の編集をクリックします。
- 作成したロールを使用するために特定の外部IDが信頼ポリシーに許可されていることを確認し、Tealiumの本番アカウントIDが
757913464184であることを確認します。 - Tealiumへの接続のための
EXTERNAL_ID値を構成します。IDは256文字までの長さで、英数字(A-Z,a-z,0-9)およびハイフン(-)、アンダースコア(_)、ピリオド(.)などの記号を含むことができます。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::757913464184:root"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "EXTERNAL_ID"
}
}
}
]
}
ポリシーのアタッチ
AWS管理コンソールで、コネクタのアクションに必要なポリシーを入力します。各コネクタアクションには次のポリシーが必要です:
Bedrock AIプロンプトにデータを送信
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ListModels",
"Effect": "Allow",
"Action": [
"bedrock:ListFoundationModels"
],
"Resource": "*"
},
{
"Sid": "InvokeModel",
"Effect": "Allow",
"Action": [
"bedrock:InvokeModel"
],
"Resource": "*"
}
]
}
Bedrock AI管理プロンプトにデータを送信
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "RenderManagedPrompt",
"Effect": "Allow",
"Action": [
"bedrock:RenderPrompt"
],
"Resource": "*"
}
]
}
Bedrock AIフローにデータを送信
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "BedrockFlowInvoke",
"Effect": "Allow",
"Action": [
"bedrock:InvokeFlow"
],
"Resource": "arn:aws:bedrock:<REGION>:<ACCOUNT_ID>:flow/*"
}
]
}
ポリシーを入力してアタッチするには:
- AWSコンソールでIAM > ポリシーに移動します。
- ポリシーの作成をクリックします。
- ポリシーエディタでJSONタブを選択します。
- エディタにコネクタアクションのポリシーを貼り付けます。
- 検証警告を解決し、次へをクリックします。
- ポリシー名(例:
TealiumCustomAccessPolicy)とオプションの説明を入力します。 - ポリシーの作成をクリックします。
- ロールに移動します。
- 変更したいロール名をクリックします。
- 権限タブで権限の追加 > ポリシーのアタッチをクリックします。
- 検索ボックスに新しいカスタムポリシーの名前を入力します。
- そのポリシーの横のボックスを選択します。
- ポリシーのアタッチをクリックします。
構成
コネクタマーケットプレースに移動し、新しいコネクタを追加します。コネクタの追加方法についての一般的な指示については、コネクタについてを参照してください。
コネクタを追加した後、次の構成を構成します:
- 認証タイプ:(必須)使用する認証のタイプ。
- アクセスキー
- アクセスキー:(必須)IAMユーザーのアクセスキーを提供します。関連するIAMポリシー(IAMユーザーまたは想定されるロール用)は、データを送信したいストリームに対して
bedrock:PutRecord権限を付与する必要があります。 - シークレットキー:(必須)IAMユーザーのシークレットキーを提供します。
- アクセスキー:(必須)IAMユーザーのアクセスキーを提供します。関連するIAMポリシー(IAMユーザーまたは想定されるロール用)は、データを送信したいストリームに対して
- STS
- STS - Assume Role: ARN:(必須)想定されるロールに割り当てられたAmazonリソース名。詳細については、AWS: IAMロールへの切り替えを参照してください。
- STS - Assume Role: Session Name:(必須)想定されるロールセッションの一意の識別子。
- STS - Assume Role: External ID:(オプション)第三者が顧客のアカウントでロールを想定する際に使用する一意の識別子。詳細については、AWS: 第三者所有のAWSアカウントへのアクセスを参照してください。
- アクセスキー
- リージョン:(必須)リージョンを選択します。
プロンプト情報
Tealiumから送信されたBedrock AIプロンプト、Amazon Bedrock内で管理されたプロンプト、またはフローで使用されるプロンプトは、Tealiumが応答を正しく処理するために、有効なJSONのみを返すように作成する必要があります。次のガイドラインを使用してください:
- マップされたパラメータを参照するには、二重の中括弧を使用します。例:
{{tealium_account}},{{tealium_profile}},{{tealium_visitor_id}},{{visitor_json}}。 - モデルに説明、マークダウン、コードフェンス、JSONの前後に追加テキストがない有効なJSONのみを返すように明確に指示します。
- 出力を安全に解析できるように、期待する正確なJSON構造(フィールド名、必要なキー、値のタイプ)を定義します。
- モデルにTealiumフィールドを明示的に返すように指示します(例:
tealium_account,tealium_profile,tealium_visitor_id,tealium_event)。 - 曖昧な指示を避けます。繰り返し呼び出しで同じJSONスキーマを生成する決定論的なプロンプトを書きます。
- 最良の結果を得るために、次のような行を含めます:“プローズ、バックティック、追加のフォーマットなしで、単一のJSONオブジェクトのみを返してください。”
プロンプトの例
あなたは、有効なJSONのみを返すAIアシスタントです。
JSONオブジェクトの外に説明、マークダウン、コードフェンス、またはその他のテキストを含めないでください。
以下の訪問データを使用して、このセッションでの訪問の変換可能性を表す0から100の間の数値スコアを計算します。
次の構造の単一のJSONオブジェクトのみを返します:
{
"tealium_account": "{{tealium_account}}",
"tealium_profile": "{{tealium_profile}}",
"tealium_visitor_id": "{{tealium_visitor_id}}",
"tealium_event": "bedrock_ai_insight",
"visitor_score": <0から100の間の整数>
}
訪問データ:
{{visitor_json}}
応答は以下のようになります:
{
"metrics": {
"latencyMs": 1272
},
"output": {
"message": {
"content": [
{
"text": "{\"tealium_account\":\"your-account\",\"tealium_profile\":\"main\",\"tealium_visitor_id\":\"__your-account_main__5574_438850__\",\"tealium_event\":\"bedrock_ai_insight\",\"visitor_score\":85}"
}
],
"role": "assistant"
}
},
"stopReason": "end_turn",
"usage": {
"inputTokens": 8811,
"outputTokens": 65,
"serverToolUsage": {},
"totalTokens": 8876
}
}
Amazon Bedrock Flows
Amazon Bedrock Flowsは、プロンプト、知識ベース、Lambda関数、条件ロジック、外部データを組み合わせた複数ステップのAIオーケストレーションです。フローは、複雑なAI意思決定を単一のAPIエンドポイントに変換するために、入力データがプロンプト、エンリッチメントステップ、ビジネスロジック、最終出力を通過する方法を定義します。
Send Data to Bedrock Flowアクションを使用するには、Tealiumからの入力を受け入れ、AIステップを処理し、Lambda関数を介してTealiumに結果を送り返すAmazon Bedrockのフローを作成します。
以下のセクションでは、フローの必須コンポーネントとオプションコンポーネントについて説明します。
ステップ1 - フロー入力の定義
すべてのフローは入力ノードから始まります。このノードは、Tealiumがフローに送信するJSONドキュメントを表します。
Tealiumは、次の例に似た形式でマッピングされた属性を送信します:
"document": {
"tealium_account": "services-example",
"tealium_profile": "ai",
"tealium_visitor_id": "1234567890abc",
"tealium_event": "visitor_ai_score",
"visitor_profile": {
"lifetime_value": "1200",
"total_orders": 5,
...
}
}
フロー内で、$.data.attribute_nameを使用してフィールドを参照します。前述の例に基づいて:
$.data.tealium_account$.data.tealium_profile$.data.tealium_visitor_id$.data.tealium_event$.data.visitor_profile.lifetime_value$.data.visitor_profile.total_orders
ステップ2 - プロンプトノードにデータをマッピングする(必須)
次に、AI出力(スコア、推奨事項、または決定など)を生成するためのプロンプトノードを追加します。
プロンプトノード内で:
- プロンプトテキストを構成します。
{{fieldname}}形式を使用して変数を挿入します。例えば、{{tealium_account}}。- Bedrockモデルを選択します。
- プロンプトの出力として有効なJSONを返します。
例については、上記のプロンプトの例セクションを参照してください。
ステップ3 - (オプション)知識ベースの取得を追加
Amazon Bedrock Knowledge Basesは、Amazon S3、Amazon Redshift、またはAmazon OpenSearch Serviceなどの外部データソースにAIワークフローを接続することを可能にします。知識ベースはドキュメントを保存およびインデックス化し、プロンプト実行中の取得およびグラウンディングに使用可能にします。このステップはオプションですが、パーソナライゼーション、レコメンデーション、またはコンテキストに基づく意思決定には価値があります。
知識ベースを接続した後、{{$.kbResults}}のようなフィールドを使用して、知識ベースの結果をプロンプトに渡すことができます。
知識ベースに関する詳細は、Amazon Bedrock: Retrieve data and generate AI responses with Amazon Bedrock Knowledge Basesを参照してください。
知識ベースの作成に関する詳細は、Amazon Bedrock: Create a knowledge base by connecting to a data source in Amazon Bedrock Knowledge Basesを参照してください。
ステップ4 - Tealiumへの結果を送信するためのLambdaノードを追加(Tealium統合には必須)
プロンプトが構造化されたJSONを生成した後、その結果をプロファイルエンリッチメントのためにTealiumに送り返す必要があります。
Lambdaノードを追加します:
- プロンプトノードからの出力(
$.data)を受け取ります。 - JSONを解析します。
- それをTealium Collectに投稿します:
POST https://collect.tealiumiq.com/event。 - 次のものを含みます:
tealium_accounttealium_profiletealium_visitor_idtealium_event(ユーザー定義)- あなたのAI出力フィールド(例:
visitor_score)
提供されたLambdaの例を使用するか、独自のものを構築してください。
ステップ5 - フロー出力ノードを追加
TealiumはフローのAPIレスポンスを処理しませんが、出力ノードはフローを完了するために必要です。
Lambda出力をFlowOutputNodeに接続することはTealiumの処理には影響しませんが、次のツールでフローが動作することを確認するのに役立ちます:
- Bedrockコンソールでデバッグ。
- Lambda関数からのエラーを表示。
- 検証のための最終JSON結果を検査。
- Traceを使用してTealiumで出力を表示。
Lambdaの例
以下は、プロンプト出力を受け入れ、JSONを解析し、そのデータをTealium Collectエンドポイントに送信してTealiumでエンリッチメントとアクティベーションを行うLambdaの例です。
さまざまなデータ構造を考慮したフォールバックが含まれています。必要に応じて書き換えてください。
const COLLECT_URL = process.env.COLLECT_URL || "https://collect.tealiumiq.com/event";
// ---- Robust extractor for Bedrock Flow Lambda wrapper ----
function extractInputByName(event, name) {
const arr = event?.node?.inputs;
if (Array.isArray(arr)) {
const hit = arr.find(i => i?.name === name);
if (hit && typeof hit.value === "string") return hit.value; // expected: codeHookInput (STRING)
if (hit && typeof hit.value === "object") return JSON.stringify(hit.value); // if wired as Object by mistake
}
return undefined;
}
function extractJsonStringFromEvent(event) {
// Standard pin
the fromStandardPin = extractInputByName(event, "codeHookInput");
if (typeof fromStandardPin === "string") return fromStandardPin;
// First STRING input as fallback
the anyString = event?.node?.inputs?.find?.(i => typeof i?.value === "string")?.value;
if (typeof anyString === "string") return anyString;
// Legacy fallbacks (other shapes)
if (typeof event?.codeHookInput === "string") return event.codeHookInput;
if (typeof event?.document === "string") return event.document;
the doc = event?.fields?.[0]?.content?.document;
if (typeof doc === "string") return doc;
if (typeof event === "string") return event;
throw new Error("Could not find JSON string in event");
}
// ----------------------------------------------------------
export const handler = async (event) => {
try {
const jsonStr = extractJsonStringFromEvent(event); // raw JSON string from Prompt
// Validate syntax (no double-stringify)
JSON.parse(jsonStr);
//Validate required fields
const required = ["tealium_account", "tealium_profile", "tealium_visitor_id"];
for (const key of required) {
if (!Object.prototype.hasOwnProperty.call(obj, key)) {
throw new Error(`Missing required field '${key}' in model output`);
}
}
const r = await fetch(COLLECT_URL, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: jsonStr
});
if (!r.ok) {
const txt = await r.text().catch(() => "");
throw new Error(`Collect failed ${r.status}: ${txt}`);
}
return jsonStr;
} catch (err) {
console.error("Shim error:", err);
return JSON.stringify({ ok: false, error: String(err.message || err) });
}
};
アクション
| アクション名 | AudienceStream | EventStream |
|---|---|---|
| Bedrock AIモデルへのプロンプト送信 | ✓ | ✗ |
| Bedrock AI管理プロンプトへのデータ送信 | ✓ | ✗ |
| Bedrock AIワークフローへのデータ送信 | ✓ | ✗ |
アクションの名前を入力し、アクションタイプを選択してください。
以下のセクションでは、各アクションのパラメータとオプションの構成方法について説明します。
Bedrock AIモデルへのプロンプト送信
パラメータ
| パラメータ | 説明 |
|---|---|
| モデルIDまたは推論プロファイルARN | Amazon Bedrockモデルを選択するか、AI応答を生成するために使用する推論プロファイルARNを入力します。 |
| プロンプトパラメータ | プロンプト内で置き換えるプレースホルダーにパラメータをマッピングします。コネクタはデフォルト変数 {{tealium_account}}、{{tealium_profile}}、{{tealium_visitor_id}} を提供します。これらはマッピングで上書き可能です。 |
| 訪問プロファイルの追加 | プロンプトテンプレートの変数として訪問プロファイルを許可するかどうか。 |
| 現在の訪問の追加 | {{visitor_profile}} オブジェクトに現在の訪問データを許可するかどうか。 |
| プロンプト |
|
| デバッグモード | デバッグモードが有効の場合、コネクタはTealium Collectに送信する前に生のBedrock応答を受け入れます。完全な処理を有効にする前に、応答形式を検証するためにTraceを使用します。 |
Bedrock AI管理プロンプトへのデータ送信
| パラメータ | 説明 |
|---|---|
| プロンプトARN | (必須) Bedrockプロンプト管理テンプレートのARNを提供します。プロンプトARNはBedrockのプロンプト詳細の概要セクションで見つけることができます。 |
| プロンプトデータ |
|
| 訪問プロファイルの追加 | プロンプト変数として訪問プロファイルを許可するかどうか。 |
| 現在の訪問の追加 | visitor_profile オブジェクトに現在の訪問データを許可するかどうか。 |
| デバッグモード | デバッグモードが有効の場合、コネクタはTealium Collectに送信する前に生のBedrock応答を受け入れます。完全な処理を有効にする前に、応答形式を検証するためにTraceを使用します。 |
Bedrock AIワークフローへのデータ送信
| パラメータ | 説明 |
|---|---|
| BedrockフローエイリアスARN | (必須) このアクションが呼び出すBedrockフローエイリアスのARNを入力します。liveのようなエイリアスを作成し、ここでそのARNを使用することをお勧めします。 |
| フローデータ |
|
| 訪問プロファイルの追加 | フロー入力に完全な訪問プロファイルを visitor_profile JSONオブジェクトとして追加するかどうか。 |
| 現在の訪問の追加 | 同じ visitor_profile オブジェクトに現在の訪問の属性をマージするかどうか。 |
最終更新日 :: 2026年February月4日