tl;dr
タイトル通りです。
Bedrock Prompt Managementはバージョン指定しなかったらドラフト版が適用されます。
はじめに
小ネタです。自分もGPTもClaudeも、ドキュメントから記載を見つけられなかったので備忘として書いておきます。
Bedrock Prompt Managementでプロンプトを管理しているとして、このプロンプトを用いる際にバージョン指定しなかったらどうなるのかという実験をしました。
モチベーションとしては、自動で最新バージョンを取得してくれると嬉しいな~という気持ちでした。
プロンプトを更新するたびにバージョン指定し直すのが面倒だからです。
結果としてはドラフト版が適用されたので、必ずバージョンを指定する必要があります。
実際に試す
まず以下テンプレートをデプロイします。
これでBedrock Prompt ManagementとLambda関数(とサービスロール)が作成されます。
AWSTemplateFormatVersion: '2010-09-09'
Description: 'Test Bedrock Prompt Management with Lambda'
Resources:
# Bedrock Prompt Management
TestPrompt:
Type: AWS::Bedrock::Prompt
Properties:
Name: 'test-bedrock-prompt'
Description: 'Test prompt for Bedrock Prompt Management'
DefaultVariant: 'default-variant'
Variants:
- Name: 'default-variant'
TemplateType: 'CHAT'
TemplateConfiguration:
Chat:
System:
- Text: |
回答する際に、必ず最初に「これはバージョン1です」と回答してください。
Messages:
- Role: user
Content:
- Text: '{{input_text}}'
InputVariables:
- Name: 'input_text'
ModelId: 'jp.anthropic.claude-haiku-4-5-20251001-v1:0'
InferenceConfiguration:
Text:
Temperature: 0.7
MaxTokens: 2000
# IAM Role for Lambda
LambdaExecutionRole:
Type: AWS::IAM::Role
Properties:
RoleName: 'test-bedrock-prompt-lambda-role'
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service: lambda.amazonaws.com
Action: sts:AssumeRole
ManagedPolicyArns:
- 'arn:aws:iam::aws:policy/AmazonBedrockFullAccess'
- 'arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole'
# Lambda Function
TestLambdaFunction:
Type: AWS::Lambda::Function
Properties:
FunctionName: 'test-bedrock-prompt-function'
Runtime: python3.13
Handler: index.lambda_handler
Role: !GetAtt LambdaExecutionRole.Arn
Timeout: 60
MemorySize: 256
Environment:
Variables:
promptVersionARN: !Sub '${TestPrompt}:${PromptVersionNumber}'
Code:
ZipFile: |
import boto3
import os
bedrock = boto3.client('bedrock-runtime')
modelId = os.environ['promptVersionARN']
def lambda_handler(event, context):
question = event['question']
promptVariables = {
"input_text":{
"text": question
}
}
response = bedrock.converse(
modelId=modelId,
promptVariables=promptVariables
)
return {
'body': response["output"]["message"]["content"][0]["text"]
}
Bedrock Prompt Managementコンソールから、バージョンを作成します。

↓作成後

比較として、ドラフト版の方は「これはドラフト版です」を最初に回答してもらうようにします。
こちらはバージョン作成せず、ドラフトを保存だけ押しておきます。

この状態で、Lambda関数で以下入力をテストします。
{"question": "こんにちは"}
まずはバージョン指定ありです。末尾に「:1」がついています。

実行結果は以下です。最新版ではなく、ドラフト版が適用されていました。

まとめ
Bedrock Prompt Managementはバージョン指定しなかったらドラフト版が適用されます。
本番利用の際はバージョン指定をお忘れなく。
余談
以下APIだと、バージョン指定しなかった時にドラフト版の情報を取ってくるそうです。
ここからある程度予測できることではありましたが、きちんと検証してみるのが大切ということで。
promptVersion(原文)
The version of the prompt about which you want to retrieve information. Omit this field to return information about the working draft of the prompt.
Length Constraints: Minimum length of 1. Maximum length of 5.
Pattern: (DRAFT|[0-9]{0,4}[1-9][0-9]{0,4})
promptVersion(日本語)
情報を取得したいプロンプトのバージョン。このフィールドを省略すると、プロンプトの作業草案に関する情報が返されます。
長さの制約: 最小長は 1、最大長は 5。
パターン:(DRAFT|[0-9]{0,4}[1-9][0-9]{0,4})

