Amazon Bedrock Data Automation の一般提供に伴う、 Amazon Bedrock Knowledge bases の Amazon Bedrock Data Automation as parser の変更点をまとめてみた
こんにちは!クラウド事業本部コンサルティング部のたかくに(@takakuni_)です。
みなさん、Amazon Bedrock Data Automation 使っていますでしょうか。
Amazon Bedrock Knowledge bases のパースオプションとして、BDA を利用したデータの抽出が re:Invent 2024 でプレビューとして登場しました。
先日、 BDA が一般提供されました。
BDA が一般提供されたことに伴い、 Amazon Bedrock Data Automation as parser に関して、いくつか変更点があったため、本エントリで取り上げたいと思います。
IAM ポリシーの変更
まずは IAM ポリシーの変更です。
アップデート前では、次のような IAM ポリシーを、ナレッジベースに付与しておく必要がありました。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "BDAGetStatement",
"Effect": "Allow",
"Action": ["bedrock:GetDataAutomationStatus"],
"Resource": "arn:aws:bedrock:us-west-2:<account_id>:data-automation-invocation/*"
},
{
"Sid": "BDAInvokeStatement",
"Effect": "Allow",
"Action": ["bedrock:InvokeDataAutomationAsync"],
"Resource": "arn:aws:bedrock:us-west-2:aws:data-automation-project/public-rag-default"
}
]
}
アップデート後
今回のアップデートで、以下のポリシーに変更が必要になりました。いくつか気になる点があるため、補足します。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "BDAGetStatement",
"Effect": "Allow",
"Action": ["bedrock:GetDataAutomationStatus"],
"Resource": "arn:aws:bedrock:us-west-2:<account_id>:data-automation-invocation/*"
},
{
"Sid": "BDAInvokeStatement",
"Effect": "Allow",
"Action": ["bedrock:InvokeDataAutomationAsync"],
"Resource": [
"arn:aws:bedrock:us-west-2:aws:data-automation-project/public-rag-default",
"arn:aws:bedrock:us-east-1:<account_id>:data-automation-profile/us.data-automation-v1",
"arn:aws:bedrock:us-east-2:<account_id>:data-automation-profile/us.data-automation-v1",
"arn:aws:bedrock:us-west-1:<account_id>:data-automation-profile/us.data-automation-v1",
"arn:aws:bedrock:us-west-2:<account_id>:data-automation-profile/us.data-automation-v1"
]
}
]
}
public-rag-default プロジェクト
アップデート前後で変わらないですが、 public-rag-default
といった、見慣れないプロジェクト名がリソース名に定義されています。
これは、ナレッジベースが Amazon Bedrock Data Automation as parser
で利用する BDA プロジェクトの総称です。
アカウント関係なく、こちらのプロジェクトが利用されます。IAM ポリシーで許可していない場合、次のエラーが発生します。
Encountered error: User: arn:aws:sts::123456789012:assumed-role/hogehoge-kb-role/DocumentLoaderTask-RGPWEQDTUV is not authorized to perform: bedrock:InvokeDataAutomationAsync on resource: arn:aws:bedrock:us-west-2:aws:data-automation-project/public-rag-default because no identity-based policy allows the bedrock:InvokeDataAutomationAsync action (Service: BedrockDataAutomationRuntime, Status Code: 400, Request ID: 662c3049-28d6-4ef6-a5da-0e501f092d2e) (SDK Attempt Count: 1). Call to Customer Source did not succeed.
クロスリージョン推論
Amazon Bedrock Data Automation はクロスリージョン推論を利用して、データの抽出を行うことが必須になりました。
InvokeDataAutomationAsync API では、引数に Data Automation Profile を指定するのですが、すべての推論プロファイルを宛先に指定する必要があります。
BDA requires users to use cross region inference support when processing files. With cross-region inference, Amazon Bedrock Data Automation will automatically select the optimal region within your geography (as shown in the table below) to process your inference request, maximizing available compute resources and model availability, and providing the best customer experience.
こちらも同じく、指定せずに実行すると次のエラーが発生します。
Encountered error: User: arn:aws:sts::123456789012:assumed-role/hogehoge-kb-role/DocumentLoaderTask-DFMMX2M0AZ is not authorized to perform: bedrock:InvokeDataAutomationAsync on resource: arn:aws:bedrock:us-east-1:123456789012:data-automation-profile/us.data-automation-v1 because no identity-based policy allows the bedrock:InvokeDataAutomationAsync action (Service: BedrockDataAutomationRuntime, Status Code: 400, Request ID: d8c702e8-a666-4ef2-b5a1-cbc7661c2ef0) (SDK Attempt Count: 1). Call to Customer Source did not succeed.
Multimodal storage destination を指定不要に
今まで BDA を利用したパース処理では、中間ファイル置き場として、別途 S3 バケットが必要だったのですが、不要になりました。
次のように、マネジメントコンソールは、 Multimodal storage destination が指定できなくなったようなイメージです。
CLI 経由でマネジメントコンソールから、作成したナレッジベースの情報を取得しましたが、中間ファイル置き場が表示されていない状況となりました。
~ $ aws bedrock-agent get-knowledge-base --knowledge-base-id KQBEGPPXT7
{
"knowledgeBase": {
"createdAt": "2025-03-11T02:40:14.407522+00:00",
"knowledgeBaseArn": "arn:aws:bedrock:us-west-2:123456789012:knowledge-base/KQBEGPPXT7",
"knowledgeBaseConfiguration": {
"type": "VECTOR",
"vectorKnowledgeBaseConfiguration": {
"embeddingModelArn": "arn:aws:bedrock:us-west-2::foundation-model/amazon.titan-embed-text-v2:0"
}
},
"knowledgeBaseId": "KQBEGPPXT7",
"name": "hogehoge-knowledge-base",
"roleArn": "arn:aws:iam::123456789012:role/hogehoge-kb-role",
"status": "ACTIVE",
"storageConfiguration": {
"pineconeConfiguration": {
"connectionString": "https://hogehoge-knowledge-base-us-west-2-l4pwu9b.svc.apw5-4e34-81fa.pinecone.io",
"credentialsSecretArn": "arn:aws:secretsmanager:us-west-2:123456789012:secret:hogehoge-vctrdb-secret-123456789012-us-west-2-gawP3w",
"fieldMapping": {
"metadataField": "metadata",
"textField": "text"
}
},
"type": "PINECONE"
},
"updatedAt": "2025-03-11T02:40:14.407522+00:00"
}
}
~ $ aws bedrock-agent get-data-source --data-source-id SSXNOEQSBI --knowledge-base-id KQBEGPPXT7
{
"dataSource": {
"createdAt": "2025-03-16T12:47:54.723812+00:00",
"dataDeletionPolicy": "DELETE",
"dataSourceConfiguration": {
"s3Configuration": {
"bucketArn": "arn:aws:s3:::hogehoge-us-west-2-kb-datasource-123456789012"
},
"type": "S3"
},
"dataSourceId": "SSXNOEQSBI",
"knowledgeBaseId": "KQBEGPPXT7",
"name": "knowledge-base-datasource",
"status": "AVAILABLE",
"updatedAt": "2025-03-16T12:47:54.723812+00:00",
"vectorIngestionConfiguration": {
"parsingConfiguration": {
"parsingStrategy": "BEDROCK_DATA_AUTOMATION"
}
}
}
}
ただし、同期は問題なく成功している模様です。
明示的にドキュメントを確認したいケースもあるのではないでしょうか。
API 形式の場合、CreateKnowledge にて supplementalDataStorageConfiguration
を設定することで、中間データ置き場を明示的に設定することができました。
In the Amazon Bedrock API, do the following:
(If you plan to use Amazon Bedrock Data Automation or a foundation model as your parsing strategy) Include a SupplementalDataStorageLocation in the VectorKnowledgeBaseConfiguration of a CreateKnowledgeBase request.
~ $ echo '{
> "type": "VECTOR",
> "vectorKnowledgeBaseConfiguration": {
> "embeddingModelArn": "arn:aws:bedrock:us-west-2::foundation-model/amazon.titan-embed-text-v2:0",
> "embeddingModelConfiguration": {
> "bedrockEmbeddingModelConfiguration": {
> "dimensions": 1024,
> "embeddingDataType": "FLOAT32"
> }
> },
> "supplementalDataStorageConfiguration": {
> "storageLocations": [
> {
> "s3Location": {
> "uri": "s3://kb-bda-output-data-123456789012"
> },
> "type": "S3"
> }
> ]
> }
> }
> }' > knowledge-base-configuration.json
~ $
~ $ echo '{
> "pineconeConfiguration": {
> "connectionString": "https://hogehoge-knowledge-base-us-west-2-l4pwu9b.svc.apw5-4e34-81fa.pinecone.io",
> "credentialsSecretArn": "arn:aws:secretsmanager:us-west-2:123456789012:secret:hogehoge-vctrdb-secret-123456789012-us-west-2-gawP3w",
> "fieldMapping": {
> "metadataField": "metadata",
> "textField": "text"
> }
> },
> "type": "PINECONE"
> }' > storage-configuration.json
~ $
~ $ aws bedrock-agent create-knowledge-base \
> --name bda-dokoitta \
> --role-arn "arn:aws:iam::123456789012:role/hogehoge-kb-role" \
> --knowledge-base-configuration file://knowledge-base-configuration.json \
> --storage-configuration file://storage-configuration.json
{
"knowledgeBase": {
"createdAt": "2025-03-16T14:09:11.446742+00:00",
"knowledgeBaseArn": "arn:aws:bedrock:us-west-2:123456789012:knowledge-base/EQHWXJZ5VE",
"knowledgeBaseConfiguration": {
"type": "VECTOR",
"vectorKnowledgeBaseConfiguration": {
"embeddingModelArn": "arn:aws:bedrock:us-west-2::foundation-model/amazon.titan-embed-text-v2:0",
"embeddingModelConfiguration": {
"bedrockEmbeddingModelConfiguration": {
"dimensions": 1024,
"embeddingDataType": "FLOAT32"
}
},
"supplementalDataStorageConfiguration": {
"storageLocations": [
{
"s3Location": {
"uri": "s3://kb-bda-output-data-123456789012"
},
"type": "S3"
}
]
}
}
},
"knowledgeBaseId": "EQHWXJZ5VE",
"name": "bda-dokoitta",
"roleArn": "arn:aws:iam::123456789012:role/hogehoge-kb-role",
"status": "CREATING",
"storageConfiguration": {
"pineconeConfiguration": {
"connectionString": "https://hogehoge-knowledge-base-us-west-2-l4pwu9b.svc.apw5-4e34-81fa.pinecone.io",
"credentialsSecretArn": "arn:aws:secretsmanager:us-west-2:123456789012:secret:hogehoge-vctrdb-secret-123456789012-us-west-2-gawP3w",
"fieldMapping": {
"metadataField": "metadata",
"textField": "text"
}
},
"type": "PINECONE"
},
"updatedAt": "2025-03-16T14:09:11.446742+00:00"
}
}
新たに作成したナレッジベースでは Multimodal storage destination が記載されていました。
また、同期後は指定した S3 バケットへ抽出時に利用したデータが保管されていました。
まとめ
以上、「Amazon Bedrock Data Automation の一般提供に伴う、 Amazon Bedrock Knowledge bases の Amazon Bedrock Data Automation as parser の変更点をまとめてみた。」でした。
これから、Amazon Bedrock Data Automation as parser を使っていきたい!という方は、ぜひ要点押さえておくと良いかと思います。
このブログがどなたかの参考になれば幸いです。
クラウド事業本部コンサルティング部のたかくに(@takakuni_)でした!