概要
チャットユースケースで書類を添付すると、ファイル名に全角スペース(U+3000)が含まれている場合に Bedrock Converse API が ValidationException を返し、添付が失敗します。ファイルサイズ・形式とは無関係です。
確認バージョン: v5.5.0 / main(2026-08-21 時点で未修正)
原因
packages/cdk/lambda/utils/fileNameUtils.ts の convertToSafeFilename:
const safeName = nameWithoutExt.replace(/[^a-zA-Z0-9\s\-()[\]]/g, '_');
JavaScript の \s は U+3000(全角スペース)やタブにマッチするため、これらは「許可文字」として置換されず残ります。しかし Bedrock の DocumentBlock.name はこれらを受け付けません。
漢字・かなは _ に置換されて問題なく通るため、空白系の文字だけがサニタイズを素通りしている状態です。日本語のファイル名では全角スペースが区切りとして日常的に使われるため、実務上かなりの頻度で発生します。
発生するエラー
ValidationException: The document file name can only contain alphanumeric characters,
whitespace characters, hyphens, parentheses, and square brackets. The name can't contain
more than one consecutive whitespace character. Check that the file name conforms to
these restrictions and retry your request.
エラー文は「連続する空白は不可」とだけ述べていますが、実測では全角スペースは1つでも拒否されます。
実測結果
Bedrock Converse API / jp.anthropic.claude-haiku-4-5-20251001-v1:0 で document.name のみを変えて検証しました。
| document.name |
結果 |
testname / test-name / test(1) / test[1] |
OK |
test name(半角スペース1つ) |
OK |
" testname" / "testname "(前後の半角スペース) |
OK |
test_name / test__name |
OK(アンダースコアはエラー文に列挙されていないが実際は許容される) |
test name(全角スペース1つ) |
NG |
test name(半角スペース2連) |
NG |
test\tname(タブ) |
NG |
""(空文字) |
NG(valid min length: 1) |
| 300 文字 |
NG(長さ上限あり) |
再現手順
テスト 資料.xlsx のように、名前の途中に全角スペースを含むファイルを用意する
- チャットユースケースで添付して送信する
- 回答が返らず、Lambda のログに上記
ValidationException が出力される
影響
自社環境で 1 日分の添付を集計したところ、添付された書類のうち約 19% がこの理由で失敗していました。形式にはほとんど依存しません(xls / doc / xlsx / docx / pdf いずれも 11〜18%)。
修正案
const safeName = nameWithoutExt
.replace(/[^a-zA-Z0-9 \-()[\]]/g, '_') // \s ではなく ASCII 半角スペースのみ許可
.replace(/ {2,}/g, ' ') // 連続する空白を 1 つに畳む
.trim();
加えて、置換後が空文字になった場合のフォールバックと、名前長の上限も必要かと思います。
同じパターンが AgentCore 経路にもあります
packages/web/src/utils/strandsUtils.ts の convertFileToStrandsContentBlock:
const fileName = file.name.replace(/[^a-zA-Z0-9\s\-()[\]]/g, 'X');
置換文字は X ですが、\s を許可している点は同一です。
関連
本件でエラーになっても、利用者にはファイル名が原因であることが伝わりません → #1672
概要
チャットユースケースで書類を添付すると、ファイル名に全角スペース(U+3000)が含まれている場合に Bedrock Converse API が
ValidationExceptionを返し、添付が失敗します。ファイルサイズ・形式とは無関係です。確認バージョン: v5.5.0 / main(2026-08-21 時点で未修正)
原因
packages/cdk/lambda/utils/fileNameUtils.tsのconvertToSafeFilename:JavaScript の
\sは U+3000(全角スペース)やタブにマッチするため、これらは「許可文字」として置換されず残ります。しかし Bedrock のDocumentBlock.nameはこれらを受け付けません。漢字・かなは
_に置換されて問題なく通るため、空白系の文字だけがサニタイズを素通りしている状態です。日本語のファイル名では全角スペースが区切りとして日常的に使われるため、実務上かなりの頻度で発生します。発生するエラー
エラー文は「連続する空白は不可」とだけ述べていますが、実測では全角スペースは1つでも拒否されます。
実測結果
Bedrock Converse API /
jp.anthropic.claude-haiku-4-5-20251001-v1:0でdocument.nameのみを変えて検証しました。testname/test-name/test(1)/test[1]test name(半角スペース1つ)" testname"/"testname "(前後の半角スペース)test_name/test__nametest name(全角スペース1つ)test name(半角スペース2連)test\tname(タブ)""(空文字)valid min length: 1)再現手順
テスト 資料.xlsxのように、名前の途中に全角スペースを含むファイルを用意するValidationExceptionが出力される影響
自社環境で 1 日分の添付を集計したところ、添付された書類のうち約 19% がこの理由で失敗していました。形式にはほとんど依存しません(xls / doc / xlsx / docx / pdf いずれも 11〜18%)。
修正案
加えて、置換後が空文字になった場合のフォールバックと、名前長の上限も必要かと思います。
同じパターンが AgentCore 経路にもあります
packages/web/src/utils/strandsUtils.tsのconvertFileToStrandsContentBlock:置換文字は
Xですが、\sを許可している点は同一です。関連
本件でエラーになっても、利用者にはファイル名が原因であることが伝わりません → #1672